diff options
-rw-r--r-- | doc/script_commands.txt | 24 | ||||
-rw-r--r-- | src/map/script.c | 23 |
2 files changed, 29 insertions, 18 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 651ce05e2..4edb596b6 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -974,14 +974,14 @@ Within executable script code, some lines can be labels: <label name>: Labels are points of reference in your script, which can be used to route -execution with 'goto', 'menu' and 'jump_zero' commands, invoked with -'doevent' and 'donpcevent' commands and are otherwise essential. A label's -name may not be longer than 22 characters. (23rd is the ':'.) There is -some confusion in the source about whether it's 22, 23 or 24 all over the -place, so keeping labels under 22 characters could be wise. It may only -contain alphanumeric characters and underscore. In addition to labels you -name yourself, there are also some special labels which the script engine -will start execution from if a special event happens: +execution with 'goto' and 'menu' commands, invoked with 'doevent', 'donpcevent' +and 'callsub' commands and are otherwise essential. A label's name may not be +longer than 22 characters. (23rd is the ':'.) There is some confusion in the +source about whether it's 22, 23 or 24 all over the place, so keeping labels +under 22 characters could be wise. It may only contain alphanumeric characters +and underscore. In addition to labels you name yourself, there are also some +special labels which the script engine will start execution from if a special +event happens: OnClock<hour><minute>: OnMinute<minute>: @@ -2058,6 +2058,14 @@ else if (<condition 2>) { *jump_zero (<condition>),<label>; + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @ /!\ This command is deprecated @ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + +This command is deprecated and it should not be used in new scripts, as it is +scheduled to be removed at any time on or after November 27th, 2014. Please +consider using 'if', 'switch', 'for', 'while', as appropriate. + This command works like an 'if'+'goto' combination in one go. (See 'if'). If the condition is false (equal to zero) this command will immediately jump to the specified label like in 'goto'. diff --git a/src/map/script.c b/src/map/script.c index 9429d66d4..d169107b1 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -1649,7 +1649,7 @@ const char* parse_syntax(const char* p) } else { // Skip to the end point if the condition is false sprintf(label,"__FR%x_FIN",script->syntax.curly[pos].index); - script->addl(script->add_str("jump_zero")); + script->addl(script->add_str("__jump_zero")); script->addc(C_ARG); p=script->parse_expr(p); p=script->skip_space(p); @@ -1774,7 +1774,7 @@ const char* parse_syntax(const char* p) script->syntax.curly[script->syntax.curly_count].flag = 0; sprintf(label,"__IF%x_%x",script->syntax.curly[script->syntax.curly_count].index,script->syntax.curly[script->syntax.curly_count].count); script->syntax.curly_count++; - script->addl(script->add_str("jump_zero")); + script->addl(script->add_str("__jump_zero")); script->addc(C_ARG); p=script->parse_expr(p); p=script->skip_space(p); @@ -1839,7 +1839,7 @@ const char* parse_syntax(const char* p) // Skip to the end point if the condition is false sprintf(label,"__WL%x_FIN",script->syntax.curly[script->syntax.curly_count].index); script->syntax.curly_count++; - script->addl(script->add_str("jump_zero")); + script->addl(script->add_str("__jump_zero")); script->addc(C_ARG); p=script->parse_expr(p); p=script->skip_space(p); @@ -1911,7 +1911,7 @@ const char* parse_syntax_close_sub(const char* p,int* flag) disp_error_message("need '('",p); } sprintf(label,"__IF%x_%x",script->syntax.curly[pos].index,script->syntax.curly[pos].count); - script->addl(script->add_str("jump_zero")); + script->addl(script->add_str("__jump_zero")); script->addc(C_ARG); p=script->parse_expr(p); p=script->skip_space(p); @@ -1976,7 +1976,7 @@ const char* parse_syntax_close_sub(const char* p,int* flag) script->parse_nextline(false, p); sprintf(label,"__DO%x_FIN",script->syntax.curly[pos].index); - script->addl(script->add_str("jump_zero")); + script->addl(script->add_str("__jump_zero")); script->addc(C_ARG); p=script->parse_expr(p); p=script->skip_space(p); @@ -13246,14 +13246,14 @@ BUILDIN(checkequipedcard) return true; } -BUILDIN(jump_zero) +BUILDIN(__jump_zero) { int sel; sel=script_getnum(st,2); - if(!sel) { + if (!sel) { int pos; - if( !data_islabel(script_getdata(st,3)) ) { - ShowError("script: jump_zero: not label !\n"); + if (!data_islabel(script_getdata(st,3))) { + ShowError("script: jump_zero: not a label !\n"); st->state=END; return false; } @@ -19007,6 +19007,9 @@ bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st) #define BUILDIN_DEF2_DEPRECATED(x,x2,args) { buildin_ ## x , x2 , args, true } void script_parse_builtin(void) { struct script_function BUILDIN[] = { + /* Commands for internal use by the script engine */ + BUILDIN_DEF(__jump_zero,"il"), + // NPC interaction BUILDIN_DEF(mes,"s*"), BUILDIN_DEF(next,""), @@ -19286,7 +19289,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(gethominfo,"i"), BUILDIN_DEF(getmercinfo,"i?"), BUILDIN_DEF(checkequipedcard,"i"), - BUILDIN_DEF(jump_zero,"il"), //for future jA script compatibility + BUILDIN_DEF2_DEPRECATED(__jump_zero,"jump_zero","il"), // Deprecated 2014-10-27 [Haru] BUILDIN_DEF(globalmes,"s?"), //end jA addition BUILDIN_DEF(unequip,"i"), // unequip command [Spectre] BUILDIN_DEF(getstrlen,"s"), //strlen [Valaris] |