imported>Dev akm |
imported>Dev akm |
Line 15: |
Line 15: |
|
| |
|
|
| |
|
| = Debugging =
| |
|
| |
|
| When something just isn't working right, look here for possible causes.
| |
|
| |
| == Comma Instead of Period ==
| |
|
| |
| This can cause severe headaches for the scripter: The compiler will accept a comma in place of a period in reference syntax, but the script will silently fail in the game when the line is encountered.
| |
|
| |
| player.modAV health 200 <- Fine
| |
| player,modAV health 200 <- Suddenly your script is no longer running and you're wondering why
| |
|
| |
| Easy to miss when you're looking for logic errors.
| |
|
| |
| == Numerals ==
| |
|
| |
| Don't start an ID or variable with a numeral.
| |
|
| |
| short 5forFighting; BAD
| |
| long benFolds5; GOOD!
| |
| myGuy.moveTo 0marker; BAD
| |
|
| |
| == Mismatched If/Endif ==
| |
|
| |
| The compiler will ignore extra [[endif|endifs]] when you save your script, but they can cause the script to stop running when encountered during gameplay. Make sure each [[if]] in your script is paired with exactly one [[endif]]:
| |
| <pre>if ( something == happened )
| |
| do something
| |
| endif ; GOOD
| |
| endif ; BAD, extra endif may cause errors in the game</pre>
| |
| The best way to avoid this problem is to use proper indentation of if-blocks.
| |
|
| |
| == Quest Topic Scripts ==
| |
|
| |
| The Scripting section in the Quest/Topic editor seems to be for very generic scripting like setting global variables and doing things like setstage. Be aware that while some things may compile clean here and seem perfectly fine, they just don't work in-game.
| |
|
| |
| == Getself != player ==
| |
|
| |
| Be careful if you use:
| |
|
| |
| Getself != player
| |
|
| |
| When called in a scripteffect spell, the statement sometimes evaluates true for the player. The easiest solution is to add another condition to double-check it, such as:
| |
|
| |
| getdistance player >0
| |
|
| |
| However, [[getDistance]] is unreliable if the player is swimming.
| |
| The best solution is to use:
| |
|
| |
| ref refVar
| |
| set refVar to getSelf
| |
| if ( refVar.getIsReference player == 0 )
| |
|
| |
|
| = Performance Problems = | | = Performance Problems = |