Script Debugging

From SphereWiki
Revision as of 15:42, 18 August 2022 by Soulless (talk | contribs) (Console Errors Regarding Scripts)
Jump to: navigation, search

So you've got a problem with a script and you don't know where to turn? Or everyone you've spoken to doesn't have the answers you seek? You're about to start pulling out your hair, you feel alone and lost, and no one can seem to help you. Well worry no more, you're about to help yourself! Let's talk about debugging your script


Examples

We'll go through some examples here to explain how one could get helpful information that will lead them to their solutions

Problems Understanding A Trigger

Uncertain how a trigger works?

This is a great example from MalucoBeleza that illustrates the concept of logging out your results to the console for further insight into what objects a trigger is referencing. This can help you make sure that you are referencing the right object in game and that whatever follows will behave as expected.

Let's say you want to use a trigger that will fire when you kill someone, and when you kill that person you want to give the killer some experience points. You need to reference both the person being killed and the person that killed them.

The trigger in this example is @Kill. One may think that they will use the default object I as the killer and that SRC will be the person being killed. or that ACT would be the person being killed. But it is best not to assume any of these triggers will use any object reference the same as another, or even the same as a similar trigger. The best practice is to take yourself to the Spherewiki (as YOU already have) and pull up the trigger you are looking for under the Reference Compendium > Objects > Characters, this will give you a very good idea of what references you can make in that trigger. Once you have that information you can begin to see what you are able to work with and how you can work with it.


As MalucoBeleza points out, this practice is required to get proper knowledge to work with a trigger

When dealing with a trigger that is new to you... its essential to check the wiki and do tests like this:

ON=@Kill

 SERV.LOG NAME: <NAME>
 SERV.LOG I.NAME: <I.NAME>
 SERV.LOG SRC.NAME: <SRC.NAME>
 SERV.LOG ARGO.NAME: <ARGO.NAME>
 SERV.LOG <NAME> (<UID>) HAVE JUST KILLED <ARGO.NAME> (<ARGO>)

Console Errors Regarding Scripts

You are getting errors on your console, and it's telling you about a script but you aren't quite sure what to do. Let's see one as an example :

00:17:ERROR:(i_dye_tubs.scp,52)Range isn't closed by a '}' character.

Okay from this error we can see the filename 'i_dye_tubs' and the line number is 52. The error is that the 'Range isn't closed by a '}' character.' so let's go see what this line looks like and what we the appropriate line fix is:

So here's what the line looks like : color={047e 049a

We can see above that its missing a } at the end just like the console error notified us about. this is a very elementary example but this explains the process of breaking down a console error. It's always the same for these script errors : "filename, line number, error description". With large complicated systems paying attention to the exact nature of your console error will guide you towards figuring out how to fix it.