diff options
-rw-r--r-- | Changelog-Trunk.txt | 5 | ||||
-rw-r--r-- | src/map/clif.c | 14 | ||||
-rw-r--r-- | src/map/pc.c | 6 |
3 files changed, 11 insertions, 14 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 2c447ca93..8da39653e 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,9 +4,12 @@ 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/06/08
+ * Cleaned clif_pvpset to not send the packet to nearby characters when the
+ source is GM-hidden. May help fix the crash on PvP with gm-hidden
+ characters. [Skotlex]
* Modified map_freeblock_unlock so that aFree errors will report the
file/line that INVOKED the function rather than the function itself.
- [Skotlex[
+ [Skotlex]
NOTE: Do NOT disable the memory manager as that will break this change.
This change is to be temporarily set until the afree'd error can be
resolved.
diff --git a/src/map/clif.c b/src/map/clif.c index 99a3a7a45..7f06c1e20 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -5121,25 +5121,21 @@ int clif_pvpset(struct map_session_data *sd,int pvprank,int pvpnum,int type) WFIFOHEAD(sd->fd,packet_len_table[0x19a]);
WFIFOW(sd->fd,0) = 0x19a;
WFIFOL(sd->fd,2) = sd->bl.id;
- if(pvprank<=0)
- pc_calc_pvprank(sd);
WFIFOL(sd->fd,6) = pvprank;
WFIFOL(sd->fd,10) = pvpnum;
WFIFOSET(sd->fd,packet_len_table[0x19a]);
} else {
unsigned char buf[32];
-
WBUFW(buf,0) = 0x19a;
WBUFL(buf,2) = sd->bl.id;
- if(sd->sc.option&0x46)
- // WTF? a -1 to an unsigned value...
- WBUFL(buf,6) = 0xFFFFFFFF;
+ if(sd->sc.option&(OPTION_HIDE|OPTION_CLOAK))
+ WBUFL(buf,6) = ULONG_MAX; //On client displays as --
else
- if(pvprank<=0)
- pc_calc_pvprank(sd);
WBUFL(buf,6) = pvprank;
WBUFL(buf,10) = pvpnum;
- if(!type)
+ if(sd->sc.option&OPTION_INVISIBLE)
+ clif_send(buf,packet_len_table[0x19a],&sd->bl,SELF);
+ else if(!type)
clif_send(buf,packet_len_table[0x19a],&sd->bl,AREA);
else
clif_send(buf,packet_len_table[0x19a],&sd->bl,ALL_SAMEMAP);
diff --git a/src/map/pc.c b/src/map/pc.c index d2db1d0cd..ff6a435cb 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6398,10 +6398,8 @@ int pc_calc_pvprank_sub(struct block_list *bl,va_list ap) {
struct map_session_data *sd1,*sd2=NULL;
- nullpo_retr(0, bl);
- nullpo_retr(0, ap);
- nullpo_retr(0, sd1=(struct map_session_data *)bl);
- nullpo_retr(0, sd2=va_arg(ap,struct map_session_data *));
+ sd1=(struct map_session_data *)bl;
+ sd2=va_arg(ap,struct map_session_data *);
if( sd1->pvp_point > sd2->pvp_point )
sd2->pvp_rank++;
|