Browse Source

* Should fix a bug in GM stealth mode (@hide).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5823 54d463be-8e91-2dee-dedb-b68131a5f0ec
Lance 19 years ago
parent
commit
140e77689e
3 changed files with 37 additions and 28 deletions
  1. 3 0
      Changelog-Trunk.txt
  2. 2 4
      notice.txt
  3. 32 24
      src/map/clif.c

+ 3 - 0
Changelog-Trunk.txt

@@ -3,6 +3,9 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 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.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
+2006/03/31
+	* Should fix a bug in GM stealth mode (@hide). [Lance]
+
 2006/03/30
 2006/03/30
 	* Updated char name option. [Vicious]
 	* Updated char name option. [Vicious]
 	* Added a missing return that fixes crashes on status_change_timer when
 	* Added a missing return that fixes crashes on status_change_timer when

+ 2 - 4
notice.txt

@@ -1,10 +1,8 @@
 //Notice\\
 //Notice\\
 
 
-This branch, "Stable", might not be stable due to bugs and whatsoever. 
+This branch, "Trunk", might not be stable due to bugs and whatsoever. 
 It is highly recommended, if you have any dobts on using this svn version,
 It is highly recommended, if you have any dobts on using this svn version,
-it is best if you use an eAthena Official Version or use RC5. calling the 
-stable branch stable is an understatement. you have choosen to use it,
-bear with it.
+it is best if you use an eAthena Official Version or use RC5.
 
 
 on another note, if you found a bug, it is best if you report it on the eAthena 
 on another note, if you found a bug, it is best if you report it on the eAthena 
 forums as http://eathena.ws/ . If you have made yourself a fix for 
 forums as http://eathena.ws/ . If you have made yourself a fix for 

+ 32 - 24
src/map/clif.c

