 |
 |
 |
 |
|
 |
 |
|
 |
 |
|
 |
 |
|
 |
 |
|
 |
 |
|
 |
 |
|
 |
 |
| Author |
Message |
Repsak
Joined: 05 Feb 2006 Posts: 91 Location: Denmark
|
Posted: Mon Aug 14, 2006 7:47 pm Post subject: |
|
|
I just downloaded you party system, and I noticed that every time a client declined an invitation (eigher by /decline or the 10 seconds automatic decline) the invited client would freeze.
I tracked down the problem to this code:
| Code: |
var packet := CreatePacket(MSGTYPE_PARTY, 11);
packet.SetInt16(OFFSET_PARTY_SUBCMD, SUBCMD_PARTY); // Set subcmd to Party
packet.SetInt8(OFFSET_PARTY_SUBSUBCMD, 2); // Set subsubcmd to Remove
packet.SetInt8(OFFSET_PARTY_REMOVE_NEWSIZE, 0); // Set 0 party size
packet.SetInt32(OFFSET_PARTY_REMOVE_PLAYERID, invitee.serial); // Set removed player's serial
packet.Set16(OFFSET_PARTY_MSGLEN, packet.GetSize()); // Set packet length
packet.SendPacket(invitee);
|
After some testing I found that if I replaced the code, with
| Code: | // Send remove packet
SendRemovePacket(invitee, invitee.serial); |
The problem would be fixed.
I did ofcourse move the SendRemovePacket function to a shared .inc before I could compile handlePartyDecline.
Im running pol96.1 using latest clients.
Bug?
PS. I noticed that the 'CoreRequired' was set to 97 in the original pkg.cfg, and I of course had to change it to 96. Not sure if it has anything do with this. |
|
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
| Author |
Message |
Repsak
Joined: 05 Feb 2006 Posts: 91 Location: Denmark
|
Posted: Thu Aug 24, 2006 1:25 pm Post subject: |
|
|
Thanks, he is a few more bug reports (and fixed when I was able):
BUG1: P1 send an invitation to P2. When P2 declines(either automatic or /decline), he is informed that “You notify them that you do not wish to join the part.” But no message it send to P1/the party.
BUG2: P1 and P2 has formed a party. P1 click ‘add member’ and select P3, but P1 is informed right away that “This person is already in a party!”. This seem to be due
From HandlePartyAdd line 45:
| Code: |
elseif ( targ.acctname )
if ( targ.serial == character.serial )
SendSysMessage(character, "You cannot add yourself to a party.");
return 0;
elseif ( GetObjProperty(targ, PARTY_JOINING_PROP) )
SendSysMessage(character, "That person is already considering joining a party.");
return 0;
elseif ( party )
if ( targ.serial in (party) )
SendSysMessage(character, "This person is already in your party!");
else
SendSysMessage(character, "This person is already in a party!");
endif
return 0;
endif
endif
|
A suggestion to fix it would be:
| Code: |
elseif ( targ.acctname )
if ( targ.serial == character.serial )
SendSysMessage(character, "You cannot add yourself to a party.");
return 0;
elseif ( GetObjProperty(targ, PARTY_JOINING_PROP) )
SendSysMessage(character, "That person is already considering joining a party.");
return 0;
elseif ( party )
if ( targ.serial in (party) )
SendSysMessage(character, "This person is already in your party!");
return 0;
elseif(GetObjProperty(targ, PARTY_PROP))
SendSysMessage(character, "This person is already in a party!");
return 0;
endif
endif
endif
|
BUG3: With the fix in bug 2, I was able for form a part containing 3 members (P1, P2 and P3). P1 is the leader of the party. Now P2 desides to leave the party, so he click 'Leave the party. Now his party manifest is updated correct and #Party prop is removed. The problem is that the party manifest gump for P1 and P3 are also updated, but it look like the part is resolved, yet they still have #Party prop, only containing there 2 serials.
So when someone leaves a party containing more then 3 members, the party is semi resolved (and a relog on required to fix the party manifest), but the #Party prop is handled correct on all 3 members.
I was not able to fix it, but the problems seem to be that the remaining clients do not recieve the correct packet from the shard.
BUG4: This is a minor one, but still a bug. P1 invites P2. P2 wait for the auto decline, and the type /accept. He is then told "You have not been invited to a party." as it should, but right after he also recieves the message "You have chosen to prevent your party from looting your corpse". This last message should not be send, since he never joined a party (he did'nt even have an invitation when he ysed /accept)
That is all for now, ill await another release and continue my testing when it does. Keep up the good work. |
|
 |
|
|
 |
 |
|