diff options
author | Haru <haru@dotalux.com> | 2018-07-07 19:59:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-07 19:59:12 +0200 |
commit | f341c57df75c327736792c1b1e98dd68d7033ac9 (patch) | |
tree | 6473aa2be727ada7cca6647cc229e4fce95108a4 | |
parent | eed4e9bb3a466cfe32bdb72df12c7ad2ceb0dd79 (diff) | |
parent | b03d9630d877c2ea9e3197e5e22985bac58c82e9 (diff) | |
download | hercules-f341c57df75c327736792c1b1e98dd68d7033ac9.tar.gz hercules-f341c57df75c327736792c1b1e98dd68d7033ac9.tar.bz2 hercules-f341c57df75c327736792c1b1e98dd68d7033ac9.tar.xz hercules-f341c57df75c327736792c1b1e98dd68d7033ac9.zip |
Merge pull request #2124 from MishimaHaruna/guild-add-member-fix
Guild add member fix
-rw-r--r-- | src/char/int_guild.c | 9 | ||||
-rw-r--r-- | src/char/int_guild.h | 2 | ||||
-rw-r--r-- | src/char/mapif.c | 6 | ||||
-rw-r--r-- | src/plugins/HPMHooking/HPMHooking.Defs.inc | 4 | ||||
-rw-r--r-- | src/plugins/HPMHooking/HPMHooking_char.Hooks.inc | 12 |
5 files changed, 17 insertions, 16 deletions
diff --git a/src/char/int_guild.c b/src/char/int_guild.c index e7315ed50..e03278fad 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -969,21 +969,24 @@ static struct guild *inter_guild_create(const char *name, const struct guild_mem } // Add member to guild -static bool inter_guild_add_member(int guild_id, const struct guild_member *member) +static bool inter_guild_add_member(int guild_id, const struct guild_member *member, int map_fd) { struct guild * g; int i; nullpo_ret(member); g = inter_guild->fromsql(guild_id); - if (g == NULL) + if (g == NULL) { + mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 1); // 1: Failed to add return false; + } // Find an empty slot for (i = 0; i < g->max_member; i++) { if (g->member[i].account_id == 0) { g->member[i] = *member; g->member[i].modified = (GS_MEMBER_NEW | GS_MEMBER_MODIFIED); + mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 0); // 0: success if (!inter_guild->calcinfo(g)) //Send members if it was not invoked. mapif->guild_info(-1, g); @@ -993,6 +996,8 @@ static bool inter_guild_add_member(int guild_id, const struct guild_member *memb return true; } } + + mapif->guild_memberadded(map_fd, guild_id, member->account_id, member->char_id, 1); // 1: Failed to add return false; } diff --git a/src/char/int_guild.h b/src/char/int_guild.h index 2af8f6801..33873edcd 100644 --- a/src/char/int_guild.h +++ b/src/char/int_guild.h @@ -70,7 +70,7 @@ struct inter_guild_interface { int (*parse_frommap) (int fd); int (*broken) (int guild_id); struct guild *(*create) (const char *name, const struct guild_member *master); - bool (*add_member) (int guild_id, const struct guild_member *member); + bool (*add_member) (int guild_id, const struct guild_member *member, int map_fd); bool (*leave) (int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd); bool (*update_member_info_short) (int guild_id, int account_id, int char_id, int online, int lv, int16 class); bool (*update_member_info) (int guild_id, int account_id, int char_id, int type, const char *data, int len); diff --git a/src/char/mapif.c b/src/char/mapif.c index e0565c126..6acf803e2 100644 --- a/src/char/mapif.c +++ b/src/char/mapif.c @@ -784,11 +784,7 @@ static int mapif_parse_GuildAddMember(int fd, int guild_id, const struct guild_m { nullpo_ret(m); - if (!inter_guild->add_member(guild_id, m)) { - mapif->guild_memberadded(fd, guild_id, m->account_id, m->char_id, 1); // 1: Failed to add - } else { - mapif->guild_memberadded(fd, guild_id, m->account_id, m->char_id, 0); // 0: success - } + inter_guild->add_member(guild_id, m, fd); return 0; } diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index cb1ce11fb..691401277 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -3080,8 +3080,8 @@ typedef int (*HPMHOOK_pre_inter_guild_broken) (int *guild_id); typedef int (*HPMHOOK_post_inter_guild_broken) (int retVal___, int guild_id); typedef struct guild* (*HPMHOOK_pre_inter_guild_create) (const char **name, const struct guild_member **master); typedef struct guild* (*HPMHOOK_post_inter_guild_create) (struct guild* retVal___, const char *name, const struct guild_member *master); -typedef bool (*HPMHOOK_pre_inter_guild_add_member) (int *guild_id, const struct guild_member **member); -typedef bool (*HPMHOOK_post_inter_guild_add_member) (bool retVal___, int guild_id, const struct guild_member *member); +typedef bool (*HPMHOOK_pre_inter_guild_add_member) (int *guild_id, const struct guild_member **member, int *map_fd); +typedef bool (*HPMHOOK_post_inter_guild_add_member) (bool retVal___, int guild_id, const struct guild_member *member, int map_fd); typedef bool (*HPMHOOK_pre_inter_guild_leave) (int *guild_id, int *account_id, int *char_id, int *flag, const char **mes, int *map_fd); typedef bool (*HPMHOOK_post_inter_guild_leave) (bool retVal___, int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd); typedef bool (*HPMHOOK_pre_inter_guild_update_member_info_short) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class); diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc index 765044b5b..ad57bce86 100644 --- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc @@ -6750,15 +6750,15 @@ struct guild* HP_inter_guild_create(const char *name, const struct guild_member } return retVal___; } -bool HP_inter_guild_add_member(int guild_id, const struct guild_member *member) { +bool HP_inter_guild_add_member(int guild_id, const struct guild_member *member, int map_fd) { int hIndex = 0; bool retVal___ = false; if (HPMHooks.count.HP_inter_guild_add_member_pre > 0) { - bool (*preHookFunc) (int *guild_id, const struct guild_member **member); + bool (*preHookFunc) (int *guild_id, const struct guild_member **member, int *map_fd); *HPMforce_return = false; for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_add_member_pre; hIndex++) { preHookFunc = HPMHooks.list.HP_inter_guild_add_member_pre[hIndex].func; - retVal___ = preHookFunc(&guild_id, &member); + retVal___ = preHookFunc(&guild_id, &member, &map_fd); } if (*HPMforce_return) { *HPMforce_return = false; @@ -6766,13 +6766,13 @@ bool HP_inter_guild_add_member(int guild_id, const struct guild_member *member) } } { - retVal___ = HPMHooks.source.inter_guild.add_member(guild_id, member); + retVal___ = HPMHooks.source.inter_guild.add_member(guild_id, member, map_fd); } if (HPMHooks.count.HP_inter_guild_add_member_post > 0) { - bool (*postHookFunc) (bool retVal___, int guild_id, const struct guild_member *member); + bool (*postHookFunc) (bool retVal___, int guild_id, const struct guild_member *member, int map_fd); for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_add_member_post; hIndex++) { postHookFunc = HPMHooks.list.HP_inter_guild_add_member_post[hIndex].func; - retVal___ = postHookFunc(retVal___, guild_id, member); + retVal___ = postHookFunc(retVal___, guild_id, member, map_fd); } } return retVal___; |