src/map/script.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/map/script.c b/src/map/script.c index 4fb4e72..608ff08 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -18502,10 +18502,42 @@ bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st) return script->add_builtin(&buildin, true); } +BUILDIN(getservermember) { + struct map_session_data *pl_sd; + struct s_mapiterator* iter = mapit_getallusers(); + int i = 0, type = 0; + if ( script_hasdata(st,2) ) + type = script_getnum(st,2); + switch (type) { + default: + for ( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { + mapreg->setregstr( reference_uid( script->add_str("$@servermembername$"), i ), pl_sd->status.name ); + i++; + } + break; + case 1: + for ( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { + mapreg->setreg( reference_uid( script->add_str("$@servermembercid"), i ), pl_sd->status.char_id ); + i++; + } + break; + case 2: + for ( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { + mapreg->setreg( reference_uid( script->add_str("$@servermemberaid"), i ), pl_sd->status.account_id ); + i++; + } + break; + } + mapreg->setreg( script->add_str("$@servermembercount"), i ); + mapit->free(iter); + return true; +} + #define BUILDIN_DEF(x,args) { buildin_ ## x , #x , args } #define BUILDIN_DEF2(x,x2,args) { buildin_ ## x , x2 , args } void script_parse_builtin(void) { struct script_function BUILDIN[] = { + BUILDIN_DEF(getservermember,"i"), // NPC interaction BUILDIN_DEF(mes,"s*"), BUILDIN_DEF(next,""),