From 19082e5aa65c7c1ba3bc679393132b8e94f2693b Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 28 Nov 2006 16:26:08 +0000 Subject: - Fixed a possible crash due to the recent core.c upgrade. - Changing setting the Guild Master from pc_authok to clif_parse_LoadEndAck so that it will not fail to set the gmaster flag when the first person of a guild to log on is the guild master. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9347 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/clif.c | 10 ++++++++++ src/map/pc.c | 17 ++--------------- src/map/skill.c | 2 -- 3 files changed, 12 insertions(+), 17 deletions(-) (limited to 'src/map') diff --git a/src/map/clif.c b/src/map/clif.c index 5c2157aa2..380a57095 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8376,6 +8376,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if(sd->state.connect_new) { int lv; + struct guild *g; sd->state.connect_new = 0; clif_skillinfoblock(sd); clif_updatestatus(sd,SP_NEXTBASEEXP); @@ -8405,6 +8406,15 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if(sd->hd) merc_hom_init_timers(sd->hd); + if (sd->status.guild_id > 0 && !sd->state.gmaster_flag && + (g=guild_search(sd->status.guild_id)) && + strcmp(sd->status.name,g->master) == 0) + { //Block Guild Skills to prevent logout/login reuse exploiting. [Skotlex] + guild_block_skill(sd, 300000); + //Also set the Guild Master flag. + sd->state.gmaster_flag = g; + } + //Delayed night effect on log-on fix for the glow-issue. Thanks to Larry. if (night_flag && map[sd->bl.m].flag.nightenabled) add_timer(gettick()+1000,clif_nighttimer,sd->bl.id,0); diff --git a/src/map/pc.c b/src/map/pc.c index 5a41868d2..80ce76857 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -565,7 +565,6 @@ int pc_isequip(struct map_session_data *sd,int n) */ int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_time, struct mmo_charstatus *st) { - struct guild *g; int i; unsigned long tick = gettick(); @@ -670,22 +669,10 @@ int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_t if (sd->status.hom_id > 0) intif_homunculus_requestload(sd->status.account_id, sd->status.hom_id); - // パ?ティ、ギルドデ?タの要求 if (sd->status.party_id > 0 && party_search(sd->status.party_id) == NULL) party_request_info(sd->status.party_id); - if (sd->status.guild_id > 0) - { - if ((g = guild_search(sd->status.guild_id)) == NULL) - guild_request_info(sd->status.guild_id); - else if (strcmp(sd->status.name,g->master) == 0) - { //Block Guild Skills to prevent logout/login reuse exploiting. [Skotlex] - guild_block_skill(sd, 300000); - //Also set the Guild Master flag. - sd->state.gmaster_flag = g; - } - } - - // 通知 + if (sd->status.guild_id > 0 && guild_search(sd->status.guild_id) == NULL) + guild_request_info(sd->status.guild_id); clif_authok(sd); map_addiddb(&sd->bl); diff --git a/src/map/skill.c b/src/map/skill.c index ee3619822..60153cfb5 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8355,8 +8355,6 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t case GD_EMERGENCYCALL: if (!sd->status.guild_id || !sd->state.gmaster_flag) return 0; - if (lv <= 0) - return 0; break; case GS_GLITTERING: -- cgit v1.2.3-70-g09d2