|
@@ -2458,7 +2458,20 @@ int run_func(struct script_state *st)
|
|
|
int i,start_sp,end_sp,func;
|
|
|
|
|
|
end_sp=st->stack->sp;
|
|
|
+ for(i=end_sp-1;i>=0 && st->stack->stack_data[i].type!=C_ARG;i--);
|
|
|
+ if(i==0){
|
|
|
+ if(battle_config.error_log)
|
|
|
+ ShowError("function not found\n");
|
|
|
+// st->stack->sp=0;
|
|
|
+ st->state=END;
|
|
|
+ report_src(st);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ start_sp=i-1;
|
|
|
+ st->start=i-1;
|
|
|
+ st->end=end_sp;
|
|
|
func=st->stack->stack_data[st->start].u.num;
|
|
|
+
|
|
|
#ifdef DEBUG_RUN
|
|
|
if(battle_config.etc_log) {
|
|
|
ShowDebug("run_func : %s? (%d(%d)) sp=%d (%d...%d)\n",str_buf+str_data[func].str, func, str_data[func].type, st->stack->sp, st->start, st->end);
|
|
@@ -2490,21 +2503,9 @@ int run_func(struct script_state *st)
|
|
|
printf("\n");
|
|
|
}
|
|
|
#endif
|
|
|
- for(i=end_sp-1;i>=0 && st->stack->stack_data[i].type!=C_ARG;i--);
|
|
|
- if(i==0){
|
|
|
- if(battle_config.error_log)
|
|
|
- ShowError("function not found\n");
|
|
|
-// st->stack->sp=0;
|
|
|
- st->state=END;
|
|
|
- report_src(st);
|
|
|
- return 1;
|
|
|
- }
|
|
|
- start_sp=i-1;
|
|
|
- st->start=i-1;
|
|
|
- st->end=end_sp;
|
|
|
|
|
|
if(str_data[func].type!=C_FUNC ){
|
|
|
- ShowMessage ("run_func: '"CL_WHITE"%s"CL_RESET"' (type %d) is not function and command!\n");
|
|
|
+ ShowMessage ("run_func: '"CL_WHITE"%s"CL_RESET"' (type %d) is not function and command!\n", str_buf+str_data[func].str, str_data[func].type);
|
|
|
// st->stack->sp=0;
|
|
|
st->state=END;
|
|
|
report_src(st);
|