ソースを参照

- Added support for scripts to call user-defined functions without the use of callfunc
- Note: the callfunc; method is still required to be defined in the source

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15979 54d463be-8e91-2dee-dedb-b68131a5f0ec

epoque11 13 年 前
コミット
2578dfe2f9
1 ファイル変更15 行追加2 行削除
  1. 15 2
      src/map/script.c

+ 15 - 2
src/map/script.c

@@ -951,8 +951,21 @@ const char* parse_callfunc(const char* p, int require_paren)
 			disp_error_message("parse_callfunc: callsub has no arguments, please review it's definition",p);
 		if( *arg != '*' )
 			++arg; // count func as argument
-	} else
-		disp_error_message("parse_line: expect command, missing function name or calling undeclared function",p);
+	} else {
+		const char* name = get_str(func);
+		if( strdb_get(userfunc_db, name) == NULL ) {
+			disp_error_message("parse_line: expect command, missing function name or calling undeclared function",p);
+		} else {
+			int callfunc = search_str("callfunc");
+			add_scriptl(callfunc);
+			add_scriptc(C_ARG);
+			add_scriptc(C_STR);
+			while( *name ) add_scriptb(*name ++);
+			add_scriptb(0);
+			arg = buildin_func[str_data[callfunc].val].arg;
+			if( *arg != '*' ) ++ arg;
+		}
+	}
 
 	p = skip_word(p);
 	p = skip_space(p);