summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshennetsind <ind@henn.et>2014-02-26 15:34:26 -0300
committershennetsind <ind@henn.et>2014-02-26 15:34:26 -0300
commit37953d04a35040206961bbad582209a35328fed7 (patch)
treeaa843276fa9ff8275facb5be43ce386216a900ae
parent4bd9c3040926f35b14e3eab523620c9d20fe4d6b (diff)
downloadhercules-37953d04a35040206961bbad582209a35328fed7.tar.gz
hercules-37953d04a35040206961bbad582209a35328fed7.tar.bz2
hercules-37953d04a35040206961bbad582209a35328fed7.tar.xz
hercules-37953d04a35040206961bbad582209a35328fed7.zip
Whisper fix, and support for 2013-12-18 Ragexe and 2013-12-30 Ragexe
From Pull Request 255 (Thanks to Kiu, ossi0110, Yommy) Signed-off-by: shennetsind <ind@henn.et>
-rw-r--r--src/map/clif.c21
-rw-r--r--src/map/packets.h88
-rw-r--r--src/map/packets_struct.h14
3 files changed, 107 insertions, 16 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index 36adbae9c..5dad37357 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -5920,17 +5920,20 @@ void clif_wis_message(int fd, const char* nick, const char* mes, size_t mes_len)
/// 1 = target character is not loged in
/// 2 = ignored by target
/// 3 = everyone ignored by target
-void clif_wis_end(int fd, int flag)
-{
+void clif_wis_end(int fd, int flag) {
+ struct map_session_data *sd = session_isValid(fd) ? session[fd]->session_data : NULL;
+ struct packet_wis_end p;
+
+ if( !sd )
+ return;
+
+ p.PacketType = wisendType;
+ p.flag = (char)flag;
#if PACKETVER >= 20131223
- const int cmd = 0x9df;
-#else
- const int cmd = 0x98;
+ p.unknown = 0;
#endif
- WFIFOHEAD(fd,packet_len(cmd));
- WFIFOW(fd,0) = cmd;
- WFIFOW(fd,2) = flag;
- WFIFOSET(fd,packet_len(cmd));
+
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
}
diff --git a/src/map/packets.h b/src/map/packets.h
index 3ff202bae..1be5d2dbe 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -2453,6 +2453,45 @@ packet(0x020d,-1);
packet(0x0887,36,clif->pStoragePassword,0);
#endif
+// 2013-12-18bRagexe - Yommy
+#if PACKETVER >= 20131218
+ packet(0x0369,7,clif->pActionRequest,2,6);
+ packet(0x083C,10,clif->pUseSkillToId,2,4,6);
+ packet(0x0437,5,clif->pWalkToXY,2);
+ packet(0x035F,6,clif->pTickSend,2);
+ packet(0x0947,5,clif->pChangeDir,2,4);
+ packet(0x07E4,6,clif->pTakeItem,2);
+ packet(0x0362,6,clif->pDropItem,2,4);
+ packet(0x07EC,8,clif->pMoveToKafra,2,4);
+ packet(0x0364,8,clif->pMoveFromKafra,2,4);
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x096A,6,clif->pGetCharNameRequest,2);
+ packet(0x0368,6,clif->pSolveCharName,2);
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x022D,-1,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0360,6,clif->pReqClickBuyingStore,2);
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0);
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
+ // packet(0x0363,8); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092F,19,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0802,26,clif->pPartyInvite2,2);
+ // packet(0x087B,4); // CZ_GANGSI_RANK
+ packet(0x08AB,26,clif->pFriendsListAdd,2);
+ packet(0x0811,5,clif->pHomMenu,2,4);
+ packet(0x085C,36,clif->pStoragePassword,0);
+ /* New */
+ packet(0x09d4,2,clif->pNPCShopClosed);
+ packet(0x09ce,102,clif->pGM_Monster_Item,2);
+ /* NPC Market */
+ packet(0x09d8,2,clif->pNPCMarketClosed);
+ packet(0x09d6,-1,clif->pNPCMarketPurchase);
+#endif
+
// 2013-12-23cRagexe - Yommy
#if PACKETVER >= 20131223
packet(0x0369,7,clif->pActionRequest,2,6);
@@ -2484,15 +2523,42 @@ packet(0x020d,-1);
packet(0x023B,26,clif->pFriendsListAdd,2);
packet(0x0361,5,clif->pHomMenu,2,4);
packet(0x08A4,36,clif->pStoragePassword,0);
- /* New */
- packet(0x09d4,2,clif->pNPCShopClosed);
- packet(0x09ce,102,clif->pGM_Monster_Item,2);
- /* NPC Market */
- packet(0x09d8,2,clif->pNPCMarketClosed);
- packet(0x09d6,-1,clif->pNPCMarketPurchase);
packet(0x09df,7);
#endif
+// 2013-12-30aRagexe - Yommy
+#if PACKETVER >= 20131230
+ packet(0x0871,7,clif->pActionRequest,2,6);
+ packet(0x02C4,10,clif->pUseSkillToId,2,4,6);
+ packet(0x035F,5,clif->pWalkToXY,2);
+ packet(0x0438,6,clif->pTickSend,2);
+ packet(0x094A,5,clif->pChangeDir,2,4);
+ packet(0x092A,6,clif->pTakeItem,2);
+ packet(0x0860,6,clif->pDropItem,2,4);
+ packet(0x0968,8,clif->pMoveToKafra,2,4);
+ packet(0x0895,8,clif->pMoveFromKafra,2,4);
+ packet(0x091E,10,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x096A,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0926,6,clif->pGetCharNameRequest,2);
+ packet(0x0898,6,clif->pSolveCharName,2);
+ packet(0x087B,12,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0369,2,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093D,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087F,-1,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0969,6,clif->pReqClickBuyingStore,2);
+ packet(0x094C,2,clif->pReqCloseBuyingStore,0);
+ packet(0x0365,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091F,18,clif->pPartyBookingRegisterReq,2,4);
+ // packet(0x093E,8); // CZ_JOIN_BATTLE_FIELD
+ packet(0x022D,-1,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089C,19,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08A9,26,clif->pPartyInvite2,2);
+ // packet(0x087E,4); // CZ_GANGSI_RANK
+ packet(0x0943,26,clif->pFriendsListAdd,2);
+ packet(0x0949,5,clif->pHomMenu,2,4);
+ packet(0x091D,36,clif->pStoragePassword,0);
+#endif
+
/* PacketKeys: http://hercules.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */
#if PACKETVER >= 20110817
packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); /* Thanks to Shakto */
@@ -2686,8 +2752,16 @@ packet(0x020d,-1);
packetKeys(0x7E241DE0,0x5E805580,0x3D807D80); /* Thanks to Shakto */
#endif
+#if PACKETVER >= 20131218
+ packetKeys(0x6A596301,0x76866D0E,0x32294A45);
+#endif
+
#if PACKETVER >= 20131223
- packetKeys(0x631C511C, 0x111C111C,0x111C111C);
+ packetKeys(0x631C511C,0x111C111C,0x111C111C);
+#endif
+
+#if PACKETVER >= 20131230
+ packetKeys(0x611B7097,0x01F957A1,0x768A0FCB);
#endif
#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index a150ef6e2..0e99c36e3 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -203,6 +203,11 @@ enum packet_headers {
maptypeproperty2Type = 0x99b,
npcmarketresultackType = 0x9d7,
npcmarketopenType = 0x9d5,
+#if PACKETVER >= 20131223
+ wisendType = 0x9df,
+#else
+ wisendType = 0x98,
+#endif
};
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
@@ -941,6 +946,15 @@ struct packet_npc_market_open {
} list[1000];/* TODO: whats the actual max of this? */
} __attribute__((packed));
+struct packet_wis_end {
+ short PacketType;
+ char result;
+#if PACKETVER >= 20131223
+ unsigned int unknown;/* maybe AID, not sure what for (works sending as 0) */
+#endif
+} __attribute__((packed));
+
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris