- 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://svn.code.sf.net/p/rathena/svn/trunk@9347 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2006-11-28 16:26:08 +00:00
parent b06ebc1719
commit 9692efa6f0
5 changed files with 22 additions and 20 deletions

View File

@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/11/28
* 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. [Skotlex]
* Modified the way Storm Gust freeze's counter works. Now it checks for the
caster of the Storm Gust, if it's the same as the previous hit, the counter
is increased, otherwise, the ID is updated and the counter is changed to 1.

View File

@ -227,9 +227,13 @@ int main (int argc, char **argv)
// initialise program arguments
{
char *p = SERVER_NAME = argv[0];
while ((p = strchr(p, '/')) != NULL || (p = strchr(p, '\\')) != NULL)
SERVER_NAME = ++p;
char *p1 = SERVER_NAME = argv[0];
char *p2 = p1;
while ((p1 = strchr(p2, '/')) != NULL || (p1 = strchr(p2, '\\')) != NULL)
{
SERVER_NAME = ++p1;
p2 = p1;
}
arg_c = argc;
arg_v = argv;
#ifndef SVNVERSION

View File

@ -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);

View File

@ -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);

View File

@ -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: