Dastgir 1246 Posted August 24, 2013 (edited) int run_func(struct script_state *st){ struct script_data* data; int i,start_sp,end_sp,func; end_sp = st->stack->sp;// position after the last argument for( i = end_sp-1; i > 0 ; --i ) if( st->stack->stack_data[i].type == C_ARG ) break; if( i == 0 ) { ShowError("script:run_func: C_ARG not found. please report this!!!n"); st->state = END; script_reportsrc(st); return 1; } start_sp = i-1;// C_NAME of the command st->start = start_sp; st->end = end_sp; data = &st->stack->stack_data[st->start]; if( data->type == C_NAME && script->str_data[data->u.num].type == C_FUNC ) func = data->u.num; else { ShowError("script:run_func: not a buildin command.n"); script_reportdata(data); script_reportsrc(st); st->state = END; return 1; } if( script->config.warn_func_mismatch_argtypes ) { script_check_buildin_argtype(st, func); } if(script->str_data[func].func){ if (!(script->str_data[func].func(st))){ //Report error script_reportsrc(st); } } else { ShowError("script:run_func: '%s' (id=%d type=%s) has no C function. please report this!!!n", script->get_str(func), func, script_op2name(script->str_data[func].type)); script_reportsrc(st); st->state = END; } // Stack's datum are used when re-running functions [Eoe] if( st->state == RERUNLINE ) return 0; script->pop_stack(st, st->start, st->end); if( st->state == RETFUNC ) {// return from a user-defined function struct script_retinfo* ri; int olddefsp = st->stack->defsp; int nargs; script->pop_stack(st, st->stack->defsp, st->start);// pop distractions from the stack if( st->stack->defsp < 1 || st->stack->stack_data[st->stack->defsp-1].type != C_RETINFO ) { ShowWarning("script:run_func: return without callfunc or callsub!n"); script_reportsrc(st); st->state = END; return 1; } script->free_vars( st->stack->var_function ); ri = st->stack->stack_data[st->stack->defsp-1].u.ri; nargs = ri->nargs; st->pos = ri->pos; st->script = ri->script; st->stack->var_function = ri->var_function; st->stack->defsp = ri->defsp; memset(ri, 0, sizeof(struct script_retinfo)); script->pop_stack(st, olddefsp-nargs-1, olddefsp);// pop arguments and retinfo st->state = GOTO; } return 0;} Above is code of run_func() I want to ask what this checks for if(script->str_data[func].func){ if (!(script->str_data[func].func(st))){ //Report error script_reportsrc(st); } } because its the part that goes to script_reportsrc and gives some [Debug]: Source (NPC) Invisible on map Edited August 24, 2013 by dastgirpojee Quote Share this post Link to post Share on other sites
0 Dastgir 1246 Posted August 26, 2013 Any Help? Quote Share this post Link to post Share on other sites
0 Ind 945 Posted August 26, 2013 if(script->str_data[func].func){// <= check if the pointer isn't null if (!(script->str_data[func].func(st))){ //run the function script_reportsrc(st);//if the function returns false, dump the errors } } Quote Share this post Link to post Share on other sites
0 Dastgir 1246 Posted August 27, 2013 (edited) if(script->str_data[func].func){// <= check if the pointer isn't null if (!(script->str_data[func].func(st))){ //run the function script_reportsrc(st);//if the function returns false, dump the errors } } But with custom script command, it always returns false and dumps the error(but script is executed.).Should custom function return 1? Edited August 27, 2013 by Dastgir Pojee Quote Share this post Link to post Share on other sites
0 Ind 945 Posted August 27, 2013 if(script->str_data[func].func){// <= check if the pointer isn't null if (!(script->str_data[func].func(st))){ //run the function script_reportsrc(st);//if the function returns false, dump the errors } } But with custom script command, it always returns false and dumps the error(but script is executed.).Should custom function return 1? the custom script is at fault then. shouldn't return 1 nor 0, its true or false. Quote Share this post Link to post Share on other sites
Above is code of run_func()
I want to ask what this checks for
because its the part that goes to script_reportsrc and gives some [Debug]: Source (NPC) Invisible on map
Edited by dastgirpojeeShare this post
Link to post
Share on other sites