Explorar o código

- Prevented guild/party recall to work on GMs of greater level than yourself.
- Prevent muting players with higher GM level than yourself.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5388 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex %!s(int64=19) %!d(string=hai) anos
pai
achega
7954b15ccc
Modificáronse 2 ficheiros con 11 adicións e 0 borrados
  1. 3 0
      Changelog-Trunk.txt
  2. 8 0
      src/map/atcommand.c

+ 3 - 0
Changelog-Trunk.txt

@@ -6,6 +6,9 @@ GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALAR
 
 
 2006/02/24
+	* Prevented guild/party recall to work on GMs of greater level than
+	  yourself. [Skotlex]
+	* Prevent muting players with higher GM level than yourself. [Skotlex]
 	* Fixed Lady Tanee's spawns. [Skotlex]
 2006/02/23
 	* Fixed the CL_WHITE define, thanks to FlavioJS [Skotlex]

+ 8 - 0
src/map/atcommand.c

@@ -5283,6 +5283,8 @@ int atcommand_guildrecall(
 		for (i = 0; i < users; i++) {
 			if ((pl_sd = pl_allsd[i]) && sd->status.account_id != pl_sd->status.account_id &&
 			    pl_sd->status.guild_id == g->guild_id) {
+				if (pc_isGM(pl_sd) > pc_isGM(sd))
+					continue; //Skip GMs greater than you.
 				if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd))
 					count++;
 				else
@@ -5339,6 +5341,8 @@ int atcommand_partyrecall(
 		for (i = 0; i < users; i++) {
 			if ((pl_sd = pl_allsd[i]) && sd->status.account_id != pl_sd->status.account_id &&
 			    pl_sd->status.party_id == p->party_id) {
+				if (pc_isGM(pl_sd) > pc_isGM(sd))
+					continue; //Skip GMs greater than you.
 				if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd))
 					count++;
 				else
@@ -8362,6 +8366,10 @@ int atcommand_mute(
 	}
 
 	if ((pl_sd = map_nick2sd(atcmd_player_name)) != NULL) {
+		if (pc_isGM(pl_sd) > pc_isGM(sd)) {
+			clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player.
+			return -1;
+		}
 		clif_GM_silence(sd, pl_sd, 0);
 		pl_sd->status.manner -= manner;
 		if(pl_sd->status.manner < 0)