From e724ddf7410dd02e37487921f59bb80828faafc3 Mon Sep 17 00:00:00 2001 From: ai4rei Date: Sat, 18 Dec 2010 01:19:16 +0000 Subject: * Made the 'player not attached' script error also report the function it occured in, if available. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14602 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/script.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src') diff --git a/src/map/script.c b/src/map/script.c index 3da635bf5..db76e5ac1 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -513,6 +513,44 @@ static void script_reportdata(struct script_data* data) } } + +/// Reports on the console information about the current built-in function. +static void script_reportfunc(struct script_state* st) +{ + int i, params, id; + struct script_data* data; + + if( !script_hasdata(st,0) ) + {// no stack + return; + } + + data = script_getdata(st,0); + + if( !data_isreference(data) || str_data[reference_getid(data)].type != C_FUNC ) + {// script currently not executing a built-in function or corrupt stack + return; + } + + id = reference_getid(data); + params = script_lastdata(st)-1; + + if( params > 0 ) + { + ShowDebug("Function: %s (%d parameter%s):\n", get_str(id), params, ( params == 1 ) ? "" : "s"); + + for( i = 2; i <= script_lastdata(st); i++ ) + { + script_reportdata(script_getdata(st,i)); + } + } + else + { + ShowDebug("Function: %s (no parameters)\n", get_str(id)); + } +} + + /*========================================== * エラーメッセージ出力 *------------------------------------------*/ @@ -2118,6 +2156,7 @@ TBL_PC *script_rid2sd(struct script_state *st) TBL_PC *sd=map_id2sd(st->rid); if(!sd){ ShowError("script_rid2sd: fatal error ! player not attached!\n"); + script_reportfunc(st); script_reportsrc(st); st->state = END; } -- cgit v1.2.3-60-g2f50