diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-09-27 11:28:28 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-09-27 11:28:28 +0000 |
commit | 6b97414d3f91999512537eb3878057f381005e58 (patch) | |
tree | 1126653edb7b593af22f64331011e2878b2e21ef /src/map | |
parent | 4b7725cdeff68626a8a9f7f8106a1cd18b850a8e (diff) | |
download | hercules-6b97414d3f91999512537eb3878057f381005e58.tar.gz hercules-6b97414d3f91999512537eb3878057f381005e58.tar.bz2 hercules-6b97414d3f91999512537eb3878057f381005e58.tar.xz hercules-6b97414d3f91999512537eb3878057f381005e58.zip |
Fixed clif_changelook betraying the presence of gm-hidden players (bugreport:2283).
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13240 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/clif.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 53398a376..6036cd132 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2318,12 +2318,15 @@ void clif_changelook(struct block_list *bl,int type,int val) { unsigned char buf[16]; struct map_session_data* sd = NULL; + struct status_change* sc; struct view_data* vd; + enum send_target target = AREA; nullpo_retv(bl); sd = BL_CAST(BL_PC, bl); + sc = status_get_sc(bl); vd = status_get_viewdata(bl); - //nullpo_ret(vd); + //nullpo_ret(vd); if( vd ) //temp hack to let Warp Portal change appearance switch(type) { @@ -2395,12 +2398,16 @@ void clif_changelook(struct block_list *bl,int type,int val) break; } + // prevent leaking the presence of GM-hidden objects + if( sc->option&OPTION_INVISIBLE ) + target = SELF; + #if PACKETVER < 4 WBUFW(buf,0)=0xc3; WBUFL(buf,2)=bl->id; WBUFB(buf,6)=type; WBUFB(buf,7)=val; - clif_send(buf,packet_len(0xc3),bl,AREA); + clif_send(buf,packet_len(0xc3),bl,target); #else WBUFW(buf,0)=0x1d7; WBUFL(buf,2)=bl->id; @@ -2413,7 +2420,7 @@ void clif_changelook(struct block_list *bl,int type,int val) WBUFW(buf,7)=val; WBUFW(buf,9)=0; } - clif_send(buf,packet_len(0x1d7),bl,AREA); + clif_send(buf,packet_len(0x1d7),bl,target); #endif } |