- Added support for the new party invite/reply packets from the latest client version.

- Cleared up some TODO's
- Added auto-rejecting party/guild invites when the target is disconnected from the server.
- Added a correction in the walking code to abort it when map_moveblock cancels the player's walking (by warping/knocking back),the default code would fail because unit_stopwalking would do nothing since the walk timer was already -1 in that moment.
- Corrected mob_randomwalk to use unsigned int for the tick variable.
- Changed the default @Main format to prevent crashes in the newer clients.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11134 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2007-09-07 07:31:58 +00:00
parent 19a0138c49
commit 574c76e799
10 changed files with 63 additions and 6 deletions

View File

@ -3,6 +3,13 @@ Date Added
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2007/09/07
* Added support for the new party invite/reply packets from the latest
client version.
* Added auto-rejecting party/guild invites when the target is disconnected
from the server.
* Changed the default @Main format to prevent crashes in the newer
clients.
2007/09/04
* bonus3 autospell (and autospell when hit) will now select for spell
target self when the skill is tagged a support skill.

View File

@ -390,7 +390,7 @@
383: Main chat already disabled.
384: Main chat is currently enabled. Usage: @main <on|off>, @main <message>.
385: Main chat is currently disabled. Usage: @main <on|off>, @main <message>.
386: Main@%s: %s
386: Main@%s : %s
387: You cannot use Main chat while muted.
388: You should enable main chat with "@main on" command.
//NoAsk

View File

@ -1017,6 +1017,8 @@ packet_ver: 22
0x02ba,11,hotkey,2:4:5:9
0x02bb,8
0x02bc,6
0x02c4,26,partyinvite2,2
0x02c7,7,replypartyinvite2,2,6
//Add new packets here
//packet_ver: 23

View File

@ -10105,6 +10105,28 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd)
party_invite(sd, t_sd);
}
void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
{
struct map_session_data *t_sd;
char *name = RFIFOP(fd,2);
name[NAME_LENGTH]='\0';
if(map[sd->bl.m].flag.partylock)
{ //Guild locked.
clif_displaymessage(fd, msg_txt(227));
return;
}
t_sd = map_nick2sd(name);
// @noask [LuzZza]
if(t_sd && t_sd->state.noask) {
clif_noask_sub(sd, t_sd, 1);
return;
}
party_invite(sd, t_sd);
}
/*==========================================
*
*------------------------------------------*/
@ -10118,6 +10140,16 @@ void clif_parse_ReplyPartyInvite(int fd,struct map_session_data *sd)
}
}
void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd)
{
if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 5){
party_reply_invite(sd,RFIFOL(fd,2),RFIFOB(fd,6));
} else {
party_reply_invite(sd,RFIFOL(fd,2),-1);
clif_skill_fail(sd,1,0,4);
}
}
/*==========================================
* 退
*------------------------------------------*/
@ -11820,7 +11852,9 @@ static int packetdb_readdb(void)
{clif_parse_CreateParty,"createparty"},
{clif_parse_CreateParty2,"createparty2"},
{clif_parse_PartyInvite,"partyinvite"},
{clif_parse_PartyInvite2,"partyinvite2"},
{clif_parse_ReplyPartyInvite,"replypartyinvite"},
{clif_parse_ReplyPartyInvite2,"replypartyinvite2"},
{clif_parse_LeaveParty,"leaveparty"},
{clif_parse_RemovePartyMember,"removepartymember"},
{clif_parse_PartyChangeOption,"partychangeoption"},

View File

@ -648,6 +648,12 @@ int guild_invite(struct map_session_data *sd,struct map_session_data *tsd)
return 0;
}
}
if (!tsd->fd) { //You can't invite someone who has already disconnected.
clif_guild_inviteack(sd,1);
return 0;
}
if(tsd->status.guild_id>0 ||
tsd->guild_invite>0 ||
(agit_flag && map[tsd->bl.m].flag.gvg_castle))

View File

@ -1023,7 +1023,7 @@ int mob_unlocktarget(struct mob_data *md,int tick)
/*==========================================
* Random walk
*------------------------------------------*/
int mob_randomwalk(struct mob_data *md,int tick)
int mob_randomwalk(struct mob_data *md,unsigned int tick)
{
const int retrycount=20;
int i,x,y,c,d;

View File

@ -162,7 +162,7 @@ int mob_once_spawn_area(struct map_session_data *sd,const char *mapname,
int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobname, int class_, const char* event, int guardian); // Spawning Guardians [Valaris]
int mob_guardian_guildchange(struct block_list *bl,va_list ap); //Change Guardian's ownership. [Skotlex]
int mob_randomwalk(struct mob_data *md,int tick);
int mob_randomwalk(struct mob_data *md,unsigned int tick);
int mob_target(struct mob_data *md,struct block_list *bl,int dist);
int mob_unlocktarget(struct mob_data *md,int tick);

View File

@ -268,6 +268,11 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
return 0;
}
}
if (!tsd->fd) { //You can't invite someone who has already disconnected.
clif_party_inviteack(sd,tsd->status.name,1);
return 0;
}
if( tsd->status.party_id>0 || tsd->party_invite>0 ){
clif_party_inviteack(sd,tsd->status.name,0);
return 0;

View File

@ -8563,7 +8563,7 @@ BUILDIN_FUNC(sc_start)
}
if( potion_flag == 1 && potion_target )
{//##TODO how does this work [FlavioJS]
{ //skill.c set the flags before running the script, this must be a potion-pitched effect.
bl = map_id2bl(potion_target);
tick /= 2;// Thrown potions only last half.
val4 = 1;// Mark that this was a thrown sc_effect
@ -8601,7 +8601,7 @@ BUILDIN_FUNC(sc_start2)
}
if( potion_flag == 1 && potion_target )
{//##TODO how does this work [FlavioJS]
{ //skill.c set the flags before running the script, this must be a potion-pitched effect.
bl = map_id2bl(potion_target);
tick /= 2;// Thrown potions only last half.
val4 = 1;// Mark that this was a thrown sc_effect
@ -8643,7 +8643,7 @@ BUILDIN_FUNC(sc_start4)
}
if( potion_flag == 1 && potion_target )
{//##TODO how does this work [FlavioJS]
{ //skill.c set the flags before running the script, this must be a potion-pitched effect.
bl = map_id2bl(potion_target);
tick /= 2;// Thrown potions only last half.
}

View File

@ -156,6 +156,9 @@ static int unit_walktoxy_timer(int tid,unsigned int tick,int id,int data)
map_moveblock(bl, x, y, tick);
ud->walk_count++; //walked cell counter, to be used for walk-triggered skills. [Skotlex]
if (bl->x != x || bl->y != y || ud->walktimer != -1)
return 0; //map_moveblock has altered the object beyond what we expected (moved/warped it)
ud->walktimer = 1;
map_foreachinmovearea(clif_insight, bl, AREA_SIZE,
-dx, -dy, sd?BL_ALL:BL_PC, bl);