AnnieRuru Posted February 4, 2013 Group: Members Topic Count: 18 Topics Per Day: 0.00 Content Count: 2044 Reputation: 682 Joined: 10/09/12 Last Seen: December 20, 2020 Share Posted February 4, 2013 (edited) reviving this topic -> http://www.eathena.ws/board/index.php?showtopic=183485 add this into SVN BUILDIN_FUNC(getguildmember) { struct guild *g = guild_search( script_getnum(st,2) ); int i, j = 0, c = 0, type = 0; if ( script_hasdata(st,3) ) type = script_getnum(st,3); if ( g ) { for ( i = 0; i < MAX_GUILD; i++ ) { if ( g->member[i].account_id ) { switch ( type ) { case 1: mapreg_setreg( reference_uid( add_str("$@guildmembercid"), j ), g->member[i].char_id ); break; case 2: mapreg_setreg( reference_uid( add_str("$@guildmemberaid"), j ),g->member[i].account_id ); break; case 3: break; default: mapreg_setregstr( reference_uid( add_str("$@guildmembername$"), j ), g->member[i].name ); break; } j++; } } if ( type != 3 ) { mapreg_setreg( add_str("$@guildlv"), g->guild_lv ); mapreg_setreg( add_str("$@guildconnected"), g->connect_member ); mapreg_setreg( add_str("$@guildmax"), g->max_member ); mapreg_setreg( add_str("$@guildexp"), (int)g->exp ); mapreg_setreg( add_str("$@guildmembercount"), j ); } else { for ( i = 0; i < MAX_GUILDALLIANCE; i++ ) { if ( g->alliance[i].guild_id > 0) { mapreg_setreg( reference_uid( add_str("$@guildallianceid"), j ), g->alliance[i].guild_id ); mapreg_setregstr( reference_uid( add_str("$@guildalliancename$"), j ), g->alliance[i].name ); c++; } } mapreg_setreg( add_str("$@guildallianccount"), c ); } script_pushint(st,1); } else { mapreg_setreg( add_str("$@guildmembercount"), 0 ); mapreg_setreg( add_str("$@guildallianccount"), 0 ); script_pushint(st,0); } return 0; } BUILDIN_DEF(getguildmember,"i?"), credit to GodLesZ Edited February 4, 2013 by AnnieRuru 3 Link to comment Share on other sites More sharing options...
Euphy Posted February 4, 2013 Group: Members Topic Count: 72 Topics Per Day: 0.02 Content Count: 2997 Reputation: 1132 Joined: 05/27/12 Last Seen: June 1, 2017 Share Posted February 4, 2013 I agree, this would be good to have. Link to comment Share on other sites More sharing options...
eJay Posted February 4, 2013 Group: Members Topic Count: 80 Topics Per Day: 0.02 Content Count: 325 Reputation: 76 Joined: 03/22/12 Last Seen: August 5, 2019 Share Posted February 4, 2013 Hwitz... it's pretty cool Link to comment Share on other sites More sharing options...
AnnieRuru Posted February 5, 2013 Group: Members Topic Count: 18 Topics Per Day: 0.00 Content Count: 2044 Reputation: 682 Joined: 10/09/12 Last Seen: December 20, 2020 Author Share Posted February 5, 2013 hmm .. lol after I test it, only type 0,1,2 works, type 3 doesn't work at all, so I attempt to fix this BUILDIN_FUNC(getguildmember) { struct guild *g = guild_search( script_getnum(st,2) ); int i, j = 0, type = 0; if ( script_hasdata(st,3) ) type = script_getnum(st,3); if ( g ) { if ( type != 3 ) { for ( i = 0; i < MAX_GUILD; i++ ) { if ( g->member[i].account_id ) { switch ( type ) { case 1: mapreg_setreg( reference_uid( add_str("$@guildmembercid"), j ), g->member[i].char_id ); break; case 2: mapreg_setreg( reference_uid( add_str("$@guildmemberaid"), j ),g->member[i].account_id ); break; default: mapreg_setregstr( reference_uid( add_str("$@guildmembername$"), j ), g->member[i].name ); break; } j++; } } mapreg_setreg( add_str("$@guildlv"), g->guild_lv ); mapreg_setreg( add_str("$@guildconnected"), g->connect_member ); mapreg_setreg( add_str("$@guildmax"), g->max_member ); mapreg_setreg( add_str("$@guildexp"), (int)g->exp ); mapreg_setreg( add_str("$@guildmembercount"), j ); } else { for ( i = 0; i < MAX_GUILDALLIANCE; i++ ) { if ( g->alliance[i].guild_id ) { mapreg_setreg( reference_uid( add_str("$@guildallianceid"), j ), g->alliance[i].guild_id ); mapreg_setregstr( reference_uid( add_str("$@guildalliancename$"), j ), g->alliance[i].name ); mapreg_setreg( reference_uid( add_str("$@guildallianceflag"), j ), g->alliance[i].opposition ); j++; } } mapreg_setreg( add_str("$@guildalliancecount"), j ); } script_pushint(st,1); } else { mapreg_setreg( add_str("$@guildmembercount"), 0 ); mapreg_setreg( add_str("$@guildalliancecount"), 0 ); script_pushint(st,0); } return 0; } added a flag to determine opposition or alliance example prontera,155,187,5 script dsasda 100,{ getguildmember getcharid(2); for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) dispbottom .@i +". "+ $@guildmembername$[.@i]; getguildmember getcharid(2), 3; for ( .@i = 0; .@i < $@guildalliancecount; .@i++ ) dispbottom .@i +". "+ $@guildalliancename$[.@i] +" -> "+( ( $@guildallianceflag[.@i] )? "Opposition" : "Alliance" ); end; } 1 Link to comment Share on other sites More sharing options...
Emistry Posted February 5, 2013 Group: Forum Moderator Topic Count: 93 Topics Per Day: 0.02 Content Count: 10018 Reputation: 2369 Joined: 10/28/11 Last Seen: Sunday at 05:32 PM Share Posted February 5, 2013 since it retrieve all guild infos...isnt that better to name to something like this ? getguildinfo getguilddata 2 Link to comment Share on other sites More sharing options...
AnnieRuru Posted February 6, 2013 Group: Members Topic Count: 18 Topics Per Day: 0.00 Content Count: 2044 Reputation: 682 Joined: 10/09/12 Last Seen: December 20, 2020 Author Share Posted February 6, 2013 (edited) yeah, I kinda realized it a bit later I just merely fixing GodLesZ's patch previously BUILDIN_FUNC(getguildmember) { struct guild *g = guild_search( script_getnum(st,2) ); int i, j = 0, type = 0; if ( script_hasdata(st,3) ) type = script_getnum(st,3); if ( g ) { for ( i = 0; i < MAX_GUILD; i++ ) { if ( g->member[i].account_id ) { switch ( type ) { case 1: mapreg_setreg( reference_uid( add_str("$@guildmembercid"), j ), g->member[i].char_id ); break; case 2: mapreg_setreg( reference_uid( add_str("$@guildmemberaid"), j ),g->member[i].account_id ); break; case 3: mapreg_setreg( reference_uid( add_str("$@guildmemberonline"), j ),g->member[i].online ); break; default: mapreg_setregstr( reference_uid( add_str("$@guildmembername$"), j ), g->member[i].name ); break; } j++; } } mapreg_setreg( add_str("$@guildmembercount"), j ); script_pushint(st,1); } else { mapreg_setreg( add_str("$@guildmembercount"), 0 ); script_pushint(st,0); } return 0; } BUILDIN_DEF(getguildmember,"i?"), took out useless information, and add in online check, since the guild data itself does show online/offline prontera,155,187,5 script dsasda 100,{ getguildmember getcharid(2), 0; getguildmember getcharid(2), 3; for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) dispbottom .@i +". "+ $@guildmembername$[.@i] +" -> "+( ( $@guildmemberonline[.@i] )? "online" : "offline" ); } EDIT : I wonder issit getpartymember also can do this online/offline ... EDIT2 : yeah can ... lol, perhaps I should remove this ? lol ? or add getpartymember allow $@partymemberonline ? for getguildinfo, I think that will go into separate topic // mmo.h ... struct guild { int guild_id; short guild_lv, connect_member, max_member, average_lv; uint64 exp; unsigned int next_exp; int skill_point; char name[NAME_LENGTH],master[NAME_LENGTH]; struct guild_member member[MAX_GUILD]; struct guild_position position[MAX_GUILDPOSITION]; char mes1[MAX_GUILDMES1],mes2[MAX_GUILDMES2]; int emblem_len,emblem_id; char emblem_data[2048]; struct guild_alliance alliance[MAX_GUILDALLIANCE]; struct guild_expulsion expulsion[MAX_GUILDEXPULSION]; struct guild_skill skill[MAX_GUILDSKILL]; unsigned short save_flag; // for TXT saving }; there are quite a few values seems useful to retrieve them guess you guys settle it by introducing getguildinfo I only wants the getguildmember, to make gvg event script better now I just realize ... // mmo.h struct map_session_data; struct guild_member { int account_id, char_id; short hair,hair_color,gender,class_,lv; uint64 exp; int exp_payper; short online,position; char name[NAME_LENGTH]; struct map_session_data *sd; unsigned char modified; }; if add in getguildinfo ... there're some info that depends on it like guild position and exp_payper ... Edited February 6, 2013 by AnnieRuru 1 Link to comment Share on other sites More sharing options...
Euphy Posted February 6, 2013 Group: Members Topic Count: 72 Topics Per Day: 0.02 Content Count: 2997 Reputation: 1132 Joined: 05/27/12 Last Seen: June 1, 2017 Share Posted February 6, 2013 I prefer not having an 'online' array to save variables, since you get the same information with 'isloggedin'. Link to comment Share on other sites More sharing options...
AnnieRuru Posted February 6, 2013 Group: Members Topic Count: 18 Topics Per Day: 0.00 Content Count: 2044 Reputation: 682 Joined: 10/09/12 Last Seen: December 20, 2020 Author Share Posted February 6, 2013 lol ... now this has become a primitive command ... BUILDIN_FUNC(getguildmember) { struct guild *g = guild_search( script_getnum(st,2) ); int i, j = 0, type = 0; if ( script_hasdata(st,3) ) type = script_getnum(st,3); if ( g ) { for ( i = 0; i < MAX_GUILD; i++ ) { if ( g->member[i].account_id ) { switch ( type ) { case 2: mapreg_setreg( reference_uid( add_str("$@guildmemberaid"), j ),g->member[i].account_id ); break; case 1: mapreg_setreg( reference_uid( add_str("$@guildmembercid"), j ), g->member[i].char_id ); break; default: mapreg_setregstr( reference_uid( add_str("$@guildmembername$"), j ), g->member[i].name ); break; } j++; } } } mapreg_setreg( add_str("$@guildmembercount"), j ); return 0; } BUILDIN_DEF(getguildmember,"i?"), prontera,155,187,5 script dsasda 100,{ getguildmember getcharid(2), 0; getguildmember getcharid(2), 1; getguildmember getcharid(2), 2; for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) dispbottom .@i +". "+ $@guildmembername$[.@i] +" -> "+( ( isloggedin( $@guildmemberaid[.@i] , $@guildmembercid[.@i] ) )? "online" : "offline" ); end; } without the g->member.online, needs to call out getguildmember 3 times but I guess people don't care about the nano-seconds difference anyways 1 Link to comment Share on other sites More sharing options...
Euphy Posted February 11, 2014 Group: Members Topic Count: 72 Topics Per Day: 0.02 Content Count: 2997 Reputation: 1132 Joined: 05/27/12 Last Seen: June 1, 2017 Share Posted February 11, 2014 Implemented in eba1539. Link to comment Share on other sites More sharing options...
Recommended Posts