Convert guild_db to unordered_map (#7612)
* Refactor guild db to STL container * Split up struct guild and MapGuild/CharGuild
This commit is contained in:
@@ -5916,7 +5916,6 @@ BUILDIN_FUNC(warpguild)
|
||||
{
|
||||
TBL_PC *sd = NULL;
|
||||
TBL_PC *pl_sd;
|
||||
struct guild* g;
|
||||
struct s_mapiterator* iter;
|
||||
int type, mapindex = 0, m = -1;
|
||||
|
||||
@@ -5925,7 +5924,7 @@ BUILDIN_FUNC(warpguild)
|
||||
int y = script_getnum(st,4);
|
||||
int gid = script_getnum(st,5);
|
||||
|
||||
g = guild_search(gid);
|
||||
auto g = guild_search(gid);
|
||||
if( g == NULL )
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
|
||||
@@ -9005,11 +9004,11 @@ BUILDIN_FUNC(getpartyleader)
|
||||
BUILDIN_FUNC(getguildname)
|
||||
{
|
||||
int guild_id;
|
||||
struct guild* g;
|
||||
|
||||
guild_id = script_getnum(st,2);
|
||||
if( ( g = guild_search(guild_id) ) != NULL )
|
||||
script_pushstrcopy(st,g->name);
|
||||
auto g = guild_search(guild_id);
|
||||
if (g)
|
||||
script_pushstrcopy(st,g->guild.name);
|
||||
else
|
||||
script_pushconststr(st,"null");
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
@@ -9022,11 +9021,11 @@ BUILDIN_FUNC(getguildname)
|
||||
BUILDIN_FUNC(getguildmaster)
|
||||
{
|
||||
int guild_id;
|
||||
struct guild* g;
|
||||
|
||||
guild_id = script_getnum(st,2);
|
||||
if( ( g = guild_search(guild_id) ) != NULL )
|
||||
script_pushstrcopy(st,g->member[0].name);
|
||||
auto g = guild_search(guild_id);
|
||||
if (g)
|
||||
script_pushstrcopy(st,g->guild.member[0].name);
|
||||
else
|
||||
script_pushconststr(st,"null");
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
@@ -9035,11 +9034,11 @@ BUILDIN_FUNC(getguildmaster)
|
||||
BUILDIN_FUNC(getguildmasterid)
|
||||
{
|
||||
int guild_id;
|
||||
struct guild* g;
|
||||
|
||||
guild_id = script_getnum(st,2);
|
||||
if( ( g = guild_search(guild_id) ) != NULL )
|
||||
script_pushint(st,g->member[0].char_id);
|
||||
auto g = guild_search(guild_id);
|
||||
if (g)
|
||||
script_pushint(st,g->guild.member[0].char_id);
|
||||
else
|
||||
script_pushint(st,0);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
@@ -9059,7 +9058,6 @@ BUILDIN_FUNC(strcharinfo)
|
||||
{
|
||||
TBL_PC *sd;
|
||||
int num;
|
||||
struct guild* g;
|
||||
struct party_data* p;
|
||||
|
||||
if (!script_charid2sd(3,sd)) {
|
||||
@@ -9080,8 +9078,8 @@ BUILDIN_FUNC(strcharinfo)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if( ( g = sd->guild ) != NULL ) {
|
||||
script_pushstrcopy(st,g->name);
|
||||
if (sd->guild) {
|
||||
script_pushstrcopy(st,sd->guild->guild.name);
|
||||
} else {
|
||||
script_pushconststr(st,"");
|
||||
}
|
||||
@@ -10296,15 +10294,14 @@ BUILDIN_FUNC(getgdskilllv)
|
||||
{
|
||||
int guild_id;
|
||||
uint16 skill_id;
|
||||
struct guild* g;
|
||||
|
||||
guild_id = script_getnum(st,2);
|
||||
skill_id = ( script_isstring(st, 3) ? skill_name2id(script_getstr(st,3)) : script_getnum(st,3) );
|
||||
g = guild_search(guild_id);
|
||||
if( g == NULL )
|
||||
auto g = guild_search(guild_id);
|
||||
if (!g)
|
||||
script_pushint(st, -1);
|
||||
else
|
||||
script_pushint(st, guild_checkskill(g,skill_id));
|
||||
script_pushint(st, guild_checkskill(g->guild,skill_id));
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
@@ -10878,9 +10875,9 @@ BUILDIN_FUNC(guild_has_permission){
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
int position = guild_getposition(sd);
|
||||
int position = guild_getposition(*sd);
|
||||
|
||||
if( position < 0 || ( sd->guild->position[position].mode&permission ) != permission ){
|
||||
if( position < 0 || ( sd->guild->guild.position[position].mode&permission ) != permission ){
|
||||
script_pushint( st, false );
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
@@ -11981,20 +11978,19 @@ BUILDIN_FUNC(getmapguildusers)
|
||||
int16 m;
|
||||
int gid;
|
||||
int c=0;
|
||||
struct guild *g = NULL;
|
||||
str=script_getstr(st,2);
|
||||
gid=script_getnum(st,3);
|
||||
if ((m = map_mapname2mapid(str)) < 0) { // map id on this server (m == -1 if not in actual map-server)
|
||||
script_pushint(st,-1);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
g = guild_search(gid);
|
||||
auto g = guild_search(gid);
|
||||
|
||||
if (g){
|
||||
unsigned short i;
|
||||
for(i = 0; i < g->max_member; i++)
|
||||
for(i = 0; i < g->guild.max_member; i++)
|
||||
{
|
||||
if (g->member[i].sd && g->member[i].sd->bl.m == m)
|
||||
if (g->guild.member[i].sd && g->guild.member[i].sd->bl.m == m)
|
||||
c++;
|
||||
}
|
||||
}
|
||||
@@ -14099,7 +14095,7 @@ BUILDIN_FUNC(failedremovecards) {
|
||||
BUILDIN_FUNC(mapwarp) // Added by RoVeRT
|
||||
{
|
||||
int x,y,m,check_val=0,check_ID=0,i=0;
|
||||
struct guild *g = NULL;
|
||||
std::shared_ptr<MapGuild> g;
|
||||
struct party_data *p = NULL;
|
||||
const char *str;
|
||||
const char *mapname;
|
||||
@@ -14123,10 +14119,10 @@ BUILDIN_FUNC(mapwarp) // Added by RoVeRT
|
||||
case 1:
|
||||
g = guild_search(check_ID);
|
||||
if (g){
|
||||
for( i=0; i < g->max_member; i++)
|
||||
for( i=0; i < g->guild.max_member; i++)
|
||||
{
|
||||
if(g->member[i].sd && g->member[i].sd->bl.m==m){
|
||||
pc_setpos(g->member[i].sd,index,x,y,CLR_TELEPORT);
|
||||
if(g->guild.member[i].sd && g->guild.member[i].sd->bl.m==m){
|
||||
pc_setpos(g->guild.member[i].sd,index,x,y,CLR_TELEPORT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15654,7 +15650,6 @@ BUILDIN_FUNC(recovery)
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
struct guild* g;
|
||||
//When no guild given, we use invoker guild
|
||||
int g_id = 0, i;
|
||||
if(script_hasdata(st,5)) {//Bad maps shouldn't cause issues
|
||||
@@ -15668,12 +15663,12 @@ BUILDIN_FUNC(recovery)
|
||||
g_id = script_getnum(st,3);
|
||||
else if(script_rid2sd(sd))
|
||||
g_id = sd->status.guild_id;
|
||||
g = guild_search(g_id);
|
||||
auto g = guild_search(g_id);
|
||||
if(g == NULL)
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
for (i = 0; i < MAX_GUILD; i++) {
|
||||
map_session_data* pl_sd;
|
||||
if((!(pl_sd = g->member[i].sd) || pl_sd->status.guild_id != g_id)
|
||||
if((!(pl_sd = g->guild.member[i].sd) || pl_sd->status.guild_id != g_id)
|
||||
|| (map_idx && pl_sd->bl.m != map_idx))
|
||||
continue;
|
||||
recovery_sub(pl_sd, revive);
|
||||
@@ -21331,7 +21326,7 @@ int script_instancegetid(struct script_state* st, e_instance_mode mode)
|
||||
}
|
||||
break;
|
||||
case IM_GUILD: {
|
||||
struct guild *gd = guild_search(sd->status.guild_id);
|
||||
auto gd = guild_search(sd->status.guild_id);
|
||||
|
||||
if (gd && gd->instance_id > 0)
|
||||
instance_id = gd->instance_id;
|
||||
@@ -21735,7 +21730,6 @@ BUILDIN_FUNC(instance_check_party)
|
||||
BUILDIN_FUNC(instance_check_guild)
|
||||
{
|
||||
int amount, min, max, i, guild_id = 0, c = 0;
|
||||
struct guild *g = NULL;
|
||||
|
||||
amount = script_hasdata(st,3) ? script_getnum(st,3) : 1; // Amount of needed Guild members for the Instance.
|
||||
min = script_hasdata(st,4) ? script_getnum(st,4) : 1; // Minimum Level needed to join the Instance.
|
||||
@@ -21754,7 +21748,8 @@ BUILDIN_FUNC(instance_check_guild)
|
||||
else
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
|
||||
if (!(g = guild_search(guild_id))) {
|
||||
auto g = guild_search(guild_id);
|
||||
if (!g) {
|
||||
script_pushint(st, 0); // Returns false if guild does not exist.
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
@@ -21762,7 +21757,7 @@ BUILDIN_FUNC(instance_check_guild)
|
||||
for(i = 0; i < MAX_GUILD; i++) {
|
||||
map_session_data *pl_sd;
|
||||
|
||||
if ((pl_sd = g->member[i].sd)) {
|
||||
if ((pl_sd = g->guild.member[i].sd)) {
|
||||
if (map_id2bl(pl_sd->bl.id) && !pl_sd->state.autotrade) {
|
||||
if (pl_sd->status.base_level < min) {
|
||||
script_pushint(st, 0);
|
||||
@@ -23493,10 +23488,9 @@ BUILDIN_FUNC(disable_command) {
|
||||
*/
|
||||
BUILDIN_FUNC(getguildmember)
|
||||
{
|
||||
struct guild *g = NULL;
|
||||
uint8 j = 0;
|
||||
|
||||
g = guild_search(script_getnum(st,2));
|
||||
auto g = guild_search(script_getnum(st,2));
|
||||
|
||||
if (g) {
|
||||
uint8 i, type = 0;
|
||||
@@ -23528,25 +23522,25 @@ BUILDIN_FUNC(getguildmember)
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_GUILD; i++) {
|
||||
if (g->member[i].account_id) {
|
||||
if (g->guild.member[i].account_id) {
|
||||
switch (type) {
|
||||
case 2:
|
||||
if (data)
|
||||
setd_sub_num( st, NULL, varname, j, g->member[i].account_id, data->ref );
|
||||
setd_sub_num( st, NULL, varname, j, g->guild.member[i].account_id, data->ref );
|
||||
else
|
||||
mapreg_setreg(reference_uid(add_str("$@guildmemberaid"), j),g->member[i].account_id);
|
||||
mapreg_setreg(reference_uid(add_str("$@guildmemberaid"), j),g->guild.member[i].account_id);
|
||||
break;
|
||||
case 1:
|
||||
if (data)
|
||||
setd_sub_num( st, NULL, varname, j, g->member[i].char_id, data->ref );
|
||||
setd_sub_num( st, NULL, varname, j, g->guild.member[i].char_id, data->ref );
|
||||
else
|
||||
mapreg_setreg(reference_uid(add_str("$@guildmembercid"), j), g->member[i].char_id);
|
||||
mapreg_setreg(reference_uid(add_str("$@guildmembercid"), j), g->guild.member[i].char_id);
|
||||
break;
|
||||
default:
|
||||
if (data)
|
||||
setd_sub_str( st, NULL, varname, j, g->member[i].name, data->ref );
|
||||
setd_sub_str( st, NULL, varname, j, g->guild.member[i].name, data->ref );
|
||||
else
|
||||
mapreg_setregstr(reference_uid(add_str("$@guildmembername$"), j), g->member[i].name);
|
||||
mapreg_setregstr(reference_uid(add_str("$@guildmembername$"), j), g->guild.member[i].name);
|
||||
break;
|
||||
}
|
||||
j++;
|
||||
@@ -24533,7 +24527,6 @@ BUILDIN_FUNC(jobcanentermap) {
|
||||
*/
|
||||
BUILDIN_FUNC(getguildalliance)
|
||||
{
|
||||
struct guild *guild_data1, *guild_data2;
|
||||
int guild_id1, guild_id2, i = 0;
|
||||
|
||||
guild_id1 = script_getnum(st,2);
|
||||
@@ -24549,8 +24542,8 @@ BUILDIN_FUNC(getguildalliance)
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
guild_data1 = guild_search(guild_id1);
|
||||
guild_data2 = guild_search(guild_id2);
|
||||
auto guild_data1 = guild_search(guild_id1);
|
||||
auto guild_data2 = guild_search(guild_id2);
|
||||
|
||||
if (guild_data1 == NULL) {
|
||||
ShowWarning("buildin_getguildalliance: Requesting non-existent GuildID1 '%d'.\n", guild_id1);
|
||||
@@ -24563,13 +24556,13 @@ BUILDIN_FUNC(getguildalliance)
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
ARR_FIND(0, MAX_GUILDALLIANCE, i, guild_data1->alliance[i].guild_id == guild_id2);
|
||||
ARR_FIND(0, MAX_GUILDALLIANCE, i, guild_data1->guild.alliance[i].guild_id == guild_id2);
|
||||
if (i == MAX_GUILDALLIANCE) {
|
||||
script_pushint(st, 0);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
if (guild_data1->alliance[i].opposition)
|
||||
if (guild_data1->guild.alliance[i].opposition)
|
||||
script_pushint(st, 2);
|
||||
else
|
||||
script_pushint(st, 1);
|
||||
@@ -25929,7 +25922,6 @@ BUILDIN_FUNC(identifyall) {
|
||||
BUILDIN_FUNC(is_guild_leader)
|
||||
{
|
||||
map_session_data* sd;
|
||||
struct guild* guild_data;
|
||||
int guild_id;
|
||||
|
||||
if (!script_rid2sd(sd)) {
|
||||
@@ -25942,9 +25934,9 @@ BUILDIN_FUNC(is_guild_leader)
|
||||
else
|
||||
guild_id = sd->status.guild_id;
|
||||
|
||||
guild_data = guild_search(guild_id);
|
||||
auto guild_data = guild_search(guild_id);
|
||||
if (guild_data)
|
||||
script_pushint(st, (guild_data->member[0].char_id == sd->status.char_id));
|
||||
script_pushint(st, (guild_data->guild.member[0].char_id == sd->status.char_id));
|
||||
else
|
||||
script_pushint(st, false);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
|
||||
Reference in New Issue
Block a user