diff --git a/db/packet_db.txt b/db/packet_db.txt index 4c8b724344..d32cb8de31 100644 --- a/db/packet_db.txt +++ b/db/packet_db.txt @@ -1775,6 +1775,7 @@ packet_ver:31 0x0368,6,solvecharname,2 0x08E5,41,bookingregreq,2:4 //Added to prevent disconnections 0x08d2,10 +0x0916,26,guildinvite2,2 //2012-06-18 packet_ver: 32 diff --git a/src/map/clif.c b/src/map/clif.c index 715bef8182..a4b039fd53 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -12065,27 +12065,45 @@ void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd) guild_change_notice(sd, guild_id, msg1, msg2); } +// Helper function for guild invite functions +int +clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_session_data *t_sd) { + if (t_sd == NULL) {// not online or does not exist + return 1; + } + + if (map[sd->bl.m].flag.guildlock) {//Guild locked. + clif_displaymessage(fd, msg_txt(sd,228)); + return 1; + } + + if(t_sd && t_sd->state.noask) {// @noask [LuzZza] + clif_noask_sub(sd, t_sd, 2); + return 1; + } + + guild_invite(sd, t_sd); + return 0; +} /// Guild invite request (CZ_REQ_JOIN_GUILD). /// 0168 .L .L .L void clif_parse_GuildInvite(int fd,struct map_session_data *sd) { - struct map_session_data *t_sd; + struct map_session_data *t_sd = map_id2sd(RFIFOL(fd,2)); - if(map[sd->bl.m].flag.guildlock) { //Guild locked. - clif_displaymessage(fd, msg_txt(sd,228)); + if (clif_sub_guild_invite(fd, sd, t_sd)) return; - } +} - t_sd = map_id2sd(RFIFOL(fd,2)); +/// Guild invite request (/guildinvite) +/// 0916 .24B +void +clif_parse_GuildInvite2(int fd, struct map_session_data *sd) { + struct map_session_data *t_sd = map_nick2sd((char *)RFIFOP(fd, 2)); - // @noask [LuzZza] - if(t_sd && t_sd->state.noask) { - clif_noask_sub(sd, t_sd, 2); + if (clif_sub_guild_invite(fd, sd, t_sd)) return; - } - - guild_invite(sd,t_sd); } @@ -16941,6 +16959,7 @@ static int packetdb_readdb(void) { clif_parse_cashshop_buy, "cashshopbuy" }, /* */ { clif_parse_MoveItem , "moveitem" }, + { clif_parse_GuildInvite2 , "guildinvite2" }, {NULL,NULL} };