diff --git a/src/map/script.cpp b/src/map/script.cpp index eb0ca2c8fc..f319fc58a5 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -8269,6 +8269,14 @@ BUILDIN_FUNC(getpartymember) ShowError("buildin_getpartymember: The array %s is not string type.\n", varname); return SCRIPT_CMD_FAILURE; } + if (not_server_variable(*varname)) { + struct map_session_data *sd; + + if (!script_rid2sd(sd)) { + ShowError("buildin_getpartymember: Cannot use a player variable '%s' if no player is attached.\n", varname); + return SCRIPT_CMD_FAILURE; + } + } } for (i = 0; i < MAX_PARTY; i++) { @@ -11164,6 +11172,11 @@ BUILDIN_FUNC(getunits) id = reference_getid(data); idx = reference_getindex(data); name = reference_getname(data); + + if (not_server_variable(*name) && !script_rid2sd(sd)) { + ShowError("buildin_%s: Cannot use a player variable '%s' if no player is attached.\n", command, name); + return SCRIPT_CMD_FAILURE; + } } for (bl = (struct block_list*)mapit_first(iter); mapit_exists(iter); bl = (struct block_list*)mapit_next(iter)) @@ -17334,6 +17347,11 @@ BUILDIN_FUNC(getunitdata) name = reference_getname(data); + if (not_server_variable(*name) && !script_rid2sd(sd)) { + ShowError("buildin_getunitdata: Cannot use a player variable '%s' if no player is attached.\n", name); + return SCRIPT_CMD_FAILURE; + } + #define getunitdata_sub(idx__,var__) setd_sub(st,sd,name,(idx__),(void *)__64BPRTSIZE((int)(var__)),data->ref) switch(bl->type) { @@ -21699,6 +21717,14 @@ BUILDIN_FUNC(getguildmember) ShowError("buildin_getguildmember: The array %s is not string type.\n", varname); return SCRIPT_CMD_FAILURE; } + if (not_server_variable(*varname)) { + struct map_session_data *sd; + + if (!script_rid2sd(sd)) { + ShowError("buildin_getguildmember: Cannot use a player variable '%s' if no player is attached.\n", varname); + return SCRIPT_CMD_FAILURE; + } + } } for (i = 0; i < MAX_GUILD; i++) { @@ -22430,6 +22456,11 @@ BUILDIN_FUNC(minmax){ // Get the session data, if a player is attached sd = st->rid ? map_id2sd(st->rid) : NULL; + if (not_server_variable(*name) && !script_rid2sd(sd)) { + ShowError("buildin_%s: Cannot use a player variable '%s' if no player is attached.\n", functionname, name); + return SCRIPT_CMD_FAILURE; + } + // Try to find the array's source pointer if( !script_array_src( st, sd, name, reference_getref( data ) ) ){ ShowError( "buildin_%s: not a array!\n", functionname ); @@ -23008,6 +23039,15 @@ BUILDIN_FUNC(channel_setgroup) { return SCRIPT_CMD_FAILURE; } + if (not_server_variable(*varname)) { + struct map_session_data *sd; + + if (!script_rid2sd(sd)) { + ShowError("buildin_%s: Cannot use a player variable '%s' if no player is attached.\n", funcname, varname); + return SCRIPT_CMD_FAILURE; + } + } + n = script_array_highest_key(st, NULL, reference_getname(data), reference_getref(data)); if (n < 1) { ShowError("buildin_channel_setgroup: No group id listed.\n");