View Full Version: Per Euroman

DimensioneX Forum > DimensioneX Generale > Per Euroman



Title: Per Euroman
Description: l'errore


Cris - July 3, 2007 02:32 PM (GMT)
QUOTE

** Cannot reference property "forza": expression before dot: "(N||0.0)" evaluates to NULL
near line: 37 in file: http://www.gamesclan.it/medievil/choosesystem.dxl
$AGENT.fazione = 1
          Move $AGENT, pre2A
End_If
          $AGENT.forza<-- Error here


Spiegazione: "$AGENT = NULL - fai qualcosa per evitarlo".
L'espressione $AGENT.forza ha senso solo se sei sicuro che $AGENT è sempre diverso da NULL.
Bastava mettere un If $AGENT <> NULL, al limite.

Ecco perchè succede:
Se uno non completa la fase iniziale e chiude il browser, dopo 60 secondi il sistema tenta di terminarlo.

Mentre questi viene ucciso, $AGENT vale NULL (sei appena morto...non esisti)
Il sistema allora ti toglie dalla stanza, scatta la onLoose (stai per uscire dalla stanza)
Siccome sei morto $AGENT vale NULL e lo script fallisce...
il problema si ripete ogni 30 secondi

codice prima della cura:

CODE

EVENT pre.onLoose
If $TARGET=toA1 And $AGENT.fazione = 0
          Display "<FONT COLOR = RED><B>La creazione del personaggio</FONT><BR>Prima di proseguire devi selezionare la fazione a cui appartenere."
          Return False
End_If
If $TARGET=toA1 And $AGENT.fazione = 1
          Move $AGENT, pre2A
End_If
          $AGENT.forza = RndInt(8) + 7
          $AGENT.destrezza = RndInt(8) + 7
          $AGENT.intelligenza = RndInt(8) + 7
          $AGENT.saggezza = RndInt(8) + 7
          $AGENT.mana = RndInt(8) + 7
          $AGENT.ambiente = 0
          $AGENT.capacity = 10
          $AGENT.Resistenza = 100
          $AGENT.Fatica = 100
          $AGENT.abAttacco = 1
          $AGENT.abDifesa = 1          
          $AGENT.arma = 0
          $AGENT.Scudo = 0
          $AGENT.armatura = 0
          $AGENT.fame = 100
          $AGENT.sete = 100
END_EVENT


codice dopo la cura:
CODE

EVENT pre.onLoose
If $TARGET=toA1 And $AGENT.fazione = 0
          Display "<FONT COLOR = RED><B>La creazione del personaggio</FONT><BR>Prima di proseguire devi selezionare la fazione a cui appartenere."
          Return False
End_If
If $TARGET=toA1 And $AGENT.fazione = 1
          $AGENT.forza = RndInt(8) + 7
          $AGENT.destrezza = RndInt(8) + 7
          $AGENT.intelligenza = RndInt(8) + 7
          $AGENT.saggezza = RndInt(8) + 7
          $AGENT.mana = RndInt(8) + 7
          $AGENT.ambiente = 0
          $AGENT.capacity = 10
          $AGENT.Resistenza = 100
          $AGENT.Fatica = 100
          $AGENT.abAttacco = 1
          $AGENT.abDifesa = 1          
          $AGENT.arma = 0
          $AGENT.Scudo = 0
          $AGENT.armatura = 0
          $AGENT.fame = 100
          $AGENT.sete = 100
          Move $AGENT, pre2A
End_If
END_EVENT


siccome il blocco adesso sta dentro l'IF sei certo che $AGENT <> NULL

Cris - July 3, 2007 02:35 PM (GMT)
Per sistemare il gioco, ho aggiustato

choosesystem.dxl

Mi raccomando, scaricati la versione corretta direttamente dal sito online.

Ora stiamo a vedere i prossimi errori, regoliamoci in modo che il primo che fa cambiamenti avvisa l'altro.





Hosted for free by InvisionFree