@@ -1821,31 +1821,34 @@ int clif_spawnpc(struct map_session_data *sd) {
 
 
 	nullpo_retr(0, sd);
 	nullpo_retr(0, sd);
 
 
-	clif_set0078(sd, buf);
+	// Avoid bots/modified clients to view hidden GMs. [Lance]
+	if(!pc_isGM(sd) || !sd->status.option&OPTION_INVISIBLE){
+		clif_set0078(sd, buf);
 
 
 #if PACKETVER < 4
 #if PACKETVER < 4
-	WBUFW(buf, 0) = 0x79;
-	WBUFW(buf,51) = clif_setlevel(sd->status.base_level);
-	clif_send(buf, packet_len_table[0x79], &sd->bl, AREA_WOS);
+		WBUFW(buf, 0) = 0x79;
+		WBUFW(buf,51) = clif_setlevel(sd->status.base_level);
+		clif_send(buf, packet_len_table[0x79], &sd->bl, AREA_WOS);
 #else
 #else
-	WBUFW(buf, 0) = 0x1d9;
-	WBUFW(buf,51) = clif_setlevel(sd->status.base_level);
-	clif_send(buf, packet_len_table[0x1d9], &sd->bl, AREA_WOS);
+		WBUFW(buf, 0) = 0x1d9;
+		WBUFW(buf,51) = clif_setlevel(sd->status.base_level);
+		clif_send(buf, packet_len_table[0x1d9], &sd->bl, AREA_WOS);
 #endif
 #endif
 
 
-	if(sd->disguise > 0) {
-		int len;
-		memset(buf,0,packet_len_table[0x7c]);
-		WBUFW(buf,0)=0x7c;
-		WBUFL(buf,2)=-sd->bl.id;
-		WBUFW(buf,6)=sd->speed;
-		WBUFW(buf,12)=sd->sc.option;
-		WBUFW(buf,20)=sd->disguise;
-		WBUFPOS(buf,36,sd->bl.x,sd->bl.y);
-		clif_send(buf,packet_len_table[0x7c],&sd->bl,AREA);
-
-		len = clif_dis0078(sd,buf);
-		clif_send(buf,len,&sd->bl,AREA);
+		if(sd->disguise > 0) {
+			int len;
+			memset(buf,0,packet_len_table[0x7c]);
+			WBUFW(buf,0)=0x7c;
+			WBUFL(buf,2)=-sd->bl.id;
+			WBUFW(buf,6)=sd->speed;
+			WBUFW(buf,12)=sd->sc.option;
+			WBUFW(buf,20)=sd->disguise;
+			WBUFPOS(buf,36,sd->bl.x,sd->bl.y);
+			clif_send(buf,packet_len_table[0x7c],&sd->bl,AREA);
+
+			len = clif_dis0078(sd,buf);
+			clif_send(buf,len,&sd->bl,AREA);
+		}
 	}
 	}
 
 
 	if (sd->spiritball > 0)
 	if (sd->spiritball > 0)
@@ -4189,7 +4192,7 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds
 	nullpo_retv(dstsd);
 	nullpo_retv(dstsd);
 
 
 	// Hidden GMs will not be revealed by bots :) [Lance]
 	// Hidden GMs will not be revealed by bots :) [Lance]
-	if((!dstsd->status.option&OPTION_INVISIBLE || !pc_isGM(dstsd)) || pc_isGM(sd)){
+	if(!pc_isGM(dstsd) || !dstsd->status.option&OPTION_INVISIBLE){
 		if(dstsd->ud.walktimer != -1){
 		if(dstsd->ud.walktimer != -1){
 	#if PACKETVER < 4
 	#if PACKETVER < 4
 					WFIFOHEAD(sd->fd, packet_len_table[0x7b]);
 					WFIFOHEAD(sd->fd, packet_len_table[0x7b]);
@@ -4199,7 +4202,7 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds
 			len = clif_set007b(dstsd,WFIFOP(sd->fd,0));
 			len = clif_set007b(dstsd,WFIFOP(sd->fd,0));
 			WFIFOSET(sd->fd,len);
 			WFIFOSET(sd->fd,len);
 			if(dstsd->disguise) {
 			if(dstsd->disguise) {
-							WFIFOHEAD(sd->fd,packet_len_table[0x7b]);
+				WFIFOHEAD(sd->fd,packet_len_table[0x7b]);
 				len = clif_dis007b(dstsd,WFIFOP(sd->fd,0));
 				len = clif_dis007b(dstsd,WFIFOP(sd->fd,0));
 				WFIFOSET(sd->fd,len);
 				WFIFOSET(sd->fd,len);
 			}
 			}
@@ -4212,7 +4215,7 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds
 			len = clif_set0078(dstsd,WFIFOP(sd->fd,0));
 			len = clif_set0078(dstsd,WFIFOP(sd->fd,0));
 			WFIFOSET(sd->fd,len);
 			WFIFOSET(sd->fd,len);
 			if(dstsd->disguise) {
 			if(dstsd->disguise) {
-							WFIFOHEAD(sd->fd,packet_len_table[0x7b]);
+				WFIFOHEAD(sd->fd,packet_len_table[0x7b]);
 				len = clif_dis0078(dstsd,WFIFOP(sd->fd,0));
 				len = clif_dis0078(dstsd,WFIFOP(sd->fd,0));
 				WFIFOSET(sd->fd,len);
 				WFIFOSET(sd->fd,len);
 			}
 			}
@@ -4348,10 +4351,15 @@ int clif_fixpcpos(struct map_session_data *sd)
 
 
 	if(sd->ud.walktimer != -1){
 	if(sd->ud.walktimer != -1){
 		len = clif_set007b(sd,buf);
 		len = clif_set007b(sd,buf);
-		clif_send(buf,len,&sd->bl,AREA);
 	} else {
 	} else {
 		len = clif_set0078(sd,buf);
 		len = clif_set0078(sd,buf);
+	}
+
+	// Prevent bots/modified clients to view hidden GMs [Lance]
+	if(!pc_isGM(sd) || !sd->status.option&OPTION_INVISIBLE){
 		clif_send(buf,len,&sd->bl,AREA);
 		clif_send(buf,len,&sd->bl,AREA);
+	} else {
+		clif_send(buf,len,&sd->bl,SELF);
 	}
 	}
 
 
 	return 0;
 	return 0;