Sfoglia il codice sorgente

- Simplified the code for @storage
- Added echoing messages back to self when using @/# commands on whispers and party/guild messages, to prevent the client from muting yourself.


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

skotlex 18 anni fa
parent
commit
97eb6c01f9
3 ha cambiato i file con 27 aggiunte e 12 eliminazioni
  1. 3 0
      Changelog-Trunk.txt
  2. 2 10
      src/map/atcommand.c
  3. 22 2
      src/map/clif.c

+ 3 - 0
Changelog-Trunk.txt

@@ -4,6 +4,9 @@ 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/09/19
+	* Added echoing messages back to self when using @/# commands on whispers
+	  and party/guild messages, to prevent the client from muting yourself.
+	  [Skotlex]
 	* Fixed some gcc4 warnings [Toms]
 2006/09/18
 	* Fixed Spider Web fire damage bonus. [Skotlex]

+ 2 - 10
src/map/atcommand.c

@@ -2194,21 +2194,13 @@ int atcommand_storage(
 	const int fd, struct map_session_data* sd,
 	const char* command, const char* message)
 {
-	struct storage *stor; //changes from Freya/Yor
 	nullpo_retr(-1, sd);
 
-	if (sd->state.storage_flag) {
+	if (storage_storageopen(sd) == 1)
+  	{	//Already open.
 		clif_displaymessage(fd, msg_txt(250));
 		return -1;
 	}
-
-	if ((stor = account2storage2(sd->status.account_id)) != NULL && stor->storage_status == 1) {
-		clif_displaymessage(fd, msg_txt(250));
-		return -1;
-	}
-
-	storage_storageopen(sd);
-
 	return 0;
 }
 

+ 22 - 2
src/map/clif.c

@@ -6740,8 +6740,6 @@ int clif_guild_memberlogin_notice(struct guild *g,int idx,int flag)
 
 	nullpo_retr(0, g);
 
-	// printf("clif_guild_message(%s, %d, %s)\n", g->name, account_id, mes);
-
 	WBUFW(buf, 0)=0x16d;
 	WBUFL(buf, 2)=g->member[idx].account_id;
 	WBUFL(buf, 6)=g->member[idx].char_id;
@@ -9040,6 +9038,7 @@ void clif_parse_Wis(int fd, struct map_session_data *sd) { // S 0096 <len>.w <ni
 	if ((is_charcommand(fd, sd, gm_command, 0) != CharCommand_None) ||
 		(is_atcommand(fd, sd, gm_command, 0) != AtCommand_None)) {
 		if(gm_command) aFree(gm_command);
+		clif_wis_end(fd, 0); // Send success to prevent client from self-muting.
 		return;
 	}
 	if(gm_command) aFree(gm_command);
@@ -10393,7 +10392,18 @@ void clif_parse_PartyMessage(int fd, struct map_session_data *sd) {
 
 	if (is_charcommand(fd, sd, (char*)RFIFOP(fd,4), 0) != CharCommand_None ||
 		is_atcommand(fd, sd, (char*)RFIFOP(fd,4), 0) != AtCommand_None)
+	{
+		char *mes = RFIFOP(fd,4);
+		int len = RFIFOW(fd,2)-4;
+		//Send text to self to prevent client-muting.
+		WFIFOHEAD(fd, len+8);
+		WFIFOW(fd,0)=0x109;
+		WFIFOW(fd,2)=len+8;
+		WFIFOL(fd,4)=sd->status.account_id;
+		memcpy(WFIFOP(fd,8),mes,len);
+		WFIFOSET(fd, len+8);
 		return;
+	}
 	if	(sd->sc.count && (
 			sd->sc.data[SC_BERSERK].timer!=-1 ||
 			(sd->sc.data[SC_NOCHAT].timer!=-1 && sd->sc.data[SC_NOCHAT].val1&MANNER_NOCHAT)
@@ -10614,7 +10624,17 @@ void clif_parse_GuildMessage(int fd,struct map_session_data *sd) {
 
 	if (is_charcommand(fd, sd, (char*)RFIFOP(fd, 4), 0) != CharCommand_None ||
 		is_atcommand(fd, sd, (char*)RFIFOP(fd, 4), 0) != AtCommand_None)
+	{
+		char *mes = RFIFOP(fd,4);
+		int len = RFIFOW(fd,2)-4;
+		//Send text to self to prevent client-muting.
+		WFIFOHEAD(fd, len+4);
+		WFIFOW(fd, 0) = 0x17f;
+		WFIFOW(fd, 2) = len+4;
+		memcpy(WFIFOP(fd,4), mes, len);
+		WFIFOSET(fd, len+4);
 		return;
+	}
 	if (sd->sc.count && (
 		sd->sc.data[SC_BERSERK].timer!=-1 ||
 		(sd->sc.data[SC_NOCHAT].timer!=-1 && sd->sc.data[SC_NOCHAT].val1&MANNER_NOCHAT)