Jelajahi Sumber

* Add correct reply when player invited to party isn't found.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14970 54d463be-8e91-2dee-dedb-b68131a5f0ec
flaviojs 13 tahun lalu
induk
melakukan
c5832ca11e
4 mengubah file dengan 29 tambahan dan 17 penghapusan
  1. 2 0
      Changelog-Trunk.txt
  2. 24 14
      src/map/clif.c
  3. 1 1
      src/map/clif.h
  4. 2 2
      src/map/party.c

+ 2 - 0
Changelog-Trunk.txt

@@ -1,5 +1,7 @@
 Date	Added
 
+2011/10/10
+	* Add correct reply when player invited to party isn't found. [FlavioJS]
 2011/10/09
 	* Rework some party code. [FlavioJS]
 	- add leader argument to party_fill_member

+ 24 - 14
src/map/clif.c

@@ -5903,38 +5903,48 @@ void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd)
 	WFIFOSET(fd,packet_len(cmd));
 }
 
-/*==========================================
- * Party invitation result.
- * R 00fd <nick>.24S <flag>.B
- * R 02c5 <nick>.24S <flag>.L
- * Flag values are:
- * 0 -> char is already in a party
- * 1 -> party invite was rejected
- * 2 -> party invite was accepted
- * 3 -> party is full
- * 4 -> char of the same account already joined the party
- *------------------------------------------*/
-void clif_party_inviteack(struct map_session_data* sd, const char* nick, int flag)
+
+/// Party invite result.
+/// R 00fd <nick>.24S <result>.B
+/// R 02c5 <nick>.24S <result>.L
+/// result=0 : char is already in a party -> MsgStringTable[80]
+/// result=1 : party invite was rejected -> MsgStringTable[81]
+/// result=2 : party invite was accepted -> MsgStringTable[82]
+/// result=3 : party is full -> MsgStringTable[83]
+/// result=4 : char of the same account already joined the party -> MsgStringTable[608]
+/// result=5 : char blocked party invite -> MsgStringTable[1324] (since 20070904)
+/// result=7 : char is not online or doesn't exist -> MsgStringTable[71] (since 20070904)
+/// result=8 : (%s) TODO instance related? -> MsgStringTable[1388] (since 20080527)
+/// return=9 : TODO map prohibits party joining? -> MsgStringTable[1871] (since 20110205)
+void clif_party_inviteack(struct map_session_data* sd, const char* nick, int result)
 {
 	int fd;
 	nullpo_retv(sd);
 	fd=sd->fd;
 
+#if PACKETVER < 20070904
+	if( result == 7 ) {
+		clif_displaymessage(fd, msg_txt(3));
+		return;
+	}
+#endif
+
 #if PACKETVER < 20070821
 	WFIFOHEAD(fd,packet_len(0xfd));
 	WFIFOW(fd,0) = 0xfd;
 	safestrncpy((char*)WFIFOP(fd,2),nick,NAME_LENGTH);
-	WFIFOB(fd,26) = flag;
+	WFIFOB(fd,26) = result;
 	WFIFOSET(fd,packet_len(0xfd));
 #else
 	WFIFOHEAD(fd,packet_len(0x2c5));
 	WFIFOW(fd,0) = 0x2c5;
 	safestrncpy((char*)WFIFOP(fd,2),nick,NAME_LENGTH);
-	WFIFOL(fd,26) = flag;
+	WFIFOL(fd,26) = result;
 	WFIFOSET(fd,packet_len(0x2c5));
 #endif
 }
 
+
 /*==========================================
  * パーティ設定送信
  * flag & 0x001=exp変更ミス

+ 1 - 1
src/map/clif.h

@@ -406,7 +406,7 @@ int clif_party_created(struct map_session_data *sd,int result);
 int clif_party_member_info(struct party_data *p, struct map_session_data *sd);
 int clif_party_info(struct party_data *p, struct map_session_data *sd);
 void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd);
-void clif_party_inviteack(struct map_session_data* sd, const char* nick, int flag);
+void clif_party_inviteack(struct map_session_data* sd, const char* nick, int result);
 int clif_party_option(struct party_data *p,struct map_session_data *sd,int flag);
 int clif_party_withdraw(struct party_data* p, struct map_session_data* sd, int account_id, const char* name, int flag);
 int clif_party_message(struct party_data* p, int account_id, const char* mes, int len);

+ 2 - 2
src/map/party.c

@@ -338,8 +338,8 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
 	nullpo_ret(sd);
 	if( ( p = party_search(sd->status.party_id) ) == NULL )
 		return 0;
-	if( tsd == NULL) {	//TODO: Find the correct reply packet.
-		clif_displaymessage(sd->fd, msg_txt(3));
+	if( tsd == NULL) {
+		clif_party_inviteack(sd, "", 7);
 		return 0;
 	}