From 273c5d25155c1b28cf26274fe32be3ed305bf188 Mon Sep 17 00:00:00 2001 From: epoque11 Date: Thu, 26 Apr 2012 18:37:23 +0000 Subject: - 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15979 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/script.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/map/script.c b/src/map/script.c index 9fe8cd2e0..e56c06db8 100644 --- a/src/map/script.c +++ b/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); -- cgit v1.2.3-70-g09d2