diff --git a/.travis.yml b/.travis.yml index 270132a191..13745097b4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,7 +34,6 @@ script: - ./configure $CONFIGURE_FLAGS - make clean - make server - - 'echo packet_db_ver: $PACKETDBVER >> db/import/packet_db.txt' - ./map-server --run-once env: @@ -44,7 +43,6 @@ env: - DB_NAME="ragnarok" - DB_USER="ragnarok" - DB_PASS="ragnarok" - - PACKETDBVER=45 matrix: - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes" - CONFIGURE_FLAGS="--enable-prere=yes --enable-vip=no --enable-buildbot=yes" diff --git a/conf/battle/client.conf b/conf/battle/client.conf index f2e5e1be51..65b7eda241 100644 --- a/conf/battle/client.conf +++ b/conf/battle/client.conf @@ -9,58 +9,6 @@ // assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun, 16: Mercenary) //-------------------------------------------------------------- -// Set here which client version do you accept. Add all values of clients: -// Clients older than accepted versions, and versions not set to 'accepted' -// here will be rejected when logging in -// 0x00000001: Clients older than 2004-09-06aSakray (packet versions 5-9) -// 0x00000002: 2004-09-06 aSakexe (version 10) -// 0x00000004: 2004-09-20 aSakexe (version 11) -// 0x00000008: 2004-10-05 aSakexe (version 12) -// 0x00000010: 2004-10-25 aSakexe (version 13) -// 0x00000020: 2004-11-29 aSakexe (version 14) -// 0x00000040: 2005-01-10 bSakexe (version 15) -// 0x00000080: 2005-05-09 aSakexe (version 16) -// 0x00000100: 2005-06-28 aSakexe (version 17) -// 0x00000200: 2005-07-18 aSakexe (version 18) -// 0x00000400: 2005-07-19 bSakexe (version 19) -// 0x00000800: 2006-03-27 aSakexe (version 20) -// 0x00001000: 2007-01-08 aSakexe (version 21) -// 0x00002000: 2007-02-12 aSakexe (version 22) -// 0x00004000: 2008-09-10 aSakexe (version 23) -// 0x00008000: 2008-08-27 aRagexeRE (version 24) -// 0x00010000: 2008-09-10 aRagexeRE (version 25) -// 0x00020000: 2010-11-24 aRagexeRE (version 26) -// 0x00040000: 2011-10-05 aRagexeRE (version 27) -// 0x00080000: 2011-11-02 aRagexe (version 28) -// 0x00100000: 2012-03-07 fRagexeRE (version 29) -// 0x00200000: 2012-04-10 aRagexeRE (version 30) -// 0x00400000: 2012-04-18 aRagexeRE (version 31) -// 0x00800000: 2012-06-18 unknow (version 32) -// 0x01000000: 2012-07-02 aRagexeRE (version 33) -// 0x02000000: 2013-03-20 Ragexe (version 34) -// 0x04000000: 2013-05-15 aRagexe (version 35) -// 0x08000000: 2013-05-22 Ragexe (version 36) -// 0x10000000: 2013-05-29 Ragexe (version 37) -// 0x20000000: 2013-06-05 Ragexe (version 38) -// 0x40000000: 2013-06-12 Ragexe (version 39) -// default value: 0x7FFFFFFF (all clients/versions [5;39]) -packet_ver_flag: 0x7FFFFFFF - -// 0x00000001: 2013-06-18 Ragexe (version 40) -// 0x00000002: 2013-06-26 Ragexe (version 41) -// 0x00000004: 2013-07-03 Ragexe (version 42) -// 0x00000008: 2013-07-10 Ragexe (version 43) -// 0x00000010: 2013-07-17 Ragexe (version 44) -// 0x00000020: 2013-08-07 Ragexe (version 45) -// 0x00000040: 2013-12-23 Ragexe (version 46) -// 0x00000080: ???? -// 0x00000100: ???? -// 0x00000200: ???? -// 0x00000400: 2014-10-16 Ragexe (version 50) -// 0x00000800: 2014-10-22 Ragexe (version 51) -// default value: 0x7FFFFFFF (all clients/versions [41;72]) -packet_ver_flag2: 0x7FFFFFFF - // Minimum delay between whisper/global/party/guild messages (in ms) // Messages that break this threshold are silently omitted. min_chat_delay: 0 diff --git a/conf/help.txt b/conf/help.txt index d904b39c4a..8bcb8e3250 100644 --- a/conf/help.txt +++ b/conf/help.txt @@ -310,7 +310,6 @@ reloaditemdb: "Reload item database." reloadmobdb: "Reload monster database." reloadmotd: "Reload Message of the Day." reloadmsgconf: "Reload message configuration." -reloadpacketdb: "Reload packet database." reloadpcdb: "Reload player settings." reloadquestdb: "Reload quest database." reloadscript: "Reload all scripts." diff --git a/conf/login_athena.conf b/conf/login_athena.conf index 08c7a31d91..ddd5ddd890 100644 --- a/conf/login_athena.conf +++ b/conf/login_athena.conf @@ -106,12 +106,6 @@ vip_char_increase: -1 // 0 or more: new accounts automatically expire after the given value, in seconds start_limited_time: -1 -// Check the clientversion field set in clientinfo.xml? -check_client_version: no - -// What version is allowed to connect? (if the option above is enabled) -client_version_to_connect: 20 - // Store passwords as MD5 hashes instead of plain text? // NOTE: Will not work with clients that use use_MD5_passwords: no diff --git a/conf/msg_conf/map_msg.conf b/conf/msg_conf/map_msg.conf index 1eefc87487..40151e8697 100644 --- a/conf/msg_conf/map_msg.conf +++ b/conf/msg_conf/map_msg.conf @@ -1615,8 +1615,7 @@ 1475: ---- My Channels ---- 1476: You have not joined any channels. -// @reloadpacketdb -1477: Packet database has been reloaded. +//1477 free // @partysharelvl 1478: Party share level range has been changed successfully. diff --git a/conf/msg_conf/map_msg_chn.conf b/conf/msg_conf/map_msg_chn.conf index 0825d8724e..76c5420bb0 100644 --- a/conf/msg_conf/map_msg_chn.conf +++ b/conf/msg_conf/map_msg_chn.conf @@ -1469,8 +1469,7 @@ 1475: ---- 我的頻道 ---- 1476: 你沒有加入任何的頻道 -// @reloadpacketdb -1477: 完成重載封包數據庫. +//1477 free // @partysharelvl 1478: 隊伍經驗均分的等級間距已成功變更。 diff --git a/conf/msg_conf/map_msg_frn.conf b/conf/msg_conf/map_msg_frn.conf index ef24eaddca..fe94892bc0 100644 --- a/conf/msg_conf/map_msg_frn.conf +++ b/conf/msg_conf/map_msg_frn.conf @@ -1480,8 +1480,7 @@ 1475: ---- Canaux rejoins ---- 1476: Vous n'avez rejoins aucun canal. -// @reloadpacketdb -1477: Base de donne des 'Packets' recharge. +//1477 free // @partysharelvl 1478: Diffrence de niveau pour le partage en quipe chang. diff --git a/conf/msg_conf/map_msg_idn.conf b/conf/msg_conf/map_msg_idn.conf index 3ea211e779..feee972a27 100644 --- a/conf/msg_conf/map_msg_idn.conf +++ b/conf/msg_conf/map_msg_idn.conf @@ -1571,8 +1571,7 @@ 1475: ---- Channel yang diikuti ---- 1476: Kamu tidak bergabung ke channel manapun saat ini. -// @reloadpacketdb -1477: Database paket telah dimuat ulang. +//1477 free // @partysharelvl 1478: Jarak level dalam party share telah diubah dengan sukses. diff --git a/conf/msg_conf/map_msg_rus.conf b/conf/msg_conf/map_msg_rus.conf index ae78d70d30..ad1e3a06f8 100644 --- a/conf/msg_conf/map_msg_rus.conf +++ b/conf/msg_conf/map_msg_rus.conf @@ -1480,8 +1480,7 @@ 1475: ---- ---- 1476: . -// @reloadpacketdb -1477: . +//1477 free // @partysharelvl 1478: . diff --git a/conf/msg_conf/map_msg_tha.conf b/conf/msg_conf/map_msg_tha.conf index 5b6ce2cbb0..c34d07c0a4 100644 --- a/conf/msg_conf/map_msg_tha.conf +++ b/conf/msg_conf/map_msg_tha.conf @@ -1473,8 +1473,7 @@ 1475: ---- Channels ѹ ---- 1476: س channels . -// @reloadpacketdb -1477: ҹ Packet ١Ŵº. +//1477 free // @partysharelvl 1478: дѺ Level Ѻ ١Ѻ¹º. diff --git a/db/import-tmpl/packet_db.txt b/db/import-tmpl/packet_db.txt deleted file mode 100644 index de90db50e0..0000000000 --- a/db/import-tmpl/packet_db.txt +++ /dev/null @@ -1,35 +0,0 @@ -// Client<->Map Packet Database -// -// Structure of Database: -// PacketType,PacketLength[,Name,FieldIndex1:FieldIndex2:FieldIndex3:...] -// -// 01. PacketType ID of the packet. -// 02. PacketLength Length of the packet. If 0, packet is disabled in current packet version. If -1, packet has variable size. -// 03. Name Name of the packet parser function (optional, for incoming packets only). -// 04. FieldIndex Specifies the offset of a packet field in bytes from the begin of the packet (only specified when Name is given). -// Can be 0, when the layout is not known. -// ... -// -// NOTE: Up to MAX_PACKET_POS (typically 20) field indexes may be used. -// -// The packet database allows you to add support for new clients, -// because packets change every release. -// -// Note: Every packet version needs a wanttoconnection specification, since -// that is the packet used to identify a client's version. -// If multiple versions have the same connection packet, the higher version -// will be used (unless the lower one is specified as the default) -// -// Incoming packets have their parser function and layout specified, which enables -// them for the current and all higher versions, unless explicitely disabled. -// -// Outgoing packets must be specified in order to enable them for the current -// and all higher versions, unless explicitely disabled. Packets that are not -// enabled for a packet version are silently discarded when sent as multicast. -// -// Every packet version inherits packet definitions from the previous (lower) -// packet version. -// -// Main packet version of the DB to use (default = max available version) -// Client detection is faster when all clients use this version. -// Version 23 is the latest Sakexe (above versions are for Renewal clients) diff --git a/db/packet_db.txt b/db/packet_db.txt deleted file mode 100644 index d79a306ef1..0000000000 --- a/db/packet_db.txt +++ /dev/null @@ -1,2675 +0,0 @@ -// Client<->Map Packet Database -// -// Structure of Database: -// PacketType,PacketLength[,Name,FieldIndex1:FieldIndex2:FieldIndex3:...] -// -// 01. PacketType ID of the packet. -// 02. PacketLength Length of the packet. If 0, packet is disabled in current packet version. If -1, packet has variable size. -// 03. Name Name of the packet parser function (optional, for incoming packets only). -// 04. FieldIndex Specifies the offset of a packet field in bytes from the begin of the packet (only specified when Name is given). -// Can be 0, when the layout is not known. -// ... -// -// NOTE: Up to MAX_PACKET_POS (typically 20) field indexes may be used. -// -// The packet database allows you to add support for new clients, -// because packets change every release. -// -// Note: Every packet version needs a wanttoconnection specification, since -// that is the packet used to identify a client's version. -// If multiple versions have the same connection packet, the higher version -// will be used (unless the lower one is specified as the default) -// -// Incoming packets have their parser function and layout specified, which enables -// them for the current and all higher versions, unless explicitely disabled. -// -// Outgoing packets must be specified in order to enable them for the current -// and all higher versions, unless explicitely disabled. Packets that are not -// enabled for a packet version are silently discarded when sent as multicast. -// -// Every packet version inherits packet definitions from the previous (lower) -// packet version. -// -// Main packet version of the DB to use (default = max available version) -// Client detection is faster when all clients use this version. -// Version 23 is the latest Sakexe (above versions are for Renewal clients) -// -// packet_keys values are default value for each packet version, if no value -// or value is 'default' in packet_keys_use, server will uses default keys -// according to used packet_db_ver. packet_keys_use is user-defined keys. -// Maximum key value is 0x7FFFFFFF. -// NOTE: Keys won't be reloaded, initialized on first load only. -// -//packet_db_ver: 46 -packet_db_ver: default -packet_keys_use: default - -packet_ver: 5 -0x0064,55 -0x0065,17 -0x0066,6 -0x0067,37 -0x0068,46 -0x0069,-1 -0x006a,23 -0x006b,-1 -0x006c,3 -0x006d,108 -0x006e,3 -0x006f,2 -0x0070,6 -0x0071,28 -0x0072,19,wanttoconnection,2:6:10:14:18 -0x0073,11 -0x0074,3 -0x0075,-1 -0x0076,9 -0x0077,5 -0x0078,54 -0x0079,53 -0x007a,58 -0x007b,60 -0x007c,41 -0x007d,2,loadendack,0 -0x007e,6,ticksend,2 -0x007f,6 -0x0080,7 -0x0081,3 -0x0082,2 -0x0083,2 -0x0084,2 -0x0085,5,walktoxy,2 -0x0086,16 -0x0087,12 -0x0088,10 -0x0089,7,actionrequest,2:6 -0x008a,29 -0x008b,2 -0x008c,-1,globalmessage,2:4 -0x008d,-1 -0x008e,-1 -//0x008f,-1 -0x0090,7,npcclicked,2:6 -0x0091,22 -0x0092,28 -0x0093,2 -0x0094,6,getcharnamerequest,2 -0x0095,30 -0x0096,-1,wis,2:4:28 -0x0097,-1 -0x0098,3 -0x0099,-1,broadcast,2:4 -0x009a,-1 -0x009b,5,changedir,2:4 -0x009c,9 -0x009d,17 -0x009e,17 -0x009f,6,takeitem,2 -0x00a0,23 -0x00a1,6 -0x00a2,6,dropitem,2:4 -0x00a3,-1 -0x00a4,-1 -0x00a5,-1 -0x00a6,-1 -0x00a7,8,useitem,2:4 -0x00a8,7 -0x00a9,6,equipitem,2:4 -0x00aa,7,ZC_WEAR_EQUIP_ACK,2:4:6 -0x00ab,4,unequipitem,2 -0x00ac,7 -//0x00ad,-1 -0x00ae,-1 -0x00af,6 -0x00b0,8 -0x00b1,8 -0x00b2,3,restart,2 -0x00b3,3 -0x00b4,-1 -0x00b5,6 -0x00b6,6 -0x00b7,-1 -0x00b8,7,npcselectmenu,2:6 -0x00b9,6,npcnextclicked,2 -0x00ba,2 -0x00bb,5,statusup,2:4 -0x00bc,6 -0x00bd,44 -0x00be,5 -0x00bf,3,emotion,2 -0x00c0,7 -0x00c1,2,howmanyconnections,0 -0x00c2,6 -0x00c3,8 -0x00c4,6 -0x00c5,7,npcbuysellselected,2:6 -0x00c6,-1 -0x00c7,-1 -0x00c8,-1,npcbuylistsend,2:4 -0x00c9,-1,npcselllistsend,2:4 -0x00ca,3 -0x00cb,3 -0x00cc,6,gmkick,2 -0x00cd,3 -0x00ce,2,killall,0 -0x00cf,27,wisexin,2:26 -0x00d0,3,wisall,2 -0x00d1,4 -0x00d2,4 -0x00d3,2,wisexlist,0 -0x00d4,-1 -0x00d5,-1,createchatroom,2:4:6:7:15 -0x00d6,3 -0x00d7,-1 -0x00d8,6 -0x00d9,14,chataddmember,2:6 -0x00da,3 -0x00db,-1 -0x00dc,28 -0x00dd,29 -0x00de,-1,chatroomstatuschange,2:4:6:7:15 -0x00df,-1 -0x00e0,30,changechatowner,2:6 -0x00e1,30 -0x00e2,26,kickfromchat,2 -0x00e3,2,chatleave,0 -0x00e4,6,traderequest,2 -0x00e5,26 -0x00e6,3,tradeack,2 -0x00e7,3 -0x00e8,8,tradeadditem,2:4 -0x00e9,19 -0x00ea,5 -0x00eb,2,tradeok,0 -0x00ec,3 -0x00ed,2,tradecancel,0 -0x00ee,2 -0x00ef,2,tradecommit,0 -0x00f0,3 -0x00f1,2 -0x00f2,6 -0x00f3,8,movetokafra,2:4 -0x00f4,21 -0x00f5,8,movefromkafra,2:4 -0x00f6,8 -0x00f7,2,closekafra,0 -0x00f8,2 -0x00f9,26,createparty,2 -0x00fa,3 -0x00fb,-1 -0x00fc,6,partyinvite,2 -0x00fd,27 -0x00fe,30 -0x00ff,10,replypartyinvite,2:6 -0x0100,2,leaveparty,0 -0x0101,6 -0x0102,6,partychangeoption,2 -0x0103,30,removepartymember,2:6 -0x0104,79 -0x0105,31 -0x0106,10 -0x0107,10 -0x0108,-1,partymessage,2:4 -0x0109,-1 -0x010a,4 -0x010b,6 -0x010c,6 -0x010d,2 -0x010e,11 -0x010f,-1 -0x0110,10 -0x0111,39 -0x0112,4,skillup,2 -0x0113,10,useskilltoid,2:4:6 -0x0114,31 -0x0115,35 -0x0116,10,useskilltopos,2:4:6:8 -0x0117,18 -0x0118,2,stopattack,0 -0x0119,13 -0x011a,15 -0x011b,20,useskillmap,2:4 -0x011c,68 -0x011d,2,requestmemo,0 -0x011e,3 -0x011f,16 -0x0120,6 -0x0121,14 -0x0122,-1 -0x0123,-1 -0x0124,21 -0x0125,8 -0x0126,8,putitemtocart,2:4 -0x0127,8,getitemfromcart,2:4 -0x0128,8,movefromkafratocart,2:4 -0x0129,8,movetokafrafromcart,2:4 -0x012a,2,removeoption,0 -0x012b,2 -0x012c,3 -0x012d,4 -0x012e,2,closevending,0 -0x012f,-1,openvending,2:4:0:84 -0x0130,6,vendinglistreq,2 -0x0131,86 -0x0132,6 -0x0133,-1 -0x0134,-1,purchasereq,2:4:8 -0x0135,7 -0x0136,-1 -0x0137,6 -0x0138,3 -0x0139,16 -0x013a,4 -0x013b,4 -0x013c,4 -0x013d,6 -0x013e,24 -0x013f,26,itemmonster,2 -0x0140,22,mapmove,2:18:20 -0x0141,14 -0x0142,6 -0x0143,10,npcamountinput,2:6 -0x0144,23 -0x0145,19 -0x0146,6,npccloseclicked,2 -0x0147,39 -0x0148,8 -0x0149,9,gmreqnochat,2:6:7 -0x014a,6 -0x014b,27 -0x014c,-1 -0x014d,2,guildcheckmaster,0 -0x014e,6 -0x014f,6,guildrequestinfo,2 -0x0150,110 -0x0151,6,guildrequestemblem,2 -0x0152,-1 -0x0153,-1,guildchangeemblem,2:4 -0x0154,-1 -0x0155,-1,guildchangememberposition,2:4 -0x0156,-1 -0x0157,6 -0x0158,-1 -0x0159,54,guildleave,2:6:10:14 -0x015a,66 -0x015b,54,guildexpulsion,2:6:10:14 -0x015c,90 -0x015d,42,guildbreak,2 -0x015e,6 -0x015f,42 -0x0160,-1 -0x0161,-1,guildchangepositioninfo,2:4 -0x0162,-1 -0x0163,-1 -0x0164,-1 -0x0165,30,createguild,2:6 -0x0166,-1 -0x0167,3 -0x0168,14,guildinvite,2:6:10 -0x0169,3 -0x016a,30 -0x016b,10,guildreplyinvite,2:6 -0x016c,43 -0x016d,14 -0x016e,186,guildchangenotice,2:6:66 -0x016f,182 -0x0170,14,guildrequestalliance,2:6:10 -0x0171,30 -0x0172,10,guildreplyalliance,2:6 -0x0173,3 -0x0174,-1 -0x0175,6 -0x0176,106 -0x0177,-1 -0x0178,4,itemidentify,2 -0x0179,5 -0x017a,4,usecard,2 -0x017b,-1 -0x017c,6,insertcard,2:4 -0x017d,7 -0x017e,-1,guildmessage,2:4 -0x017f,-1 -0x0180,6,guildopposition,2 -0x0181,3 -0x0182,106 -0x0183,10,guilddelalliance,2:6 -0x0184,10 -0x0185,34 -//0x0186,-1 -0x0187,6 -0x0188,8 -0x0189,4 -0x018a,4,quitgame,2 -0x018b,4 -0x018c,29 -0x018d,-1 -0x018e,10,producemix,2:4:6:8 -0x018f,6 -0x0190,90,useskilltoposinfo,2:4:6:8:10 -0x0191,86 -0x0192,24 -0x0193,6,solvecharname,2 -0x0194,30 -0x0195,102 -0x0196,9 -0x0197,4,resetchar,2 -0x0198,8,changemaptype,2:4:6 -0x0199,4 -0x019a,14 -0x019b,10 -0x019c,-1,localbroadcast,2:4 -0x019d,6,gmhide,2 -0x019e,2 -0x019f,6,catchpet,2 -0x01a0,3 -0x01a1,3,petmenu,2 -0x01a2,35 -0x01a3,5 -0x01a4,11 -0x01a5,26,changepetname,2 -0x01a6,-1 -0x01a7,4,selectegg,2 -0x01a8,4 -0x01a9,6,sendemotion,2 -0x01aa,10 -0x01ab,12 -0x01ac,6 -0x01ad,-1 -0x01ae,4,selectarrow,2 -0x01af,4,changecart,2 -0x01b0,11 -0x01b1,7 -0x01b2,-1,openvending,2:4:84:85 -0x01b3,67 -0x01b4,12 -0x01b5,18 -0x01b6,114 -0x01b7,6 -0x01b8,3 -0x01b9,6 -0x01ba,26,remove,2 -0x01bb,26,shift,2 -0x01bc,26,recall,2 -0x01bd,26,summon,2 -0x01be,2 -0x01bf,3 -0x01c0,2 -0x01c1,14 -0x01c2,10 -0x01c3,-1 -0x01c4,22 -0x01c5,22 -0x01c6,4 -0x01c7,2 -0x01c8,13 -0x01c9,97 -//0x01ca,-1 -0x01cb,9 -0x01cc,9 -0x01cd,30 -0x01ce,6,autospell,2 -0x01cf,28 -0x01d0,8 -0x01d1,14 -0x01d2,10 -0x01d3,35 -0x01d4,6 -0x01d5,-1,npcstringinput,2:4:8 -0x01d6,4 -0x01d7,11 -0x01d8,54 -0x01d9,53 -0x01da,60 -0x01db,2 -0x01dc,-1 -0x01dd,47 -0x01de,33 -0x01df,6,gmreqaccname,2 -0x01e0,30 -0x01e1,8 -0x01e2,34 -0x01e3,14 -0x01e4,2 -0x01e5,6 -0x01e6,26 -0x01e7,2,sndoridori,0 -0x01e8,28,createparty2,2:26:27 -0x01e9,81 -0x01ea,6 -0x01eb,10 -0x01ec,26 -0x01ed,2,snexplosionspirits,0 -0x01ee,-1 -0x01ef,-1 -0x01f0,-1 -0x01f1,-1 -0x01f2,20 -0x01f3,10 -0x01f4,32 -0x01f5,9 -0x01f6,34 -0x01f7,14,adoptreply,2:6:10 -0x01f8,2 -0x01f9,6,adoptrequest,2 -0x01fa,48 -0x01fb,56 -0x01fc,-1 -0x01fd,4,repairitem,2 -0x01fe,5 -0x01ff,10 -0x0200,26 -0x0201,-1 -0x0202,26,friendslistadd,2 -0x0203,10,friendslistremove,2:6 -0x0204,18 -0x0205,26 -0x0206,11 -0x0207,34 -0x0208,11,friendslistreply,2:6:10 -0x0209,36 -0x020a,10 -//0x020b,-1 -//0x020c,-1 -0x020d,-1 -0x8b3,-1 -0x8d6,6,ZC_CLEAR_DIALOG,2 - -//2004-07-05aSakexe -packet_ver: 6 -0x0072,22,wanttoconnection,5:9:13:17:21 -0x0085,8,walktoxy,5 -0x00a7,13,useitem,5:9 -0x0113,15,useskilltoid,4:9:11 -0x0116,15,useskilltopos,4:9:11:13 -0x0190,95,useskilltoposinfo,4:9:11:13:15 -0x0208,14,friendslistreply,2:6:10 -0x020e,24 - -//2004-07-13aSakexe -packet_ver: 7 -0x0072,39,wanttoconnection,12:22:30:34:38 -0x0085,9,walktoxy,6 -0x009b,13,changedir,5:12 -0x009f,10,takeitem,6 -0x00a7,17,useitem,6:13 -0x0113,19,useskilltoid,7:9:15 -0x0116,19,useskilltopos,7:9:15:17 -0x0190,99,useskilltoposinfo,7:9:15:17:19 - -//2004-07-26aSakexe -packet_ver: 8 -0x0072,14,dropitem,5:12 -0x007e,33,wanttoconnection,12:18:24:28:32 -0x0085,20,useskilltoid,7:12:16 -0x0089,15,getcharnamerequest,11 -0x008c,23,useskilltopos,3:6:17:21 -0x0094,10,takeitem,6 -0x009b,6,walktoxy,3 -0x009f,13,changedir,5:12 -0x00a2,103,useskilltoposinfo,3:6:17:21:23 -0x00a7,12,solvecharname,8 -0x00f3,-1,globalmessage,2:4 -0x00f5,17,useitem,6:12 -0x00f7,10,ticksend,6 -0x0113,16,movetokafra,5:12 -0x0116,2,closekafra,0 -0x0190,26,movefromkafra,10:22 -0x0193,9,actionrequest,3:8 - -//2004-08-09aSakexe -packet_ver: 9 -0x0072,17,dropitem,8:15 -0x007e,37,wanttoconnection,9:21:28:32:36 -0x0085,26,useskilltoid,11:18:22 -0x0089,12,getcharnamerequest,8 -0x008c,40,useskilltopos,5:15:29:38 -0x0094,13,takeitem,9 -0x009b,15,walktoxy,12 -0x009f,12,changedir,7:11 -0x00a2,120,useskilltoposinfo,5:15:29:38:40 -0x00a7,11,solvecharname,7 -0x00f5,24,useitem,9:20 -0x00f7,13,ticksend,9 -0x0113,23,movetokafra,5:19 -0x0190,26,movefromkafra,11:22 -0x0193,18,actionrequest,7:17 - -//2004-08-16aSakexe -0x0212,26,rc,2 -0x0213,26,check,2 -0x0214,42 - -//2004-08-17aSakexe -0x020f,10,pvpinfo,2:6 -0x0210,22 - -//2004-09-06aSakexe -packet_ver: 10 -0x0072,20,useitem,9:20 -0x007e,19,movetokafra,3:15 -0x0085,23,actionrequest,9:22 -0x0089,9,walktoxy,6 -0x008c,105,useskilltoposinfo,10:14:18:23:25 -0x0094,17,dropitem,6:15 -0x009b,14,getcharnamerequest,10 -0x009f,-1,globalmessage,2:4 -0x00a2,14,solvecharname,10 -0x00a7,25,useskilltopos,10:14:18:23 -0x00f3,10,changedir,4:9 -0x00f5,34,wanttoconnection,7:15:25:29:33 -0x00f7,2,closekafra,0 -0x0113,11,takeitem,7 -0x0116,11,ticksend,7 -0x0190,22,useskilltoid,9:15:18 -0x0193,17,movefromkafra,3:13 - -//2004-09-20aSakexe -packet_ver: 11 -0x0072,18,useitem,10:14 -0x007e,25,movetokafra,6:21 -0x0085,9,actionrequest,3:8 -0x0089,14,walktoxy,11 -0x008c,109,useskilltoposinfo,16:20:23:27:29 -0x0094,19,dropitem,12:17 -0x009b,10,getcharnamerequest,6 -0x00a2,10,solvecharname,6 -0x00a7,29,useskilltopos,6:20:23:27 -0x00f3,18,changedir,8:17 -0x00f5,32,wanttoconnection,10:17:23:27:31 -0x0113,14,takeitem,10 -0x0116,14,ticksend,10 -0x0190,14,useskilltoid,4:7:10 -0x0193,12,movefromkafra,4:8 - -//2004-10-05aSakexe -packet_ver: 12 -0x0072,17,useitem,6:13 -0x007e,16,movetokafra,5:12 -0x0089,6,walktoxy,3 -0x008c,103,useskilltoposinfo,2:6:17:21:23 -0x0094,14,dropitem,5:12 -0x009b,15,getcharnamerequest,11 -0x00a2,12,solvecharname,8 -0x00a7,23,useskilltopos,3:6:17:21 -0x00f3,13,changedir,5:12 -0x00f5,33,wanttoconnection,12:18:24:28:32 -0x0113,10,takeitem,6 -0x0116,10,ticksend,6 -0x0190,20,useskilltoid,7:12:16 -0x0193,26,movefromkafra,10:22 - -//2004-10-25aSakexe -packet_ver: 13 -0x0072,13,useitem,5:9 -0x007e,13,movetokafra,6:9 -0x0085,15,actionrequest,4:14 -0x008c,108,useskilltoposinfo,6:9:23:26:28 -0x0094,12,dropitem,6:10 -0x009b,10,getcharnamerequest,6 -0x00a2,16,solvecharname,12 -0x00a7,28,useskilltopos,6:9:23:26 -0x00f3,15,changedir,6:14 -0x00f5,29,wanttoconnection,5:14:20:24:28 -0x0113,9,takeitem,5 -0x0116,9,ticksend,5 -0x0190,26,useskilltoid,4:10:22 -0x0193,22,movefromkafra,12:18 - -//2004-11-01aSakexe -0x0084,-1 -0x0215,6 - -//2004-11-08aSakexe -0x0084,2 -0x0216,6 -0x0217,2,blacksmith,0 -0x0218,2,alchemist,0 -0x0219,282 -0x021a,282 -0x021b,10 -0x021c,10 - -//2004-11-15aSakexe -0x021d,6,lesseffect,2 - -//2004-11-29aSakexe -packet_ver: 14 -0x0072,22,useskilltoid,8:12:18 -0x007e,30,useskilltopos,4:9:22:28 -0x0085,-1,globalmessage,2:4 -0x0089,7,ticksend,3 -0x008c,13,getcharnamerequest,9 -0x0094,14,movetokafra,4:10 -0x009b,2,closekafra,0 -0x009f,18,actionrequest,6:17 -0x00a2,7,takeitem,3 -0x00a7,7,walktoxy,4 -0x00f3,8,changedir,3:7 -0x00f5,29,wanttoconnection,3:10:20:24:28 -0x00f7,14,solvecharname,10 -0x0113,110,useskilltoposinfo,4:9:22:28:30 -0x0116,12,dropitem,4:10 -0x0190,15,useitem,3:11 -0x0193,21,movefromkafra,4:17 -0x0221,-1 -0x0222,6,weaponrefine,2 -0x0223,8 - -//2004-12-13aSakexe -//skipped: many packets being set to -1 -0x0066,3 -0x0070,3 -0x01ca,3 -0x021e,6 -0x021f,66 -0x0220,10 - -//2005-01-10bSakexe -packet_ver: 15 -0x0072,26,useskilltoid,8:16:22 -0x007e,114,useskilltoposinfo,10:18:22:32:34 -0x0085,23,changedir,12:22 -0x0089,9,ticksend,5 -0x008c,8,getcharnamerequest,4 -0x0094,20,movetokafra,10:16 -0x009b,32,wanttoconnection,3:12:23:27:31 -0x009f,17,useitem,5:13 -0x00a2,11,solvecharname,7 -0x00a7,13,walktoxy,10 -0x00f3,-1,globalmessage,2:4 -0x00f5,9,takeitem,5 -0x00f7,21,movefromkafra,11:17 -0x0113,34,useskilltopos,10:18:22:32 -0x0116,20,dropitem,15:18 -0x0190,20,actionrequest,9:19 -0x0193,2,closekafra,0 - -//2005-03-28aSakexe -0x0224,10 -0x0225,2,taekwon,0 -0x0226,282 - -//2005-04-04aSakexe -0x0227,18 -0x0228,18 - -//2005-04-11aSakexe -0x0229,15 -0x022a,58 -0x022b,57 -0x022c,64 - -//2005-04-25aSakexe -0x022d,5,hommenu,2:4 -0x0232,9,hommoveto,2:6 -0x0233,11,homattack,2:6:10 -0x0234,6,hommovetomaster,2 - -//2005-05-09aSakexe -packet_ver: 16 -0x0072,25,useskilltoid,6:10:21 -0x007e,102,useskilltoposinfo,5:9:12:20:22 -0x0085,11,changedir,7:10 -0x0089,8,ticksend,4 -0x008c,11,getcharnamerequest,7 -0x0094,14,movetokafra,7:10 -0x009b,26,wanttoconnection,4:9:17:21:25 -0x009f,14,useitem,4:10 -0x00a2,15,solvecharname,11 -0x00a7,8,walktoxy,5 -0x00f5,8,takeitem,4 -0x00f7,22,movefromkafra,14:18 -0x0113,22,useskilltopos,5:9:12:20 -0x0116,10,dropitem,5:8 -0x0190,19,actionrequest,5:18 - -//2005-05-23aSakexe -0x022e,69 -0x0230,12 - -//2005-05-30aSakexe -0x022e,71 -0x0235,-1 -0x0236,10 -0x0237,2,rankingpk,0 -0x0238,282 - -//2005-05-31aSakexe -0x0216,2 -0x0239,11 - -//2005-06-08aSakexe -0x0216,6 -0x0217,2,blacksmith,0 -0x022f,5 -0x0231,26,changehomunculusname,2 -0x023a,4 -0x023b,36,storagepassword,2:4:20 -0x023c,6 - -//2005-06-22aSakexe -0x022e,71 - -//2005-06-28aSakexe -packet_ver: 17 -0x0072,34,useskilltoid,6:17:30 -0x007e,113,useskilltoposinfo,12:15:18:31:33 -0x0085,17,changedir,8:16 -0x0089,13,ticksend,9 -0x008c,8,getcharnamerequest,4 -0x0094,31,movetokafra,16:27 -0x009b,32,wanttoconnection,9:15:23:27:31 -0x009f,19,useitem,9:15 -0x00a2,9,solvecharname,5 -0x00a7,11,walktoxy,8 -0x00f5,13,takeitem,9 -0x00f7,18,movefromkafra,11:14 -0x0113,33,useskilltopos,12:15:18:31 -0x0116,12,dropitem,3:10 -0x0190,24,actionrequest,11:23 -0x0216,-1 -0x023d,-1 -0x023e,4 - -//2005-07-18aSakexe -packet_ver: 18 -0x0072,19,useskilltoid,5:11:15 -0x007e,110,useskilltoposinfo,9:15:23:28:30 -0x0085,11,changedir,6:10 -0x0089,7,ticksend,3 -0x008c,11,getcharnamerequest,7 -0x0094,21,movetokafra,12:17 -0x009b,31,wanttoconnection,3:13:22:26:30 -0x009f,12,useitem,3:8 -0x00a2,18,solvecharname,14 -0x00a7,15,walktoxy,12 -0x00f5,7,takeitem,3 -0x00f7,13,movefromkafra,5:9 -0x0113,30,useskilltopos,9:15:23:28 -0x0116,12,dropitem,6:10 -0x0190,21,actionrequest,5:20 -0x0216,6 -0x023f,2,mailrefresh,0 -0x0240,8 -0x0241,6,mailread,2 -0x0242,-1 -0x0243,6,maildelete,2 -0x0244,6,mailgetattach,2 -0x0245,7 -0x0246,4,mailwinopen,2 -0x0247,8,mailsetattach,2:4 -0x0248,68 -0x0249,3 -0x024a,70 -0x024b,4,auctioncancelreg,2 -0x024c,8,auctionsetitem,2:4 -0x024d,14 -0x024e,6,auctioncancel,2 -0x024f,10,auctionbid,2:6 -0x0250,3 -0x0251,2 -0x0252,-1 - -//2005-07-19bSakexe -packet_ver: 19 -0x0072,34,useskilltoid,6:17:30 -0x007e,113,useskilltoposinfo,12:15:18:31:33 -0x0085,17,changedir,8:16 -0x0089,13,ticksend,9 -0x008c,8,getcharnamerequest,4 -0x0094,31,movetokafra,16:27 -0x009b,32,wanttoconnection,9:15:23:27:31 -0x009f,19,useitem,9:15 -0x00a2,9,solvecharname,5 -0x00a7,11,walktoxy,8 -0x00f5,13,takeitem,9 -0x00f7,18,movefromkafra,11:14 -0x0113,33,useskilltopos,12:15:18:31 -0x0116,12,dropitem,3:10 -0x0190,24,actionrequest,11:23 - -//2005-08-01aSakexe -0x0245,3 -0x0251,4 - -//2005-08-08aSakexe -0x024d,12,auctionregister,2:6:10 -0x024e,4 - -//2005-08-17aSakexe -0x0253,3 -0x0254,3,feelsaveok,2 - -//2005-08-29aSakexe -0x0240,-1 -0x0248,-1,mailsend,2:4:28:68:69 -0x0255,5 -0x0256,-1 -0x0257,8 - -//2005-09-12bSakexe -0x0256,5 -0x0258,2 -0x0259,3 - -//2005-10-10aSakexe -0x020e,32 -0x025a,-1 -0x025b,6,cooking,2:4 - -//2005-10-13aSakexe -0x007a,6 -0x0251,32 -0x025c,4,auctionbuysell,2 - -//2005-10-17aSakexe -0x007a,58 -0x025d,6,auctionclose,2 -0x025e,4 - -//2005-10-24aSakexe -0x025f,6 -0x0260,6 - -//2005-11-07aSakexe -0x024e,6,auctioncancel,2 -0x0251,34,auctionsearch,2:4:8:32 - -//2006-01-09aSakexe -0x0261,11 -0x0262,11 -0x0263,11 -0x0264,20 -0x0265,20 -0x0266,30 -0x0267,4 -0x0268,4 -0x0269,4 -0x026a,4 -0x026b,4 -0x026c,4 -0x026d,4 -0x026f,2 -0x0270,2 -0x0271,38 -0x0272,44 - -//2006-01-26aSakexe -0x0271,40 - -//2006-03-06aSakexe -0x0273,6 -0x0274,8 - -//2006-03-13aSakexe -0x0273,30,mailreturn,2:6 - -//2006-03-27aSakexe -packet_ver: 20 -0x0072,26,useskilltoid,11:18:22 -0x007e,120,useskilltoposinfo,5:15:29:38:40 -0x0085,12,changedir,7:11 -//0x0089,13,ticksend,9 -0x008c,12,getcharnamerequest,8 -0x0094,23,movetokafra,5:19 -0x009b,37,wanttoconnection,9:21:28:32:36 -0x009f,24,useitem,9:20 -0x00a2,11,solvecharname,7 -0x00a7,15,walktoxy,12 -0x00f5,13,takeitem,9 -0x00f7,26,movefromkafra,11:22 -0x0113,40,useskilltopos,5:15:29:38 -0x0116,17,dropitem,8:15 -0x0190,18,actionrequest,7:17 - -//2006-10-23aSakexe -0x006d,110 - -//2006-04-24aSakexe to 2007-01-02aSakexe -0x023e,8 -0x0277,84 -0x0278,2 -0x0279,2 -0x027a,-1 -0x027b,14 -0x027c,60 -0x027d,62 -0x027e,-1 -0x027f,8 -0x0280,12 -0x0281,4 -0x0282,284 -0x0283,6 -0x0284,14 -0x0285,6 -0x0286,4 -0x0287,-1 -0x0288,6 -0x0289,8 -0x028a,18 -0x028b,-1 -0x028c,46 -0x028d,34 -0x028e,4 -0x028f,6 -0x0290,4 -0x0291,4 -0x0292,2,autorevive,0 -0x0293,70 -0x0294,10 -0x0295,-1 -0x0296,-1 -0x0297,-1 -0x0298,8 -0x0299,6 -0x029a,27 -0x029c,66 -0x029d,-1 -0x029e,11 -0x029f,3,mermenu,2 -0x02a0,-1 -0x02a1,-1 -0x02a2,8 - -//2007-01-08aSakexe -packet_ver: 21 -0x0072,30,useskilltoid,10:14:26 -0x007e,120,useskilltoposinfo,10:19:23:38:40 -0x0085,14,changedir,10:13 -0x0089,11,ticksend,7 -0x008c,17,getcharnamerequest,13 -0x0094,17,movetokafra,4:13 -0x009b,35,wanttoconnection,7:21:26:30:34 -0x009f,21,useitem,7:17 -0x00a2,10,solvecharname,6 -0x00a7,8,walktoxy,5 -0x00f5,11,takeitem,7 -0x00f7,15,movefromkafra,3:11 -0x0113,40,useskilltopos,10:19:23:38 -0x0116,19,dropitem,11:17 -0x0190,10,actionrequest,4:9 - -//2007-01-22aSakexe -0x02a3,18 -0x02a4,2 - -//2007-01-29aSakexe -0x029b,72 -0x02a3,-1 -0x02a4,-1 -0x02a5,8 - -// 2007-02-05aSakexe -0x02aa,4 -0x02ab,36 -0x02ac,6 - -//2007-02-12aSakexe -packet_ver: 22 -0x0072,25,useskilltoid,6:10:21 -0x007e,102,useskilltoposinfo,5:9:12:20:22 -0x0085,11,changedir,7:10 -0x0089,8,ticksend,4 -0x008c,11,getcharnamerequest,7 -0x0094,14,movetokafra,7:10 -0x009b,26,wanttoconnection,4:9:17:21:25 -0x009f,14,useitem,4:10 -0x00a2,15,solvecharname,11 -//0x00a7,8,walktoxy,5 -0x00f5,8,takeitem,4 -0x00f7,22,movefromkafra,14:18 -0x0113,22,useskilltopos,5:9:12:20 -0x0116,10,dropitem,5:8 -0x0190,19,actionrequest,5:18 - -//2007-05-07aSakexe -0x01fd,15,repairitem,2:4:6:7:9:11:13 - -//2007-02-27aSakexe to 2007-10-02aSakexe -0x0288,10,cashshopbuy,2:4:6 -0x0289,12 -0x02a6,22 -0x02a7,22 -0x02a8,162 -0x02a9,58 -0x02ad,8 -0x02b0,85 -0x02b1,-1 -0x02b2,-1 -0x02b3,107 -0x02b4,6 -0x02b5,-1 -0x02b6,7,queststate,2:6 -0x02b7,7 -0x02b8,22 -0x02b9,191 -0x02ba,11,hotkey,2:4:5:9 -0x02bb,8 -0x02bc,6 -0x02bf,10 -0x02c0,2 -0x02c1,-1 -0x02c2,-1 -0x02c4,26,partyinvite2,2 -0x02c5,30 -0x02c6,30 -0x02c7,7,replypartyinvite2,2:6 -0x02c8,3,partytick,2 -0x02c9,3 -0x02ca,3 -0x02cb,20 -0x02cc,4 -0x02cd,26 -0x02ce,10 -0x02cf,6 -0x02d0,-1 -0x02d1,-1 -0x02d2,-1 -0x02d3,4,ZC_NOTIFY_BIND_ON_EQUIP,2 -0x02d4,29 -0x02d5,2 -0x02d6,6,viewplayerequip,2 -0x02d7,-1 -0x02d8,10,equiptickbox,2:6 -0x02d9,10 -0x02da,3 -0x02db,-1,battlechat,2:4 -0x02dc,-1 -0x02dd,32 -0x02de,6 -0x02df,36 -0x02e0,34 - -//2007-10-23aSakexe -0x02cb,65 -0x02cd,71 - -//2007-11-06aSakexe -0x0078,55 -0x007c,42 -0x022c,65 -0x029b,80 - -//2007-11-13aSakexe -0x02e1,33 - -//2007-11-20aSakexe -//0x01df,10 <- ??? -0x02e2,14 -0x02e3,25 -0x02e4,8 -0x02e5,8 -0x02e6,6 - -//2007-11-27aSakexe -0x02e7,-1 - -//2008-01-02aSakexe -0x01df,6,gmreqaccname,2 -0x02e8,-1 -0x02e9,-1 -0x02ea,-1 -0x02eb,13 -0x02ec,67 -0x02ed,59 -0x02ee,60 -0x02ef,8 - -//2008-03-18aSakexe -0x02bf,-1 -0x02c0,-1 -0x02f0,10 -0x02f1,2,progressbar,0 -0x02f2,2 - -//2008-03-25bSakexe -0x02f3,-1 -0x02f4,-1 -0x02f5,-1 -0x02f6,-1 -0x02f7,-1 -0x02f8,-1 -0x02f9,-1 -0x02fa,-1 -0x02fb,-1 -0x02fc,-1 -0x02fd,-1 -0x02fe,-1 -0x02ff,-1 -0x0300,-1 - -//2008-04-01aSakexe -0x0301,-1 -0x0302,-1 -0x0303,-1 -0x0304,-1 -0x0305,-1 -0x0306,-1 -0x0307,-1 -0x0308,-1 -0x0309,-1 -0x030a,-1 -0x030b,-1 -0x030c,-1 -0x030d,-1 -0x030e,-1 -0x030f,-1 -0x0310,-1 -0x0311,-1 -0x0312,-1 -0x0313,-1 -0x0314,-1 -0x0315,-1 -0x0316,-1 -0x0317,-1 -0x0318,-1 -0x0319,-1 -0x031a,-1 -0x031b,-1 -0x031c,-1 -0x031d,-1 -0x031e,-1 -0x031f,-1 -0x0320,-1 -0x0321,-1 -0x0322,-1 -0x0323,-1 -0x0324,-1 -0x0325,-1 -0x0326,-1 -0x0327,-1 -0x0328,-1 -0x0329,-1 -0x032a,-1 -0x032b,-1 -0x032c,-1 -0x032d,-1 -0x032e,-1 -0x032f,-1 -0x0330,-1 -0x0331,-1 -0x0332,-1 -0x0333,-1 -0x0334,-1 -0x0335,-1 -0x0336,-1 -0x0337,-1 -0x0338,-1 -0x0339,-1 -0x033a,-1 -0x033b,-1 -0x033c,-1 -0x033d,-1 -0x033e,-1 -0x033f,-1 -0x0340,-1 -0x0341,-1 -0x0342,-1 -0x0343,-1 -0x0344,-1 -0x0345,-1 -0x0346,-1 -0x0347,-1 -0x0348,-1 -0x0349,-1 -0x034a,-1 -0x034b,-1 -0x034c,-1 -0x034d,-1 -0x034e,-1 -0x034f,-1 -0x0350,-1 -0x0351,-1 -0x0352,-1 -0x0353,-1 -0x0354,-1 -0x0355,-1 -0x0356,-1 -0x0357,-1 -0x0358,-1 -0x0359,-1 -0x035a,-1 - -//2008-05-27aSakexe -0x035b,-1 -0x035c,2 -0x035d,-1 -0x035e,2 -0x035f,-1 -0x0389,-1 - -//2008-08-20aSakexe -0x040c,-1 -0x040d,-1 -0x040e,-1 -0x040f,-1 -0x0410,-1 -0x0411,-1 -0x0412,-1 -0x0413,-1 -0x0414,-1 -0x0415,-1 -0x0416,-1 -0x0417,-1 -0x0418,-1 -0x0419,-1 -0x041a,-1 -0x041b,-1 -0x041c,-1 -0x041d,-1 -0x041e,-1 -0x041f,-1 -0x0420,-1 -0x0421,-1 -0x0422,-1 -0x0423,-1 -0x0424,-1 -0x0425,-1 -0x0426,-1 -0x0427,-1 -0x0428,-1 -0x0429,-1 -0x042a,-1 -0x042b,-1 -0x042c,-1 -0x042d,-1 -0x042e,-1 -0x042f,-1 -0x0430,-1 -0x0431,-1 -0x0432,-1 -0x0433,-1 -0x0434,-1 -0x0435,-1 - -//2008-09-10aSakexe -packet_ver: 23 -0x0436,19,wanttoconnection,2:6:10:14:18 -0x0437,7,actionrequest,2:6 -0x0438,10,useskilltoid,2:4:6 -0x0439,8,useitem,2:4 - -//2008-11-13aSakexe -0x043d,8 -0x043e,-1 -0x043f,8 - -//2008-11-26aSakexe -0x01a2,37 -0x0440,10 -0x0441,4 - -//2008-12-10aSakexe -0x0442,-1 -0x0443,8,skillselectmenu,2:6 - -//2009-01-14aSakexe -0x043f,25 -0x0444,-1 -0x0445,10 - -//2009-02-18aSakexe -0x0446,14 - -//2009-02-25aSakexe -0x0448,-1 - -//2009-03-30aSakexe -0x0449,4 - -//2009-04-08aSakexe -0x02a6,-1 -0x02a7,-1 -0x044a,6,clientversion,2 - -//Renewal Clients -//2008-08-27aRagexeRE -packet_ver: 24 -0x0072,22,useskilltoid,9:15:18 -0x007c,44 -0x007e,105,useskilltoposinfo,10:14:18:23:25 -0x0085,10,changedir,4:9 -0x0089,11,ticksend,7 -0x008c,14,getcharnamerequest,10 -0x0094,19,movetokafra,3:15 -0x009b,34,wanttoconnection,7:15:25:29:33 -0x009f,20,useitem,7:20 -0x00a2,14,solvecharname,10 -0x00a7,9,walktoxy,6 -0x00f5,11,takeitem,7 -0x00f7,17,movefromkafra,3:13 -0x0113,25,useskilltopos,10:14:18:23 -0x0116,17,dropitem,6:15 -0x0190,23,actionrequest,9:22 -0x02e2,20 -0x02e3,22 -0x02e4,11 -0x02e5,9 - -//2008-09-10aRagexeRE -packet_ver: 25 -0x0436,19,wanttoconnection,2:6:10:14:18 -0x0437,7,actionrequest,2:6 -0x0438,10,useskilltoid,2:4:6 -0x0439,8,useitem,2:4 - -//2008-11-12aRagexeRE -0x043d,8 -//0x043e,-1 -0x043f,8 - -//2008-12-17aRagexeRE -0x01a2,37 -//0x0440,10 -//0x0441,4 -//0x0442,8 -//0x0443,8 - -//2008-12-17bRagexeRE -0x006d,114 - -//2009-01-21aRagexeRE -0x043f,25 -//0x0444,-1 -//0x0445,10 - -//2009-02-18aRagexeRE -//0x0446,14 - -//2009-02-26cRagexeRE -//0x0448,-1 - -//2009-04-01aRagexeRE -//0x0449,4 - -//2009-05-14aRagexeRE -//0x044b,2 - -//2009-05-20aRagexeRE -//0x07d0,6 -//0x07d1,2 -//0x07d2,-1 -//0x07d3,4 -//0x07d4,4 -//0x07d5,4 -//0x07d6,4 -//0x0447,2 - -//2009-06-03aRagexeRE -0x07d7,8,partychangeoption,2:6:7 -0x07d8,8 -0x07d9,254 -0x07da,6,partychangeleader,2 - -//2009-06-10aRagexeRE -//0x07db,8 - -//2009-06-17aRagexeRE -0x07d9,268 -//0x07dc,6 -//0x07dd,54 -//0x07de,30 -//0x07df,54 - -//2009-07-01aRagexeRE -//0x0275,37 -//0x0276,-1 - -//2009-07-08aRagexeRE -//0x07e0,58 - -//2009-07-15aRagexeRE -0x07e1,15 - -//2009-08-05aRagexeRE -0x07e2,8 - -//2009-08-18aRagexeRE -0x07e3,6 -0x07e4,-1,itemlistwindowselected,2:4:8:12 -0x07e6,8 - -//2009-08-25aRagexeRE -//0x07e6,28 -0x07e7,5 - -//2009-09-22aRagexeRE -0x07e5,8 -0x07e6,8 -0x07e7,32 -0x07e8,-1 -0x07e9,5 - -//2009-09-29aRagexeRE -//0x07ea,2 -//0x07eb,-1 -//0x07ec,6 -//0x07ed,8 -//0x07ee,6 -//0x07ef,8 -//0x07f0,4 -//0x07f2,4 -//0x07f3,3 - -//2009-10-06aRagexeRE -//0x07ec,8 -//0x07ed,10 -//0x07f0,8 -//0x07f1,15 -//0x07f2,6 -//0x07f3,4 -//0x07f4,3 - -//2009-10-27aRagexeRE -0x07f5,6,gmfullstrip,2 -0x07f6,14 - -//2009-11-03aRagexeRE -0x07f7,-1 -0x07f8,-1 -0x07f9,-1 - -//2009-11-17aRagexeRE -0x07fa,8 - -//2009-11-24aRagexeRE -0x07fb,25 - -//2009-12-01aRagexeRE -0x07fc,10 -0x07fd,-1,ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN,0 -0x07fe,26 -//0x07ff,-1 - -//2009-12-15aRagexeRE -0x0800,-1 -//0x0801,-1 - -//2009-12-22aRagexeRE -0x0802,18,bookingregreq,2:4:6 // Booking System -0x0803,4 -0x0804,8 // Booking System -0x0805,-1 -0x0806,4,bookingdelreq,2 // Booking System -//0x0807,2 -0x0808,4 // Booking System -//0x0809,14 -//0x080A,50 -//0x080B,18 -//0x080C,6 - -//2009-12-29aRagexeRE -0x0804,14,bookingsearchreq,2:4:6:8:12 // Booking System -0x0806,2,bookingdelreq,0 // Booking System -0x0807,4 -0x0808,14,bookingupdatereq,2 // Booking System -0x0809,50 -0x080A,18 -0x080B,6 // Booking System - -//2010-01-05aRagexeRE -0x0801,-1,purchasereq2,2:4:8:12 - -//2010-01-26aRagexeRE -//0x080C,2 -//0x080D,3 -0x080E,14 - -//2010-02-09aRagexeRE -//0x07F0,6 - -//2010-02-23aRagexeRE -0x080F,20 - -//2010-03-03aRagexeRE -0x0810,3 -0x0811,-1,reqopenbuyingstore,2:4:8:9:89 -//0x0812,86 -//0x0813,6 -//0x0814,6 -//0x0815,-1 -//0x0817,-1 -//0x0818,6 -//0x0819,4 - -//2010-03-09aRagexeRE -0x0813,-1 -//0x0814,2 -//0x0815,6 -0x0816,6 -0x0818,-1 -//0x0819,10 -//0x081A,4 -//0x081B,4 -//0x081C,6 -0x081d,22 -0x081e,8 - -//2010-03-23aRagexeRE -//0x081F,-1 - -//2010-04-06aRagexeRE -//0x081A,6 - -//2010-04-13aRagexeRE -//0x081A,10 -0x0820,11 -//0x0821,2 -//0x0822,9 -//0x0823,-1 - -//2010-04-14dRagexeRE -//0x081B,8 - -//2010-04-20aRagexeRE -0x0812,8 -0x0814,86 -0x0815,2,reqclosebuyingstore,0 -0x0817,6,reqclickbuyingstore,2 -0x0819,-1,reqtradebuyingstore,2:4:8:12 -0x081a,4 -0x081b,10 -0x081c,10 -0x0824,6 - -//2010-06-01aRagexeRE -//0x0825,-1 -//0x0826,4 -0x0835,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0836,-1 -0x0837,3 -//0x0838,3 - -//2010-06-08aRagexeRE -0x0838,2,searchstoreinfonextpage,0 -0x083A,4 // Search Stalls Feature -0x083B,2,closesearchstoreinfo,0 -0x083C,12,searchstoreinfolistitemclick,2:6:10 -0x083D,6 - -//2010-06-15aRagexeRE -//0x083E,26 - -//2010-06-22aRagexeRE -//0x083F,22 - -//2010-06-29aRagexeRE -0x00AA,9,ZC_WEAR_EQUIP_ACK,2:4:6:8 -//0x07F1,18 -//0x07F2,8 -//0x07F3,6 - -//2010-07-01aRagexeRE -0x083A,5 // Search Stalls Feature - -//2010-07-13aRagexeRE -//0x0827,6 -//0x0828,14 -//0x0829,6 -//0x082A,10 -//0x082B,6 -//0x082C,14 -//0x0840,-1 -//0x0841,19 - -//2010-07-14aRagexeRE -//0x0841,4 - -//2010-08-03aRagexeRE -0x0839,66 -0x0842,6,recall2,2 -0x0843,6,remove2,2 - -//2010-11-24aRagexeRE -packet_ver: 26 -0x0288,-1,cashshopbuy,2:4:8:10 -0x0436,19,wanttoconnection,2:6:10:14:18 -0x035f,5,walktoxy,2 -0x0360,6,ticksend,2 -0x0361,5,changedir,2:4 -0x0362,6,takeitem,2 -0x0363,6,dropitem,2:4 -0x0364,8,movetokafra,2:4 -0x0365,8,movefromkafra,2:4 -0x0366,10,useskilltopos,2:4:6:8 -0x0367,90,useskilltoposinfo,2:4:6:8:10 -0x0368,6,getcharnamerequest,2 -0x0369,6,solvecharname,2 -0x0856,-1 -0x0857,-1 -0x0858,-1 -0x0859,-1 -0x08d0,9,ZC_WEAR_EQUIP_ACK,2:4:6:8 - -//2011-10-05aRagexeRE -packet_ver: 27 -packet_keys: 0x291E6762,0x77CD391A,0x60AC2F16 // [Shakto] -0x0364,5,walktoxy,2 -0x0817,6,ticksend,2 -0x0366,5,changedir,2:4 -0x0815,6,takeitem,2 -0x0885,6,dropitem,2:4 -0x0893,8,movetokafra,2:4 -0x0897,8,movefromkafra,2:4 -0x0369,10,useskilltopos,2:4:6:8 -0x08ad,90,useskilltoposinfo,2:4:6:8:10 -0x088a,6,getcharnamerequest,2 -0x0838,6,solvecharname,2 -0x0439,8,useitem,2:4 -0x08d2,10 -0x08d1,7 -0x0846,4,cashshopreqtab,2 //2011-07-18 - -// 2011-11-02aRagexe -packet_ver: 28 -packet_keys: 0x5324329D,0x5D545D52,0x06137269 // [Shakto] -0x0436,26,friendslistadd,2 -0x0898,5,hommenu,2:4 -0x0281,36,storagepassword,2:4:20 -0x088d,26,partyinvite2,2 -0x083c,19,wanttoconnection,2:6:10:14:18 -0x08aa,7,actionrequest,2:6 -0x02c4,10,useskilltoid,2:4:6 -0x0811,-1,itemlistwindowselected,2:4:8:12 -0x0890,8 -0x08a5,18,bookingregreq,2:4:6 -0x0835,-1,reqopenbuyingstore,2:4:8:9:89 -0x089b,2,reqclosebuyingstore,0 -0x08a1,6,reqclickbuyingstore,2 -0x089e,-1,reqtradebuyingstore,2:4:8:12 -0x08ab,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x088b,2,searchstoreinfonextpage,0 -0x08a2,12,searchstoreinfolistitemclick,2:6:10 -0x08cf,10 //Amulet spirits - -//2012-03-07fRagexeRE -packet_ver:29 -packet_keys: 0x382A6DEF,0x5CBE7202,0x61F46637 // [Shakto] -0x086A,19,wanttoconnection,2:6:10:14:18 -0x0437,5,walktoxy,2 -0x0887,6,ticksend,2 -0x0890,5,changedir,2:4 -0x0865,6,takeitem,2 -0x02C4,6,dropitem,2:4 -0x093B,8,movetokafra,2:4 -0x0963,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0369,26,friendslistadd,2 -0x0863,5,hommenu,2:4 -0x0861,36,storagepassword,2:4:20 -0x0929,26,partyinvite2,2 -0x0885,7,actionrequest,2:6 -0x0889,10,useskilltoid,2:4:6 -0x0870,-1,itemlistwindowselected,2:4:8:12 -//0x0926,41,bookingregreq,2:4:6 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0817,2,reqclosebuyingstore,0 -0x0360,6,reqclickbuyingstore,2 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0884,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0835,2,searchstoreinfonextpage,0 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0439,8,useitem,2:4 -0x0365,41,bookingregreq,2:4:6 - -// New Packet -0x090F,-1 // ZC_NOTIFY_NEWENTRY7 -0x0914,-1 // ZC_NOTIFY_MOVEENTRY8 -0x0915,-1 // ZC_NOTIFY_STANDENTRY9 - -//2012-04-10aRagexeRE -packet_ver: 30 -packet_keys: 0x01581359,0x452D6FFA,0x6AFB6E2E // [Shakto] -0x01fd,15,repairitem,2:4:6:7:9:11:13 -0x089c,26,friendslistadd,2 -0x0885,5,hommenu,2:4 -0x0961,36,storagepassword,2:4:20 -0x0288,-1,cashshopbuy,2:4:8:10 -0x091c,26,partyinvite2,2 -0x094b,19,wanttoconnection,2:6:10:14:18 -0x0369,7,actionrequest,2:6 -0x083c,10,useskilltoid,2:4:6 -0x0439,8,useitem,2:4 -0x0945,-1,itemlistwindowselected,2:4:8:12 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0817,2,reqclosebuyingstore,0 -0x0360,6,reqclickbuyingstore,2 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0835,2,searchstoreinfonextpage,0 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0437,5,walktoxy,2 -0x0886,6,ticksend,2 -0x0871,5,changedir,2:4 -0x0938,6,takeitem,2 -0x0891,6,dropitem,2:4 -0x086c,8,movetokafra,2:4 -0x08a6,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x0889,6,getcharnamerequest,2 -0x0884,6,solvecharname,2 -0x08e6,4 -0x08e7,10,bookingsearchreq,2:4:6:8:12 -0x08e8,-1 -0x08e9,2,bookingdelreq,0 -0x08ea,4 -0x08eb,39,bookingupdatereq,2 -0x08ec,73 -0x08ed,43 -0x08ee,6 -0x08ef,6,bookingignorereq,2 -0x08f0,6 -0x08f1,6,bookingjoinpartyreq,2 -0x08f2,36 -0x08f3,-1 -0x08f4,6 -0x08f5,-1,bookingsummonmember,2:4 -0x08f6,22 -0x08f7,3 -0x08f8,7 -0x08f9,6 -0x08fa,6 -0x08fb,6,bookingcanceljoinparty,2 -0x0907,5,moveitem,2:4 -0x0908,5 -0x08d7,28,battlegroundreg,2:4 -0x0977,14 //Monster HP Bar -0x0916,26,guildinvite2,2 -0x091d,41,bookingregreq,2:4:6 -0x08cb,10,ZC_PERSONAL_INFOMATION,2:4:6:8:10:11:13:15 //Still need further information -// Merge Item -0x096D,-1,ZC_MERGE_ITEM_OPEN,2:4 // ZC_MERGE_ITEM_OPEN -0x096E,-1,mergeitem_req,2:4 // CZ_REQ_MERGE_ITEM -0x096F,7,ZC_ACK_MERGE_ITEM,2:4:6 // ZC_ACK_MERGE_ITEM -0x0974,2,mergeitem_cancel,0 // CZ_CANCEL_MERGE_ITEM -0x0844,2,cashshopopen,0 -0x0849,16 //clif_cashshop_result -0x0848,-1,cashshopbuy,2:6:4:10 -0x084a,2,cashshopclose,0 -0x08c9,2,cashshopitemlist,0 - -//2012-04-18aRagexeRE [Special Thanks to Judas!] -packet_ver: 31 -packet_keys: 0x01540E48,0x13041224,0x31247924 // [Shakto] -0x023B,26,friendslistadd,2 -0x0361,5,hommenu,2:4 -0x08A8,36,storagepassword,2:4:20 -0x0802,26,partyinvite2,2 -0x022D,19,wanttoconnection,2:6:10:14:18 -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x035F,6,ticksend,2 -0x0202,5,changedir,2:4 -0x07E4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07EC,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x08E5,41,bookingregreq,2:4:6 //Added to prevent disconnections -0x08d2,10 - -//2012-06-18 -packet_ver: 32 -packet_keys: 0x261F261F,0x261F261F,0x261F261F // [Shakto] -0x0983,29 // ZC_MSG_STATE_CHANGE3 -0x0861,41,bookingregreq,2:4:6 //actually 12-05-03 - -//2012-07-02aRagexeRE (unstable) -packet_ver: 33 -packet_keys: 0x25733B31,0x53486CFD,0x398649BD // [Shakto] -0x0363,19,wanttoconnection,2:6:10:14:18 -0x0364,6,ticksend,2 -0x085a,7,actionrequest,2:6 -0x0861,8,movefromkafra,2:4 -0x0862,10,useskilltoid,2:4:6 -0x0863,10,useskilltopos,2:4:6:8 -0x0886,6,solvecharname,2 -0x0889,90,useskilltoposinfo,2:4:6:8:10 -0x089e,6,dropitem,2:4 -0x089f,6,takeitem,2 -0x08a0,8,movetokafra,2:4 -0x094a,6,getcharnamerequest,2 -0x0953,5,walktoxy,2 -0x0960,5,changedir,2:4 -0x0879,41,bookingregreq,2:4:6 - -//2013-03-20Ragexe (Judas) -packet_ver: 34 -packet_keys: 0x3F094C49,0x55F86C1E,0x58AA359A // [Shakto] -0x014f,6,guildrequestinfo,2 -0x01fd,15,repairitem,2:4:6:7:9:11:13 -//0x0281,-1,itemlistwindowselected,2:4:8:12 -0x035f,6,reqclickbuyingstore,2 -0x0363,6,ticksend,2 -0x0365,12,searchstoreinfolistitemclick,2:6:10 -0x0438,6,dropitem,2:4 -0x0447,2,booking_playcancel,0 // CZ_BLOCKING_PLAY_CANCEL -0x044A,6,clientversion,2 -0x0844,2,cashshopopen,0 -0x0849,16 //clif_cashshop_result -0x0848,-1,cashshopbuy,2:6:4:10 -0x084a,2,cashshopclose,0 -0x084b,19 //fallitem4 -0x085a,90,useskilltoposinfo,2:4:6:8:10 -0x085d,18,bookingregreq,2:4:6 -0x0868,-1,itemlistwindowselected,2:4:8:12 -0x086d,26,partyinvite2,2 -0x086f,26,friendslistadd,2 -0x0874,8,movefromkafra,2:4 -0x0881,5,walktoxy,2 -0x0886,2,reqclosebuyingstore,0 -0x0888,19,wanttoconnection,2:6:10:14:18 -0x088e,7,actionrequest,2:6 -0x0897,5,changedir,2:4 -0x0898,6,getcharnamerequest,2 -0x089b,10,useskilltoid,2:4:6 -0x08ac,8,movetokafra,2:4 -0x08c9,2,cashshopitemlist,0 -0x08cf,10 //Amulet spirits -0x08d2,10 -0x0907,5,moveitem,2:4 -0x0908,5 -0x0922,-1,reqtradebuyingstore,2:4:8:12 -//0x092e,2,searchstoreinfonextpage,0 -0x0933,6,takeitem,2 -0x0938,-1,reqopenbuyingstore,2:4:8:9:89 -0x093f,5,hommenu,2:4 -0x0947,36,storagepassword,2:4:20 -0x094c,6,solvecharname,2 -0x094e,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0959,10,useskilltopos,2:4:6:8 -//0x095a,8,mailsetattach,2:4 -0x0977,14 //Monster HP Bar -0x0978,6,reqworldinfo,2 -0x0979,50 //ackworldinfo -0x097b,16,ZC_PERSONAL_INFOMATION,2:4:8:12:16:17:21:25 //Still need further information -//0x0981,12,ZC_PERSONAL_INFOMATION_CHN,2:4:6:8:12:13:15:17:10 // Disabled until further information is found. -0x0990,31 //additem -0x0991,-1 //inv itemlist normal -0x0992,-1 //inv itemlist equip -0x0993,-1 //cart itemlist normal -0x0994,-1 //cart itemlist equip -0x0995,-1 //store itemlist normal -0x0996,-1 //store itemlist equip -0x0997,-1 //ZC_EQUIPWIN_MICROSCOPE_V5 -0x0998,8,equipitem,2:4 // CZ_REQ_WEAR_EQUIP_V5 -0x0999,11,ZC_WEAR_EQUIP_ACK,2:4:8:10 // cz_wear_equipv5 -0x099a,9 // take_off_equipv5 -0x099b,8 //maptypeproperty2 - -// New Packets -0x08C8,34 // ZC_NOTIFY_ACT3 -0x08ff,24 // ZC_EFST_SET_ENTER -0x0984,28 // ZC_EFST_SET_ENTER2 -0x099f,22 // ZC_SKILL_ENTRY4 - -//2013-05-15aRagexe (Yommy) -packet_ver: 35 -packet_keys: 0x75794A38,0x58A96BC1,0x296E6FB8 // [Shakto] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x0362,5,changedir,2:4 -0x08A1,6,takeitem,2 -0x0944,6,dropitem,2:4 -0x0887,8,movetokafra,2:4 -0x08AC,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x092D,18,bookingregreq,2:4:6 -//0x08AA,8 CZ_JOIN_BATTLE_FIELD -0x0963,-1,itemlistwindowselected,2:4:8:12 -0x0943,19,wanttoconnection,2:6:10:14:18 -0x0947,26,partyinvite2,2 -//0x0862,4 CZ_GANGSI_RANK -0x0962,26,friendslistadd,2 -0x0931,5,hommenu,2:4 -0x093e,36,storagepassword,2:4:20 - -//2013-05-22Ragexe (Yommy) -packet_ver: 36 -packet_keys: 0x6948050B,0x06511D9D,0x725D4DF1 // [Shakto] -0x08A2,7,actionrequest,2:6 -0x095C,10,useskilltoid,2:4:6 -0x0360,5,walktoxy,2 -0x07EC,6,ticksend,2 -0x0925,5,changedir,2:4 -0x095E,6,takeitem,2 -0x089C,6,dropitem,2:4 -0x08a3,8,movetokafra,2:4 -0x087E,8,movefromkafra,2:4 -0x0811,10,useskilltopos,2:4:6:8 -0x0964,90,useskilltoposinfo,2:4:6:8:10 -0x08a6,6,getcharnamerequest,2 -0x0369,6,solvecharname,2 -0x093e,12,searchstoreinfolistitemclick,2:6:10 -0x08aa,2,searchstoreinfonextpage,0 -0x095b,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0952,-1,reqtradebuyingstore,2:4:8:12 -0x0368,6,reqclickbuyingstore,2 -0x086E,2,reqclosebuyingstore,0 -0x0874,-1,reqopenbuyingstore,2:4:8:9:89 -0x089B,18,bookingregreq,2:4:6 -//0x0965,8 CZ_JOIN_BATTLE_FIELD -0x086A,-1,itemlistwindowselected,2:4:8:12 -0x08A9,19,wanttoconnection,2:6:10:14:18 -0x0950,26,partyinvite2,2 -//0x08AC,4 CZ_GANGSI_RANK -0x0362,26,friendslistadd,2 -0x0926,5,hommenu,2:4 -0x088e,36,storagepassword,2:4:20 - -//2013-05-29Ragexe (Shakto) -packet_ver: 37 -packet_keys: 0x023A6C87,0x14BF1F1E,0x5CC70CC9 // [Shakto] -0x0890,7,actionrequest,2:6 -0x0438,10,useskilltoid,2:4:6 -0x0876,5,walktoxy,2 -0x0897,6,ticksend,2 -0x0951,5,changedir,2:4 -0x0895,6,takeitem,2 -0x08A7,6,dropitem,2:4 -0x0938,8,movetokafra,2:4 -0x0957,8,movefromkafra,2:4 -0x0917,10,useskilltopos,2:4:6:8 -0x085E,90,useskilltoposinfo,2:4:6:8:10 -0x0863,6,getcharnamerequest,2 -0x0937,6,solvecharname,2 -0x085A,12,searchstoreinfolistitemclick,2:6:10 -0x0941,2,searchstoreinfonextpage,0 -0x0918,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0936,-1,reqtradebuyingstore,2:4:8:12 -0x0892,6,reqclickbuyingstore,2 -0x0964,2,reqclosebuyingstore,0 -0x0869,-1,reqopenbuyingstore,2:4:8:9:89 -0x0874,18,bookingregreq,2,4:6 -//0x088E,8 // CZ_JOIN_BATTLE_FIELD -0x0958,-1,itemlistwindowselected,2:4:8:12 -0x0919,19,wanttoconnection,2:6:10:14:18 -0x08A8,26,partyinvite2,2 -//0x0888,4 // CZ_GANGSI_RANK -0x0877,26,friendslistadd,2 -0x023B,5,hommenu,2:4 -0x0956,36,storagepassword,2:4:20 - -//2013-06-05Ragexe (Shakto) -packet_ver: 38 -packet_keys: 0x646E08D9,0x5F153AB5,0x61B509B5 // [Shakto] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x0202,5,changedir,2:4 -0x07E4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07EC,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0365,18,bookingregreq,2:4:6 -//0x0363,8 // CZ_JOIN_BATTLE_FIELD -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x022D,19,wanttoconnection,2:6:10:14:18 -0x0802,26,partyinvite2,2 -//0x0436,4 // CZ_GANGSI_RANK -0x023B,26,friendslistadd,2 -0x0361,5,hommenu,2,4 -0x0883,36,storagepassword,2:4:20 -0x097C,4,ranklist,2 - -//2013-06-12Ragexe (Shakto) -packet_ver: 39 -packet_keys: 0x6D166F66,0x3C000FCF,0x295B0FCB // [Shakto] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x087E,5,changedir,2:4 -0x07E4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07EC,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0365,18,bookingregreq,2:4:6 -//0x0363,8 // CZ_JOIN_BATTLE_FIELD -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x0919,19,wanttoconnection,2:6:10:14:18 -0x0802,26,partyinvite2,2 -//0x0436,4 // CZ_GANGSI_RANK -0x0940,26,friendslistadd,2 -0x093A,5,hommenu,2:4 -0x0964,36,storagepassword,2:4:20 - -//2013-06-18Ragexe (Shakto) -packet_ver: 40 -packet_keys: 0x434115DE,0x34A10FE9,0x6791428E // [Shakto] -0x0889,7,actionrequest,2:6 -0x0951,10,useskilltoid,2:4:6 -0x088E,5,walktoxy,2 -0x0930,6,ticksend,2 -0x08A6,5,changedir,2:4 -0x0962,6,takeitem,2 -0x0917,6,dropitem,2:4 -0x0885,8,movetokafra,2:4 -0x0936,8,movefromkafra,2:4 -0x096A,10,useskilltopos,2:4:6:8 -0x094F,90,useskilltoposinfo,2:4:6:8:10 -0x0944,6,getcharnamerequest,2 -0x0945,6,solvecharname,2 -0x0890,12,searchstoreinfolistitemclick,2:6:10 -0x0363,2,searchstoreinfonextpage,0 -0x0281,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0891,-1,reqtradebuyingstore,2:4:8:12 -0x0862,6,reqclickbuyingstore,2 -0x085A,2,reqclosebuyingstore,0 -0x0932,-1,reqopenbuyingstore,2:4:8:9:89 -0x08A7,18,bookingregreq,2:4:6 -//0x087A,8 // CZ_JOIN_BATTLE_FIELD -0x0942,-1,itemlistwindowselected,2:4:8:12 -0x095B,19,wanttoconnection,2:6:10:14:18 -0x0887,26,partyinvite2,2 -//0x0878,4 // CZ_GANGSI_RANK -0x0953,26,friendslistadd,2 -0x02C4,5,hommenu,2:4 -0x0864,36,storagepassword,2:4:20 - -//2013-06-26Ragexe -packet_ver: 41 -packet_keys: 0x38F453EF,0x6A040FD8,0X65BD6668 // [Shakto] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x094D,5,changedir,2:4 -0x088B,6,takeitem,2 -0x0952,6,dropitem,2:4 -0x0921,8,movetokafra,2:4 -0x0817,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0365,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0894,18,bookingregreq,2:4:6 -//0x0860,8 // CZ_JOIN_BATTLE_FIELD -0x08A5,-1,itemlistwindowselected,2:4:8:12 -0x088C,19,wanttoconnection,2:6:10:14:18 -0x0895,26,partyinvite2,2 -//0x088F,4 // CZ_GANGSI_RANK -0x08AB,26,friendslistadd,2 -0x0960,5,hommenu,2:4 -0x0930,36,storagepassword,2:4:20 - -//2013-07-03Ragexe -packet_ver: 42 -packet_keys: 0x4FF90E23,0x0F1432F2,0x4CFA1EDA // [Shakto] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x0930,5,changedir,2:4 -0x07E4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07EC,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0202,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0365,18,bookingregreq,2:4:6 -//0x0363,8 // CZ_JOIN_BATTLE_FIELD -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x022D,19,wanttoconnection,2:6:10:14:18 -0x0802,26,partyinvite2,2 -//0x0436,4 // CZ_GANGSI_RANK -0x0360,26,friendslistadd,2 -0x094A,5,hommenu,2:4 -0x0873,36,storagepassword,2:4:20 - -//2013-07-10Ragexe -packet_ver: 43 -packet_keys: 0x458F758F,0x4CCF3F8F,0x4A9C4237 -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x0202,5,changedir,2:4 -0x07E4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07EC,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0365,18,bookingregreq,2:4:6 -//0x0363,8 // CZ_JOIN_BATTLE_FIELD -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x022D,19,wanttoconnection,2:6:10:14:18 -0x0802,26,partyinvite2,2 -//0x0436,4 // CZ_GANGSI_RANK -0x023B,26,friendslistadd,2 -0x0361,5,hommenu,2:4 -0x0880,36,storagepassword,2:4:20 -0x0848,-1,cashshopbuy,2:6:4:10 -0x097D,288 //ZC_ACK_RANKING - -//2013-07-17Ragexe -packet_ver: 44 -packet_keys: 0x2BED4F91,0x5F9E00CF,0x5EE5520C -0x0918,7,actionrequest,2:6 -0x091E,10,useskilltoid,2:4:6 -0x083C,5,walktoxy,2 -0x02C4,6,ticksend,2 -0x088C,5,changedir,2:4 -0x08A9,6,takeitem,2 -0x0917,6,dropitem,2:4 -0x089B,8,movetokafra,2:4 -0x0956,8,movefromkafra,2:4 -0x0882,10,useskilltopos,2:4:6:8 -0x0952,90,useskilltoposinfo,2:4:6:8:10 -0x0958,6,getcharnamerequest,2 -0x0967,6,solvecharname,2 -0x0960,12,searchstoreinfolistitemclick,2:6:10 -0x0819,2,searchstoreinfonextpage,0 -0x086B,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x093B,-1,reqtradebuyingstore,2:4:8:12 -0x0898,6,reqclickbuyingstore,2 -0x096A,2,reqclosebuyingstore,0 -0x08AA,-1,reqopenbuyingstore,2:4:8:9:89 -0x0862,18,bookingregreq,2:4:6 -//0x08A6,8 // CZ_JOIN_BATTLE_FIELD -0x0897,-1,itemlistwindowselected,2:4:8:12 -0x091D,19,wanttoconnection,2:6:10:14:18 -0x092F,26,partyinvite2,2 -//0x086C,4 // CZ_GANGSI_RANK -0x0863,26,friendslistadd,2 -0x088A,5,hommenu,2:4 -0x095B,36,storagepassword,2:4:20 -0x09A6,12,ZC_BANKING_CHECK,2:10 -0x09A7,10,bankdeposit,2:6 -0x09A8,16,ZC_ACK_BANKING_DEPOSIT,2:4:12 -0x09A9,10,bankwithdrawal,2:6 -0x09AA,16,ZC_ACK_BANKING_WITHDRAW,2:4:12 -0x09AB,6,bankcheck,2 -0x09B6,6,bankopen,2 -0x09B7,4,ZC_ACK_OPEN_BANKING,2 -0x09B8,6,bankclose,2 -0x09B9,4,ZC_ACK_CLOSE_BANKING,2 - -//2013-07-31cRagexe -0x09ca,23 // ZC_SKILL_ENTRY5 -0x09cb,17 // ZC_USE_SKILL2 - -//2013-08-07Ragexe -packet_ver: 45 -packet_keys: 0x7E241DE0,0x5E805580,0x3D807D80 // [Shakto] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x0202,5,changedir,2:4 -0x07E4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07EC,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0365,18,bookingregreq,2:4:6 -//0x363,8 // CZ_JOIN_BATTLE_FIELD -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x022D,19,wanttoconnection,2:6:10:14:18 -0x0802,26,partyinvite2,2 -//0x436,4 // CZ_GANGSI_RANK -0x023B,26,friendslistadd,2 -0x0361,5,hommenu,2:4 -0x0887,36,storagepassword,2:4:20 -0x09C1,10,ZC_C_MARKERINFO,2:6:8 -// Merge Item -0x096D,-1,ZC_MERGE_ITEM_OPEN,2:4 // ZC_MERGE_ITEM_OPEN -0x096E,-1,mergeitem_req,2:4 // CZ_REQ_MERGE_ITEM -0x096F,7,ZC_ACK_MERGE_ITEM,2:4:6:7 // ZC_ACK_MERGE_ITEM -0x0974,2,mergeitem_cancel,0 // CZ_CANCEL_MERGE_ITEM - -//2013-12-23Ragexe -packet_ver: 46 -packet_keys: 0x631C511C,0x111C111C,0x111C111C // [Shakto] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x0202,5,changedir,2:4 -0x07E4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07EC,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0365,18,bookingregreq,2:4:6 -//0x363,8 // CZ_JOIN_BATTLE_FIELD -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x022D,19,wanttoconnection,2:6:10:14:18 -0x0802,26,partyinvite2,2 -//0x436,4 // CZ_GANGSI_RANK -0x023B,26,friendslistadd,2 -0x0361,5,hommenu,2:4 -0x08A4,36,storagepassword,2:4:20 -//New Packets -//0x097E,12 //ZC_UPDATE_RANKING_POINT -0x09CE,102,itemmonster,2 -0x09D4,2,npcshopclosed,0 -//NPC Market -0x09D5,-1 -0x09D6,-1,npcmarketpurchase,2:4:6 -0x09D7,-1 -0x09D8,2,npcmarketclosed,0 -// Clan System -0x0988,6 -0x0989,2 -0x098A,-1 -0x098D,-1,clanchat,2:4 -0x098E,-1 -// Sale -0x09AC,-1,salesearch,2:4:8 -0x09AD,8 -0x09AE,17,saleadd,2:6:8:12:16 -0x09AF,4 -0x09B0,8,saleremove,2:6 -0x09B1,4 -0x09B2,8 -0x09B3,4 -0x09B4,6,saleopen,2 -0x09BC,6,saleclose,2 -0x09C3,8,salerefresh,2:6 -0x09C4,8 - -// New Packet -0x097A,-1 // ZC_ALL_QUEST_LIST2 -0x09DB,-1 // ZC_NOTIFY_MOVEENTRY10 -0x09DC,-1 // ZC_NOTIFY_NEWENTRY10 -0x09DD,-1 // ZC_NOTIFY_STANDENTRY10 -0x09DF,7 // ZC_ACK_WHISPER02 - -//2014-10-16Ragexe -packet_ver: 50 -packet_keys: 0x2DFF467C,0x444B37EE,0x2C1B634F // [YomRawr] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x0967,5,changedir,2:4 -0x07E4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07EC,8,movetokafra,2:4 -0x022D,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0365,18,bookingregreq,2:4 -// 0x0363,8 // CZ_JOIN_BATTLE_FIELD -0x0281,-1,itemlistwindowselected,2:4:8 -0x086E,19,wanttoconnection,2:6:10:14:18 -0x0802,26,partyinvite,2 -// 0x0922,4 // CZ_GANGSI_RANK -0x094B,26,friendslistadd,2 -0x0364,5,hommenu,2:4 -0x0936,36,storagepassword,0 -0x09DF,7 - -// New packet -0x0A00,269 // ZC_SHORTCUT_KEY_LIST_V3 -0x0A01,3,hotkeyrowshift,2 // CZ_SHORTCUTKEYBAR_ROTATE -0x0A02,4 // ZC_DRESSROOM_OPEN -0x0A0E,14 // ZC_BATTLEFIELD_NOTIFY_HP2 -0x09F7,75 // ZC_PROPERTY_HOMUN_2 -0x09E5,18 // ZC_DELETEITEM_FROM_MCSTORE2 -0x09E6,22 // ZC_UPDATE_ITEM_FROM_BUYING_STORE2 - -// Roulette System [Yommy] -0x0A19,2,rouletteopen,0 // CZ_REQ_OPEN_ROULETTE -0x0A1A,23 // ZC_ACK_OPEN_ROULETTE -0x0A1B,2,rouletteinfo,0 // CZ_REQ_ROULETTE_INFO -0x0A1C,-1 // ZC_ACK_ROULETTE_INFO -0x0A1D,2,rouletteclose,0 // CZ_REQ_CLOSE_ROULETTE -0x0A1E,3 // ZC_ACK_CLOSE_ROULETTE -0x0A1F,2,roulettegenerate,0 // CZ_REQ_GENERATE_ROULETTE -0x0A20,21 // ZC_ACK_GENERATE_ROULETTE -0x0A21,3,rouletterecvitem,2 // CZ_RECV_ROULETTE_ITEM -0x0A22,5 // ZC_RECV_ROULETTE_ITEM - -//2014-10-22bRagexe -packet_ver: 51 -packet_keys: 0x290551EA,0x2B952C75,0x2D67669B // [YomRawr] -0x006d,149 -0x023b,10,useskilltopos,2:4:6:8 -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x035f,6,ticksend,2 -0x0360,6,reqclickbuyingstore,2 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x0368,6,solvecharname,2 -0x0369,7,actionrequest,2:6 -0x0437,5,walktoxy,2 -0x0438,36,storagepassword,2:4:20 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0817,2,reqclosebuyingstore,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0835,12,searchstoreinfolistitemclick,2:6:10 -0x083c,10,useskilltoid,2:4:6 -0x0878,8,movetokafra,2:4 -0x087d,6,dropitem,2:4 -0x0896,26,partyinvite2,2 -0x0899,5,hommenu,2:4 -0x08aa,8,movefromkafra,2:4 -//0x08ab,4 // CZ_GANGSI_RANK -0x08ad,5,changedir,2:4 -0x08e3,149 -0x091a,26,friendslistadd,2 -//0x092b,8 // CZ_JOIN_BATTLE_FIELD -0x093b,19,wanttoconnection,2:6:10:14:18 -0x0940,2,searchstoreinfonextpage,0 -0x094e,6,takeitem,2 -0x0955,18,bookingregreq,2:4:6 -0x096a,6,getcharnamerequest,2 - -// New Packet -0x0A18,14 // ZC_ACCEPT_ENTER3 -0x0A28,3 // ZC_ACK_OPENSTORE2 -0x09FD,-1 // ZC_NOTIFY_MOVEENTRY11 -0x09FE,-1 // ZC_NOTIFY_NEWENTRY11 -0x09FF,-1 // ZC_NOTIFY_STANDENTRY11 -//0x09F8,-1 // ZC_ALL_QUEST_LIST3 - -//2015-05-13aRagexe -packet_ver: 52 -packet_keys: 0x62C86D09,0x75944F17,0x112C133D // [YomRawr] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035F,6,ticksend,2 -0x0924,5,changedir,2:4 -0x0958,6,takeitem,2 -0x0885,6,dropitem,2:4 -0x0879,8,movetokafra,2:4 -0x0864,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x096A,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x022D,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0883,18,bookingregreq,2:4:6 -// 0x02C4,8 CZ_JOIN_BATTLE_FIELD -0x0960,-1,itemlistwindowselected,2:4:8:12 -0x0363,19,wanttoconnection,2:6:10:14:18 -0x094A,26,partyinvite2,2 -// 0x0927,4 CZ_GANGSI_RANK -0x08A8,26,friendslistadd,2 -0x0817,5,hommenu,2:4 -0x0923,36,storagepassword,2:4:20 - -// New Packets -0xA3B,-1 // ZC_HAT_EFFECT - -// RODEX Mail system -0x09E7,3 // ZC_NOTIFY_UNREADMAIL -0x09E8,11,mailrefresh,2:3 // CZ_OPEN_MAILBOX -0x09E9,2,dull,0 // CZ_CLOSE_MAILBOX -0x09EA,11,mailread,2:3 // CZ_REQ_READ_MAIL -0x09EB,-1 // ZC_ACK_READ_MAIL -0x09EC,-1,mailsend,2:4:28:52:60:62:64 // CZ_REQ_WRITE_MAIL -0x09ED,3 // ZC_ACK_WRITE_MAIL -0x09EE,11,mailrefresh,2:3 // CZ_REQ_NEXT_MAIL_LIST -0x09EF,11,mailrefresh,2:3 // CZ_REQ_REFRESH_MAIL_LIST -0x09F0,-1 // ZC_ACK_MAIL_LIST -0x09F1,11,mailgetattach,0 // CZ_REQ_ZENY_FROM_MAIL -0x09F2,12 // ZC_ACK_ZENY_FROM_MAIL -0x09F3,11,mailgetattach,0 // CZ_REQ_ITEM_FROM_MAIL -0x09F4,12 // ZC_ACK_ITEM_FROM_MAIL -0x09F5,11,maildelete,0 // CZ_REQ_DELETE_MAIL -0x09F6,11 // ZC_ACK_DELETE_MAIL -0x0A03,2,mailcancel,0 // CZ_REQ_CANCEL_WRITE_MAIL -0x0A04,6,mailsetattach,2:4 // CZ_REQ_ADD_ITEM_TO_MAIL -0x0A05,53 // ZC_ACK_ADD_ITEM_TO_MAIL -0x0A06,6,mailwinopen,2:4 // CZ_REQ_REMOVE_ITEM_MAIL -0x0A07,9 // ZC_ACK_REMOVE_ITEM_MAIL -0x0A08,26,mailbegin,0 // CZ_REQ_OPEN_WRITE_MAIL -0x0A12,27 // ZC_ACK_OPEN_WRITE_MAIL -0x0A13,26,mailreceiver,2 // CZ_CHECK_RECEIVE_CHARACTER_NAME -0x0A14,10 // ZC_CHECK_RECEIVE_CHARACTER_NAME -0x0A32,2 // ZC_OPEN_RODEX_THROUGH_NPC_ONLY - -// New EquipPackets Support -0x0A09,45 // ZC_ADD_EXCHANGE_ITEM3 -0x0A0A,47 // ZC_ADD_ITEM_TO_STORE3 -0x0A0B,47 // ZC_ADD_ITEM_TO_CART3 -0x0A0C,56 // ZC_ITEM_PICKUP_ACK_V6 -0x0A0D,-1 // ZC_INVENTORY_ITEMLIST_EQUIP_V6 -0x0A0F,-1 // ZC_CART_ITEMLIST_EQUIP_V6 -0x0A10,-1 // ZC_STORE_ITEMLIST_EQUIP_V6 -0x0A2D,-1 // ZC_EQUIPWIN_MICROSCOPE_V6 - -// OneClick Itemidentify -0x0A35,4,oneclick_itemidentify,2 // CZ_REQ_ONECLICK_ITEMIDENTIFY - -// Achievement System -0x0A23,-1 // ZC_ALL_ACH_LIST -0x0A24,66 // ZC_ACH_UPDATE -0x0A25,6,dull,0 // CZ_REQ_ACH_REWARD -0x0A26,7 // ZC_REQ_ACH_REWARD_ACK - -// Title System -0x0A2E,6,dull,0 // CZ_REQ_CHANGE_TITLE -0x0A2F,7 // ZC_ACK_CHANGE_TITLE -0x0A30,106 // ZC_ACK_REQNAMEALL2 - -// Pet Evolution System -0x09FB,-1,dull,0 // CZ_PET_EVOLUTION -0x09FC,6 // ZC_PET_EVOLUTION_RESULT - -//2015-05-20aRagexe -0x0A3D,18,saleadd,2:6:8:12:16 - -//2015-09-16Ragexe -packet_ver: 53 -packet_keys: 0x17F83A19,0x116944F4,0x1CC541E9 // [Napster] -0x0869,7,actionrequest,2:6 -0x093E,10,useskilltoid,2:4:6 -0x0877,5,walktoxy,2 -0x08AC,6,ticksend,2 -0x0936,5,changedir,2:4 -0x089C,6,takeitem,2 -0x092F,6,dropitem,2:4 -0x0934,8,movetokafra,2:4 -0x085E,8,movefromkafra,2:4 -0x022D,10,useskilltopos,2:4:6:8 -0x0873,90,useskilltoposinfo,2:4:6:8:10 -0x095A,6,getcharnamerequest,2 -0x0942,6,solvecharname,2 -0x087F,12,searchstoreinfolistitemclick,2:6:10 -0x0817,2,searchstoreinfonextpage,0 -0x0920,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0881,-1,reqtradebuyingstore,2:4:8:12 -0x0835,6,reqclickbuyingstore,2 -0x092E,2,reqclosebuyingstore,0 -0x0948,-1,reqopenbuyingstore,2:4:8:9:89 -0x089B,18,bookingregreq,2:4:6 -// 0x094F,8 CZ_JOIN_BATTLE_FIELD -0x0961,-1,itemlistwindowselected,2:4:8:12 -0x0969,19,wanttoconnection,2:6:10:14:18 -0x0924,26,partyinvite2,2 -// 0x0938,4 CZ_GANGSI_RANK -0x089E,26,friendslistadd,2 -0x0960,5,hommenu,2:4 -0x0941,36,storagepassword,2:4:20 - -// New Packet -0x097F,-1 // ZC_SELECTCART -0x0980,7,selectcart,2:6 // CZ_SELECTCART - -//2015-10-01bRagexeRE -packet_ver: 54 -packet_keys: 0x45B945B9,0x45B945B9,0x45B945B9 // [Dastgir] -0x0369,7,actionrequest,2:6 -0x083c,10,useskilltoid,2:4:6 -0x0437,5,walktoxy,2 -0x035f,6,ticksend,2 -0x0202,5,changedir,2:4 -0x07e4,6,takeitem,2 -0x0362,6,dropitem,2:4 -0x07ec,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposmoreinfo,2:4:6:8:10 -0x096a,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0811,-1,reqtradebuyingstore,2:4:8:12 -0x0360,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x0815,-1,reqopenbuyingstore,2:4:8:9:89 -0x0365,18,partybookingregisterreq,2:4:6 -//0x0363,8 // CZ_JOIN_BATTLE_FIELD -0x0281,-1,itemlistwindowselected,2:4:8:12 -0x022d,19,wanttoconnection,2:6:10:14:18 -0x0802,26,partyinvite2,2 -//0x0436,4 // CZ_GANGSI_RANK -0x023b,26,friendslistadd,2 -0x0361,5,hommenu,2:4 -0x0860,36,storagepassword,2:4:20 - -//2015-11-04aRagexe -packet_ver: 55 -packet_keys: 0x4C17382A,0x7ED174C9,0x29961E4F // [Winnie] -0x0369,7,actionrequest,2:6 -0x083C,10,useskilltoid,2:4:6 -0x0363,5,walktoxy,2 -0x0886,6,ticksend,2 -0x0928,5,changedir,2:4 -0x0964,6,takeitem,2 -0x0437,6,dropitem,2:4 -0x088B,8,movetokafra,2:4 -0x0364,8,movefromkafra,2:4 -0x0438,10,useskilltopos,2:4:6:8 -0x0366,90,useskilltoposinfo,2:4:6:8:10 -0x0887,6,getcharnamerequest,2 -0x0368,6,solvecharname,2 -0x0838,12,searchstoreinfolistitemclick,2:6:10 -0x0835,2,searchstoreinfonextpage,0 -0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 -0x0815,-1,reqtradebuyingstore,2:4:8:12 -0x0436,6,reqclickbuyingstore,2 -0x0817,2,reqclosebuyingstore,0 -0x023B,-1,reqopenbuyingstore,2:4:8:9:89 -0x0811,18,bookingregreq,2:4:6 -//0x0939,8 CZ_JOIN_BATTLE_FIELD -0x093A,-1,itemlistwindowselected,2:4:8:12 -0x0360,19,wanttoconnection,2:6:10:14:18 -0x08A5,26,partyinvite2,2 -//0x08A3,4 CZ_GANGSI_RANK -0x07EC,26,friendslistadd,2 -0x088D,5,hommenu,2:4 -0x0940,36,storagepassword,2:4:20 - -// 2016-03-02bRagexe -0x0A51,34 - -// 2016-03-30aRagexe -0x0A6E,-1,mailsend,2:4:28:52:60:62:64:68 // CZ_REQ_WRITE_MAIL2 - -// 2016-06-01aRagexe -0x0A7D,-1 - -// 2017-05-02dRagexeRE -0x0A43,85 -0x0A44,-1 -0x0ABD,10 - -//Add new packets here -//packet_ver: 56 diff --git a/doc/atcommands.txt b/doc/atcommands.txt index e7b9e488f7..7997c73eb4 100644 --- a/doc/atcommands.txt +++ b/doc/atcommands.txt @@ -1320,7 +1320,6 @@ This will also send a packet to clients causing them to close. @reloadmobdb @reloadmotd @reloadmsgconf -@reloadpacketdb @reloadpcdb @reloadquestdb @reloadscript @@ -1333,7 +1332,6 @@ Databases: -- instancedb: Instance Database -- itemdb: Item Database -- mobdb: Monster Database --- packetdb: Packet Database -- questdb: Quest Database -- script: NPC Scripts -- skilldb: Skill Database @@ -1354,7 +1352,6 @@ Affected files: -- mobdb: mob_db.txt, mob_item_ratio.txt, mob_chat_db.txt, mob_avail.txt, mob_race2_db.txt, mob_branch.txt, mob_poring.txt, mob_boss.txt, mob_pouch.txt, mob_classchange.txt, pet_db.txt, homunculus_db.txt, homun_skill_tree.txt, exp_homun.txt, mercenary_db.txt, mercenary_skill_db.txt, elemental_db.txt, elemental_skill_db.txt -- motd: motd.txt -- msgconf: atcommand_athena.conf --- packetdb: packet_db.txt -- pcdb: statpoint.txt, job_exp.txt, skill_tree.txt, attr_fix.txt, job_db1.txt, job_db2.txt, job_basehpsp_db.txt, job_maxhpsp_db.txt, job_param_db.txt, level_penalty.txt -- questdb: quest_db.txt -- script: /npc/*.txt, /npc/*.conf diff --git a/doc/packet_interserv.txt b/doc/packet_interserv.txt index 28afd7ad6e..5b1f0ca1b7 100644 --- a/doc/packet_interserv.txt +++ b/doc/packet_interserv.txt @@ -47,9 +47,9 @@ Currently the max packet size is 0xFFFF (see 'WFIFOSET()' in 'src/common/socket. 0x2713: Type: AH - Structure: .W .L .L .L .B .B .L .L .B - index: 0,2,6,10,14,15,16,20,24 - len: 25 + Structure: .W .L .L .L .B .B .L .B + index: 0,2,6,10,14,15,16,20 + len: 21 parameter: - cmd : packet identification (0x2713) - aid : account identification @@ -58,7 +58,6 @@ Currently the max packet size is 0xFFFF (see 'WFIFOSET()' in 'src/common/socket. - sex: the sex of the account - ok : 1=auth failed, 1=ok - request_id: unknown @FIXME - - version: client version, (clientinfo version) - clienttype: unknown @FIXME desc: - Acknowledge the authentication request from char-serv @@ -2769,16 +2768,15 @@ Currently the max packet size is 0xFFFF (see 'WFIFOSET()' in 'src/common/socket. 0x2b02 Type: ZA - Structure: .W .L .L .L .L .B - index: 0,2,6,10,14,18 - len: 19 + Structure: .W .L .L .L .L + index: 0,2,6,10,14 + len: 18 parameter: - cmd : packet identification (0x2b02) - id - login_id1 - login_id2 - s_ip - - packet_ver desc: - chrif_charselectreq diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 47e262dda5..da1ef38a82 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -3723,18 +3723,6 @@ The renewal feature to check is determined by type. 4 - RENEWAL_LVDMG (renewal level modifier on damage) 5 - RENEWAL_ASPD (renewal ASPD) ---------------------------------------- - -*is_clientver(,{,}) - -Checks a character's client version against a specified value. If no char id is -given, the command will run for the invoking character. The function will return -1 if the player's version is greater than or equal to the value, and 0 otherwise. - -Available types are: - 0 - version number (packet_db_ver) - 1 - client date (YYYYMMDD) - --------------------------------------- \\ 3,1.- Item-related commands diff --git a/npc/re/guides/navigation.txt b/npc/re/guides/navigation.txt index 8ab9d833ad..ff749c42e0 100644 --- a/npc/re/guides/navigation.txt +++ b/npc/re/guides/navigation.txt @@ -13,11 +13,12 @@ //===== Additional Comments: ================================= //= 1.0 First version. //= 1.1 Added 'is_clientver' command. [Euphy] +//= 1.2 Dropped 'is_clientver' command. [Lemongrass] //============================================================ function script F_Navi { - if (!is_clientver(1,20111010)) + if ( PACKETVER < 20111010 ) set .@disabled,1; // This function takes 0 ~ 3 parameters. diff --git a/rAthena.sln b/rAthena.sln index 3c95e03e27..f28c81e592 100644 --- a/rAthena.sln +++ b/rAthena.sln @@ -21,6 +21,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{60D331 src\config\const.h = src\config\const.h src\config\core.h = src\config\core.h src\config\classes\general.h = src\config\classes\general.h + src\config\packets.h = src\config\packets.h src\config\renewal.h = src\config\renewal.h src\config\secure.h = src\config\secure.h EndProjectSection diff --git a/src/char/char.h b/src/char/char.h index ed19ec928b..0684ba64de 100644 --- a/src/char/char.h +++ b/src/char/char.h @@ -222,7 +222,6 @@ struct char_session_data { uint8 char_slots; // total number of characters that can be created uint8 chars_vip; uint8 chars_billing; - uint32 version; uint8 clienttype; char new_name[NAME_LENGTH]; char birthdate[10+1]; // YYYY-MM-DD diff --git a/src/char/char_clif.c b/src/char/char_clif.c index 4ced9243a2..83c21ff2f1 100644 --- a/src/char/char_clif.c +++ b/src/char/char_clif.c @@ -303,8 +303,7 @@ int chclif_parse_pincode_setnew( int fd, struct char_session_data* sd ){ //---------------------------------------- void chclif_charlist_notify( int fd, struct char_session_data* sd ){ // This is needed on RE clients from october 2015 onwards -// If you want to use one replace false by true here -#if false && PACKETVER >= 20151001 +#if defined(PACKETVER_RE) && PACKETVER >= 20151001 WFIFOHEAD(fd, 10); WFIFOW(fd, 0) = 0x9a0; // pages to req / send them all in 1 until mmo_chars_fromsql can split them up @@ -324,21 +323,25 @@ void chclif_charlist_notify( int fd, struct char_session_data* sd ){ // Function to send characters to a player //---------------------------------------- int chclif_mmo_send006b(int fd, struct char_session_data* sd){ - int j, offset = 0; - bool newvers = (sd->version >= date2version(20100413) ); - if(newvers) //20100413 - offset += 3; + int j, offset; + +#if PACKETVER >= 20100413 + offset = 3; +#else + offset = 0; +#endif + if (charserv_config.save_log) ShowInfo("Loading Char Data ("CL_BOLD"%d"CL_RESET")\n",sd->account_id); j = 24 + offset; // offset WFIFOHEAD(fd,j + MAX_CHARS*MAX_CHAR_BUF); WFIFOW(fd,0) = 0x6b; - if(newvers){ //20100413 +#if PACKETVER >= 20100413 WFIFOB(fd,4) = MAX_CHARS; // Max slots. WFIFOB(fd,5) = MIN_CHARS; // Available slots. (PremiumStartSlot) WFIFOB(fd,6) = MIN_CHARS+sd->chars_vip; // Premium slots. (Any existent chars past sd->char_slots but within MAX_CHARS will show a 'Premium Service' in red) - } +#endif memset(WFIFOP(fd,4 + offset), 0, 20); // unknown bytes j+=char_mmo_chars_fromsql(sd, WFIFOP(fd,j)); WFIFOW(fd,2) = j; // packet len @@ -377,16 +380,18 @@ void chclif_mmo_send099d(int fd, struct char_session_data *sd) { * Function to choose wich kind of charlist to send to client depending on his version */ void chclif_mmo_char_send(int fd, struct char_session_data* sd){ - ShowInfo("sd->version = %d\n",sd->version); - if(sd->version >= date2version(20130000) ){ - chclif_mmo_send082d(fd,sd); - chclif_mmo_send006b(fd,sd); - chclif_charlist_notify(fd,sd); - } else - chclif_mmo_send006b(fd,sd); +#if PACKETVER >= 20130000 + chclif_mmo_send082d(fd, sd); + chclif_mmo_send006b(fd, sd); + chclif_charlist_notify(fd, sd); +#else + chclif_mmo_send006b(fd,sd); //@FIXME dump from kro doesn't show 6b transmission - if(sd->version >= date2version(20060819) ) - chclif_block_character(fd,sd); +#endif + +#if PACKETVER >= 20060819 + chclif_block_character(fd,sd); +#endif } /* @@ -435,14 +440,11 @@ void chclif_char_delete2_ack(int fd, uint32 char_id, uint32 result, time_t delet /// Any (0x718): An unknown error has occurred. /// HC: <082a>.W .L .L void chclif_char_delete2_accept_ack(int fd, uint32 char_id, uint32 result) { +#if PACKETVER >= 20130000 if(result == 1 ){ - struct char_session_data* sd; - sd = (struct char_session_data*)session[fd]->session_data; - - if( sd->version >= date2version(20130000) ){ - chclif_mmo_char_send(fd, sd); - } + chclif_mmo_char_send(fd, session[fd]->session_data); } +#endif WFIFOHEAD(fd,10); WFIFOW(fd,0) = 0x82a; @@ -751,7 +753,6 @@ int chclif_parse_reqtoconnect(int fd, struct char_session_data* sd,uint32 ipl){ node->login_id2 == login_id2 /*&& node->ip == ipl*/ ) {// authentication found (coming from map server) - sd->version = node->version; idb_remove(auth_db, account_id); char_auth_ok(fd, sd); } diff --git a/src/char/char_logif.c b/src/char/char_logif.c index a65f0e2b9a..53773b1fa6 100644 --- a/src/char/char_logif.c +++ b/src/char/char_logif.c @@ -295,7 +295,7 @@ int chlogif_parse_ackconnect(int fd, struct char_session_data* sd){ } int chlogif_parse_ackaccreq(int fd, struct char_session_data* sd){ - if (RFIFOREST(fd) < 25) + if (RFIFOREST(fd) < 21) return 0; { uint32 account_id = RFIFOL(fd,2); @@ -304,19 +304,14 @@ int chlogif_parse_ackaccreq(int fd, struct char_session_data* sd){ uint8 sex = RFIFOB(fd,14); uint8 result = RFIFOB(fd,15); int request_id = RFIFOL(fd,16); - uint32 version = RFIFOL(fd,20); - uint8 clienttype = RFIFOB(fd,24); - RFIFOSKIP(fd,25); + uint8 clienttype = RFIFOB(fd,20); + RFIFOSKIP(fd,21); if( session_isActive(request_id) && (sd=(struct char_session_data*)session[request_id]->session_data) && !sd->auth && sd->account_id == account_id && sd->login_id1 == login_id1 && sd->login_id2 == login_id2 && sd->sex == sex ) { int client_fd = request_id; - sd->version = version; sd->clienttype = clienttype; - if(sd->version != date2version(PACKETVER)) - ShowWarning("aid=%d has an incorect version=%d in clientinfo. Server compiled for %d\n", - sd->account_id,sd->version,date2version(PACKETVER)); switch( result ) { @@ -372,8 +367,7 @@ int chlogif_parse_reqaccdata(int fd, struct char_session_data* sd){ // send characters to player chclif_mmo_char_send(u_fd, sd); #if PACKETVER_SUPPORTS_PINCODE - if(sd->version >= date2version(20110309)) - chlogif_pincode_start(u_fd,sd); + chlogif_pincode_start(u_fd,sd); #endif } } diff --git a/src/char/char_mapif.c b/src/char/char_mapif.c index 2479b5fbf1..7274d83f0a 100644 --- a/src/char/char_mapif.c +++ b/src/char/char_mapif.c @@ -453,15 +453,14 @@ void chmapif_charselres(int fd, uint32 aid, uint8 res){ * @return : 0 not enough data received, 1 success */ int chmapif_parse_authok(int fd){ - if( RFIFOREST(fd) < 19 ) + if( RFIFOREST(fd) < 18 ) return 0; else{ uint32 account_id = RFIFOL(fd,2); uint32 login_id1 = RFIFOL(fd,6); uint32 login_id2 = RFIFOL(fd,10); uint32 ip = RFIFOL(fd,14); - int version = RFIFOB(fd,18); - RFIFOSKIP(fd,19); + RFIFOSKIP(fd,18); if( runflag != CHARSERVER_ST_RUNNING ){ chmapif_charselres(fd,account_id,0); @@ -478,7 +477,6 @@ int chmapif_parse_authok(int fd){ node->login_id2 = login_id2; //node->sex = 0; node->ip = ntohl(ip); - node->version = version; //upd version for mapserv //node->expiration_time = 0; // unlimited/unknown time by default (not display in map-server) //node->gmlevel = 0; idb_put(auth_db, account_id, node); diff --git a/src/common/mmo.h b/src/common/mmo.h index abbff80467..23cae6a173 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -9,31 +9,10 @@ #include "db.h" #include -// server->client protocol version -// 0 - pre-? -// 1 - ? - 0x196 -// 2 - ? - 0x78, 0x79 -// 3 - ? - 0x1c8, 0x1c9, 0x1de -// 4 - ? - 0x1d7, 0x1d8, 0x1d9, 0x1da -// 5 - 2003-12-18aSakexe+ - 0x1ee, 0x1ef, 0x1f0, ?0x1c4, 0x1c5? -// 6 - 2004-03-02aSakexe+ - 0x1f4, 0x1f5 -// 7 - 2005-04-11aSakexe+ - 0x229, 0x22a, 0x22b, 0x22c -// see conf/battle/client.conf for other version - #ifndef PACKETVER - #define PACKETVER 20151104 - //#define PACKETVER 20120410 + #error Please define PACKETVER in src/config/packets.h #endif -// Check if the specified packetversion supports the pincode system -#define PACKETVER_SUPPORTS_PINCODE PACKETVER>=20110309 - -/// Check if the client needs delete_date as remaining time and not the actual delete_date (actually it was tested for clients since 2013) -#define PACKETVER_CHAR_DELETEDATE (PACKETVER > 20130000 && PACKETVER <= 20141022) || PACKETVER >= 20150513 - -// Check if the specified packetvresion supports the cashshop sale system -#define PACKETVER_SUPPORTS_SALES PACKETVER>=20131223 - ///Remove/Comment this line to disable sc_data saving. [Skotlex] #define ENABLE_SC_SAVING /** Remove/Comment this line to disable server-side hot-key saving support [Skotlex] diff --git a/src/common/utils.c b/src/common/utils.c index 881bae3e67..f4e7adf7aa 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -358,59 +358,6 @@ float GetFloat(const unsigned char* buf) return *((float*)(void*)&val); } -uint32 date2version(int date) { - if(date < 20040906) return 5; - else if(date < 20040920) return 10; - else if(date < 20041005) return 11; - else if(date < 20041025) return 12; - else if(date < 20041129) return 13; - else if(date < 20050110) return 14; - else if(date < 20050509) return 15; - else if(date < 20050628) return 16; - else if(date < 20050718) return 17; - else if(date < 20050719) return 18; - else if(date < 20060327) return 19; - else if(date < 20070108) return 20; - else if(date < 20070212) return 21; - //wtf @FIXME - //else if(date < 20080910) return 22; - else if(date < 20080827) return 23; - else if(date < 20080910) return 24; - //unable to solve from date - else if(date < 20101124) return 25; - else if(date < 20111005) return 26; - else if(date < 20111102) return 27; - else if(date < 20120307) return 28; - else if(date < 20120410) return 29; - else if(date < 20120418) return 30; - else if(date < 20120618) return 31; - else if(date < 20120702) return 32; - else if(date < 20130320) return 33; - else if(date < 20130515) return 34; - else if(date < 20130522) return 35; - else if(date < 20130529) return 36; - else if(date < 20130605) return 37; - else if(date < 20130612) return 38; - else if(date < 20130618) return 39; - else if(date < 20130626) return 40; - else if(date < 20130703) return 41; - else if(date < 20130710) return 42; - else if(date < 20130717) return 43; - else if(date < 20130807) return 44; - else if(date < 20131223) return 45; - else if(date < 20140212) return 46; - //else if(date < 20140613) return 47; - //else if(date < 20141016) return 48; - else if(date < 20141022) return 50; - else if(date < 20150513) return 51; - else if(date < 20150916) return 52; - else if(date < 20151001) return 53; - else if(date < 20151104) return 54; - else if(date >= 20151104) return 55; - - else return 30; //default -} - /// calculates the value of A / B, in percent (rounded down) unsigned int get_percentage(const unsigned int A, const unsigned int B) { diff --git a/src/common/utils.h b/src/common/utils.h index 8dfa9ebb3d..04bea94984 100644 --- a/src/common/utils.h +++ b/src/common/utils.h @@ -50,8 +50,6 @@ extern uint32 GetULong(const unsigned char* buf); extern int32 GetLong(const unsigned char* buf); extern float GetFloat(const unsigned char* buf); -uint32 date2version(int date); - int levenshtein(const char *s1, const char *s2); #ifdef __cplusplus diff --git a/src/config/core.h b/src/config/core.h index e6febaf11f..4f55c6616a 100644 --- a/src/config/core.h +++ b/src/config/core.h @@ -8,6 +8,8 @@ * For detailed guidance on these check http://rathena.org/wiki/SRC/config/ **/ +#include "../custom/defines_pre.h" + /// Max number of items on @autolootid list #define AUTOLOOTITEM_SIZE 10 @@ -76,12 +78,6 @@ #define MAX_CHAR_BILLING 0 // This must be less than MAX_CHARS #endif -/// Comment to disable the official packet obfuscation support. -/// When enabled, make sure there is value for 'packet_keys' of used packet version or -/// defined 'packet_keys_use' in db/[import/]packet_db.txt. -/// This requires PACKETVER 2011-08-17 or newer. -#define PACKET_OBFUSCATION - /// Comment to disable warnings for deprecated script commands #define SCRIPT_COMMAND_DEPRECATION @@ -91,6 +87,7 @@ /** * No settings past this point **/ +#include "./packets.h" #include "./renewal.h" #include "./secure.h" #include "./classes/general.h" @@ -100,4 +97,6 @@ **/ #include "./const.h" +#include "../custom/defines_post.h" + #endif // _CONFIG_CORE_H_ diff --git a/src/config/packets.h b/src/config/packets.h new file mode 100644 index 0000000000..542ca86639 --- /dev/null +++ b/src/config/packets.h @@ -0,0 +1,63 @@ +// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder +#ifndef _CONFIG_PACKETS_H_ +#define _CONFIG_PACKETS_H_ + +/** + * rAthena configuration file (http://rathena.org) + * For detailed guidance on these check http://rathena.org/wiki/SRC/config/ + **/ + +#ifndef PACKETVER + #define PACKETVER 20151104 +#endif + +#ifndef PACKETVER_RE + /// From this point on only kRO RE clients are supported + #if PACKETVER > 20151104 + #define PACKETVER_RE + #endif +#endif + +#if PACKETVER >= 20110817 + /// Comment to disable the official packet obfuscation support. + /// This requires PACKETVER 2011-08-17 or newer. + #ifndef PACKET_OBFUSCATION + #define PACKET_OBFUSCATION + + // Define these inside src/custom/defines_pre.h or src/custom/defines_post.h + //#define PACKET_OBFUSCATION_KEY1 + //#define PACKET_OBFUSCATION_KEY2 + //#define PACKET_OBFUSCATION_KEY3 + + /// Comment this to disable warnings for missing client side encryption + #define PACKET_OBFUSCATION_WARN + #endif +#else + #if defined(PACKET_OBFUSCATION) + #error You enabled packet obfuscation for a version which is too old. Minimum supported client is 2011-08-17. + #endif +#endif + +#ifndef DUMP_UNKNOWN_PACKET + //#define DUMP_UNKNOWN_PACKET +#endif + +#ifndef DUMP_INVALID_PACKET + //#define DUMP_INVALID_PACKET +#endif + +/** + * No settings past this point + **/ + +/// Check if the specified packetversion supports the pincode system +#define PACKETVER_SUPPORTS_PINCODE PACKETVER >= 20110309 + +/// Check if the client needs delete_date as remaining time and not the actual delete_date (actually it was tested for clients since 2013) +#define PACKETVER_CHAR_DELETEDATE (PACKETVER > 20130000 && PACKETVER <= 20141022) || PACKETVER >= 20150513 + +/// Check if the specified packetvresion supports the cashshop sale system +#define PACKETVER_SUPPORTS_SALES PACKETVER >= 20131223 + +#endif // _CONFIG_PACKETS_H_ diff --git a/src/custom/defines_post.h b/src/custom/defines_post.h new file mode 100644 index 0000000000..33f34d4a77 --- /dev/null +++ b/src/custom/defines_post.h @@ -0,0 +1,13 @@ +// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder +#ifndef _CONFIG_CUSTOM_DEFINES_POST_H_ +#define _CONFIG_CUSTOM_DEFINES_POST_H_ + +/** + * rAthena configuration file (http://rathena.org) + * For detailed guidance on these check http://rathena.org/wiki/SRC/config/ + **/ + + + +#endif // _CONFIG_CUSTOM_DEFINES_POST_H_ diff --git a/src/custom/defines_pre.h b/src/custom/defines_pre.h new file mode 100644 index 0000000000..ceed7e774c --- /dev/null +++ b/src/custom/defines_pre.h @@ -0,0 +1,13 @@ +// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder +#ifndef _CONFIG_CUSTOM_DEFINES_PRE_H_ +#define _CONFIG_CUSTOM_DEFINES_PRE_H_ + +/** + * rAthena configuration file (http://rathena.org) + * For detailed guidance on these check http://rathena.org/wiki/SRC/config/ + **/ + + + +#endif // _CONFIG_CUSTOM_DEFINES_PRE_H_ diff --git a/src/login/login.cpp b/src/login/login.cpp index f525f1d59b..24acaca376 100644 --- a/src/login/login.cpp +++ b/src/login/login.cpp @@ -303,13 +303,6 @@ int login_mmo_auth(struct login_session_data* sd, bool isServer) { } - //Client Version check - if( login_config.check_client_version && sd->version != login_config.client_version_to_connect ){ - ShowNotice("Invalid version (account: '%s', auth_vers: '%d', received version: '%d', ip: %s)\n", - sd->userid, login_config.client_version_to_connect, sd->version, ip); - return 5; - } - len = strnlen(sd->userid, NAME_LENGTH); // Account creation with _M/_F @@ -591,10 +584,6 @@ bool login_config_read(const char* cfgName, bool normal) { login_config.new_acc_length_limit = (bool)config_switch(w2); else if(!strcmpi(w1, "start_limited_time")) login_config.start_limited_time = atoi(w2); - else if(!strcmpi(w1, "check_client_version")) - login_config.check_client_version = (bool)config_switch(w2); - else if(!strcmpi(w1, "client_version_to_connect")) - login_config.client_version_to_connect = strtoul(w2, NULL, 10); else if(!strcmpi(w1, "use_MD5_passwords")) login_config.use_md5_passwds = (bool)config_switch(w2); else if(!strcmpi(w1, "group_id_to_connect")) @@ -701,9 +690,6 @@ void login_set_defaults() { login_config.use_md5_passwds = false; login_config.group_id_to_connect = -1; login_config.min_group_id_to_connect = -1; - login_config.check_client_version = false; - login_config.client_version_to_connect = date2version(PACKETVER); //20120410 => 30 - ShowInfo("loginconfig: client_version_to_connect = %d\n",login_config.client_version_to_connect); login_config.ipban = true; login_config.dynamic_pass_failure_ban = true; diff --git a/src/login/login.h b/src/login/login.h index 670533b295..653b0ac377 100644 --- a/src/login/login.h +++ b/src/login/login.h @@ -46,7 +46,6 @@ struct login_session_data { char lastlogin[24]; ///date when last logged, Y-M-D HH:MM:SS uint8 group_id; ///groupid of account uint8 clienttype; /// ??? - uint32 version; ///version contained in clientinfo uint8 client_hash[16]; ///hash of client int has_client_hash; ///client ha sent an hash @@ -86,8 +85,6 @@ struct Login_Config { bool use_md5_passwds; /// work with password hashes instead of plaintext passwords? int group_id_to_connect; /// required group id to connect int min_group_id_to_connect; /// minimum group id to connect - bool check_client_version; /// check the clientversion set in the clientinfo ? - uint32 client_version_to_connect; /// the client version needed to connect (if checking is enabled) bool ipban; /// perform IP blocking (via contents of `ipbanlist`) ? bool dynamic_pass_failure_ban; /// automatic IP blocking due to failed login attempts ? @@ -143,7 +140,6 @@ struct auth_node { uint32 login_id2; uint32 ip; char sex; - uint32 version; uint8 clienttype; }; extern DBMap* auth_db; // uint32 account_id -> struct auth_node* diff --git a/src/login/loginchrif.c b/src/login/loginchrif.c index 3ef53ff289..49e0dd6c03 100644 --- a/src/login/loginchrif.c +++ b/src/login/loginchrif.c @@ -96,7 +96,7 @@ int logchrif_parse_reqauth(int fd, int id,char* ip){ //ShowStatus("Char-server '%s': authentication of the account %d accepted (ip: %s).\n", server[id].name, account_id, ip); // send ack - WFIFOHEAD(fd,25); + WFIFOHEAD(fd,21); WFIFOW(fd,0) = 0x2713; WFIFOL(fd,2) = account_id; WFIFOL(fd,6) = login_id1; @@ -104,15 +104,14 @@ int logchrif_parse_reqauth(int fd, int id,char* ip){ WFIFOB(fd,14) = sex; WFIFOB(fd,15) = 0;// ok WFIFOL(fd,16) = request_id; - WFIFOL(fd,20) = node->version; - WFIFOB(fd,24) = node->clienttype; - WFIFOSET(fd,25); + WFIFOB(fd,20) = node->clienttype; + WFIFOSET(fd,21); // each auth entry can only be used once idb_remove(auth_db, account_id); }else{// authentication not found ShowStatus("Char-server '%s': authentication of the account %d REFUSED (ip: %s).\n", ch_server[id].name, account_id, ip); - WFIFOHEAD(fd,25); + WFIFOHEAD(fd,21); WFIFOW(fd,0) = 0x2713; WFIFOL(fd,2) = account_id; WFIFOL(fd,6) = login_id1; @@ -120,9 +119,8 @@ int logchrif_parse_reqauth(int fd, int id,char* ip){ WFIFOB(fd,14) = sex; WFIFOB(fd,15) = 1;// auth failed WFIFOL(fd,16) = request_id; - WFIFOL(fd,20) = 0; - WFIFOB(fd,24) = 0; - WFIFOSET(fd,25); + WFIFOB(fd,20) = 0; + WFIFOSET(fd,21); } } return 1; diff --git a/src/login/loginclif.c b/src/login/loginclif.c index 4ae3088d76..d69aa983b8 100644 --- a/src/login/loginclif.c +++ b/src/login/loginclif.c @@ -159,7 +159,6 @@ static void logclif_auth_ok(struct login_session_data* sd) { node->login_id2 = sd->login_id2; node->sex = sd->sex; node->ip = ip; - node->version = sd->version; node->clienttype = sd->clienttype; idb_put(auth_db, sd->account_id, node); { @@ -181,7 +180,7 @@ static void logclif_auth_ok(struct login_session_data* sd) { 3 = Rejected from Server 4 = You have been blocked by the GM Team 5 = Your Game's EXE file is not the latest version - 6 = Your are Prohibited to log in until %s + 6 = You are prohibited to log in until %s 7 = Server is jammed due to over populated 8 = No more accounts may be connected from this company 9 = MSI_REFUSE_BAN_BY_DBA @@ -216,37 +215,33 @@ static void logclif_auth_failed(struct login_session_data* sd, int result) { if( (result == 0 || result == 1) && login_config.dynamic_pass_failure_ban ) ipban_log(ip); // log failed password attempt -//#if PACKETVER >= 20120000 /* not sure when this started */ - if( sd->version >= date2version(20120000) ){ /* not sure when this started */ - WFIFOHEAD(fd,26); - WFIFOW(fd,0) = 0x83e; - WFIFOL(fd,2) = result; - if( result != 6 ) - memset(WFIFOP(fd,6), '\0', 20); - else { // 6 = Your are Prohibited to log in until %s - struct mmo_account acc; - AccountDB* accounts = login_get_accounts_db(); - time_t unban_time = ( accounts->load_str(accounts, &acc, sd->userid) ) ? acc.unban_time : 0; - timestamp2string(WFIFOCP(fd,6), 20, unban_time, login_config.date_format); - } - WFIFOSET(fd,26); +#if PACKETVER >= 20120000 /* not sure when this started */ + WFIFOHEAD(fd,26); + WFIFOW(fd,0) = 0x83e; + WFIFOL(fd,2) = result; + if( result != 6 ) + memset(WFIFOP(fd,6), '\0', 20); + else { // 6 = You are prohibited to log in until %s + struct mmo_account acc; + AccountDB* accounts = login_get_accounts_db(); + time_t unban_time = ( accounts->load_str(accounts, &acc, sd->userid) ) ? acc.unban_time : 0; + timestamp2string(WFIFOCP(fd,6), 20, unban_time, login_config.date_format); } -//#else - else { - WFIFOHEAD(fd,23); - WFIFOW(fd,0) = 0x6a; - WFIFOB(fd,2) = (uint8)result; - if( result != 6 ) - memset(WFIFOP(fd,3), '\0', 20); - else { // 6 = Your are Prohibited to log in until %s - struct mmo_account acc; - AccountDB* accounts = login_get_accounts_db(); - time_t unban_time = ( accounts->load_str(accounts, &acc, sd->userid) ) ? acc.unban_time : 0; - timestamp2string(WFIFOCP(fd,3), 20, unban_time, login_config.date_format); - } - WFIFOSET(fd,23); + WFIFOSET(fd,26); +#else + WFIFOHEAD(fd,23); + WFIFOW(fd,0) = 0x6a; + WFIFOB(fd,2) = (uint8)result; + if( result != 6 ) + memset(WFIFOP(fd,3), '\0', 20); + else { // 6 = You are prohibited to log in until %s + struct mmo_account acc; + AccountDB* accounts = login_get_accounts_db(); + time_t unban_time = ( accounts->load_str(accounts, &acc, sd->userid) ) ? acc.unban_time : 0; + timestamp2string(WFIFOCP(fd,3), 20, unban_time, login_config.date_format); } -//#endif + WFIFOSET(fd,23); +#endif } /** @@ -306,7 +301,6 @@ static int logclif_parse_reqauth(int fd, struct login_session_data *sd, int comm return 0; else { int result; - uint32 version; char username[NAME_LENGTH]; char password[PASSWD_LENGTH]; unsigned char passhash[16]; @@ -320,8 +314,6 @@ static int logclif_parse_reqauth(int fd, struct login_session_data *sd, int comm size_t uAccLen = strlen(accname); size_t uTokenLen = RFIFOREST(fd) - 0x5C; - version = RFIFOL(fd,4); - if(uAccLen > NAME_LENGTH - 1 || uAccLen == 0 || uTokenLen > NAME_LENGTH - 1 || uTokenLen == 0) { logclif_auth_failed(sd, 3); @@ -334,7 +326,6 @@ static int logclif_parse_reqauth(int fd, struct login_session_data *sd, int comm } else { - version = RFIFOL(fd,2); safestrncpy(username, RFIFOCP(fd,6), NAME_LENGTH); if( israwpass ) { @@ -350,11 +341,10 @@ static int logclif_parse_reqauth(int fd, struct login_session_data *sd, int comm RFIFOSKIP(fd,RFIFOREST(fd)); // assume no other packet was sent sd->clienttype = clienttype; - sd->version = version; safestrncpy(sd->userid, username, NAME_LENGTH); if( israwpass ) { - ShowStatus("Request for connection of %s (ip: %s) version=%d\n", sd->userid, ip,sd->version); + ShowStatus("Request for connection of %s (ip: %s)\n", sd->userid, ip); safestrncpy(sd->passwd, password, NAME_LENGTH); if( login_config.use_md5_passwds ) MD5_String(sd->passwd, sd->passwd); @@ -362,7 +352,7 @@ static int logclif_parse_reqauth(int fd, struct login_session_data *sd, int comm } else { - ShowStatus("Request for connection (passwdenc mode) of %s (ip: %s) version=%d\n", sd->userid, ip,sd->version); + ShowStatus("Request for connection (passwdenc mode) of %s (ip: %s)\n", sd->userid, ip); bin2hex(sd->passwd, passhash, 16); // raw binary data here! sd->passwdenc = PASSWORDENC; } @@ -430,7 +420,6 @@ static int logclif_parse_reqcharconnec(int fd, struct login_session_data *sd, ch if( login_config.use_md5_passwds ) MD5_String(sd->passwd, sd->passwd); sd->passwdenc = 0; - sd->version = login_config.client_version_to_connect; // hack to skip version check server_ip = ntohl(RFIFOL(fd,54)); server_port = ntohs(RFIFOW(fd,58)); safestrncpy(server_name, RFIFOCP(fd,60), 20); diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 7c9ed34f6e..7512f8af39 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -185,12 +185,12 @@ ACMD_FUNC(send) long num; if(len) {// show packet length - sprintf(atcmd_output, msg_txt(sd,904), type, packet_db[sd->packet_ver][type].len); // Packet 0x%x length: %d + sprintf(atcmd_output, msg_txt(sd,904), type, packet_db[type].len); // Packet 0x%x length: %d clif_displaymessage(fd, atcmd_output); return 0; } - len=packet_db[sd->packet_ver][type].len; + len=packet_db[type].len; off=2; if(len == 0) {// unknown packet - ERROR @@ -341,7 +341,7 @@ ACMD_FUNC(send) SKIP_VALUE(message); } - if(packet_db[sd->packet_ver][type].len == -1) + if(packet_db[type].len == -1) {// send dynamic packet WFIFOW(fd,2)=TOW(off); WFIFOSET(fd,off); @@ -3927,9 +3927,6 @@ ACMD_FUNC(reload) { } else if (strstr(command, "questdb") || strncmp(message, "questdb", 3) == 0) { do_reload_quest(); clif_displaymessage(fd, msg_txt(sd,1377)); // Quest database has been reloaded. - } else if (strstr(command, "packetdb") || strncmp(message, "packetdb", 4) == 0) { - packetdb_readdb(true); - clif_displaymessage(fd, msg_txt(sd,1477)); // Packet database has been reloaded. } else if (strstr(command, "instancedb") || strncmp(message, "instancedb", 4) == 0) { instance_reload(); clif_displaymessage(fd, msg_txt(sd,516)); // Instance database has been reloaded. @@ -10085,7 +10082,6 @@ void atcommand_basecommands(void) { ACMD_DEF2("reloadmotd", reload), ACMD_DEF2("reloadquestdb", reload), ACMD_DEF2("reloadmsgconf", reload), - ACMD_DEF2("reloadpacketdb", reload), ACMD_DEF2("reloadinstancedb", reload), ACMD_DEF(partysharelvl), ACMD_DEF(mapinfo), diff --git a/src/map/battle.c b/src/map/battle.c index 63987390dd..7754f85f12 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -8194,8 +8194,6 @@ static const struct _battle_data { { "night_at_start", &battle_config.night_at_start, 0, 0, 1, }, { "show_mob_info", &battle_config.show_mob_info, 0, 0, 1|2|4, }, { "ban_hack_trade", &battle_config.ban_hack_trade, 0, 0, INT_MAX, }, - { "packet_ver_flag", &battle_config.packet_ver_flag, 0x7FFFFFFF,0, INT_MAX, }, - { "packet_ver_flag2", &battle_config.packet_ver_flag2, 0x7FFFFFFF,0, INT_MAX, }, { "min_hair_style", &battle_config.min_hair_style, 0, 0, INT_MAX, }, { "max_hair_style", &battle_config.max_hair_style, 23, 0, INT_MAX, }, { "min_hair_color", &battle_config.min_hair_color, 0, 0, INT_MAX, }, diff --git a/src/map/battle.h b/src/map/battle.h index 1f11a667b5..bd046a1ba6 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -373,8 +373,6 @@ extern struct Battle_Config int day_duration; // added by [Yor] int night_duration; // added by [Yor] int ban_hack_trade; // added by [Yor] - int packet_ver_flag; // added by [Yor] - int packet_ver_flag2; // expend of packet_ver_flag int min_hair_style; // added by [MouseJstr] int max_hair_style; // added by [MouseJstr] diff --git a/src/map/chrif.c b/src/map/chrif.c index aeaa14e6a7..1c96972fe4 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -36,7 +36,7 @@ static bool char_init_done = false; //server already initialized? Used for Inter static const int packet_len_table[0x3d] = { // U - used, F - free 60, 3,-1,-1,10,-1, 6,-1, // 2af8-2aff: U->2af8, U->2af9, U->2afa, U->2afb, U->2afc, U->2afd, U->2afe, U->2aff - 6,-1,19, 7,-1,39,30, 10, // 2b00-2b07: U->2b00, U->2b01, U->2b02, U->2b03, U->2b04, U->2b05, U->2b06, U->2b07 + 6,-1,18, 7,-1,39,30, 10, // 2b00-2b07: U->2b00, U->2b01, U->2b02, U->2b03, U->2b04, U->2b05, U->2b06, U->2b07 6,30, 10, -1,86, 7,44,34, // 2b08-2b0f: U->2b08, U->2b09, U->2b0a, U->2b0b, U->2b0c, U->2b0d, U->2b0e, U->2b0f 11,10,10, 0,11, -1,266,10, // 2b10-2b17: U->2b10, U->2b11, U->2b12, F->2b13, U->2b14, U->2b15, U->2b16, U->2b17 2,10, 2,-1,-1,-1, 2, 7, // 2b18-2b1f: U->2b18, U->2b19, U->2b1a, U->2b1b, U->2b1c, U->2b1d, U->2b1e, U->2b1f @@ -809,14 +809,13 @@ int chrif_charselectreq(struct map_session_data* sd, uint32 s_ip) { chrif_check(-1); - WFIFOHEAD(char_fd,19); + WFIFOHEAD(char_fd,18); WFIFOW(char_fd, 0) = 0x2b02; WFIFOL(char_fd, 2) = sd->bl.id; WFIFOL(char_fd, 6) = sd->login_id1; WFIFOL(char_fd,10) = sd->login_id2; WFIFOL(char_fd,14) = htonl(s_ip); - WFIFOB(char_fd,18) = sd->packet_ver; - WFIFOSET(char_fd,19); + WFIFOSET(char_fd,18); return 0; } diff --git a/src/map/clif.c b/src/map/clif.c index a773ebd0f9..338ee87914 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -55,21 +55,9 @@ /* for clif_clearunit_delayed */ static struct eri *delay_clearunit_ers; -//#define DUMP_UNKNOWN_PACKET -//#define DUMP_INVALID_PACKET - -struct Clif_Config { - int packet_db_ver; //Preferred packet version. - int connect_cmd[MAX_PACKET_VER + 1]; //Store the connect command for all versions. [Skotlex] -} clif_config; - -struct s_packet_db packet_db[MAX_PACKET_VER + 1][MAX_PACKET_DB + 1]; -int packet_db_ack[MAX_PACKET_VER + 1][MAX_ACK_FUNC + 1]; -#ifdef PACKET_OBFUSCATION -static struct s_packet_keys *packet_keys[MAX_PACKET_VER + 1]; -static unsigned int clif_cryptKey[3]; // Used keys -#endif -static unsigned short clif_parse_cmd(int fd, struct map_session_data *sd); +struct s_packet_db packet_db[MAX_PACKET_DB + 1]; +int packet_db_ack[MAX_ACK_FUNC + 1]; +#include "clif_obfuscation.h" static bool clif_session_isValid(struct map_session_data *sd); #if PACKETVER >= 20150513 @@ -295,9 +283,7 @@ static inline unsigned char clif_bl_type(struct block_list *bl) { #endif static bool clif_session_isValid(struct map_session_data *sd) { - if (sd != NULL && sd->packet_ver <= MAX_PACKET_VER && session_isActive(sd->fd)) - return true; - return false; + return ( sd != NULL && session_isActive(sd->fd) ); } /*========================================== @@ -373,10 +359,8 @@ static int clif_send_sub(struct block_list *bl, va_list ap) return 0; } - if (packet_db[sd->packet_ver][RBUFW(buf,0)].len) { // packet must exist for the client version - memcpy(WFIFOP(fd,0), buf, len); - WFIFOSET(fd,len); - } + memcpy(WFIFOP(fd,0), buf, len); + WFIFOSET(fd,len); return 0; } @@ -404,14 +388,10 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target case ALL_CLIENT: //All player clients. iter = mapit_getallusers(); - while( (tsd = (TBL_PC*)mapit_next(iter)) != NULL ) - { - if( packet_db[tsd->packet_ver][RBUFW(buf,0)].len ) - { // packet must exist for the client version - WFIFOHEAD(tsd->fd, len); - memcpy(WFIFOP(tsd->fd,0), buf, len); - WFIFOSET(tsd->fd,len); - } + while( (tsd = (TBL_PC*)mapit_next(iter)) != NULL ){ + WFIFOHEAD(tsd->fd, len); + memcpy(WFIFOP(tsd->fd, 0), buf, len); + WFIFOSET(tsd->fd, len); } mapit_free(iter); break; @@ -420,8 +400,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target iter = mapit_getallusers(); while( (tsd = (TBL_PC*)mapit_next(iter)) != NULL ) { - if( bl->m == tsd->bl.m && packet_db[tsd->packet_ver][RBUFW(buf,0)].len ) - { // packet must exist for the client version + if( bl->m == tsd->bl.m ){ WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd,0), buf, len); WFIFOSET(tsd->fd,len); @@ -458,13 +437,10 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target for(i = 0; i < cd->users; i++) { if (type == CHAT_WOS && cd->usersd[i] == sd) continue; - if (packet_db[cd->usersd[i]->packet_ver][RBUFW(buf,0)].len) { // packet must exist for the client version - if ((fd=cd->usersd[i]->fd) >0 && session[fd]) // Added check to see if session exists [PoW] - { - WFIFOHEAD(fd,len); - memcpy(WFIFOP(fd,0), buf, len); - WFIFOSET(fd,len); - } + if ((fd=cd->usersd[i]->fd) >0 && session[fd]){ // Added check to see if session exists [PoW] + WFIFOHEAD(fd,len); + memcpy(WFIFOP(fd,0), buf, len); + WFIFOSET(fd,len); } } } @@ -500,12 +476,9 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target if( (type == PARTY_AREA || type == PARTY_AREA_WOS) && (sd->bl.x < x0 || sd->bl.y < y0 || sd->bl.x > x1 || sd->bl.y > y1) ) continue; - if( packet_db[sd->packet_ver][RBUFW(buf,0)].len ) - { // packet must exist for the client version - WFIFOHEAD(fd,len); - memcpy(WFIFOP(fd,0), buf, len); - WFIFOSET(fd,len); - } + WFIFOHEAD(fd, len); + memcpy(WFIFOP(fd, 0), buf, len); + WFIFOSET(fd, len); } if (!enable_spy) //Skip unnecessary parsing. [Skotlex] break; @@ -513,8 +486,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target iter = mapit_getallusers(); while( (tsd = (TBL_PC*)mapit_next(iter)) != NULL ) { - if( tsd->partyspy == p->party.party_id && packet_db[tsd->packet_ver][RBUFW(buf,0)].len ) - { // packet must exist for the client version + if( tsd->partyspy == p->party.party_id ){ WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd,0), buf, len); WFIFOSET(tsd->fd,len); @@ -533,8 +505,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target { if( type == DUEL_WOS && bl->id == tsd->bl.id ) continue; - if( sd->duel_group == tsd->duel_group && packet_db[tsd->packet_ver][RBUFW(buf,0)].len ) - { // packet must exist for the client version + if( sd->duel_group == tsd->duel_group ){ WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd,0), buf, len); WFIFOSET(tsd->fd,len); @@ -544,7 +515,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target break; case SELF: - if (sd && (fd=sd->fd) && packet_db[sd->packet_ver][RBUFW(buf,0)].len) { // packet must exist for the client version + if (sd && (fd=sd->fd)) { WFIFOHEAD(fd,len); memcpy(WFIFOP(fd,0), buf, len); WFIFOSET(fd,len); @@ -585,12 +556,9 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target if( (type == GUILD_AREA || type == GUILD_AREA_WOS) && (sd->bl.x < x0 || sd->bl.y < y0 || sd->bl.x > x1 || sd->bl.y > y1) ) continue; - if( packet_db[sd->packet_ver][RBUFW(buf,0)].len ) - { // packet must exist for the client version - WFIFOHEAD(fd,len); - memcpy(WFIFOP(fd,0), buf, len); - WFIFOSET(fd,len); - } + WFIFOHEAD(fd,len); + memcpy(WFIFOP(fd,0), buf, len); + WFIFOSET(fd,len); } } if (!enable_spy) //Skip unnecessary parsing. [Skotlex] @@ -599,8 +567,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target iter = mapit_getallusers(); while( (tsd = (TBL_PC*)mapit_next(iter)) != NULL ) { - if( tsd->guildspy == g->guild_id && packet_db[tsd->packet_ver][RBUFW(buf,0)].len ) - { // packet must exist for the client version + if( tsd->guildspy == g->guild_id ){ WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd,0), buf, len); WFIFOSET(tsd->fd,len); @@ -632,12 +599,9 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target continue; if( (type == BG_AREA || type == BG_AREA_WOS) && (sd->bl.x < x0 || sd->bl.y < y0 || sd->bl.x > x1 || sd->bl.y > y1) ) continue; - if( packet_db[sd->packet_ver][RBUFW(buf,0)].len ) - { // packet must exist for the client version - WFIFOHEAD(fd,len); - memcpy(WFIFOP(fd,0), buf, len); - WFIFOSET(fd,len); - } + WFIFOHEAD(fd,len); + memcpy(WFIFOP(fd,0), buf, len); + WFIFOSET(fd,len); } } break; @@ -650,11 +614,9 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target continue; } - if( packet_db[sd->packet_ver][RBUFW(buf,0)].len ){ // packet must exist for the client version - WFIFOHEAD(fd,len); - memcpy(WFIFOP(fd,0), buf, len); - WFIFOSET(fd,len); - } + WFIFOHEAD(fd,len); + memcpy(WFIFOP(fd,0), buf, len); + WFIFOSET(fd,len); } if (!enable_spy) //Skip unnecessary parsing. [Skotlex] @@ -662,8 +624,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target iter = mapit_getallusers(); while ((tsd = (TBL_PC*)mapit_next(iter)) != NULL){ - if (tsd->clanspy == clan->id && packet_db[tsd->packet_ver][RBUFW(buf, 0)].len) - { // packet must exist for the client version + if (tsd->clanspy == clan->id){ WFIFOHEAD(tsd->fd, len); memcpy(WFIFOP(tsd->fd, 0), buf, len); WFIFOSET(tsd->fd, len); @@ -2046,7 +2007,7 @@ void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd) { if (sd->state.trading) return; - info = &packet_db[sd->packet_ver][cmd]; + info = &packet_db[cmd]; if (!info || info->len == 0) return; @@ -2093,7 +2054,7 @@ void clif_npc_market_purchase_ack(struct map_session_data *sd, uint8 res, uint8 nullpo_retv(sd); nullpo_retv((nd = map_id2nd(sd->npc_shopid))); - info = &packet_db[sd->packet_ver][cmd]; + info = &packet_db[cmd]; if (!info || info->len == 0) return; @@ -2137,7 +2098,7 @@ void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) { if (!sd->npc_shopid) return; - info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + info = &packet_db[RFIFOW(fd,0)]; if (!info || info->len == 0) return; len = RFIFOW(fd,info->pos[0]); @@ -2246,9 +2207,9 @@ void clif_scriptclear(struct map_session_data *sd, int npcid) nullpo_retv(sd); - cmd = packet_db_ack[sd->packet_ver][ZC_CLEAR_DIALOG]; + cmd = packet_db_ack[ZC_CLEAR_DIALOG]; if(!cmd) cmd = 0x8d6; //default - info = &packet_db[sd->packet_ver][cmd]; + info = &packet_db[cmd]; len = info->len; fd = sd->fd; @@ -3814,8 +3775,8 @@ void clif_equipitemack(struct map_session_data *sd,int n,int pos,uint8 flag) nullpo_retv(sd); - cmd = packet_db_ack[sd->packet_ver][ZC_WEAR_EQUIP_ACK]; - if (!cmd || !(info = &packet_db[sd->packet_ver][cmd]) || !info->len) + cmd = packet_db_ack[ZC_WEAR_EQUIP_ACK]; + if (!cmd || !(info = &packet_db[cmd]) || !info->len) return; fd = sd->fd; @@ -3829,12 +3790,12 @@ void clif_equipitemack(struct map_session_data *sd,int n,int pos,uint8 flag) switch (cmd) { case 0xaa: WFIFOW(fd, info->pos[1]) = pos; - if (sd->packet_ver < date2version(20100629)) - WFIFOW(fd, info->pos[2]) = (flag == ITEM_EQUIP_ACK_OK ? 1 : 0); - else { - WFIFOL(fd, info->pos[2]) = look; - WFIFOW(fd, info->pos[3]) = (flag == ITEM_EQUIP_ACK_OK ? 1 : 0); - } +#if PACKETVER < 20100629 + WFIFOW(fd, info->pos[2]) = (flag == ITEM_EQUIP_ACK_OK ? 1 : 0); +#else + WFIFOL(fd, info->pos[2]) = look; + WFIFOW(fd, info->pos[3]) = (flag == ITEM_EQUIP_ACK_OK ? 1 : 0); +#endif break; case 0x8d0: if (flag == ITEM_EQUIP_ACK_FAILLEVEL) @@ -6882,7 +6843,7 @@ void clif_parse_BankOpen(int fd, struct map_session_data* sd) { return; } else { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ? if(sd->status.account_id == aid){ sd->state.banking = 1; @@ -6913,7 +6874,7 @@ void clif_bank_close(struct map_session_data *sd){ * 09B8 L ??? (dunno just wild guess checkme) */ void clif_parse_BankClose(int fd, struct map_session_data* sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ? nullpo_retv(sd); @@ -6939,9 +6900,9 @@ void clif_Bank_Check(struct map_session_data* sd) { nullpo_retv(sd); - cmd = packet_db_ack[sd->packet_ver][ZC_BANKING_CHECK]; + cmd = packet_db_ack[ZC_BANKING_CHECK]; if(!cmd) cmd = 0x09A6; //default - info = &packet_db[sd->packet_ver][cmd]; + info = &packet_db[cmd]; len = info->len; if(!len) return; //version as packet disable // sd->state.banking = 1; //mark opening and closing @@ -6964,7 +6925,7 @@ void clif_parse_BankCheck(int fd, struct map_session_data* sd) { return; } else { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ? if(sd->status.account_id == aid) //since we have it let check it for extra security clif_Bank_Check(sd); @@ -6983,9 +6944,9 @@ void clif_bank_deposit(struct map_session_data *sd, enum e_BANKING_DEPOSIT_ACK r nullpo_retv(sd); - cmd = packet_db_ack[sd->packet_ver][ZC_ACK_BANKING_DEPOSIT]; + cmd = packet_db_ack[ZC_ACK_BANKING_DEPOSIT]; if(!cmd) cmd = 0x09A8; - info = &packet_db[sd->packet_ver][cmd]; + info = &packet_db[cmd]; len = info->len; if(!len) return; //version as packet disable @@ -7008,7 +6969,7 @@ void clif_parse_BankDeposit(int fd, struct map_session_data* sd) { return; } else { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ? int money = RFIFOL(fd,info->pos[1]); @@ -7031,9 +6992,9 @@ void clif_bank_withdraw(struct map_session_data *sd,enum e_BANKING_WITHDRAW_ACK nullpo_retv(sd); - cmd = packet_db_ack[sd->packet_ver][ZC_ACK_BANKING_WITHDRAW]; + cmd = packet_db_ack[ZC_ACK_BANKING_WITHDRAW]; if(!cmd) cmd = 0x09AA; - info = &packet_db[sd->packet_ver][cmd]; + info = &packet_db[cmd]; len = info->len; if(!len) return; //version as packet disable @@ -7056,7 +7017,7 @@ void clif_parse_BankWithdraw(int fd, struct map_session_data* sd) { return; } else { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int aid = RFIFOL(fd,info->pos[0]); //unused should we check vs fd ? int money = RFIFOL(fd,info->pos[1]); if(sd->status.account_id == aid){ @@ -9914,7 +9875,7 @@ static bool clif_process_message(struct map_session_data* sd, bool whisperFormat fd = sd->fd; - info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + info = &packet_db[RFIFOW(fd,0)]; packetLength = RFIFOW(fd,info->pos[0]); input = RFIFOCP(fd,info->pos[1]); @@ -10037,7 +9998,7 @@ static bool clif_process_message(struct map_session_data* sd, bool whisperFormat } // --------------------- -// clif_guess_PacketVer +// clif_parse_wanttoconnect // --------------------- // Parses a WantToConnection packet to try to identify which is the packet version used. [Skotlex] // error codes: @@ -10049,74 +10010,33 @@ static bool clif_process_message(struct map_session_data* sd, bool whisperFormat // 5 - Invalid client_tick (reserved) // 6 - Invalid sex // Only the first 'invalid' error that appears is used. -static int clif_guess_PacketVer(int fd, int get_previous, int *error) +static int clif_parse_WantToConnection_sub(int fd) { - static int err = 1; - static int packet_ver = -1; int packet_len, value; //Value is used to temporarily store account/char_id/sex unsigned short cmd; - if (get_previous) - {//For quick reruns, since the normal code flow is to fetch this once to identify the packet version, then again in the wanttoconnect function. [Skotlex] - if( error ) - *error = err; - return packet_ver; - } - //By default, start searching on the default one. - err = 1; - packet_ver = clif_config.packet_db_ver; - cmd = clif_parse_cmd(fd, NULL); + cmd = RFIFOW(fd, 0); packet_len = RFIFOREST(fd); -#define SET_ERROR(n) \ - if( err == 1 )\ - err = n;\ -//define SET_ERROR - // FIXME: If the packet is not received at once, this will FAIL. // Figure out, when it happens, that only part of the packet is // received, or fix the function to be able to deal with that // case. -#define CHECK_PACKET_VER() \ - if( cmd != clif_config.connect_cmd[packet_ver] || packet_len != packet_db[packet_ver][cmd].len )\ - ;/* not wanttoconnection or wrong length */\ - else if( (value=(int)RFIFOL(fd, packet_db[packet_ver][cmd].pos[0])) < START_ACCOUNT_NUM || value > END_ACCOUNT_NUM )\ - { SET_ERROR(2); }/* invalid account_id */\ - else if( (value=(int)RFIFOL(fd, packet_db[packet_ver][cmd].pos[1])) <= 0 )\ - { SET_ERROR(3); }/* invalid char_id */\ - /* RFIFOL(fd, packet_db[packet_ver][cmd].pos[2]) - don't care about login_id1 */\ - /* RFIFOL(fd, packet_db[packet_ver][cmd].pos[3]) - don't care about client_tick */\ - else if( (value=(int)RFIFOB(fd, packet_db[packet_ver][cmd].pos[4])) != 0 && value != 1 )\ - { SET_ERROR(6); }/* invalid sex */\ - else\ - {\ - err = 0;\ - if( error )\ - *error = 0;\ - return packet_ver;\ - }\ -//define CHECK_PACKET_VER - - CHECK_PACKET_VER();//Default packet version found. - - for (packet_ver = MAX_PACKET_VER; packet_ver > 0; packet_ver--) { //Start guessing the version, giving priority to the newer ones. [Skotlex] - CHECK_PACKET_VER(); - } - if( error ) - *error = err; - packet_ver = -1; - return -1; -#undef SET_ERROR -#undef CHECK_PACKET_VER + if( packet_len != packet_db[cmd].len ) + return 1; /* wrong length */ + else if( (value=(int)RFIFOL(fd, packet_db[cmd].pos[0])) < START_ACCOUNT_NUM || value > END_ACCOUNT_NUM ) + return 2; /* invalid account_id */ + else if( (value=(int)RFIFOL(fd, packet_db[cmd].pos[1])) <= 0 ) + return 3; /* invalid char_id */ + /* RFIFOL(fd, packet_db[cmd].pos[2]) - don't care about login_id1 */ + /* RFIFOL(fd, packet_db[cmd].pos[3]) - don't care about client_tick */ + else if( (value=(int)RFIFOB(fd, packet_db[cmd].pos[4])) != 0 && value != 1 ) + return 6; /* invalid sex */ + else + return 0; } -// ------------ -// clif_parse_* -// ------------ -// Parses incoming (player) connection - - /// Request to connect to map-server. /// 0072 .L .L .L .L .B (CZ_ENTER) /// 0436 .L .L .L .L .B (CZ_ENTER2) @@ -10125,35 +10045,46 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd) { struct block_list* bl; struct auth_node* node; - int cmd, account_id, char_id, login_id1, sex; + int cmd, account_id, char_id, login_id1, sex, err; unsigned int client_tick; //The client tick is a tick, therefore it needs be unsigned. [Skotlex] - int packet_ver; // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 9aug04/16aug04/17aug04, 10: 6sept04, 11: 21sept04, 12: 18oct04, 13: 25oct04 (by [Yor]) if (sd) { ShowError("clif_parse_WantToConnection : invalid request (character already logged in)\n"); return; } - // Only valid packet version get here - packet_ver = clif_guess_PacketVer(fd, 1, NULL); + cmd = RFIFOW(fd, 0); + account_id = RFIFOL(fd, packet_db[cmd].pos[0]); + char_id = RFIFOL(fd, packet_db[cmd].pos[1]); + login_id1 = RFIFOL(fd, packet_db[cmd].pos[2]); + client_tick = RFIFOL(fd, packet_db[cmd].pos[3]); + sex = RFIFOB(fd, packet_db[cmd].pos[4]); - cmd = RFIFOW(fd,0); - account_id = RFIFOL(fd, packet_db[packet_ver][cmd].pos[0]); - char_id = RFIFOL(fd, packet_db[packet_ver][cmd].pos[1]); - login_id1 = RFIFOL(fd, packet_db[packet_ver][cmd].pos[2]); - client_tick = RFIFOL(fd, packet_db[packet_ver][cmd].pos[3]); - sex = RFIFOB(fd, packet_db[packet_ver][cmd].pos[4]); + err = clif_parse_WantToConnection_sub(fd); - if( packet_ver < 5 || // reject really old client versions - (packet_ver <= 9 && (battle_config.packet_ver_flag & 1) == 0) || // older than 6sept04 - (packet_ver > 9 && packet_ver <40 && (battle_config.packet_ver_flag & 1<<(packet_ver-9)) == 0) || // version not allowed - (packet_ver >= 40 && packet_ver <=72 && (battle_config.packet_ver_flag2 & 1<<(packet_ver-40)) == 0) ) - {// packet version rejected - ShowInfo("Rejected connection attempt, forbidden packet version (AID/CID: '"CL_WHITE"%d/%d"CL_RESET"', Packet Ver: '"CL_WHITE"%d"CL_RESET"', IP: '"CL_WHITE"%s"CL_RESET"').\n", account_id, char_id, packet_ver, ip2str(session[fd]->client_addr, NULL)); + if( err ){ // connection rejected + ShowInfo("clif_parse: Disconnecting session #%d with unknown connect packet 0x%04x(length:%d)%s\n", fd, cmd, RFIFOREST(fd), ( + err == 1 ? "." : + err == 2 ? ", possibly for having an invalid account_id." : + err == 3 ? ", possibly for having an invalid char_id." : + /* Uncomment when checks are added in clif_parse_WantToConnection_sub. [FlavioJS] + err == 4 ? ", possibly for having an invalid login_id1." : + err == 5 ? ", possibly for having an invalid client_tick." : + */ + err == 6 ? ", possibly for having an invalid sex." : + ". ERROR invalid error code")); + WFIFOHEAD(fd,packet_len(0x6a)); WFIFOW(fd,0) = 0x6a; - WFIFOB(fd,2) = 5; // Your Game's EXE file is not the latest version + WFIFOB(fd,2) = err; WFIFOSET(fd,packet_len(0x6a)); + +#ifdef DUMP_INVALID_PACKET + ShowDump(RFIFOP(fd, 0), RFIFOREST(fd)); +#endif + + RFIFOSKIP(fd, RFIFOREST(fd)); + set_eof(fd); return; } @@ -10185,7 +10116,6 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd) CREATE(sd, TBL_PC, 1); sd->fd = fd; - sd->packet_ver = packet_ver; #ifdef PACKET_OBFUSCATION sd->cryptKey = (((((clif_cryptKey[0] * clif_cryptKey[1]) + clif_cryptKey[2]) & 0xFFFFFFFF) * clif_cryptKey[1]) + clif_cryptKey[2]) & 0xFFFFFFFF; #endif @@ -10595,7 +10525,7 @@ void clif_notify_time(struct map_session_data* sd, unsigned long time) /// There are various variants of this packet, some of them have padding between fields. void clif_parse_TickSend(int fd, struct map_session_data *sd) { - sd->client_tick = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + sd->client_tick = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); clif_notify_time(sd, gettick()); } @@ -10638,7 +10568,7 @@ void clif_hotkeys_send(struct map_session_data *sd) { /// Request to update a position on the hotkey row bar void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd) { int cmd = RFIFOW(fd, 0); - sd->status.hotkey_rowshift = RFIFOB(fd, packet_db[sd->packet_ver][cmd].pos[0]); + sd->status.hotkey_rowshift = RFIFOB(fd, packet_db[cmd].pos[0]); } /// Request to update a position on the hotkey bar (CZ_SHORTCUT_KEY_CHANGE). @@ -10646,7 +10576,7 @@ void clif_parse_HotkeyRowShift(int fd, struct map_session_data *sd) { void clif_parse_Hotkey(int fd, struct map_session_data *sd) { #ifdef HOTKEY_SAVING unsigned short idx; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; idx = RFIFOW(fd, info->pos[0]); if (idx >= MAX_HOTKEYS) return; @@ -10723,7 +10653,7 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd) if(sd->sc.data[SC_RUN] || sd->sc.data[SC_WUGDASH]) return; - RFIFOPOS(fd, packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0], &x, &y, NULL); + RFIFOPOS(fd, packet_db[RFIFOW(fd,0)].pos[0], &x, &y, NULL); //A move command one cell west is only valid if the target cell is free if(battle_config.official_cell_stack_limit > 0 @@ -10769,7 +10699,7 @@ void clif_disconnect_ack(struct map_session_data* sd, short result) void clif_parse_QuitGame(int fd, struct map_session_data *sd) { /* Rovert's prevent logout option fixed [Valaris] */ - //int type = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + //int type = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]); if( !sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] && !sd->sc.data[SC_SUHIDE] && (!battle_config.prevent_logout || sd->canlog_tick == 0 || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) ) { @@ -10788,7 +10718,7 @@ void clif_parse_QuitGame(int fd, struct map_session_data *sd) /// There are various variants of this packet, some of them have padding between fields. void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) { - int id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); struct block_list* bl; //struct status_change *sc; @@ -10868,7 +10798,7 @@ void clif_parse_MapMove(int fd, struct map_session_data *sd) { char command[MAP_NAME_LENGTH_EXT+25]; char* map_name; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; map_name = RFIFOCP(fd,info->pos[0]); map_name[MAP_NAME_LENGTH_EXT-1]='\0'; @@ -10920,7 +10850,7 @@ void clif_changed_dir(struct block_list *bl, enum send_target target) void clif_parse_ChangeDir(int fd, struct map_session_data *sd) { unsigned char headdir, dir; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; headdir = RFIFOB(fd,info->pos[0]); dir = RFIFOB(fd,info->pos[1]); @@ -10936,7 +10866,7 @@ void clif_parse_ChangeDir(int fd, struct map_session_data *sd) /// @see enum emotion_type void clif_parse_Emotion(int fd, struct map_session_data *sd) { - int emoticon = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int emoticon = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]); if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2 || pc_checkskill(sd, SU_BASIC_SKILL) >= 1) { if (emoticon == E_MUTE) {// prevent use of the mute emote [Valaris] @@ -11095,7 +11025,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, /// There are various variants of this packet, some of them have padding between fields. void clif_parse_ActionRequest(int fd, struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; clif_parse_ActionRequest_sub(sd, RFIFOB(fd,info->pos[1]), RFIFOL(fd,info->pos[0]), @@ -11111,7 +11041,7 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd) /// 1 = char-select (disconnect) void clif_parse_Restart(int fd, struct map_session_data *sd) { - switch(RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])) { + switch(RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0])) { case 0x00: pc_respawn(sd,CLR_OUTSIGHT); break; @@ -11256,7 +11186,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd) /// 0099 .W .?B 00 void clif_parse_Broadcast(int fd, struct map_session_data* sd) { char command[CHAT_SIZE_MAX+11]; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; unsigned int len = RFIFOW(fd,info->pos[0])-4; char* msg = RFIFOCP(fd,info->pos[1]); @@ -11277,7 +11207,7 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd) struct flooritem_data *fitem; int map_object_id; - map_object_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + map_object_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); fitem = (struct flooritem_data*)map_id2bl(map_object_id); @@ -11308,7 +11238,7 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd) /// 0363 .W .W (CZ_ITEM_THROW2) /// There are various variants of this packet, some of them have padding between fields. void clif_parse_DropItem(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int item_index = RFIFOW(fd,info->pos[0]) -2; int item_amount = RFIFOW(fd,info->pos[1]) ; @@ -11359,7 +11289,7 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd) //Whether the item is used or not is irrelevant, the char ain't idle. [Skotlex] if (battle_config.idletime_option&IDLE_USEITEM) sd->idletime = last_tick; - n = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])-2; + n = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])-2; if(n <0 || n >= MAX_INVENTORY) return; @@ -11374,7 +11304,7 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd) void clif_parse_EquipItem(int fd,struct map_session_data *sd) { int index; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if(pc_isdead(sd)) { clif_clearunit_area(&sd->bl,CLR_DEAD); @@ -11441,7 +11371,7 @@ void clif_parse_UnequipItem(int fd,struct map_session_data *sd) else if (pc_cant_act2(sd)) return; - index = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])-2; + index = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])-2; if (battle_config.idletime_option&IDLE_USEITEM) sd->idletime = last_tick; @@ -11457,7 +11387,7 @@ void clif_parse_UnequipItem(int fd,struct map_session_data *sd) void clif_parse_NpcClicked(int fd,struct map_session_data *sd) { struct block_list *bl; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if(pc_isdead(sd)) { clif_clearunit_area(&sd->bl,CLR_DEAD); @@ -11503,7 +11433,7 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd) /// 1 = sell void clif_parse_NpcBuySellSelected(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if (sd->state.trading) return; npc_buysellsel(sd,RFIFOL(fd,info->pos[0]),RFIFOB(fd,info->pos[1])); @@ -11532,7 +11462,7 @@ void clif_npc_buy_result(struct map_session_data* sd, unsigned char result) /// 00c8 .W { .W .W }* void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; uint16 n = (RFIFOW(fd,info->pos[0])-4) /4; int result; @@ -11568,7 +11498,7 @@ void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd) { int fail=0,n; unsigned short *item_list; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; n = (RFIFOW(fd,info->pos[0])-4) /4; // (pktlen-(cmd+len))/listsize item_list = (unsigned short*)RFIFOP(fd,info->pos[1]); @@ -11590,7 +11520,7 @@ void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd) /// 1 = public void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int len = RFIFOW(fd,info->pos[0])-15; int limit = RFIFOW(fd,info->pos[1]); bool pub = (RFIFOB(fd,info->pos[2]) != 0); @@ -11628,7 +11558,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd) /// Chatroom join request (CZ_REQ_ENTER_ROOM). /// 00d9 .L .8B void clif_parse_ChatAddMember(int fd, struct map_session_data* sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int chatid = RFIFOL(fd,info->pos[0]); const char* password = RFIFOCP(fd,info->pos[1]); // not zero-terminated @@ -11642,7 +11572,7 @@ void clif_parse_ChatAddMember(int fd, struct map_session_data* sd){ /// 0 = private /// 1 = public void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int len = RFIFOW(fd,info->pos[0])-15; int limit = RFIFOW(fd,info->pos[1]); bool pub = (RFIFOB(fd,info->pos[2]) != 0); @@ -11668,8 +11598,8 @@ void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd){ /// 1 = normal void clif_parse_ChangeChatOwner(int fd, struct map_session_data* sd) { - //int role = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); - chat_changechatowner(sd,RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1])); + //int role = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); + chat_changechatowner(sd,RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[1])); } @@ -11677,7 +11607,7 @@ void clif_parse_ChangeChatOwner(int fd, struct map_session_data* sd) /// 00e2 .24B void clif_parse_KickFromChat(int fd,struct map_session_data *sd) { - chat_kickchat(sd,RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + chat_kickchat(sd,RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0])); } @@ -11711,7 +11641,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) { struct map_session_data *t_sd; - t_sd = map_id2sd(RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + t_sd = map_id2sd(RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); if(!sd->chatID && pc_cant_act(sd)) return; //You can trade while in a chatroom. @@ -11752,7 +11682,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) /// 4 = rejected void clif_parse_TradeAck(int fd,struct map_session_data *sd) { - trade_tradeack(sd,RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + trade_tradeack(sd,RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0])); } @@ -11760,7 +11690,7 @@ void clif_parse_TradeAck(int fd,struct map_session_data *sd) /// 00e8 .W .L void clif_parse_TradeAddItem(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; short index = RFIFOW(fd,info->pos[0]); int amount = RFIFOL(fd,info->pos[1]); @@ -11808,7 +11738,7 @@ void clif_parse_StopAttack(int fd,struct map_session_data *sd) /// 0126 .W .L void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if (pc_istrading(sd)) return; if (!pc_iscarton(sd)) @@ -11821,7 +11751,7 @@ void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) /// 0127 .W .L void clif_parse_GetItemFromCart(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if (!pc_iscarton(sd)) return; pc_getitemfromcart(sd,RFIFOW(fd,info->pos[0])-2,RFIFOL(fd,info->pos[1])); @@ -11902,7 +11832,7 @@ void clif_parse_ChangeCart(int fd,struct map_session_data *sd) } #endif - type = (int)RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + type = (int)RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]); if( #ifdef NEW_CARTS @@ -11929,13 +11859,13 @@ void clif_parse_ChangeCart(int fd,struct map_session_data *sd) /// Newer clients (2013-12-23 and newer) send the correct amount. void clif_parse_StatusUp(int fd,struct map_session_data *sd) { - int increase_amount = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]); + int increase_amount = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[1]); if( increase_amount < 0 ) { ShowDebug("clif_parse_StatusUp: Negative 'increase' value sent by client! (fd: %d, value: %d)\n", fd, increase_amount); } - pc_statusup(sd,RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]),increase_amount); + pc_statusup(sd,RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]),increase_amount); } @@ -11943,7 +11873,7 @@ void clif_parse_StatusUp(int fd,struct map_session_data *sd) /// 0112 .W void clif_parse_SkillUp(int fd,struct map_session_data *sd) { - pc_skillup(sd,RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + pc_skillup(sd,RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])); } static void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, int target_id) @@ -12060,7 +11990,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) uint16 skill_id, skill_lv; int inf,target_id; unsigned int tick = gettick(); - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; skill_lv = RFIFOW(fd,info->pos[0]); skill_id = RFIFOW(fd,info->pos[1]); @@ -12252,7 +12182,7 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin /// There are various variants of this packet, some of them have padding between fields. void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if (pc_cant_act(sd)) return; if (pc_issit(sd)) @@ -12274,7 +12204,7 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) /// There are various variants of this packet, some of them have padding between fields. void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if (pc_cant_act(sd)) return; if (pc_issit(sd)) @@ -12294,7 +12224,7 @@ void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd) /// 011b .W .16B void clif_parse_UseSkillMap(int fd, struct map_session_data* sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; uint16 skill_id = RFIFOW(fd,info->pos[0]); char map_name[MAP_NAME_LENGTH]; @@ -12327,7 +12257,7 @@ void clif_parse_RequestMemo(int fd,struct map_session_data *sd) /// Answer to pharmacy item selection dialog (CZ_REQMAKINGITEM). /// 018e .W { .W }*3 void clif_parse_ProduceMix(int fd,struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; unsigned short nameid = RFIFOW(fd,info->pos[0]); int slot1 = RFIFOW(fd,info->pos[1]); int slot2 = RFIFOW(fd,info->pos[2]); @@ -12365,7 +12295,7 @@ void clif_parse_ProduceMix(int fd,struct map_session_data *sd){ /// 5 = GN_MAKEBOMB /// 6 = GN_S_PHARMACY void clif_parse_Cooking(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int type = RFIFOW(fd,info->pos[0]); unsigned short nameid = RFIFOW(fd,info->pos[1]); int amount = sd->menuskill_val2 ? sd->menuskill_val2 : 1; @@ -12399,11 +12329,11 @@ void clif_parse_RepairItem(int fd, struct map_session_data *sd) clif_menuskill_clear(sd); return; } - skill_repairweapon(sd,RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); - //nameid = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]); - //refine = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[2]); + skill_repairweapon(sd,RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])); + //nameid = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[1]); + //refine = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[2]); //for(i = 0; ipacket_ver][RFIFOW(fd,0)].pos[3+i]); + // card[i] = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[3+i]); clif_menuskill_clear(sd); } @@ -12422,7 +12352,7 @@ void clif_parse_WeaponRefine(int fd, struct map_session_data *sd) clif_menuskill_clear(sd); return; } - idx = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + idx = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); skill_weaponrefine(sd, idx-2); clif_menuskill_clear(sd); } @@ -12436,7 +12366,7 @@ void clif_parse_WeaponRefine(int fd, struct map_session_data *sd) /// NOTE: If there were more than 254 items in the list, choice /// overflows to choice%256. void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int npc_id = RFIFOL(fd,info->pos[0]); uint8 select = RFIFOB(fd,info->pos[1]); @@ -12462,14 +12392,14 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd){ /// 00b9 .L void clif_parse_NpcNextClicked(int fd,struct map_session_data *sd) { - npc_scriptcont(sd,RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]), false); + npc_scriptcont(sd,RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]), false); } /// NPC numeric input dialog value (CZ_INPUT_EDITDLG). /// 0143 .L .L void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int npcid = RFIFOL(fd,info->pos[0]); int amount = (int)RFIFOL(fd,info->pos[1]); @@ -12481,7 +12411,7 @@ void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd){ /// NPC text input dialog value (CZ_INPUT_EDITDLGSTR). /// 01d5 .W .L .?B void clif_parse_NpcStringInput(int fd, struct map_session_data* sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int message_len = RFIFOW(fd,info->pos[0])-8; int npcid = RFIFOL(fd,info->pos[1]); const char* message = RFIFOCP(fd,info->pos[2]); @@ -12504,7 +12434,7 @@ void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd) { if (!sd->npc_id) //Avoid parsing anything when the script was done with. [Skotlex] return; - npc_scriptcont(sd, RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]), true); + npc_scriptcont(sd, RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]), true); } @@ -12513,7 +12443,7 @@ void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd) /// index: /// -1 = cancel void clif_parse_ItemIdentify(int fd,struct map_session_data *sd) { - short idx = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]) - 2; + short idx = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]) - 2; if (sd->menuskill_id != MC_IDENTIFY) return; @@ -12538,7 +12468,7 @@ void clif_parse_ItemIdentify(int fd,struct map_session_data *sd) { /// Answer to arrow crafting item selection dialog (CZ_REQ_MAKINGARROW). /// 01ae .W void clif_parse_SelectArrow(int fd,struct map_session_data *sd) { - unsigned short nameid = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + unsigned short nameid = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]); if (pc_istrading(sd)) { //Make it fail to avoid shop exploits where you sell something different than you see. clif_skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0); @@ -12574,7 +12504,7 @@ void clif_parse_AutoSpell(int fd,struct map_session_data *sd) if (sd->menuskill_id != SA_AUTOSPELL) return; sd->state.workinprogress = WIP_DISABLE_NONE; - skill_autospell(sd,RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + skill_autospell(sd,RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); clif_menuskill_clear(sd); } @@ -12585,7 +12515,7 @@ void clif_parse_UseCard(int fd,struct map_session_data *sd) { if (sd->state.trading != 0) return; - clif_use_card(sd,RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])-2); + clif_use_card(sd,RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])-2); } @@ -12593,7 +12523,7 @@ void clif_parse_UseCard(int fd,struct map_session_data *sd) /// 017c .W .W void clif_parse_InsertCard(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if (sd->state.trading != 0) return; pc_insert_card(sd,RFIFOW(fd,info->pos[0])-2,RFIFOW(fd,info->pos[1])-2); @@ -12608,7 +12538,7 @@ void clif_parse_SolveCharName(int fd, struct map_session_data *sd) { int charid; - charid = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + charid = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); map_reqnickdb(sd, charid); } @@ -12622,7 +12552,7 @@ void clif_parse_SolveCharName(int fd, struct map_session_data *sd) void clif_parse_ResetChar(int fd, struct map_session_data *sd) { char cmd[15]; - if( RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]) ) + if( RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]) ) safesnprintf(cmd,sizeof(cmd),"%cresetskill",atcommand_symbol); else safesnprintf(cmd,sizeof(cmd),"%cresetstat",atcommand_symbol); @@ -12636,7 +12566,7 @@ void clif_parse_ResetChar(int fd, struct map_session_data *sd) { /// 019c .W .?B void clif_parse_LocalBroadcast(int fd, struct map_session_data* sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; char command[CHAT_SIZE_MAX+16]; unsigned int len = RFIFOW(fd,info->pos[0])-4; char* msg = RFIFOCP(fd,info->pos[1]); @@ -12656,7 +12586,7 @@ void clif_parse_LocalBroadcast(int fd, struct map_session_data* sd) void clif_parse_MoveToKafra(int fd, struct map_session_data *sd) { int item_index, item_amount; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if (pc_istrading(sd)) return; @@ -12683,7 +12613,7 @@ void clif_parse_MoveToKafra(int fd, struct map_session_data *sd) void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd) { int item_index, item_amount; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; item_index = RFIFOW(fd,info->pos[0])-1; item_amount = RFIFOL(fd,info->pos[1]); @@ -12700,7 +12630,7 @@ void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd) /// Request to move an item from cart to storage (CZ_MOVE_ITEM_FROM_CART_TO_STORE). /// 0129 .W .L void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int idx = RFIFOW(fd,info->pos[0]) - 2; int amount = RFIFOL(fd,info->pos[1]); @@ -12722,7 +12652,7 @@ void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd){ /// Request to move an item from storage to cart (CZ_MOVE_ITEM_FROM_STORE_TO_CART). /// 0128 .W .L void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int idx = RFIFOW(fd,info->pos[0]) - 1; int amount = RFIFOL(fd,info->pos[1]); @@ -12781,7 +12711,7 @@ void clif_storagepassword(struct map_session_data* sd, short info) /// 3 = check password /// NOTE: This packet is only available on certain non-kRO clients. void clif_parse_StoragePassword(int fd, struct map_session_data *sd){ //@TODO -// struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; +// struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; // int type = RFIFOW(fd,info->pos[0]); // char* password = RFIFOP(fd,info->pos[1]); // char* new_password = RFIFOP(fd,info->pos[2]); @@ -12815,7 +12745,7 @@ void clif_storagepassword_result(struct map_session_data* sd, short result, shor /// Party creation request /// 00f9 .24B (CZ_MAKE_GROUP) void clif_parse_CreateParty(int fd, struct map_session_data *sd){ - char* name = RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + char* name = RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0]); name[NAME_LENGTH-1] = '\0'; if( map[sd->bl.m].flag.partylock ) {// Party locked. @@ -12832,7 +12762,7 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd){ /// 01e8 .24B .B .B (CZ_MAKE_GROUP2) void clif_parse_CreateParty2(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; char* name = RFIFOCP(fd,info->pos[0]); int item1 = RFIFOB(fd,info->pos[1]); int item2 = RFIFOB(fd,info->pos[2]); @@ -12862,7 +12792,7 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) return; } - t_sd = map_id2sd(RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + t_sd = map_id2sd(RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); if(t_sd && t_sd->state.noask) {// @noask [LuzZza] clif_noask_sub(sd, t_sd, 1); @@ -12875,7 +12805,7 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) /// 02c4 .24B (CZ_PARTY_JOIN_REQ) void clif_parse_PartyInvite2(int fd, struct map_session_data *sd){ struct map_session_data *t_sd; - char *name = RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + char *name = RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0]); name[NAME_LENGTH-1] = '\0'; if(map[sd->bl.m].flag.partylock) {// Party locked. @@ -12902,14 +12832,14 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd){ /// 1 = accept void clif_parse_ReplyPartyInvite(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; party_reply_invite(sd,RFIFOL(fd,info->pos[0]), RFIFOL(fd,info->pos[1])); } //(CZ_PARTY_JOIN_REQ_ACK) void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; party_reply_invite(sd,RFIFOL(fd,info->pos[0]), RFIFOB(fd,info->pos[1])); } @@ -12931,7 +12861,7 @@ void clif_parse_LeaveParty(int fd, struct map_session_data *sd) /// 0103 .L .24B void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if(map[sd->bl.m].flag.partylock) {// Party locked. clif_displaymessage(fd, msg_txt(sd,227)); return; @@ -12949,7 +12879,7 @@ void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) struct party_data *p; int i,expflag; int cmd = RFIFOW(fd,0); - struct s_packet_db* info = &packet_db[sd->packet_ver][cmd]; + struct s_packet_db* info = &packet_db[cmd]; if( !sd->status.party_id ) return; @@ -12990,7 +12920,7 @@ void clif_parse_PartyMessage(int fd, struct map_session_data* sd){ /// Changes Party Leader (CZ_CHANGE_GROUP_MASTER). /// 07da .L void clif_parse_PartyChangeLeader(int fd, struct map_session_data* sd){ - party_changeleader(sd, map_id2sd(RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])),NULL); + party_changeleader(sd, map_id2sd(RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])),NULL); } @@ -13000,7 +12930,7 @@ void clif_parse_PartyChangeLeader(int fd, struct map_session_data* sd){ /// Request to register a party booking advertisment (CZ_PARTY_BOOKING_REQ_REGISTER). /// 0802 .W .W { .W }*6 void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data* sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; short level = RFIFOW(fd,info->pos[0]); short mapid = RFIFOW(fd,info->pos[1]); int idxpbj = info->pos[2]; @@ -13034,7 +12964,7 @@ void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag) /// Request to search for party booking advertisments (CZ_PARTY_BOOKING_REQ_SEARCH). /// 0804 .W .W .W .L .W void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; short level = RFIFOW(fd,info->pos[0]); short mapid = RFIFOW(fd,info->pos[1]); short job = RFIFOW(fd,info->pos[2]); @@ -13107,7 +13037,7 @@ void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data* sd) { short job[MAX_PARTY_BOOKING_JOBS]; int i; - int idxpbu = packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]; + int idxpbu = packet_db[RFIFOW(fd,0)].pos[0]; for(i=0; inpc_id ) {// using an NPC return; } - vending_vendinglistreq(sd,RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + vending_vendinglistreq(sd,RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); } /// Shop item(s) purchase request (CZ_PC_PURCHASE_ITEMLIST_FROMMC). /// 0134 .W .L { .W .W }* void clif_parse_PurchaseReq(int fd, struct map_session_data* sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int len = (int)RFIFOW(fd,info->pos[0]) - 8; int id = (int)RFIFOL(fd,info->pos[1]); const uint8* data = (uint8*)RFIFOP(fd,info->pos[2]); @@ -13205,7 +13135,7 @@ void clif_parse_PurchaseReq(int fd, struct map_session_data* sd){ /// Shop item(s) purchase request (CZ_PC_PURCHASE_ITEMLIST_FROMMC2). /// 0801 .W .L .L { .W .W }* void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int len = (int)RFIFOW(fd,info->pos[0]) - 12; int aid = (int)RFIFOL(fd,info->pos[1]); int uid = (int)RFIFOL(fd,info->pos[2]); @@ -13226,7 +13156,7 @@ void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd){ /// 1 = open void clif_parse_OpenVending(int fd, struct map_session_data* sd){ int cmd = RFIFOW(fd,0); - struct s_packet_db* info = &packet_db[sd->packet_ver][cmd]; + struct s_packet_db* info = &packet_db[cmd]; short len = (short)RFIFOW(fd,info->pos[0]); const char* message = RFIFOCP(fd,info->pos[1]); const uint8* data = (uint8*)RFIFOP(fd,info->pos[3]); @@ -13266,8 +13196,8 @@ void clif_parse_OpenVending(int fd, struct map_session_data* sd){ /// Guild creation request (CZ_REQ_MAKE_GUILD). /// 0165 .L .24B void clif_parse_CreateGuild(int fd,struct map_session_data *sd){ - //int charid = RFIFOL(fd,packet_db[sd->packet_ver][cmd].pos[0]); - char* name = RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]); + //int charid = RFIFOL(fd,packet_db[cmd].pos[0]); + char* name = RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[1]); name[NAME_LENGTH-1] = '\0'; if(map[sd->bl.m].flag.guildlock) { //Guild locked. @@ -13304,7 +13234,7 @@ void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd) /// 6 = notice void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd) { - int type = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int type = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); if( !sd->status.guild_id && !sd->bg_id ) return; @@ -13340,7 +13270,7 @@ void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd) void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd) { int i; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int len = RFIFOW(fd,info->pos[0]); int idxgpos = info->pos[1]; @@ -13358,7 +13288,7 @@ void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd) void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd) { int i; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int len = RFIFOW(fd,info->pos[0]); int idxgpos = info->pos[1]; @@ -13397,7 +13327,7 @@ void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd) void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd) { struct guild* g; - int guild_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int guild_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); if( (g = guild_search(guild_id)) != NULL ) clif_guild_emblem(sd,g); @@ -13443,7 +13373,7 @@ static enum e_result_validate_emblem clif_validate_emblem(const uint8* emblem, u /// Request to update the guild emblem (CZ_REGISTER_GUILD_EMBLEM_IMG). /// 0153 .W .?B void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; unsigned long emblem_len = RFIFOW(fd,info->pos[0])-4; const uint8* emblem = RFIFOP(fd,info->pos[1]); int emb_val=0; @@ -13474,7 +13404,7 @@ void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd){ /// Guild notice update request (CZ_GUILD_NOTICE). /// 016e .L .60B .120B void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int guild_id = RFIFOL(fd,info->pos[0]); char* msg1 = RFIFOCP(fd,info->pos[1]); char* msg2 = RFIFOCP(fd,info->pos[2]); @@ -13518,7 +13448,7 @@ int clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_sessio /// Guild invite request (CZ_REQ_JOIN_GUILD). /// 0168 .L .L .L void clif_parse_GuildInvite(int fd,struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; struct map_session_data *t_sd = map_id2sd(RFIFOL(fd,info->pos[0])); // int inv_aid = RFIFOL(fd,info->pos[1]); // int inv_cid = RFIFOL(fd,info->pos[2]); @@ -13531,7 +13461,7 @@ void clif_parse_GuildInvite(int fd,struct map_session_data *sd){ /// 0916 .24B (CZ_REQ_JOIN_GUILD2) void clif_parse_GuildInvite2(int fd, struct map_session_data *sd) { - struct map_session_data *t_sd = map_nick2sd(RFIFOCP(fd, packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]),false); + struct map_session_data *t_sd = map_nick2sd(RFIFOCP(fd, packet_db[RFIFOW(fd,0)].pos[0]),false); if (clif_sub_guild_invite(fd, sd, t_sd)) return; @@ -13544,7 +13474,7 @@ clif_parse_GuildInvite2(int fd, struct map_session_data *sd) { /// 0 = refuse /// 1 = accept void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; guild_reply_invite(sd,RFIFOL(fd,info->pos[0]), RFIFOL(fd,info->pos[1])); } @@ -13553,7 +13483,7 @@ void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd){ /// Request to leave guild (CZ_REQ_LEAVE_GUILD). /// 0159 .L .L .L .40B void clif_parse_GuildLeave(int fd,struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if(map[sd->bl.m].flag.guildlock) { //Guild locked. clif_displaymessage(fd, msg_txt(sd,228)); return; @@ -13573,7 +13503,7 @@ void clif_parse_GuildLeave(int fd,struct map_session_data *sd){ /// Request to expel a member of a guild (CZ_REQ_BAN_GUILD). /// 015b .L .L .L .40B void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if( map[sd->bl.m].flag.guildlock || sd->bg_id ) { // Guild locked. clif_displaymessage(fd, msg_txt(sd,228)); @@ -13616,9 +13546,9 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) return; } - t_sd = map_id2sd(RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); - //inv_aid = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]); - //inv_cid = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[2]); + t_sd = map_id2sd(RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); + //inv_aid = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[1]); + //inv_cid = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[2]); // @noask [LuzZza] if(t_sd && t_sd->state.noask) { @@ -13636,7 +13566,7 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) /// 0 = refuse /// 1 = accept void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; guild_reply_reqalliance(sd, RFIFOL(fd,info->pos[0]), RFIFOL(fd,info->pos[1])); @@ -13649,7 +13579,7 @@ void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd){ /// 0 = Ally /// 1 = Enemy void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if(!sd->state.gmaster_flag) return; @@ -13677,7 +13607,7 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) return; } - t_sd = map_id2sd(RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + t_sd = map_id2sd(RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); // @noask [LuzZza] if(t_sd && t_sd->state.noask) { @@ -13700,7 +13630,7 @@ void clif_parse_GuildBreak(int fd, struct map_session_data *sd) clif_displaymessage(fd, msg_txt(sd,228)); return; } - guild_break(sd,RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + guild_break(sd,RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0])); } @@ -13716,14 +13646,14 @@ void clif_parse_GuildBreak(int fd, struct map_session_data *sd) /// 3 = return to egg /// 4 = unequip accessory void clif_parse_PetMenu(int fd, struct map_session_data *sd){ - pet_menu(sd,RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + pet_menu(sd,RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0])); } /// Attempt to tame a monster (CZ_TRYCAPTURE_MONSTER). /// 019f .L void clif_parse_CatchPet(int fd, struct map_session_data *sd){ - pet_catch_process2(sd,RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + pet_catch_process2(sd,RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); } @@ -13733,7 +13663,7 @@ void clif_parse_SelectEgg(int fd, struct map_session_data *sd){ if (sd->menuskill_id != SA_TAMINGMONSTER || sd->menuskill_val != -1) return; - pet_select_egg(sd,RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])-2); + pet_select_egg(sd,RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0])-2); clif_menuskill_clear(sd); } @@ -13765,7 +13695,7 @@ void clif_parse_SelectEgg(int fd, struct map_session_data *sd){ void clif_parse_SendEmotion(int fd, struct map_session_data *sd) { if(sd->pd) - clif_pet_emotion(sd->pd,RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + clif_pet_emotion(sd->pd,RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); } @@ -13773,7 +13703,7 @@ void clif_parse_SendEmotion(int fd, struct map_session_data *sd) /// 01a5 .24B void clif_parse_ChangePetName(int fd, struct map_session_data *sd) { - pet_change_name(sd,RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + pet_change_name(sd,RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0])); } @@ -13786,7 +13716,7 @@ void clif_parse_GMKick(int fd, struct map_session_data *sd) struct block_list *target; int tid; - tid = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + tid = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); target = map_id2bl(tid); if (!target) { clif_GM_kickack(sd, 0); @@ -13857,7 +13787,7 @@ void clif_parse_GMShift(int fd, struct map_session_data *sd) char *player_name; char command[NAME_LENGTH+8]; - player_name = RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + player_name = RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0]); player_name[NAME_LENGTH-1] = '\0'; safesnprintf(command,sizeof(command),"%cjumpto %s", atcommand_symbol, player_name); @@ -13873,7 +13803,7 @@ void clif_parse_GMRemove2(int fd, struct map_session_data* sd) uint32 account_id; struct map_session_data* pl_sd; - account_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + account_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); if( (pl_sd = map_id2sd(account_id)) != NULL ) { char command[NAME_LENGTH+8]; safesnprintf(command,sizeof(command),"%cjumpto %s", atcommand_symbol, pl_sd->status.name); @@ -13894,7 +13824,7 @@ void clif_parse_GMRecall(int fd, struct map_session_data *sd) char *player_name; char command [NAME_LENGTH+8]; - player_name = RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + player_name = RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0]); player_name[NAME_LENGTH-1] = '\0'; safesnprintf(command,sizeof(command),"%crecall %s", atcommand_symbol, player_name); @@ -13910,7 +13840,7 @@ void clif_parse_GMRecall2(int fd, struct map_session_data* sd) uint32 account_id; struct map_session_data* pl_sd; - account_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + account_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); if( (pl_sd = map_id2sd(account_id)) != NULL ) { char command[NAME_LENGTH+8]; safesnprintf(command,sizeof(command),"%crecall %s", atcommand_symbol, pl_sd->status.name); @@ -13934,7 +13864,7 @@ void clif_parse_GMRecall2(int fd, struct map_session_data* sd) /// 09ce .100B [Ind/Yommy] void clif_parse_GM_Item_Monster(int fd, struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int mob_id = 0; struct item_data *id = NULL; struct mob_db *mob = NULL; @@ -13998,7 +13928,7 @@ void clif_parse_GM_Item_Monster(int fd, struct map_session_data *sd) /// TODO: Any OPTION_* ? void clif_parse_GMHide(int fd, struct map_session_data *sd) { char cmd[6]; - //int eff_st = RFIFOL(packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + //int eff_st = RFIFOL(packet_db[RFIFOW(fd,0)].pos[0]); safesnprintf(cmd,sizeof(cmd),"%chide",atcommand_symbol); is_atcommand(fd, sd, cmd, 1); @@ -14016,7 +13946,7 @@ void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) int id, type, value; struct map_session_data *dstsd; char command[NAME_LENGTH+15]; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; id = RFIFOL(fd,info->pos[0]); @@ -14046,7 +13976,7 @@ void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) void clif_parse_GMRc(int fd, struct map_session_data* sd) { char command[NAME_LENGTH+15]; - char *name = RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + char *name = RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0]); name[NAME_LENGTH-1] = '\0'; safesnprintf(command,sizeof(command),"%cmute %d %s", atcommand_symbol, 60, name); @@ -14071,7 +14001,7 @@ void clif_account_name(int fd, uint32 account_id, const char* accname) //! TODO: Figure out how does this actually work void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd) { - uint32 account_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + uint32 account_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); /* char query[30]; safesnprintf(query,sizeof(query),"%d", account_id); @@ -14091,7 +14021,7 @@ void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd) void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) { int x,y,type; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if(! pc_has_permission(sd, PC_PERM_USE_CHANGEMAPTYPE) ) return; @@ -14117,7 +14047,7 @@ void clif_parse_PMIgnore(int fd, struct map_session_data* sd) char* nick; uint8 type; int i; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; nick = RFIFOCP(fd,info->pos[0]); nick[NAME_LENGTH-1] = '\0'; // to be sure that the player name has at most 23 characters @@ -14168,7 +14098,7 @@ void clif_parse_PMIgnore(int fd, struct map_session_data* sd) /// 1 = (/inall) allow all speech void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd) { - int type = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]), flag; + int type = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]), flag; if( type == 0 ) {// Deny all if( sd->state.ignoreAll ) { @@ -14383,7 +14313,7 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) struct map_session_data *f_sd; int i; - f_sd = map_nick2sd(RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]),false); + f_sd = map_nick2sd(RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0]),false); // Friend doesn't exist (no player with this name) if (f_sd == NULL) { @@ -14435,14 +14365,15 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd) struct map_session_data *f_sd; uint32 account_id; char reply; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; account_id = RFIFOL(fd,info->pos[0]); //char_id = RFIFOL(fd,info->pos[1]); - if(sd->packet_ver < 6) - reply = RFIFOB(fd,info->pos[2]); - else - reply = RFIFOL(fd,info->pos[2]); +#if PACKETVER < 6 + reply = RFIFOB(fd,info->pos[2]); +#else + reply = RFIFOL(fd,info->pos[2]); +#endif if( sd->bl.id == account_id ) {// adding oneself as friend return; @@ -14499,7 +14430,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) struct map_session_data *f_sd = NULL; uint32 account_id, char_id; int i, j; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; account_id = RFIFOL(fd,info->pos[0]); char_id = RFIFOL(fd,info->pos[1]); @@ -14579,8 +14510,8 @@ void clif_PVPInfo(struct map_session_data* sd) void clif_parse_PVPInfo(int fd,struct map_session_data *sd) { // TODO: Is there a way to use this on an another player (char/acc id)? - //int cid = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); - //int aid = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]); + //int cid = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]); + //int aid = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[1]); clif_PVPInfo(sd); } @@ -14593,7 +14524,7 @@ void clif_parse_PVPInfo(int fd,struct map_session_data *sd) void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd) { int i; - //int wich = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + //int wich = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]); if (sd->menuskill_id != SG_FEEL) return; i = sd->menuskill_val-1; @@ -14631,14 +14562,14 @@ void clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv) /// Request to change homunculus' name (CZ_RENAME_MER). /// 0231 .24B void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd){ - hom_change_name(sd,RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + hom_change_name(sd,RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0])); } /// Request to warp/move homunculus/mercenary to it's owner (CZ_REQUEST_MOVETOOWNER). /// 0234 .L void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd){ - int id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); // Mercenary or Homunculus + int id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); // Mercenary or Homunculus struct block_list *bl = NULL; struct unit_data *ud = NULL; @@ -14658,7 +14589,7 @@ void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd){ /// Request to move homunculus/mercenary (CZ_REQUEST_MOVENPC). /// 0232 .L .3B void clif_parse_HomMoveTo(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int id = RFIFOL(fd,info->pos[0]); // Mercenary or Homunculus struct block_list *bl = NULL; short x, y; @@ -14683,7 +14614,7 @@ void clif_parse_HomMoveTo(int fd, struct map_session_data *sd){ void clif_parse_HomAttack(int fd,struct map_session_data *sd) { struct block_list *bl = NULL; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int id = RFIFOL(fd,info->pos[0]); int target_id = RFIFOL(fd,info->pos[1]); int action_type = RFIFOB(fd,info->pos[2]); @@ -14710,11 +14641,11 @@ void clif_parse_HomAttack(int fd,struct map_session_data *sd) void clif_parse_HomMenu(int fd, struct map_session_data *sd) { //[orn] int cmd = RFIFOW(fd,0); - //int type = RFIFOW(fd,packet_db[sd->packet_ver][cmd].pos[0]); + //int type = RFIFOW(fd,packet_db[cmd].pos[0]); if(!hom_is_active(sd->hd)) return; - hom_menu(sd,RFIFOB(fd,packet_db[sd->packet_ver][cmd].pos[1])); + hom_menu(sd,RFIFOB(fd,packet_db[cmd].pos[1])); } @@ -14802,7 +14733,7 @@ void clif_parse_Check(int fd, struct map_session_data *sd) if(!pc_has_permission(sd, PC_PERM_USE_CHECK)) return; - safestrncpy(charname, RFIFOCP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]), sizeof(charname)); + safestrncpy(charname, RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0]), sizeof(charname)); if( ( pl_sd = map_nick2sd(charname,false) ) == NULL || pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) { @@ -15333,7 +15264,7 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id) /// 09ea .B .Q (CZ_REQ_READ_MAIL) void clif_parse_Mail_read(int fd, struct map_session_data *sd){ #if PACKETVER < 20150513 - int mail_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int mail_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); #else //uint8 openType = RFIFOB(fd, 2); int mail_id = (int)RFIFOQ(fd, 3); @@ -15423,7 +15354,7 @@ void clif_parse_Mail_getattach( int fd, struct map_session_data *sd ){ int i; struct mail_message* msg; #if PACKETVER < 20150513 - int mail_id = RFIFOL(fd, packet_db[sd->packet_ver][RFIFOW(fd, 0)].pos[0]); + int mail_id = RFIFOL(fd, packet_db[RFIFOW(fd, 0)].pos[0]); int attachment = MAIL_ATT_ALL; #else uint16 packet_id = RFIFOW(fd, 0); @@ -15520,7 +15451,7 @@ void clif_parse_Mail_getattach( int fd, struct map_session_data *sd ){ /// 09f5 .B .Q (CZ_REQ_DELETE_MAIL) void clif_parse_Mail_delete(int fd, struct map_session_data *sd){ #if PACKETVER < 20150513 - int mail_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int mail_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); #else //int openType = RFIFOB(fd, 2); int mail_id = (int)RFIFOQ(fd, 3); @@ -15563,8 +15494,8 @@ void clif_parse_Mail_delete(int fd, struct map_session_data *sd){ /// Request to return a mail (CZ_REQ_MAIL_RETURN). /// 0273 .L .24B void clif_parse_Mail_return(int fd, struct map_session_data *sd){ - int mail_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); - //char *rec_name = RFIFOP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]); + int mail_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); + //char *rec_name = RFIFOP(fd,packet_db[RFIFOW(fd,0)].pos[1]); int i; if( mail_id <= 0 ) @@ -15584,7 +15515,7 @@ void clif_parse_Mail_return(int fd, struct map_session_data *sd){ /// 0247 .W .L (CZ_MAIL_ADD_ITEM) /// 0a04 .W .W (CZ_REQ_ADD_ITEM_TO_MAIL) void clif_parse_Mail_setattach(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int idx = RFIFOW(fd,info->pos[0]); #if PACKETVER < 20150513 int amount = RFIFOL(fd,info->pos[1]); @@ -15627,7 +15558,7 @@ void clif_mail_removeitem( struct map_session_data* sd, bool success, int index, void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) { #if PACKETVER < 20150513 - int type = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int type = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]); if (type == 0 || type == 1) mail_removeitem(sd, 0, sd->mail.item[0].index, sd->mail.item[0].amount); @@ -15647,7 +15578,7 @@ void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) /// 0a6e .W .24B .24B .Q .W <body length>.W <char id>.L <title>.?B <body>.?B (CZ_REQ_WRITE_MAIL2) void clif_parse_Mail_send(int fd, struct map_session_data *sd){ #if PACKETVER < 20150513 - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if( !chrif_isconnected() ) return; @@ -15806,7 +15737,7 @@ static void clif_Auction_setitem(int fd, int index, bool fail) /// 1 = cancel (cancel pressed on register tab) /// ? = junk, uninitialized value (ex. when switching between list filters) void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd){ - //int type = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + //int type = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]); if( sd->auction.amount > 0 ) clif_additem(sd, sd->auction.index, sd->auction.amount, 0); @@ -15817,7 +15748,7 @@ void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd){ /// Request to add an item to the action (CZ_AUCTION_ADD_ITEM). /// 024c <index>.W <count>.L void clif_parse_Auction_setitem(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int idx = RFIFOW(fd,info->pos[0]) - 2; int amount = RFIFOL(fd,info->pos[1]); // Always 1 struct item_data *item; @@ -15901,7 +15832,7 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd) { struct auction_data auction; struct item_data *item; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; if( !battle_config.feature_auction ) return; @@ -15984,7 +15915,7 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd) /// Cancels an auction (CZ_AUCTION_ADD_CANCEL). /// 024e <auction id>.L void clif_parse_Auction_cancel(int fd, struct map_session_data *sd){ - unsigned int auction_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + unsigned int auction_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); intif_Auction_cancel(sd->status.char_id, auction_id); } @@ -15992,7 +15923,7 @@ void clif_parse_Auction_cancel(int fd, struct map_session_data *sd){ /// Closes an auction (CZ_AUCTION_REQ_MY_SELL_STOP). /// 025d <auction id>.L void clif_parse_Auction_close(int fd, struct map_session_data *sd){ - unsigned int auction_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + unsigned int auction_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); intif_Auction_close(sd->status.char_id, auction_id); } @@ -16000,7 +15931,7 @@ void clif_parse_Auction_close(int fd, struct map_session_data *sd){ /// Places a bid on an auction (CZ_AUCTION_BUY). /// 024f <auction id>.L <money>.L void clif_parse_Auction_bid(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; unsigned int auction_id = RFIFOL(fd,info->pos[0]); int bid = RFIFOL(fd,info->pos[1]); @@ -16033,7 +15964,7 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd){ /// 5 = auction id search void clif_parse_Auction_search(int fd, struct map_session_data* sd){ char search_text[NAME_LENGTH]; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; short type = RFIFOW(fd,info->pos[0]); int price = RFIFOL(fd,info->pos[1]); // FIXME: bug #5071 int page = RFIFOW(fd,info->pos[3]); @@ -16055,7 +15986,7 @@ void clif_parse_Auction_search(int fd, struct map_session_data* sd){ /// 1 = buy (own bids) void clif_parse_Auction_buysell(int fd, struct map_session_data* sd) { - short type = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]) + 6; + short type = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]) + 6; if( !battle_config.feature_auction ) return; @@ -16092,7 +16023,7 @@ void clif_parse_cashshop_close( int fd, struct map_session_data* sd ){ //0846 <tabid>.W (CZ_REQ_SE_CASH_TAB_CODE)) //08c0 <len>.W <openIdentity>.L <itemcount>.W (ZC_ACK_SE_CASH_ITEM_LIST2) void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd) { - short tab = RFIFOW(fd, packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + short tab = RFIFOW(fd, packet_db[RFIFOW(fd,0)].pos[0]); int j; if( tab < 0 || tab >= CASHSHOP_TAB_MAX ) @@ -16242,7 +16173,7 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd){ nullpo_retv(sd); - info = &packet_db[sd->packet_ver][cmd]; + info = &packet_db[cmd]; if( sd->state.trading || !sd->npc_shopid ) { clif_cashshop_ack(sd,1); @@ -16317,7 +16248,7 @@ void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *sr /// 01f9 <account id>.L void clif_parse_Adopt_request(int fd, struct map_session_data *sd) { - TBL_PC *tsd = map_id2sd(RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])); + TBL_PC *tsd = map_id2sd(RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); TBL_PC *p_sd = map_charid2sd(sd->status.partner_id); if( pc_try_adopt(sd, p_sd, tsd) == ADOPT_ALLOWED ) @@ -16334,7 +16265,7 @@ void clif_parse_Adopt_request(int fd, struct map_session_data *sd) /// 0 = rejected /// 1 = accepted void clif_parse_Adopt_reply(int fd, struct map_session_data *sd){ - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int p1_id = RFIFOL(fd,info->pos[0]); int p2_id = RFIFOL(fd,info->pos[1]); int result = RFIFOL(fd,info->pos[2]); @@ -16403,7 +16334,7 @@ void clif_bossmapinfo(int fd, struct mob_data *md, short flag) /// 02d6 <account id>.L void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) { - int aid = RFIFOL(fd, packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int aid = RFIFOL(fd, packet_db[RFIFOW(fd,0)].pos[0]); struct map_session_data* tsd = map_id2sd(aid); if (!tsd) @@ -16425,8 +16356,8 @@ void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) /// 1 = enabled void clif_parse_EquipTick(int fd, struct map_session_data* sd) { - //int type = RFIFOL(fd,packet_db[sd->packet_ver][cmd].pos[0]); - bool flag = (bool)RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]); + //int type = RFIFOL(fd,packet_db[cmd].pos[0]); + bool flag = (bool)RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[1]); sd->status.show_equip = flag; clif_equiptickack(sd, flag); } @@ -16636,7 +16567,7 @@ void clif_quest_update_objective(struct map_session_data *sd, struct quest *qd, /// 02b6 <quest id>.L <active>.B void clif_parse_questStateAck(int fd, struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; quest_update_status(sd, RFIFOL(fd,info->pos[0]), RFIFOB(fd,info->pos[1])?Q_ACTIVE:Q_INACTIVE); } @@ -16842,7 +16773,7 @@ void clif_mercenary_skillblock(struct map_session_data *sd) /// 2 = delete void clif_parse_mercenary_action(int fd, struct map_session_data* sd) { - int option = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int option = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]); if( sd->md == NULL ) return; @@ -17273,7 +17204,7 @@ void clif_showdigit(struct map_session_data* sd, unsigned char type, int value) /// as the only skill unit, that is sent with 0x1c9 is /// Graffiti. void clif_parse_LessEffect(int fd, struct map_session_data* sd){ - int isLess = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + int isLess = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); sd->state.lesseffect = ( isLess != 0 ); } @@ -17281,7 +17212,7 @@ void clif_parse_LessEffect(int fd, struct map_session_data* sd){ /// S 0945 <length>.w <option>.l <val>.l {<index>.w <amount>.w).4b* (CZ_* RagexeRE 2012-04-10a) /// S 0281 <length>.w <option>.l <val>.l {<index>.w <amount>.w).4b* (CZ_* Ragexe 2013-08-07) void clif_parse_ItemListWindowSelected(int fd, struct map_session_data* sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int n = (RFIFOW(fd,info->pos[0])-12) / 4; int type = RFIFOL(fd,info->pos[1]); int flag = RFIFOL(fd,info->pos[2]); // Button clicked: 0 = Cancel, 1 = OK @@ -17398,7 +17329,7 @@ static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) unsigned char result; int zenylimit; unsigned int count, packet_len; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; packet_len = RFIFOW(fd,info->pos[0]); @@ -17532,7 +17463,7 @@ static void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data* sd) { uint32 account_id; - account_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]); + account_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); buyingstore_open(sd, account_id); } @@ -17572,7 +17503,7 @@ static void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) uint8* itemlist; uint32 account_id; unsigned int count, packet_len, buyer_id; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; packet_len = RFIFOW(fd,info->pos[0]); @@ -17704,7 +17635,7 @@ static void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) const uint8* cardlist; unsigned char type; unsigned int min_price, max_price, packet_len, count, item_count, card_count; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; packet_len = RFIFOW(fd,info->pos[0]); @@ -17857,7 +17788,7 @@ static void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_d { unsigned short nameid; uint32 account_id, store_id; - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; account_id = RFIFOL(fd,info->pos[0]); store_id = RFIFOL(fd,info->pos[1]); @@ -17890,7 +17821,7 @@ void clif_parse_debug(int fd,struct map_session_data *sd) cmd = RFIFOW(fd,0); if( sd ) { - packet_len = packet_db[sd->packet_ver][cmd].len; + packet_len = packet_db[cmd].len; if( packet_len == 0 ) {// unknown @@ -18135,7 +18066,7 @@ int clif_skill_itemlistwindow( struct map_session_data *sd, uint16 skill_id, uin * RFIFOL(fd,2) - type (currently not used) *------------------------------------------*/ void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; //int type = RFIFOL(fd,info->pos[0]); //WHY_LOWERVER_COMPATIBILITY = 0x0, WHY_SC_AUTOSHADOWSPELL = 0x1, if( sd->menuskill_id != SC_AUTOSHADOWSPELL ) return; @@ -18176,7 +18107,7 @@ void clif_spiritcharm(struct map_session_data *sd) { /// 1 = move item to normal tab void clif_parse_MoveItem(int fd, struct map_session_data *sd) { #if PACKETVER >= 20111122 - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int index = RFIFOW(fd,info->pos[0]) - 2; int type = RFIFOB(fd, info->pos[1]); @@ -18435,7 +18366,7 @@ void clif_ranklist(struct map_session_data *sd, int16 rankingType) { * 3: /pk * */ void clif_parse_ranklist(int fd,struct map_session_data *sd) { - struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]; + struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; int16 rankingtype = RFIFOW(fd,info->pos[0]); //type clif_ranklist(sd,rankingtype); @@ -18603,8 +18534,8 @@ void clif_display_pinfo(struct map_session_data *sd, int cmdtype) { details_penalty[3] = 0; /* End - Penalty set*/ - cmd = packet_db_ack[sd->packet_ver][cmdtype]; - info = &packet_db[sd->packet_ver][cmd]; + cmd = packet_db_ack[cmdtype]; + info = &packet_db[cmd]; len = info->len; //this is the base len without details if(!len) return; //version as packet disable @@ -18674,10 +18605,10 @@ void clif_crimson_marker(struct map_session_data *sd, struct block_list *bl, boo nullpo_retv(sd); - cmd = packet_db_ack[sd->packet_ver][ZC_C_MARKERINFO]; + cmd = packet_db_ack[ZC_C_MARKERINFO]; if (!cmd) cmd = 0x09C1; //default - info = &packet_db[sd->packet_ver][cmd]; + info = &packet_db[cmd]; if (!(len = info->len)) return; @@ -18697,8 +18628,8 @@ void clif_notify_bindOnEquip(struct map_session_data *sd, int n) { nullpo_retv(sd); - cmd = packet_db_ack[sd->packet_ver][ZC_NOTIFY_BIND_ON_EQUIP]; - info = &packet_db[sd->packet_ver][cmd]; + cmd = packet_db_ack[ZC_NOTIFY_BIND_ON_EQUIP]; + info = &packet_db[cmd]; if (!cmd || !info->len) return; @@ -18887,26 +18818,6 @@ void clif_clan_leave( struct map_session_data* sd ){ #endif } -/** - * Decrypt packet identifier for player - * @param fd - * @param sd - * @param packet_ver - * Orig author [Ind/Hercules] - **/ -static unsigned short clif_parse_cmd(int fd, struct map_session_data *sd) { -#ifndef PACKET_OBFUSCATION - return RFIFOW(fd, 0); -#else - unsigned short cmd = RFIFOW(fd,0); // Check if it is a player that tries to connect to the map server. - if (sd) - cmd = (cmd ^ ((sd->cryptKey >> 16) & 0x7FFF)); // Decrypt the current packet ID with the last key stored in the session. - else - cmd = (cmd ^ ((((clif_cryptKey[0] * clif_cryptKey[1]) + clif_cryptKey[2]) >> 16) & 0x7FFF)); // A player tries to connect - use the initial keys for the decryption of the packet ID. - return cmd; // Return the decrypted packet ID. -#endif -} - #ifdef DUMP_UNKNOWN_PACKET void DumpUnknown(int fd,TBL_PC *sd,int cmd,int packet_len) { @@ -19039,7 +18950,7 @@ static void clif_roulette_recvitem_ack(struct map_session_data *sd, enum RECV_RO nullpo_retv(sd); - if (packet_db[sd->packet_ver][cmd].len == 0) + if (packet_db[cmd].len == 0) return; WBUFW(buf,0) = cmd; @@ -19220,9 +19131,9 @@ void clif_merge_item_ack(struct map_session_data *sd, unsigned short index, unsi if (!clif_session_isValid(sd)) return; - if (!(cmd = packet_db_ack[sd->packet_ver][ZC_ACK_MERGE_ITEM])) + if (!(cmd = packet_db_ack[ZC_ACK_MERGE_ITEM])) return; - if (!(info = &packet_db[sd->packet_ver][cmd]) || info->len == 0) + if (!(info = &packet_db[cmd]) || info->len == 0) return; WBUFW(buf, 0) = cmd; @@ -19287,9 +19198,9 @@ void clif_merge_item_open(struct map_session_data *sd) { nullpo_retv(sd); if (!clif_session_isValid(sd)) return; - if (!(cmd = packet_db_ack[sd->packet_ver][ZC_MERGE_ITEM_OPEN])) + if (!(cmd = packet_db_ack[ZC_MERGE_ITEM_OPEN])) return; - if (!(info = &packet_db[sd->packet_ver][cmd]) || info->len == 0) + if (!(info = &packet_db[cmd]) || info->len == 0) return; // Get entries @@ -19329,7 +19240,7 @@ void clif_parse_merge_item_req(int fd, struct map_session_data* sd) { nullpo_retv(sd); if (!clif_session_isValid(sd)) return; - if (!(info = &packet_db[sd->packet_ver][RFIFOW(fd,0)]) || info->len == 0) + if (!(info = &packet_db[RFIFOW(fd,0)]) || info->len == 0) return; n = (RFIFOW(fd, info->pos[0]) - 4) / 2; @@ -19396,10 +19307,10 @@ void clif_broadcast_obtain_special_item(const char *char_name, unsigned short na unsigned short cmd = 0; struct s_packet_db *info = NULL; - if (!(cmd = packet_db_ack[clif_config.packet_db_ver][ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN])) + if (!(cmd = packet_db_ack[ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN])) return; - if (!(info = &packet_db[clif_config.packet_db_ver][cmd]) || info->len == 0) + if (!(info = &packet_db[cmd]) || info->len == 0) return; WBUFW(buf, 0) = 0x7fd; @@ -19454,7 +19365,7 @@ void clif_dressing_room(struct map_session_data *sd, int flag) { /// 0A35 <result>.W void clif_parse_Oneclick_Itemidentify(int fd, struct map_session_data *sd) { #if PACKETVER >= 20150513 - short idx = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]) - 2, magnifier_idx; + short idx = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]) - 2, magnifier_idx; // Ignore the request // - Invalid item index @@ -19834,9 +19745,12 @@ void clif_parse_sale_remove( int fd, struct map_session_data* sd ){ *------------------------------------------*/ static int clif_parse(int fd) { - int cmd, packet_ver, packet_len, err; + int cmd, packet_len; TBL_PC* sd; int pnum; +#ifdef PACKET_OBFUSCATION + int cmd2; +#endif //TODO apply delays or disconnect based on packet throughput [FlavioJS] // Note: "click masters" can do 80+ clicks in 10 seconds @@ -19873,52 +19787,54 @@ static int clif_parse(int fd) if (RFIFOREST(fd) < 2) return 0; - cmd = clif_parse_cmd(fd, sd); + cmd = RFIFOW(fd, 0); - // identify client's packet version - if (sd) { - packet_ver = sd->packet_ver; - } else { - // check authentification packet to know packet version - packet_ver = clif_guess_PacketVer(fd, 0, &err); - if( err ) {// failed to identify packet version - ShowInfo("clif_parse: Disconnecting session #%d with unknown packet version%s (p:0x%04x,l:%d).\n", fd, ( - err == 1 ? "" : - err == 2 ? ", possibly for having an invalid account_id" : - err == 3 ? ", possibly for having an invalid char_id." : - /* Uncomment when checks are added in clif_guess_PacketVer. [FlavioJS] - err == 4 ? ", possibly for having an invalid login_id1." : - err == 5 ? ", possibly for having an invalid client_tick." : - */ - err == 6 ? ", possibly for having an invalid sex." : - ". ERROR invalid error code"), cmd, RFIFOREST(fd)); - WFIFOHEAD(fd,packet_len(0x6a)); - WFIFOW(fd,0) = 0x6a; - WFIFOB(fd,2) = 3; // Rejected from Server - WFIFOSET(fd,packet_len(0x6a)); +#ifdef PACKET_OBFUSCATION + // Check if it is a player that tries to connect to the map server. + if( sd ){ + // Decrypt the current packet ID with the last key stored in the session. + cmd = (cmd ^ ((sd->cryptKey >> 16) & 0x7FFF)); + }else{ + // Store the original value for checking + cmd2 = cmd; -#ifdef DUMP_INVALID_PACKET - ShowDump(RFIFOP(fd,0), RFIFOREST(fd)); + // A player tries to connect - use the initial keys for the decryption of the packet ID. + cmd = (cmd ^ ((((clif_cryptKey[0] * clif_cryptKey[1]) + clif_cryptKey[2]) >> 16) & 0x7FFF)); + } #endif - RFIFOSKIP(fd, RFIFOREST(fd)); - set_eof(fd); - return 0; - } - } - // filter out invalid / unsupported packets - if (cmd > MAX_PACKET_DB || cmd < MIN_PACKET_DB || packet_db[packet_ver][cmd].len == 0) { + if (cmd > MAX_PACKET_DB || cmd < MIN_PACKET_DB || packet_db[cmd].len == 0) { ShowWarning("clif_parse: Received unsupported packet (packet 0x%04x, %d bytes received), disconnecting session #%d.\n", cmd, RFIFOREST(fd), fd); + #ifdef DUMP_INVALID_PACKET ShowDump(RFIFOP(fd,0), RFIFOREST(fd)); #endif + +#ifdef PACKET_OBFUSCATION_WARN + // If it is a connection attempt, check if the packet would have been valid without decrypting it + if( !sd ){ +#ifdef PACKET_OBFUSCATION + if( cmd2 >= MIN_PACKET_DB && cmd2 < MAX_PACKET_DB && packet_db[cmd2].len != 0 && packet_db[cmd2].func == clif_parse_WantToConnection ){ + ShowWarning( "clif_parse: It looks like you have enabled PACKET_OBFUSCATION on server side, but disabled it on client side.\n" ); + } +#else + // Try to use the initial keys for the decryption of the packet ID. + cmd = (cmd ^ ((((clif_cryptKey[0] * clif_cryptKey[1]) + clif_cryptKey[2]) >> 16) & 0x7FFF)); + + if( cmd >= MIN_PACKET_DB && cmd < MAX_PACKET_DB && packet_db[cmd].len != 0 && packet_db[cmd].func == clif_parse_WantToConnection ){ + ShowWarning( "clif_parse: It looks like you have disabled PACKET_OBFUSCATION on server side, but enabled it on client side.\n" ); + } +#endif + } +#endif + set_eof(fd); return 0; } // determine real packet length - packet_len = packet_db[packet_ver][cmd].len; + packet_len = packet_db[cmd].len; if (packet_len == -1) { // variable-length packet if (RFIFOREST(fd) < 4) return 0; @@ -19942,16 +19858,16 @@ static int clif_parse(int fd) sd->cryptKey = ((sd->cryptKey * clif_cryptKey[1]) + clif_cryptKey[2]) & 0xFFFFFFFF; // Update key for the next packet #endif - if( packet_db[packet_ver][cmd].func == clif_parse_debug ) - packet_db[packet_ver][cmd].func(fd, sd); - else if( packet_db[packet_ver][cmd].func != NULL ) { - if( !sd && packet_db[packet_ver][cmd].func != clif_parse_WantToConnection ) + if( packet_db[cmd].func == clif_parse_debug ) + packet_db[cmd].func(fd, sd); + else if( packet_db[cmd].func != NULL ) { + if( !sd && packet_db[cmd].func != clif_parse_WantToConnection ) ; //Only valid packet when there is no session else - if( sd && sd->bl.prev == NULL && packet_db[packet_ver][cmd].func != clif_parse_LoadEndAck ) + if( sd && sd->bl.prev == NULL && packet_db[cmd].func != clif_parse_LoadEndAck ) ; //Only valid packet when player is not on a map else - packet_db[packet_ver][cmd].func(fd, sd); + packet_db[cmd].func(fd, sd); } #ifdef DUMP_UNKNOWN_PACKET else DumpUnknown(fd,sd,cmd,packet_len); @@ -19962,782 +19878,51 @@ static int clif_parse(int fd) return 0; } +void packetdb_addpacket( uint16 cmd, uint16 length, void (*func)(int, struct map_session_data *), ... ){ + va_list argp; + int i; + + if(cmd <= 0 || cmd > MAX_PACKET_DB) + return; + + packet_db[cmd].len = length; + packet_db[cmd].func = func; + + va_start(argp, func); + + for( i = 0; i < MAX_PACKET_POS; i++ ){ + int offset = va_arg(argp, int); + + if( offset == 0 ){ + break; + } + + packet_db[cmd].pos[i] = offset; + } + + if( i == MAX_PACKET_POS ){ + ShowError( "Too many positions found for packet 0x%04x (max=%d).\n", cmd, MAX_PACKET_POS ); + } + + va_end(argp); +} + /*========================================== - * Reads packet_db.txt and setups its array reference + * Reads packets and setups its array reference *------------------------------------------*/ -void packetdb_readdb(bool reload) -{ - char line[1024]; - int cmd,i,j; - int max_cmd=-1; - bool skip_ver = false; - int warned = 0; - int packet_ver = MAX_PACKET_VER; // read into packet_db's version by default -#ifdef PACKET_OBFUSCATION - bool key_defined = false; - int last_key_defined = -1; -#endif - - int packet_len_table[MAX_PACKET_DB] = { - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0040 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -#if PACKETVER <= 20081217 - 0, 0, 0, 0, 55, 17, 3, 37, 46, -1, 23, -1, 3,110, 3, 2, -#else - 0, 0, 0, 0, 55, 17, 3, 37, 46, -1, 23, -1, 3,114, 3, 2, -#endif -#if PACKETVER < 2 - 3, 28, 19, 11, 3, -1, 9, 5, 52, 51, 56, 58, 41, 2, 6, 6, -#elif PACKETVER < 20071106 // 78-7b Lv99 effect for later Kameshima - 3, 28, 19, 11, 3, -1, 9, 5, 54, 53, 58, 60, 41, 2, 6, 6, -#elif PACKETVER <= 20081217 // change in 0x78 and 0x7c - 3, 28, 19, 11, 3, -1, 9, 5, 55, 53, 58, 60, 42, 2, 6, 6, -#else - 3, 28, 19, 11, 3, -1, 9, 5, 55, 53, 58, 60, 44, 2, 6, 6, -#endif - //#0x0080 - 7, 3, 2, 2, 2, 5, 16, 12, 10, 7, 29, 2, -1, -1, -1, 0, // 0x8b changed to 2 (was 23) - 7, 22, 28, 2, 6, 30, -1, -1, 3, -1, -1, 5, 9, 17, 17, 6, -#if PACKETVER <= 20100622 - 23, 6, 6, -1, -1, -1, -1, 8, 7, 6, 7, 4, 7, 0, -1, 6, -#else - 23, 6, 6, -1, -1, -1, -1, 8, 7, 6, 9, 4, 7, 0, -1, 6, // 0xaa changed to 9 (was 7) -#endif - 8, 8, 3, 3, -1, 6, 6, -1, 7, 6, 2, 5, 6, 44, 5, 3, - //#0x00C0 - 7, 2, 6, 8, 6, 7, -1, -1, -1, -1, 3, 3, 6, 3, 2, 27, // 0xcd change to 3 (was 6) - 3, 4, 4, 2, -1, -1, 3, -1, 6, 14, 3, -1, 28, 29, -1, -1, - 30, 30, 26, 2, 6, 26, 3, 3, 8, 19, 5, 2, 3, 2, 2, 2, - 3, 2, 6, 8, 21, 8, 8, 2, 2, 26, 3, -1, 6, 27, 30, 10, - //#0x0100 - 2, 6, 6, 30, 79, 31, 10, 10, -1, -1, 4, 6, 6, 2, 11, -1, - 10, 39, 4, 10, 31, 35, 10, 18, 2, 13, 15, 20, 68, 2, 3, 16, - 6, 14, -1, -1, 21, 8, 8, 8, 8, 8, 2, 2, 3, 4, 2, -1, - 6, 86, 6, -1, -1, 7, -1, 6, 3, 16, 4, 4, 4, 6, 24, 26, - //#0x0140 - 22, 14, 6, 10, 23, 19, 6, 39, 8, 9, 6, 27, -1, 2, 6, 6, - 110, 6, -1, -1, -1, -1, -1, 6, -1, 54, 66, 54, 90, 42, 6, 42, - -1, -1, -1, -1, -1, 30, -1, 3, 14, 3, 30, 10, 43, 14,186,182, - 14, 30, 10, 3, -1, 6,106, -1, 4, 5, 4, -1, 6, 7, -1, -1, - //#0x0180 - 6, 3,106, 10, 10, 34, 0, 6, 8, 4, 4, 4, 29, -1, 10, 6, -#if PACKETVER < 1 - 90, 86, 24, 6, 30,102, 8, 4, 8, 4, 14, 10, -1, 6, 2, 6, -#else // 196 comodo icon status display for later - 90, 86, 24, 6, 30,102, 9, 4, 8, 4, 14, 10, -1, 6, 2, 6, -#endif -#if PACKETVER < 20081126 - 3, 3, 35, 5, 11, 26, -1, 4, 4, 6, 10, 12, 6, -1, 4, 4, -#else // 0x1a2 changed (35->37) - 3, 3, 37, 5, 11, 26, -1, 4, 4, 6, 10, 12, 6, -1, 4, 4, -#endif - 11, 7, -1, 67, 12, 18,114, 6, 3, 6, 26, 26, 26, 26, 2, 3, - //#0x01C0, Set 0x1d5=-1 - 2, 14, 10, -1, 22, 22, 4, 2, 13, 97, 3, 9, 9, 30, 6, 28, - 8, 14, 10, 35, 6, -1, 4, 11, 54, 53, 60, 2, -1, 47, 33, 6, - 30, 8, 34, 14, 2, 6, 26, 2, 28, 81, 6, 10, 26, 2, -1, -1, - -1, -1, 20, 10, 32, 9, 34, 14, 2, 6, 48, 56, -1, 4, 5, 10, - //#0x0200 - 26, -1, 26, 10, 18, 26, 11, 34, 14, 36, 10, 0, 0, -1, 32, 10, // 0x20c change to 0 (was 19) - 22, 0, 26, 26, 42, 6, 6, 2, 2,282,282, 10, 10, -1, -1, 66, -#if PACKETVER < 20071106 - 10, -1, -1, 8, 10, 2,282, 18, 18, 15, 58, 57, 64, 5, 71, 5, -#else // 0x22c changed - 10, -1, -1, 8, 10, 2,282, 18, 18, 15, 58, 57, 65, 5, 71, 5, -#endif - 12, 26, 9, 11, -1, -1, 10, 2,282, 11, 4, 36, 6, -1, 4, 2, - //#0x0240 - -1, -1, -1, -1, -1, 3, 4, 8, -1, 3, 70, 4, 8, 12, 4, 10, - 3, 32, -1, 3, 3, 5, 5, 8, 2, 3, -1, 6, 4, 6, 4, 6, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0280 -#if PACKETVER < 20070711 - 0, 0, 0, 6, 14, 0, 0, -1, 6, 8, 18, 0, 0, 0, 0, 0, -#else - 0, 0, 0, 6, 14, 0, 0, -1, 10, 12, 18, 0, 0, 0, 0, 0, // 0x288, 0x289 increase by 4 (kafra points) -#endif - 0, 4, 0, 70, 10, 0, 0, 0, 8, 6, 27, 80, 0, -1, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, -1, -1,107, 6, -1, 7, 7, 22,191, 0, 8, 0, 0, 0, 0, - //#0x02C0 - 0, -1, 0, 0, 0, 30, 30, 0, 0, 3, 0, 65, 4, 71, 10, 0, - -1, -1, -1, 0, 29, 0, 6, -1, 10, 10, 3, 0, -1, 32, 6, 36, - 34, 33, 0, 0, 0, 0, 0, 0, -1, -1, -1, 13, 67, 59, 60, 8, - 10, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0300 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0340 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0380 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x03C0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0400 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 25, - //#0x0440 - 10, 4, -1, 0, 0, 0, 14, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0480 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x04C0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0500 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, - //#0x0540 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0580 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x05C0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0600 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, - //#0x0640 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0680 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x06C0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0700 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, - //#0x0740 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0780 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x07C0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -#if PACKETVER < 20090617 - 6, 2, -1, 4, 4, 4, 4, 8, 8,254, 6, 8, 6, 54, 30, 54, -#else // 0x7d9 changed - 6, 2, -1, 4, 4, 4, 4, 8, 8,268, 6, 8, 6, 54, 30, 54, -#endif - 0, 15, 8, 6, -1, 8, 8, 32, -1, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, -1, -1, -1, 8, 25, 10, 0, 26, 0, - //#0x0800 -#if PACKETVER < 20091229 - -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 20, -#else // for Party booking ( PACKETVER >= 20091229 ) - -1, -1, 18, 4, 8, 6, 2, 4, 14, 50, 18, 6, 2, 3, 14, 20, -#endif - 3, -1, 8, -1, 86, 2, 6, 6, -1, -1, 4, 10, 10, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, -1, 3, 2, 66, 5, 2, 12, 6, 0, 0, - //#0x0840 -#if PACKETVER < 20130000 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -#else - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 19, 0, 0, 0, 0, -#endif - 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0880 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x08C0 - 0, 0, 0, 0, 0, 0, 0, 20, 34, 0, 0, 0, 0, 0, 0, 10, - 9, 7, 10, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, - //#0x0900 - 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, -1, - 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0940 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 7, - 0, 0, 0, 0, 2, 0, 0, 14, 6, 50, -1, 0, 0, 0, 12, -1, - //#0x0980 - 7, 0, 0, 29, 28, 0, 0, 0, 6, 2, -1, 0, 0, -1, -1, 0, - 31, 0, 0, 0, 0, 0, 0, -1, 8, 11, 9, 8, 0, 0, 0, 22, - 0, 0, 0, 0, 0, 0, 12, 10, 14, 10, 14, 6, -1, 8, 17, 4, - 8, 4, 8, 4, 6, 0, 6, 4, 6, 4, 0, 0, 6, 0, 0, 0, - //#0x09C0 - 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 23, 17, 0, 0,102, 0, - 0, 0, 0, 0, 2, 0, -1, -1, 2, 0, 0, -1, -1, -1, 0, 7, - 0, 0, 0, 0, 0, 18, 22, 3, 11, 0, 11, -1, 0, 3, 11, 0, - -1, 11, 12, 11, 0, 0, 0, 75, -1,143, 0, 0, 0, -1, -1, -1, - //#0x0A00 -#if PACKETVER >= 20141022 - 269, 3, 4, 2, 6, 49, 6, 9, 26, 45, 47, 47, 56, -1, 14, -1, -#else - 269, 0, 0, 2, 6, 48, 6, 9, 26, 45, 47, 47, 56, -1, 14, 0, -#endif - -1, 0, 0, 26, 10, 0, 0, 0, 14, 2, 23, 2, -1, 2, 3, 2, - 21, 3, 5, 0, 66, 0, 0, 8, 3, 0, 0, -1, 0, -1, 0, 0, - 106, 0, 0, 0, 0, 4, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0A40 - 0, 0, 0, 85, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - //#0x0A80 - 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, - //#0x0AC0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x0AFF is currently defined as maximum - }; - struct { - void (*func)(int, struct map_session_data *); - char *name; - } clif_parse_func[]={ - {clif_parse_WantToConnection,"wanttoconnection"}, - {clif_parse_LoadEndAck,"loadendack"}, - {clif_parse_TickSend,"ticksend"}, - {clif_parse_WalkToXY,"walktoxy"}, - {clif_parse_QuitGame,"quitgame"}, - {clif_parse_GetCharNameRequest,"getcharnamerequest"}, - {clif_parse_GlobalMessage,"globalmessage"}, - {clif_parse_MapMove,"mapmove"}, - {clif_parse_ChangeDir,"changedir"}, - {clif_parse_Emotion,"emotion"}, - {clif_parse_HowManyConnections,"howmanyconnections"}, - {clif_parse_ActionRequest,"actionrequest"}, - {clif_parse_Restart,"restart"}, - {clif_parse_WisMessage,"wis"}, - {clif_parse_Broadcast,"broadcast"}, - {clif_parse_TakeItem,"takeitem"}, - {clif_parse_DropItem,"dropitem"}, - {clif_parse_UseItem,"useitem"}, - {clif_parse_EquipItem,"equipitem"}, - {clif_parse_UnequipItem,"unequipitem"}, - {clif_parse_NpcClicked,"npcclicked"}, - {clif_parse_NpcBuySellSelected,"npcbuysellselected"}, - {clif_parse_NpcBuyListSend,"npcbuylistsend"}, - {clif_parse_NpcSellListSend,"npcselllistsend"}, - {clif_parse_CreateChatRoom,"createchatroom"}, - {clif_parse_ChatAddMember,"chataddmember"}, - {clif_parse_ChatRoomStatusChange,"chatroomstatuschange"}, - {clif_parse_ChangeChatOwner,"changechatowner"}, - {clif_parse_KickFromChat,"kickfromchat"}, - {clif_parse_ChatLeave,"chatleave"}, - {clif_parse_TradeRequest,"traderequest"}, - {clif_parse_TradeAck,"tradeack"}, - {clif_parse_TradeAddItem,"tradeadditem"}, - {clif_parse_TradeOk,"tradeok"}, - {clif_parse_TradeCancel,"tradecancel"}, - {clif_parse_TradeCommit,"tradecommit"}, - {clif_parse_StopAttack,"stopattack"}, - {clif_parse_PutItemToCart,"putitemtocart"}, - {clif_parse_GetItemFromCart,"getitemfromcart"}, - {clif_parse_RemoveOption,"removeoption"}, - {clif_parse_ChangeCart,"changecart"}, - {clif_parse_StatusUp,"statusup"}, - {clif_parse_SkillUp,"skillup"}, - {clif_parse_UseSkillToId,"useskilltoid"}, - {clif_parse_UseSkillToPos,"useskilltopos"}, - {clif_parse_UseSkillToPosMoreInfo,"useskilltoposinfo"}, - {clif_parse_UseSkillMap,"useskillmap"}, - {clif_parse_RequestMemo,"requestmemo"}, - {clif_parse_ProduceMix,"producemix"}, - {clif_parse_Cooking,"cooking"}, - {clif_parse_NpcSelectMenu,"npcselectmenu"}, - {clif_parse_NpcNextClicked,"npcnextclicked"}, - {clif_parse_NpcAmountInput,"npcamountinput"}, - {clif_parse_NpcStringInput,"npcstringinput"}, - {clif_parse_NpcCloseClicked,"npccloseclicked"}, - {clif_parse_ItemIdentify,"itemidentify"}, - {clif_parse_SelectArrow,"selectarrow"}, - {clif_parse_AutoSpell,"autospell"}, - {clif_parse_UseCard,"usecard"}, - {clif_parse_InsertCard,"insertcard"}, - {clif_parse_RepairItem,"repairitem"}, - {clif_parse_WeaponRefine,"weaponrefine"}, - {clif_parse_SolveCharName,"solvecharname"}, - {clif_parse_ResetChar,"resetchar"}, - {clif_parse_LocalBroadcast,"localbroadcast"}, - {clif_parse_MoveToKafra,"movetokafra"}, - {clif_parse_MoveFromKafra,"movefromkafra"}, - {clif_parse_MoveToKafraFromCart,"movetokafrafromcart"}, - {clif_parse_MoveFromKafraToCart,"movefromkafratocart"}, - {clif_parse_CloseKafra,"closekafra"}, - {clif_parse_CreateParty,"createparty"}, - {clif_parse_CreateParty2,"createparty2"}, - {clif_parse_PartyInvite,"partyinvite"}, - {clif_parse_PartyInvite2,"partyinvite2"}, - {clif_parse_ReplyPartyInvite,"replypartyinvite"}, - {clif_parse_ReplyPartyInvite2,"replypartyinvite2"}, - {clif_parse_LeaveParty,"leaveparty"}, - {clif_parse_RemovePartyMember,"removepartymember"}, - {clif_parse_PartyChangeOption,"partychangeoption"}, - {clif_parse_PartyMessage,"partymessage"}, - {clif_parse_PartyChangeLeader,"partychangeleader"}, - {clif_parse_CloseVending,"closevending"}, - {clif_parse_VendingListReq,"vendinglistreq"}, - {clif_parse_PurchaseReq,"purchasereq"}, - {clif_parse_PurchaseReq2,"purchasereq2"}, - {clif_parse_OpenVending,"openvending"}, - {clif_parse_CreateGuild,"createguild"}, - {clif_parse_GuildCheckMaster,"guildcheckmaster"}, - {clif_parse_GuildRequestInfo,"guildrequestinfo"}, - {clif_parse_GuildChangePositionInfo,"guildchangepositioninfo"}, - {clif_parse_GuildChangeMemberPosition,"guildchangememberposition"}, - {clif_parse_GuildRequestEmblem,"guildrequestemblem"}, - {clif_parse_GuildChangeEmblem,"guildchangeemblem"}, - {clif_parse_GuildChangeNotice,"guildchangenotice"}, - {clif_parse_GuildInvite,"guildinvite"}, - {clif_parse_GuildReplyInvite,"guildreplyinvite"}, - {clif_parse_GuildLeave,"guildleave"}, - {clif_parse_GuildExpulsion,"guildexpulsion"}, - {clif_parse_GuildMessage,"guildmessage"}, - {clif_parse_GuildRequestAlliance,"guildrequestalliance"}, - {clif_parse_GuildReplyAlliance,"guildreplyalliance"}, - {clif_parse_GuildDelAlliance,"guilddelalliance"}, - {clif_parse_GuildOpposition,"guildopposition"}, - {clif_parse_GuildBreak,"guildbreak"}, - {clif_parse_PetMenu,"petmenu"}, - {clif_parse_CatchPet,"catchpet"}, - {clif_parse_SelectEgg,"selectegg"}, - {clif_parse_SendEmotion,"sendemotion"}, - {clif_parse_ChangePetName,"changepetname"}, - - {clif_parse_GMKick,"gmkick"}, - {clif_parse_GMHide,"gmhide"}, - {clif_parse_GMReqNoChat,"gmreqnochat"}, - {clif_parse_GMReqAccountName,"gmreqaccname"}, - {clif_parse_GMKickAll,"killall"}, - {clif_parse_GMRecall,"recall"}, - {clif_parse_GMRecall,"summon"}, - {clif_parse_GM_Item_Monster,"itemmonster"}, - {clif_parse_GMShift,"remove"}, - {clif_parse_GMShift,"shift"}, - {clif_parse_GMChangeMapType,"changemaptype"}, - {clif_parse_GMRc,"rc"}, - {clif_parse_GMRecall2,"recall2"}, - {clif_parse_GMRemove2,"remove2"}, - {clif_parse_GMFullStrip,"gmfullstrip"}, - - {clif_parse_NoviceDoriDori,"sndoridori"}, - {clif_parse_NoviceExplosionSpirits,"snexplosionspirits"}, - {clif_parse_PMIgnore,"wisexin"}, - {clif_parse_PMIgnoreList,"wisexlist"}, - {clif_parse_PMIgnoreAll,"wisall"}, - {clif_parse_FriendsListAdd,"friendslistadd"}, - {clif_parse_FriendsListRemove,"friendslistremove"}, - {clif_parse_FriendsListReply,"friendslistreply"}, - {clif_parse_Blacksmith,"blacksmith"}, - {clif_parse_Alchemist,"alchemist"}, - {clif_parse_Taekwon,"taekwon"}, - {clif_parse_RankingPk,"rankingpk"}, - {clif_parse_FeelSaveOk,"feelsaveok"}, - {clif_parse_debug,"debug"}, - {clif_parse_ChangeHomunculusName,"changehomunculusname"}, - {clif_parse_HomMoveToMaster,"hommovetomaster"}, - {clif_parse_HomMoveTo,"hommoveto"}, - {clif_parse_HomAttack,"homattack"}, - {clif_parse_HomMenu,"hommenu"}, - {clif_parse_StoragePassword,"storagepassword"}, - {clif_parse_Hotkey,"hotkey"}, - {clif_parse_AutoRevive,"autorevive"}, - {clif_parse_Check,"check"}, - {clif_parse_Adopt_request,"adoptrequest"}, - {clif_parse_Adopt_reply,"adoptreply"}, - // MAIL SYSTEM - {clif_parse_Mail_refreshinbox,"mailrefresh"}, - {clif_parse_Mail_read,"mailread"}, - {clif_parse_Mail_getattach,"mailgetattach"}, - {clif_parse_Mail_delete,"maildelete"}, - {clif_parse_Mail_return,"mailreturn"}, - {clif_parse_Mail_setattach,"mailsetattach"}, - {clif_parse_Mail_winopen,"mailwinopen"}, - {clif_parse_Mail_send,"mailsend"}, - {clif_parse_Mail_beginwrite,"mailbegin"}, - {clif_parse_Mail_cancelwrite,"mailcancel"}, - {clif_parse_Mail_Receiver_Check,"mailreceiver"}, - // AUCTION SYSTEM - {clif_parse_Auction_search,"auctionsearch"}, - {clif_parse_Auction_buysell,"auctionbuysell"}, - {clif_parse_Auction_setitem,"auctionsetitem"}, - {clif_parse_Auction_cancelreg,"auctioncancelreg"}, - {clif_parse_Auction_register,"auctionregister"}, - {clif_parse_Auction_cancel,"auctioncancel"}, - {clif_parse_Auction_close,"auctionclose"}, - {clif_parse_Auction_bid,"auctionbid"}, - // Quest Log System - {clif_parse_questStateAck,"queststate"}, - {clif_parse_ViewPlayerEquip,"viewplayerequip"}, - {clif_parse_EquipTick,"equiptickbox"}, - {clif_parse_BattleChat,"battlechat"}, - {clif_parse_mercenary_action,"mermenu"}, - {clif_parse_progressbar,"progressbar"}, - {clif_parse_SkillSelectMenu,"skillselectmenu"}, - {clif_parse_ItemListWindowSelected,"itemlistwindowselected"}, -#if PACKETVER >= 20091229 - {clif_parse_PartyBookingRegisterReq,"bookingregreq"}, - {clif_parse_PartyBookingSearchReq,"bookingsearchreq"}, - {clif_parse_PartyBookingUpdateReq,"bookingupdatereq"}, - {clif_parse_PartyBookingDeleteReq,"bookingdelreq"}, -#endif - {clif_parse_BankCheck,"bankcheck"}, - {clif_parse_BankDeposit,"bankdeposit"}, - {clif_parse_BankWithdraw,"bankwithdrawal"}, - {clif_parse_BankOpen,"bankopen"}, - {clif_parse_BankClose,"bankclose"}, - - {clif_parse_PVPInfo,"pvpinfo"}, - {clif_parse_LessEffect,"lesseffect"}, - // Buying Store - {clif_parse_ReqOpenBuyingStore,"reqopenbuyingstore"}, - {clif_parse_ReqCloseBuyingStore,"reqclosebuyingstore"}, - {clif_parse_ReqClickBuyingStore,"reqclickbuyingstore"}, - {clif_parse_ReqTradeBuyingStore,"reqtradebuyingstore"}, - // Store Search - {clif_parse_SearchStoreInfo,"searchstoreinfo"}, - {clif_parse_SearchStoreInfoNextPage,"searchstoreinfonextpage"}, - {clif_parse_CloseSearchStoreInfo,"closesearchstoreinfo"}, - {clif_parse_SearchStoreInfoListItemClick,"searchstoreinfolistitemclick"}, - // Cashshop - { clif_parse_cashshop_open_request, "cashshopopen" }, - { clif_parse_cashshop_close, "cashshopclose" }, - { clif_parse_cashshop_list_request, "cashshopitemlist" }, - { clif_parse_cashshop_buy, "cashshopbuy" }, - { clif_parse_CashShopReqTab, "cashshopreqtab"}, - /* */ - { clif_parse_MoveItem , "moveitem" }, - { clif_parse_PartyTick, "partytick" }, - { clif_parse_dull, "dull" }, - { clif_parse_GuildInvite2 , "guildinvite2" }, - { clif_parse_reqworldinfo, "reqworldinfo"}, - { clif_parse_client_version, "clientversion"}, - { clif_parse_blocking_playcancel, "booking_playcancel"}, - { clif_parse_ranklist, "ranklist"}, - // Market NPC - { clif_parse_NPCShopClosed, "npcshopclosed" }, - { clif_parse_NPCMarketClosed, "npcmarketclosed" }, - { clif_parse_NPCMarketPurchase, "npcmarketpurchase" }, - // Roulette - { clif_parse_RouletteOpen, "rouletteopen" }, - { clif_parse_RouletteInfo, "rouletteinfo" }, - { clif_parse_RouletteClose, "rouletteclose" }, - { clif_parse_RouletteGenerate, "roulettegenerate" }, - { clif_parse_RouletteRecvItem, "rouletterecvitem" }, - // Merge Item - { clif_parse_merge_item_req, "mergeitem_req"}, - { clif_parse_merge_item_cancel, "mergeitem_cancel"}, - // HotkeyRowShift - { clif_parse_HotkeyRowShift, "hotkeyrowshift"}, - // OneClick Item Identify - { clif_parse_Oneclick_Itemidentify, "oneclick_itemidentify" }, - // NewChange Cart2 - { clif_parse_SelectCart, "selectcart" }, - // Clan System - { clif_parse_clan_chat, "clanchat" }, - // Sale - { clif_parse_sale_search, "salesearch" }, - { clif_parse_sale_add, "saleadd" }, - { clif_parse_sale_remove, "saleremove" }, - { clif_parse_sale_open, "saleopen" }, - { clif_parse_sale_close, "saleclose" }, - { clif_parse_sale_refresh, "salerefresh" }, - {NULL,NULL} - }; - struct { - char *name; //function name - int funcidx; // - } clif_ack_func[]={ //hash - { "ZC_ACK_OPEN_BANKING", ZC_ACK_OPEN_BANKING}, - { "ZC_ACK_BANKING_DEPOSIT", ZC_ACK_BANKING_DEPOSIT}, - { "ZC_ACK_BANKING_WITHDRAW", ZC_ACK_BANKING_WITHDRAW}, - { "ZC_BANKING_CHECK", ZC_BANKING_CHECK}, - { "ZC_BANKING_CHECK", ZC_BANKING_CHECK}, - { "ZC_PERSONAL_INFOMATION", ZC_PERSONAL_INFOMATION}, - { "ZC_PERSONAL_INFOMATION_CHN", ZC_PERSONAL_INFOMATION_CHN}, - { "ZC_CLEAR_DIALOG", ZC_CLEAR_DIALOG}, - { "ZC_C_MARKERINFO", ZC_C_MARKERINFO}, - { "ZC_NOTIFY_BIND_ON_EQUIP", ZC_NOTIFY_BIND_ON_EQUIP }, - { "ZC_WEAR_EQUIP_ACK", ZC_WEAR_EQUIP_ACK }, - { "ZC_MERGE_ITEM_OPEN", ZC_MERGE_ITEM_OPEN }, - { "ZC_ACK_MERGE_ITEM", ZC_ACK_MERGE_ITEM }, - { "ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN", ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN }, - }; - const char *filename[] = { "packet_db.txt", DBIMPORT"/packet_db.txt"}; - int f; - +void packetdb_readdb(){ memset(packet_db,0,sizeof(packet_db)); memset(packet_db_ack,0,sizeof(packet_db_ack)); - // initialize packet_db[SERVER] from hardcoded packet_len_table[] values - for( i = 0; i < ARRAYLENGTH(packet_len_table); ++i ) - packet_len(i) = packet_len_table[i]; +#include "clif_packetdb.h" +#include "clif_shuffle.h" - clif_config.packet_db_ver = MAX_PACKET_VER; - for(f = 0; f < ARRAYLENGTH(filename); f++) { - FILE *fp; - int ln = 0; - int entries = 0; - char *str[64], *p, *str2[64], *p2; - - sprintf(line, "%s/%s", db_path, filename[f]); - if( (fp = fopen(line,"r")) == NULL ) { - if (f == 0) { - ShowFatalError("Can't read %s\n", line); - exit(EXIT_FAILURE); - } - return; - } - - while( fgets(line, sizeof(line), fp) ) { - char w1[256],w2[256]; - ln++; - if(line[0]=='/' && line[1]=='/') - continue; - if (sscanf(line,"%255[^:]: %255[^\r\n]",w1,w2) == 2) { - if (strcmpi(w1,"packet_ver") == 0) { - int prev_ver = packet_ver; - skip_ver = false; - packet_ver = atoi(w2); - if ( packet_ver > MAX_PACKET_VER ) - { //Check to avoid overflowing. [Skotlex] - if( (warned&1) == 0 ) - ShowWarning("The packet_db table only has support up to version %d.\n", MAX_PACKET_VER); - warned &= 1; - skip_ver = true; - } - else if( packet_ver < 0 ) - { - if( (warned&2) == 0 ) - ShowWarning("Negative packet versions are not supported.\n"); - warned &= 2; - skip_ver = true; - } - else if( packet_ver == SERVER ) - { - if( (warned&4) == 0 ) - ShowWarning("Packet version %d is reserved for server use only.\n", SERVER); - warned &= 4; - skip_ver = true; - } - - if( skip_ver ) - { - ShowWarning("Skipping packet version %d.\n", packet_ver); - packet_ver = prev_ver; - continue; - } - // copy from previous version into new version and continue - // - indicating all following packets should be read into the newer version - memcpy(&packet_db[packet_ver], &packet_db[prev_ver], sizeof(packet_db[0])); - memcpy(&packet_db_ack[packet_ver], &packet_db_ack[prev_ver], sizeof(packet_db_ack[0])); - continue; - } else if(strcmpi(w1,"packet_db_ver")==0) { - if (strcmpi(w2,"default") == 0) //This is the preferred version. - clif_config.packet_db_ver = MAX_PACKET_VER; - else // to manually set the packet DB version - clif_config.packet_db_ver = cap_value(atoi(w2), 0, MAX_PACKET_VER); - continue; - } -#ifdef PACKET_OBFUSCATION - else if (!reload && strcmpi(w1,"packet_keys") == 0) { - char key1[12] = { 0 }, key2[12] = { 0 }, key3[12] = { 0 }; - trim(w2); - if (sscanf(w2, "%11[^,],%11[^,],%11[^ \r\n/]", key1, key2, key3) == 3) { - if (!packet_keys[packet_ver]) - CREATE(packet_keys[packet_ver], struct s_packet_keys, 1); - packet_keys[packet_ver]->keys[0] = strtol(key1, NULL, 0); - packet_keys[packet_ver]->keys[1] = strtol(key2, NULL, 0); - packet_keys[packet_ver]->keys[2] = strtol(key3, NULL, 0); - last_key_defined = packet_ver; - if (battle_config.etc_log) - ShowInfo("Packet Ver:%d -> Keys: 0x%08X, 0x%08X, 0x%08X\n", packet_ver, packet_keys[packet_ver]->keys[0], packet_keys[packet_ver]->keys[1], packet_keys[packet_ver]->keys[2]); - } - continue; - } else if (!reload && strcmpi(w1,"packet_keys_use") == 0) { - char key1[12] = { 0 }, key2[12] = { 0 }, key3[12] = { 0 }; - trim(w2); - if (strcmpi(w2,"default") == 0) - continue; - if (sscanf(w2, "%11[^,],%11[^,],%11[^ \r\n/]", key1, key2, key3) == 3) { - clif_cryptKey[0] = strtol(key1, NULL, 0); - clif_cryptKey[1] = strtol(key2, NULL, 0); - clif_cryptKey[2] = strtol(key3, NULL, 0); - key_defined = true; - if (battle_config.etc_log) - ShowInfo("Defined keys: 0x%08X, 0x%08X, 0x%08X\n", clif_cryptKey[0], clif_cryptKey[1], clif_cryptKey[2]); - } - continue; - } -#endif - } - - if( skip_ver ) - continue; // Skipping current packet version - - memset(str,0,sizeof(str)); - for (j = 0, p = line; j < 4 && p; ++j) { - str[j] = p; - p = strchr(p,','); - if (p) - *p++=0; - } - if (str[0] == NULL) - continue; - cmd = strtol(str[0],(char **)NULL,0); - - if(max_cmd < cmd) - max_cmd = cmd; - if(cmd <= 0 || cmd > MAX_PACKET_DB) - continue; - if(str[1]==NULL){ - ShowError("packet_db: packet len error\n"); - continue; - } - - packet_db[packet_ver][cmd].len = (short)atoi(str[1]); - - if(str[2]==NULL){ - packet_db[packet_ver][cmd].func = NULL; - ln++; - continue; - } - - // look up processing function by name - ARR_FIND( 0, ARRAYLENGTH(clif_parse_func), j, clif_parse_func[j].name != NULL && strcmp(str[2],clif_parse_func[j].name)==0 ); - if( j < ARRAYLENGTH(clif_parse_func) ) - packet_db[packet_ver][cmd].func = clif_parse_func[j].func; - else { //search if it's a mapped ack func - ARR_FIND( 0, ARRAYLENGTH(clif_ack_func), j, clif_ack_func[j].name != NULL && strcmp(str[2],clif_ack_func[j].name)==0 ); - if( j < ARRAYLENGTH(clif_ack_func)) { - int fidx = clif_ack_func[j].funcidx; - packet_db_ack[packet_ver][fidx] = cmd; - //ShowInfo("Added %s, <=> %X i=%d for v=%d\n",clif_ack_func[j].name,cmd,fidx,packet_ver); - } - } - - // set the identifying cmd for the packet_db version - if (strcmp(str[2],"wanttoconnection")==0) - clif_config.connect_cmd[packet_ver] = cmd; - - if(str[3]==NULL){ - ShowError("packet_db: packet error\n"); - exit(EXIT_FAILURE); - } - for(j = 0, p2 = str[3]; p2; j++){ - short k; - str2[j] = p2; - p2 = strchr(p2,':'); - if(p2) - *p2++=0; - k = atoi(str2[j]); - // if (packet_db[packet_ver][cmd].pos[j] != k && clif_config.prefer_packet_db) // not used for now - - if( j >= MAX_PACKET_POS ) - { - ShowError("Too many positions found for packet 0x%04x (max=%d).\n", cmd, MAX_PACKET_POS); - break; - } - - packet_db[packet_ver][cmd].pos[j] = k; - } - entries++; - } - fclose(fp); - if(max_cmd > MAX_PACKET_DB) { - ShowWarning("Found packets up to 0x%X, ignored 0x%X and above.\n", max_cmd, MAX_PACKET_DB); - ShowWarning("Please increase MAX_PACKET_DB and recompile.\n"); - } - //Locate the nearest version that we still support. [Skotlex] - if (!clif_config.connect_cmd[clif_config.packet_db_ver]) { - for(j = clif_config.packet_db_ver; j >= 0 && !clif_config.connect_cmd[j]; j--); - - clif_config.packet_db_ver = j?j:MAX_PACKET_VER; - } - sprintf(line, "%s/%s", db_path,filename[f]); - ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", entries, line); - } - ShowStatus("Using default packet version: "CL_WHITE"%d"CL_RESET".\n", clif_config.packet_db_ver); + ShowStatus("Using packet version: "CL_WHITE"%d"CL_RESET".\n", PACKETVER); #ifdef PACKET_OBFUSCATION - if (!key_defined && !clif_cryptKey[0] && !clif_cryptKey[1] && !clif_cryptKey[2]) { // Not defined - int use_key = last_key_defined; - - if (last_key_defined == -1) - ShowError("Can't find packet obfuscation keys!\n"); - else { - if (packet_keys[clif_config.packet_db_ver]) - use_key = clif_config.packet_db_ver; - - ShowInfo("Using default packet obfuscation keys for packet_db_ver: %d\n", use_key); - memcpy(&clif_cryptKey, &packet_keys[use_key]->keys, sizeof(packet_keys[use_key]->keys)); - } - } ShowStatus("Packet Obfuscation: "CL_GREEN"Enabled"CL_RESET". Keys: "CL_WHITE"0x%08X, 0x%08X, 0x%08X"CL_RESET"\n", clif_cryptKey[0], clif_cryptKey[1], clif_cryptKey[2]); - - for (i = 0; i < ARRAYLENGTH(packet_keys); i++) { - if (packet_keys[i]) { - aFree(packet_keys[i]); - packet_keys[i] = NULL; - } - } +#else + ShowStatus("Packet Obfuscation: "CL_RED"Disabled"CL_RESET".\n"); #endif } @@ -20762,14 +19947,7 @@ void do_init_clif(void) { color_table[i] = (color_table[i] & 0x0000FF) << 16 | (color_table[i] & 0x00FF00) | (color_table[i] & 0xFF0000) >> 16;//RGB to BGR } - clif_config.packet_db_ver = -1; // the main packet version of the DB - memset(clif_config.connect_cmd, 0, sizeof(clif_config.connect_cmd)); //The default connect command will be determined after reading the packet_db [Skotlex] -#ifdef PACKET_OBFUSCATION - memset(clif_cryptKey, 0, sizeof(clif_cryptKey)); -#endif - - //Using the packet_db file is the only way to set up packets now [Skotlex] - packetdb_readdb(false); + packetdb_readdb(); set_defaultparse(clif_parse); if( make_listen_bind(bind_ip,map_port) == -1 ) { diff --git a/src/map/clif.h b/src/map/clif.h index 0e7e488b35..8ae9dd7929 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -44,12 +44,12 @@ enum mail_attachment_type; enum { // packet DB MIN_PACKET_DB = 0x064, MAX_PACKET_DB = 0xAFF, - MAX_PACKET_VER = 55, MAX_PACKET_POS = 20, }; enum e_packet_ack { ZC_ACK_OPEN_BANKING = 0, + ZC_ACK_CLOSE_BANKING, ZC_ACK_BANKING_DEPOSIT, ZC_ACK_BANKING_WITHDRAW, ZC_BANKING_CHECK, @@ -171,11 +171,9 @@ enum e_party_invite_reply { PARTY_REPLY_INVALID_MAPPROPERTY_ME, ///< return=9 : !TODO "Cannot join a party in this map" -> MsgStringTable[1871] (since 20110205) }; -// packet_db[SERVER] is reserved for server use -#define SERVER 0 -#define packet_len(cmd) packet_db[SERVER][cmd].len -extern struct s_packet_db packet_db[MAX_PACKET_VER+1][MAX_PACKET_DB+1]; -extern int packet_db_ack[MAX_PACKET_VER + 1][MAX_ACK_FUNC + 1]; +#define packet_len(cmd) packet_db[cmd].len +extern struct s_packet_db packet_db[MAX_PACKET_DB+1]; +extern int packet_db_ack[MAX_ACK_FUNC + 1]; // local define typedef enum send_target { @@ -534,7 +532,6 @@ void clif_setport(uint16 port); uint32 clif_getip(void); uint32 clif_refresh_ip(void); uint16 clif_getport(void); -void packetdb_readdb(bool reload); void clif_authok(struct map_session_data *sd); void clif_authrefuse(int fd, uint8 error_code); diff --git a/src/map/clif_obfuscation.h b/src/map/clif_obfuscation.h new file mode 100644 index 0000000000..da7df952e0 --- /dev/null +++ b/src/map/clif_obfuscation.h @@ -0,0 +1,347 @@ +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#ifndef _CLIF_OBFUSCATION_H_ +#define _CLIF_OBFUSCATION_H_ + + #define packet_keys(a,b,c) static unsigned int clif_cryptKey[] = { a, b, c }; + + #if defined(PACKET_OBFUSCATION_KEY1) || defined(PACKET_OBFUSCATION_KEY2) || defined(PACKET_OBFUSCATION_KEY3) + #ifndef PACKET_OBFUSCATION_KEY1 + #error You enabled custom packet obfuscation keys, but did not specify key number 1. + #endif + #ifndef PACKET_OBFUSCATION_KEY2 + #error You enabled custom packet obfuscation keys, but did not specify key number 2. + #endif + #ifndef PACKET_OBFUSCATION_KEY3 + #error You enabled custom packet obfuscation keys, but did not specify key number 3. + #endif + + packet_keys(PACKET_OBFUSCATION_KEY1,PACKET_OBFUSCATION_KEY2,PACKET_OBFUSCATION_KEY3); + #elif PACKETVER == 20110817 + packet_keys(0x053D5CED,0x3DED6DED,0x6DED6DED); + #elif PACKETVER == 20110824 + packet_keys(0x35C91401,0x262A5556,0x28FA03AA); + #elif PACKETVER == 20110831 + packet_keys(0x3AD67ED0,0x44703C69,0x6F876809); + #elif PACKETVER == 20110906 + packet_keys(0x3AD67ED0,0x44703C69,0x6F876809); // unchanged from 2011-08-31 + #elif PACKETVER == 20111005 // 2011-10-05aRagexeRE + packet_keys(0x291E6762,0x77CD391A,0x60AC2F16); + #elif PACKETVER == 20111012 + packet_keys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA); + #elif PACKETVER == 20111021 + packet_keys(0x357D55DC,0x5A8D759F,0x245C30F5); + #elif PACKETVER == 20111025 + packet_keys(0x50AE1A63,0x3CE579B5,0x29C10406); + #elif PACKETVER == 20111102 // 2011-11-02aRagexe + packet_keys(0x5324329D,0x5D545D52,0x06137269); + #elif PACKETVER == 20111109 + packet_keys(0x0B642BDA,0x6ECB1D1C,0x61C7454B); + #elif PACKETVER == 20111122 + packet_keys(0x3B550F07,0x1F666C7C,0x60304EF5); + #elif PACKETVER == 20111207 + packet_keys(0x2A610886,0x3E09165E,0x57C11888); + #elif PACKETVER == 20111214 + packet_keys(0x5151306B,0x7AE32886,0x53060628); + #elif PACKETVER == 20111220 + packet_keys(0x05D53871,0x7D0027B4,0x29975333); + #elif PACKETVER == 20111228 + packet_keys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC); + #elif PACKETVER == 20120104 + packet_keys(0x262034A1,0x674542A5,0x73A50BA5); + #elif PACKETVER == 20120111 + packet_keys(0x2B412AFC,0x4FF94487,0x6705339D); + #elif PACKETVER == 20120120 + packet_keys(0x504345D0,0x3D427B1B,0x794C2DCC); + #elif PACKETVER == 20120202 + packet_keys(0x2CFC0A71,0x2BA91D8D,0x087E39E0); + #elif PACKETVER == 20120207 + packet_keys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D); + #elif PACKETVER == 20120214 + packet_keys(0x7A255EFA,0x30977276,0x2D4A0448); + #elif PACKETVER == 20120229 + packet_keys(0x520B4C64,0x2800407D,0x47651458); + #elif PACKETVER == 20120307 // 2012-03-07fRagexeRE + packet_keys(0x382A6DEF,0x5CBE7202,0x61F46637); + #elif PACKETVER == 20120314 + packet_keys(0x689C1729,0x11812639,0x60F82967); + #elif PACKETVER == 20120321 + packet_keys(0x21F9683F,0x710C5CA5,0x1FD910E9); + #elif PACKETVER == 20120328 + packet_keys(0x75B8553B,0x37F20B12,0x385C2B40); + #elif PACKETVER == 20120404 + packet_keys(0x0036310C,0x2DCD0BED,0x1EE62A78); + #elif PACKETVER == 20120410 // 2012-04-10aRagexeRE + packet_keys(0x01581359,0x452D6FFA,0x6AFB6E2E); + #elif PACKETVER == 20120418 // 2012-04-18aRagexeRE + packet_keys(0x01540E48,0x13041224,0x31247924); + #elif PACKETVER == 20120424 + packet_keys(0x411D1DBB,0x4CBA4848,0x1A432FC4); + #elif PACKETVER == 20120509 + packet_keys(0x16CF3301,0x1F472B9B,0x0B4A3CD2); + #elif PACKETVER == 20120515 + packet_keys(0x4A715EF9,0x79103E4F,0x405C1238); + #elif PACKETVER == 20120525 + packet_keys(0x70EB4CCB,0x0487713C,0x398D4B08); + #elif PACKETVER == 20120605 + packet_keys(0x68CA3080,0x31B74BDD,0x505208F1); + #elif PACKETVER == 20120612 + packet_keys(0x32E45D64,0x35643564,0x35643564); + #elif PACKETVER == 20120618 // 2012-06-18 + packet_keys(0x261F261F,0x261F261F,0x261F261F); + #elif PACKETVER == 20120702 // 2012-07-02aRagexeRE + packet_keys(0x25733B31,0x53486CFD,0x398649BD); + #elif PACKETVER == 20120716 + packet_keys(0x76052205,0x22052205,0x22052205); + #elif PACKETVER == 20130320 // 2013-03-20Ragexe + packet_keys(0x3F094C49,0x55F86C1E,0x58AA359A); + #elif PACKETVER == 20130515 // 2013-05-15aRagexe + packet_keys(0x75794A38,0x58A96BC1,0x296E6FB8); + #elif PACKETVER == 20130522 // 2013-05-22Ragexe + packet_keys(0x6948050B,0x06511D9D,0x725D4DF1); + #elif PACKETVER == 20130529 // 2013-05-29Ragexe + packet_keys(0x023A6C87,0x14BF1F1E,0x5CC70CC9); + #elif PACKETVER == 20130605 // 2013-06-05Ragexe + packet_keys(0x646E08D9,0x5F153AB5,0x61B509B5); + #elif PACKETVER == 20130612 // 2013-06-12Ragexe + packet_keys(0x6D166F66,0x3C000FCF,0x295B0FCB); + #elif PACKETVER == 20130618 // 2013-06-18Ragexe + packet_keys(0x434115DE,0x34A10FE9,0x6791428E); + #elif PACKETVER == 20130626 // 2013-06-26Ragexe + packet_keys(0x38F453EF,0x6A040FD8,0X65BD6668); + #elif PACKETVER == 20130703 // 2013-07-03Ragexe + packet_keys(0x4FF90E23,0x0F1432F2,0x4CFA1EDA); + #elif PACKETVER == 20130710 // 2013-07-10Ragexe + packet_keys(0x458F758F,0x4CCF3F8F,0x4A9C4237); + #elif PACKETVER == 20130717 // 2013-07-17Ragexe + packet_keys(0x2BED4F91,0x5F9E00CF,0x5EE5520C); + #elif PACKETVER == 20130807 // 2013-08-07Ragexe + packet_keys(0x7E241DE0,0x5E805580,0x3D807D80); + #elif PACKETVER == 20130814 + packet_keys(0x23A23148,0x0C41420E,0x53785AD7); + #elif PACKETVER == 20131218 + packet_keys(0x6A596301,0x76866D0E,0x32294A45); + #elif PACKETVER == 20131223 // 2013-12-23Ragexe + packet_keys(0x631C511C,0x111C111C,0x111C111C); + #elif PACKETVER == 20131230 + packet_keys(0x611B7097,0x01F957A1,0x768A0FCB); + #elif PACKETVER == 20140115 + packet_keys(0x63224335,0x0F3A1F27,0x6D217B24); + #elif PACKETVER == 20140205 + packet_keys(0x63DC7BDC,0x7BDC7BDC,0x7BDC7BDC); + #elif PACKETVER == 20140305 + packet_keys(0x116763F2,0x41117DAC,0x7FD13C45); + #elif PACKETVER == 20140402 + packet_keys(0x15D3271C,0x004D725B,0x111A3A37); + #elif PACKETVER == 20140416 + packet_keys(0x04810281,0x42814281,0x42814281); + #elif PACKETVER == 20141016 // 2014-10-16Ragexe + packet_keys(0x2DFF467C,0x444B37EE,0x2C1B634F); + #elif PACKETVER == 20141022 // 2014-10-22bRagexe + packet_keys(0x290551EA,0x2B952C75,0x2D67669B); + #elif PACKETVER == 20150107 // 2015-01-07aRagexeRE + packet_keys(0x6C494A14, 0x4DDB6427, 0x3E6D7B65); + #elif PACKETVER == 20150114 // 2015-01-14aRagexe + packet_keys(0x21C96102, 0x13142934, 0x1ABF4EA3); + #elif PACKETVER == 20150128 // 2015-01-28aRagexe + packet_keys(0x77CA2D55,0x28B608F0,0x75B47957); + #elif PACKETVER == 20150204 // 2015-02-04aRagexe + packet_keys(0x134529DB,0x5B4F6CEF,0x29EF11EF); + #elif PACKETVER == 20150225 || PACKETVER == 20150226 // 2015-02-25aRagexeRE or 2015-02-26aRagexeRE + packet_keys(0x57FD4B7B,0x19CC16FB,0x0D255D72); + #elif PACKETVER == 20150311 // 2015-03-11aRagexeRE + packet_keys(0x48C45D97,0x06CE09B0,0x5836642F); + #elif PACKETVER == 20150325 // 2015-03-25aRagexe + packet_keys(0x68F62B8C, 0x337C3468, 0x38FC0AC7); + #elif PACKETVER == 20150401 // 2015-04-01aRagexe + packet_keys(0x207F3A08,0x57E6160C,0x02A60382); + #elif PACKETVER == 20150422 // 2015-04-22aRagexeRE + packet_keys(0x10D22CE2,0x69E279E2,0x79E279E2); + #elif PACKETVER == 20150429 // 2015-04-29aRagexe + packet_keys(0x2BF61A71,0x565D5DDF,0x0FB90019); + #elif PACKETVER == 20150507 // 2015-05-07bRagexe + packet_keys(0x55B54373,0x58967821,0x67F41832); + #elif PACKETVER == 20150513 // 2015-05-13aRagexe + packet_keys(0x62C86D09,0x75944F17,0x112C133D); + #elif PACKETVER == 20150527 // 2015-05-27aRagexe + packet_keys(0x35AE7BAE,0x3BAE3BAE,0x3BAE3BAE); + #elif PACKETVER == 20150617 || PACKETVER == 20150618 // 2015-06-17aRagexeRE or 2015-06-18aRagexeRE + packet_keys(0x250F7E09,0x25416076,0x029A780E); + #elif PACKETVER == 20150819 // 2015-08-19aRagexeRE + packet_keys(0x1A2400E0,0x736E5686,0x10F315D5); + #elif PACKETVER == 20150826 // 2015-08-26aRagexeRE + packet_keys(0x77883C56,0x1829359F,0x0DE635B6); + #elif PACKETVER == 20150916 // 2015-09-16Ragexe + packet_keys(0x17F83A19,0x116944F4,0x1CC541E9); + #elif PACKETVER == 20151001 // 2015-10-01bRagexeRE + packet_keys(0x45B945B9,0x45B945B9,0x45B945B9); + #elif PACKETVER == 20151007 // 2015-10-07aRagexeRE + packet_keys(0x3C6447A8,0x032170D7,0x6490476C); + #elif PACKETVER == 20151014 // 2015-10-14bRagexeRE + packet_keys(0x402728A8,0x5D0E309F,0x240018FD); + #elif PACKETVER == 20151028 // 2015-10-28cRagexeRE + packet_keys(0x45B945B9,0x45B945B9,0x45B945B9); + #elif PACKETVER == 20151029 // 2015-10-29aRagexe + packet_keys(0x45B945B9,0x45B945B9,0x45B945B9); + #elif PACKETVER == 20151104 // 2015-11-04aRagexe + packet_keys(0x4C17382A,0x7ED174C9,0x29961E4F); + #elif PACKETVER == 20151118 // 2015-11-18aRagexeRE + packet_keys(0x734C3241,0x6E846F34,0x731C06D6); + #elif PACKETVER == 20151202 // 2015-12-02bRagexeRE + packet_keys(0x4EDE52DE,0x52DE52DE,0x52DE52DE); + #elif PACKETVER == 20151216 // 2015-12-16aRagexe + packet_keys(0x25DD643D,0x61AC39DE,0x77A8206D); + #elif PACKETVER == 20151223 // 2015-12-23bRagexeRE + packet_keys(0x347D68D0,0x2C705320,0x7B4A199D); + #elif PACKETVER == 20160106 // 2016-01-06aRagexeRE + packet_keys(0x40520265,0x33FE26FC,0x7136294F); + #elif PACKETVER == 20160113 // 2016-01-13cRagexeRE + packet_keys(0x18005C4B,0x19A94A72,0x73F678EC); + #elif PACKETVER == 20160120 // 2016-01-20aRagexeRE + packet_keys(0x51495149,0x51495149,0x51495149); + #elif PACKETVER == 20160127 // 2016-01-27bRagexeRE + packet_keys(0x6B1E7146,0x612C47E6,0x274E56EE); + #elif PACKETVER == 20160203 // 2016-02-03aRagexeRE + packet_keys(0x3E1411AF,0x6C744497,0x7CFA1BDE); + #elif PACKETVER == 20160211 // 2016-02-11aRagexeRE + packet_keys(0x613813EA,0x05251DAB,0x1FD35E33); + #elif PACKETVER == 20160217 // 2016-02-17cRagexeRE + packet_keys(0x25895A8E,0x09421C19,0x763A2D7A); + #elif PACKETVER == 20160224 // 2016-02-24bRagexeRE + packet_keys(0x7088019A,0x13471F02,0x42356A7D); + #elif PACKETVER == 20160302 // 2016-03-02bRagexeRE + packet_keys(0x7B4441B9,0x5BBC63AF,0x45DA0E71); + #elif PACKETVER == 20160309 // 2016-03-09aRagexeRE + packet_keys(0x21587520,0x353A7706,0x1B722B25); + #elif PACKETVER == 20160316 // 2016-03-16aRagexeRE + packet_keys(0x62363E36,0x3E363E36,0x3E363E36); + #elif PACKETVER == 20160323 // 2016-03-23aRagexeRE + packet_keys(0x73E35A83,0x62142FA8,0x12BA36BD); + #elif PACKETVER == 20160330 // 2016-03-30aRagexeRE + packet_keys(0x02050940,0x545336FF,0x7E7D4902); + #elif PACKETVER == 20160406 // 2016-04-06aRagexeRE + packet_keys(0x568611EA,0x32457D8D,0x2B020477); + #elif PACKETVER == 20160414 // 2016-04-14bRagexeRE + packet_keys(0x31BD479A,0x40C61398,0x397C1A80); + #elif PACKETVER == 20160420 // 2016-04-20aRagexeRE + packet_keys(0x67D2163A,0x3068215B,0x4835474D); + #elif PACKETVER == 20160427 // 2016-04-27aRagexeRE + packet_keys(0x12DC378E,0x4E3E7EBE,0x0ABE2ABE); + #elif PACKETVER == 20160504 // 2016-05-04aRagexeRE + packet_keys(0x09E0544C,0x0231251D,0x2F4E195F); + #elif PACKETVER == 20160511 // 2016-05-11aRagexeRE + packet_keys(0x3C666FE2,0x27E84E3E,0x53E11BA5); + #elif PACKETVER == 20160518 // 2016-05-18aRagexeRE + packet_keys(0x57DB7CA1,0x1FEA1629,0x26DD244D); + #elif PACKETVER == 20160525 // 2016-05-25aRagexeRE + packet_keys(0x485C45B6,0x47DC6192,0x76B34A36); + #elif PACKETVER == 20160601 // 2016-06-01aRagexeRE + packet_keys(0x3DAD32C4,0x59F001BE,0x73F65E56); + #elif PACKETVER == 20160608 // 2016-06-08aRagexeRE + packet_keys(0x11D74609,0x77C43E8A,0x44290F53); + #elif PACKETVER == 20160615 // 2016-06-15aRagexeRE + packet_keys(0x062C5C26,0x6CF47E82,0x4DD53480); + #elif PACKETVER == 20160622 // 2016-06-22aRagexeRE + packet_keys(0x426548AB,0x5C0F5DD4,0x03022710); + #elif PACKETVER == 20160630 // 2016-06-30aRagexeRE + packet_keys(0x0DF31CCC,0x54281606,0x5C4C6855); + #elif PACKETVER == 20160706 // 2016-07-06cRagexeRE + packet_keys(0x33A766D0,0x743F04F8,0x0FA0276C); + #elif PACKETVER == 20160713 // 2016-07-13bRagexeRE + packet_keys(0x714F2495,0x7DDC6F32,0x3FD8533D); + #elif PACKETVER == 20160720 // 2016-07-20aRagexeRE + packet_keys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); + #elif PACKETVER == 20160727 // 2016-07-27bRagexeRE + packet_keys(0x3C6952AB,0x26E4077F,0x37E25DF7); + #elif PACKETVER == 20160803 // 2016-08-03bRagexeRE + packet_keys(0x67F438C2,0x512A4EB7,0x2D353182); + #elif PACKETVER == 20160810 // 2016-08-10aRagexeRE + packet_keys(0x2F252886,0x242234A2,0x48BC5032); + #elif PACKETVER == 20160831 // 2016-08-31bRagexeRE + packet_keys(0x564E13B0,0x7F680549,0x382D273B); + #elif PACKETVER == 20160907 // 2016-09-07aRagexeRE + packet_keys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD); + #elif PACKETVER == 20160913 // 2016-09-13aRagexeRE + packet_keys(0x7C79748F,0x1AA03B1D,0x6EAC4747); + #elif PACKETVER == 20160921 // 2016-09-21bRagexeRE + packet_keys(0x11CD15CD,0x15CD15CD,0x15CD15CD); + #elif PACKETVER == 20160928 // 2016-09-28dRagexeRE + packet_keys(0x2F8C67F5,0x22D42C38,0x57513774); + #elif PACKETVER == 20161005 // 2016-10-05aRagexeRE + packet_keys(0x5BAE21F8,0x021E2FFC,0x3BEB7C31); + #elif PACKETVER == 20161012 // 2016-10-12aRagexeRE + packet_keys(0x5E2311F2,0x14FD012C,0x76EB64F6); + #elif PACKETVER == 20161019 // 2016-10-19aRagexeRE + packet_keys(0x34882F11,0x7C870E70,0x7E61350D); + #elif PACKETVER == 20161026 // 2016-10-26bRagexeRE + packet_keys(0x2CB86AE6,0x7D12660E,0x1B004DEB); + #elif PACKETVER == 20161103 // 2016-11-03aRagexeRE + packet_keys(0x76725C17,0x72FE4EC1,0x07A91BFD); + #elif PACKETVER == 20161109 // 2016-11-09bRagexeRE + packet_keys(0x0A5277C0,0x2DB17506,0x0E8F26DA); + #elif PACKETVER == 20161116 // 2016-11-16cRagexeRE + packet_keys(0x780C5C3F,0x15E92272,0x2BA770C5); + #elif PACKETVER == 20161123 // 2016-11-23aRagexeRE + packet_keys(0x66FF559F,0x00D3535B,0x236246F7); + #elif PACKETVER == 20161130 // 2016-11-30bRagexeRE + packet_keys(0x2ED80296,0x0D837373,0x20266F9A); + #elif PACKETVER == 20161207 // 2016-12-07eRagexeRE + packet_keys(0x52D267AA,0x4FE42156,0x1292153E); + #elif PACKETVER == 20161214 // 2016-12-14bRagexeRE + packet_keys(0x4DDE217B,0x07863AE0,0x5B591656); + #elif PACKETVER == 20161221 // 2016-12-21aRagexeRE + packet_keys(0x69CB4F56,0x793C165E,0x673A2354); + #elif PACKETVER == 20161228 // 2016-12-28aRagexeRE + packet_keys(0x09366971,0x005672F1,0x6F3712AE); + #elif PACKETVER == 20170104 // 2017-01-04bRagexeRE + packet_keys(0x44416BC3,0x6C8D1817,0x072D75D5); + #elif PACKETVER == 20170111 // 2017-01-11aRagexeRE + packet_keys(0x19B637F9,0x0E9C378A,0x41673186); + #elif PACKETVER == 20170118 // 2017-01-18aRagexeRE + packet_keys(0x456B36EB,0x15EB34B0,0x18C42E43); + #elif PACKETVER == 20170125 // 2017-01-25aRagexeRE + packet_keys(0x066E04FE,0x3004224A,0x04FF0458); + #elif PACKETVER == 20170201 // 2017-02-01aRagexeRE + packet_keys(0x2011228E,0x00453005,0x628E7F0A); + #elif PACKETVER == 20170208 // 2017-02-08aRagexeRE + packet_keys(0x6A764E5F,0x0609570D,0x28AE07FA); + #elif PACKETVER == 20170215 // 2017-02-15aRagexeRE + packet_keys(0x50C01315,0x51012A42,0x679E16C3); + #elif PACKETVER == 20170222 // 2017-02-22aRagexeRE + packet_keys(0x5A242F2F,0x6C556187,0x73C022CB); + #elif PACKETVER == 20170228 // 2017-02-28aRagexeRE + packet_keys(0x771D4F2B,0x20EF1F4C,0x0D5135C8); + #elif PACKETVER == 20170308 // 2017-03-08bRagexeRE + packet_keys(0x653470A9,0x6B316A71,0x5C712C71); + #elif PACKETVER == 20170315 // 2017-03-15cRagexeRE + packet_keys(0x399A0856,0x56642A94,0x7F77157D); + #elif PACKETVER == 20170322 // 2017-03-22aRagexeRE + packet_keys(0x2050167B,0x01731233,0x40337033); + #elif PACKETVER == 20170329 // 2017-03-29dRagexeRE + packet_keys(0x18B31A80,0x1B0B1D56,0x16857D6A); + #elif PACKETVER == 20170405 // 2017-04-05bRagexeRE + packet_keys(0x1FDE7DAC,0x2F9F5B63,0x3F2062AF); + #elif PACKETVER == 20170412 // 2017-04-12aRagexeRE + packet_keys(0x39223393,0x5C847779,0x10217985); + #elif PACKETVER == 20170419 // 2017-04-19bRagexeRE + packet_keys(0x1F8F4B3F,0x2E481F03,0x39ED4178); + #elif PACKETVER == 20170426 // 2017-04-26dRagexeRE + packet_keys(0x167642A7,0x1DEC3D26,0x6D046D4C); + #elif PACKETVER == 20170502 // 2017-05-02dRagexeRE + packet_keys(0x05224194,0x466D4204,0x31F02EE0); + #elif PACKETVER == 20170517 // 2017-05-17aRagexeRE + packet_keys(0x2CC4749A,0x1FA954DC,0x72276857); + #elif PACKETVER == 20170524 // 2017-05-24aRagexeRE + packet_keys(0x0B4E03A6,0x2B93427C,0x583D4477); + #elif PACKETVER == 20170531 // 2017-05-31aRagexeRE + packet_keys(0x03FA5A97,0x20B802D5,0x339F1977); + #elif PACKETVER == 20170607 // 2017-06-07cRagexeRE + packet_keys(0x50564ACD,0x79CA4E15,0x405F4894); + #elif PACKETVER > 20110817 + #error Unsupported packet version. + #endif + + #undef packet_keys + +#endif /* _CLIF_OBFUSCATION_H_ */ diff --git a/src/map/clif_packetdb.h b/src/map/clif_packetdb.h new file mode 100644 index 0000000000..52bb6331fd --- /dev/null +++ b/src/map/clif_packetdb.h @@ -0,0 +1,2308 @@ +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#ifndef _CLIF_PACKETDB_H_ +#define _CLIF_PACKETDB_H_ + + #define packet(cmd,length) packetdb_addpacket(cmd,length,NULL,0) + #define parseable_packet(cmd,length,func,...) packetdb_addpacket(cmd,length,func,__VA_ARGS__,0) + #define ack_packet(type,cmd,length,...) \ + packetdb_addpacket(cmd,length,NULL,__VA_ARGS__,0); \ + packet_db_ack[type] = cmd + + packet(0x0064,55); + packet(0x0065,17); + packet(0x0066,6); + packet(0x0067,37); + packet(0x0068,46); + packet(0x0069,-1); + packet(0x006a,23); + packet(0x006b,-1); + packet(0x006c,3); + packet(0x006d,108); + packet(0x006e,3); + packet(0x006f,2); + packet(0x0070,6); + packet(0x0071,28); + parseable_packet(0x0072,19,clif_parse_WantToConnection,2,6,10,14,18); + packet(0x0073,11); + packet(0x0074,3); + packet(0x0075,-1); + packet(0x0076,9); + packet(0x0077,5); + packet(0x0078,54); + packet(0x0079,53); + packet(0x007a,58); + packet(0x007b,60); + packet(0x007c,41); + parseable_packet(0x007d,2,clif_parse_LoadEndAck,0); + parseable_packet(0x007e,6,clif_parse_TickSend,2); + packet(0x007f,6); + packet(0x0080,7); + packet(0x0081,3); + packet(0x0082,2); + packet(0x0083,2); + packet(0x0084,2); + parseable_packet(0x0085,5,clif_parse_WalkToXY,2); + packet(0x0086,16); + packet(0x0087,12); + packet(0x0088,10); + parseable_packet(0x0089,7,clif_parse_ActionRequest,2,6); + packet(0x008a,29); + packet(0x008b,2); + parseable_packet(0x008c,-1,clif_parse_GlobalMessage,2,4); + packet(0x008d,-1); + packet(0x008e,-1); + //packet(0x008f,-1); + parseable_packet(0x0090,7,clif_parse_NpcClicked,2,6); + packet(0x0091,22); + packet(0x0092,28); + packet(0x0093,2); + parseable_packet(0x0094,6,clif_parse_GetCharNameRequest,2); + packet(0x0095,30); + parseable_packet(0x0096,-1,clif_parse_WisMessage,2,4,28); + packet(0x0097,-1); + packet(0x0098,3); + parseable_packet(0x0099,-1,clif_parse_Broadcast,2,4); + packet(0x009a,-1); + parseable_packet(0x009b,5,clif_parse_ChangeDir,2,4); + packet(0x009c,9); + packet(0x009d,17); + packet(0x009e,17); + parseable_packet(0x009f,6,clif_parse_TakeItem,2); + packet(0x00a0,23); + packet(0x00a1,6); + parseable_packet(0x00a2,6,clif_parse_DropItem,2,4); + packet(0x00a3,-1); + packet(0x00a4,-1); + packet(0x00a5,-1); + packet(0x00a6,-1); + parseable_packet(0x00a7,8,clif_parse_UseItem,2,4); + packet(0x00a8,7); + parseable_packet(0x00a9,6,clif_parse_EquipItem,2,4); + ack_packet(ZC_WEAR_EQUIP_ACK,0x00aa,7,2,4,6); + parseable_packet(0x00ab,4,clif_parse_UnequipItem,2); + packet(0x00ac,7); + //packet(0x00ad,-1); + packet(0x00ae,-1); + packet(0x00af,6); + packet(0x00b0,8); + packet(0x00b1,8); + parseable_packet(0x00b2,3,clif_parse_Restart,2); + packet(0x00b3,3); + packet(0x00b4,-1); + packet(0x00b5,6); + packet(0x00b6,6); + packet(0x00b7,-1); + parseable_packet(0x00b8,7,clif_parse_NpcSelectMenu,2,6); + parseable_packet(0x00b9,6,clif_parse_NpcNextClicked,2); + packet(0x00ba,2); + parseable_packet(0x00bb,5,clif_parse_StatusUp,2,4); + packet(0x00bc,6); + packet(0x00bd,44); + packet(0x00be,5); + parseable_packet(0x00bf,3,clif_parse_Emotion,2); + packet(0x00c0,7); + parseable_packet(0x00c1,2,clif_parse_HowManyConnections,0); + packet(0x00c2,6); + packet(0x00c3,8); + packet(0x00c4,6); + parseable_packet(0x00c5,7,clif_parse_NpcBuySellSelected,2,6); + packet(0x00c6,-1); + packet(0x00c7,-1); + parseable_packet(0x00c8,-1,clif_parse_NpcBuyListSend,2,4); + parseable_packet(0x00c9,-1,clif_parse_NpcSellListSend,2,4); + packet(0x00ca,3); + packet(0x00cb,3); + parseable_packet(0x00cc,6,clif_parse_GMKick,2); + packet(0x00cd,3); + parseable_packet(0x00ce,2,clif_parse_GMKickAll,0); + parseable_packet(0x00cf,27,clif_parse_PMIgnore,2,26); + parseable_packet(0x00d0,3,clif_parse_PMIgnoreAll,2); + packet(0x00d1,4); + packet(0x00d2,4); + parseable_packet(0x00d3,2,clif_parse_PMIgnoreList,0); + packet(0x00d4,-1); + parseable_packet(0x00d5,-1,clif_parse_CreateChatRoom,2,4,6,7,15); + packet(0x00d6,3); + packet(0x00d7,-1); + packet(0x00d8,6); + parseable_packet(0x00d9,14,clif_parse_ChatAddMember,2,6); + packet(0x00da,3); + packet(0x00db,-1); + packet(0x00dc,28); + packet(0x00dd,29); + parseable_packet(0x00de,-1,clif_parse_ChatRoomStatusChange,2,4,6,7,15); + packet(0x00df,-1); + parseable_packet(0x00e0,30,clif_parse_ChangeChatOwner,2,6); + packet(0x00e1,30); + parseable_packet(0x00e2,26,clif_parse_KickFromChat,2); + parseable_packet(0x00e3,2,clif_parse_ChatLeave,0); + parseable_packet(0x00e4,6,clif_parse_TradeRequest,2); + packet(0x00e5,26); + parseable_packet(0x00e6,3,clif_parse_TradeAck,2); + packet(0x00e7,3); + parseable_packet(0x00e8,8,clif_parse_TradeAddItem,2,4); + packet(0x00e9,19); + packet(0x00ea,5); + parseable_packet(0x00eb,2,clif_parse_TradeOk,0); + packet(0x00ec,3); + parseable_packet(0x00ed,2,clif_parse_TradeCancel,0); + packet(0x00ee,2); + parseable_packet(0x00ef,2,clif_parse_TradeCommit,0); + packet(0x00f0,3); + packet(0x00f1,2); + packet(0x00f2,6); + parseable_packet(0x00f3,8,clif_parse_MoveToKafra,2,4); + packet(0x00f4,21); + parseable_packet(0x00f5,8,clif_parse_MoveFromKafra,2,4); + packet(0x00f6,8); + parseable_packet(0x00f7,2,clif_parse_CloseKafra,0); + packet(0x00f8,2); + parseable_packet(0x00f9,26,clif_parse_CreateParty,2); + packet(0x00fa,3); + packet(0x00fb,-1); + parseable_packet(0x00fc,6,clif_parse_PartyInvite,2); + packet(0x00fd,27); + packet(0x00fe,30); + parseable_packet(0x00ff,10,clif_parse_ReplyPartyInvite,2,6); + parseable_packet(0x0100,2,clif_parse_LeaveParty,0); + packet(0x0101,6); + parseable_packet(0x0102,6,clif_parse_PartyChangeOption,2); + parseable_packet(0x0103,30,clif_parse_RemovePartyMember,2,6); + packet(0x0104,79); + packet(0x0105,31); + packet(0x0106,10); + packet(0x0107,10); + parseable_packet(0x0108,-1,clif_parse_PartyMessage,2,4); + packet(0x0109,-1); + packet(0x010a,4); + packet(0x010b,6); + packet(0x010c,6); + packet(0x010d,2); + packet(0x010e,11); + packet(0x010f,-1); + packet(0x0110,10); + packet(0x0111,39); + parseable_packet(0x0112,4,clif_parse_SkillUp,2); + parseable_packet(0x0113,10,clif_parse_UseSkillToId,2,4,6); + packet(0x0114,31); + packet(0x0115,35); + parseable_packet(0x0116,10,clif_parse_UseSkillToPos,2,4,6,8); + packet(0x0117,18); + parseable_packet(0x0118,2,clif_parse_StopAttack,0); + packet(0x0119,13); + packet(0x011a,15); + parseable_packet(0x011b,20,clif_parse_UseSkillMap,2,4); + packet(0x011c,68); + parseable_packet(0x011d,2,clif_parse_RequestMemo,0); + packet(0x011e,3); + packet(0x011f,16); + packet(0x0120,6); + packet(0x0121,14); + packet(0x0122,-1); + packet(0x0123,-1); + packet(0x0124,21); + packet(0x0125,8); + parseable_packet(0x0126,8,clif_parse_PutItemToCart,2,4); + parseable_packet(0x0127,8,clif_parse_GetItemFromCart,2,4); + parseable_packet(0x0128,8,clif_parse_MoveFromKafraToCart,2,4); + parseable_packet(0x0129,8,clif_parse_MoveToKafraFromCart,2,4); + parseable_packet(0x012a,2,clif_parse_RemoveOption,0); + packet(0x012b,2); + packet(0x012c,3); + packet(0x012d,4); + parseable_packet(0x012e,2,clif_parse_CloseVending,0); + parseable_packet(0x012f,-1,clif_parse_OpenVending,2,4,0,84); + parseable_packet(0x0130,6,clif_parse_VendingListReq,2); + packet(0x0131,86); + packet(0x0132,6); + packet(0x0133,-1); + parseable_packet(0x0134,-1,clif_parse_PurchaseReq,2,4,8); + packet(0x0135,7); + packet(0x0136,-1); + packet(0x0137,6); + packet(0x0138,3); + packet(0x0139,16); + packet(0x013a,4); + packet(0x013b,4); + packet(0x013c,4); + packet(0x013d,6); + packet(0x013e,24); + parseable_packet(0x013f,26,clif_parse_GM_Item_Monster,2); + parseable_packet(0x0140,22,clif_parse_MapMove,2,18,20); + packet(0x0141,14); + packet(0x0142,6); + parseable_packet(0x0143,10,clif_parse_NpcAmountInput,2,6); + packet(0x0144,23); + packet(0x0145,19); + parseable_packet(0x0146,6,clif_parse_NpcCloseClicked,2); + packet(0x0147,39); + packet(0x0148,8); + parseable_packet(0x0149,9,clif_parse_GMReqNoChat,2,6,7); + packet(0x014a,6); + packet(0x014b,27); + packet(0x014c,-1); + parseable_packet(0x014d,2,clif_parse_GuildCheckMaster,0); + packet(0x014e,6); + parseable_packet(0x014f,6,clif_parse_GuildRequestInfo,2); + packet(0x0150,110); + parseable_packet(0x0151,6,clif_parse_GuildRequestEmblem,2); + packet(0x0152,-1); + parseable_packet(0x0153,-1,clif_parse_GuildChangeEmblem,2,4); + packet(0x0154,-1); + parseable_packet(0x0155,-1,clif_parse_GuildChangeMemberPosition,2,4); + packet(0x0156,-1); + packet(0x0157,6); + packet(0x0158,-1); + parseable_packet(0x0159,54,clif_parse_GuildLeave,2,6,10,14); + packet(0x015a,66); + parseable_packet(0x015b,54,clif_parse_GuildExpulsion,2,6,10,14); + packet(0x015c,90); + parseable_packet(0x015d,42,clif_parse_GuildBreak,2); + packet(0x015e,6); + packet(0x015f,42); + packet(0x0160,-1); + parseable_packet(0x0161,-1,clif_parse_GuildChangePositionInfo,2,4); + packet(0x0162,-1); + packet(0x0163,-1); + packet(0x0164,-1); + parseable_packet(0x0165,30,clif_parse_CreateGuild,2,6); + packet(0x0166,-1); + packet(0x0167,3); + parseable_packet(0x0168,14,clif_parse_GuildInvite,2,6,10); + packet(0x0169,3); + packet(0x016a,30); + parseable_packet(0x016b,10,clif_parse_GuildReplyInvite,2,6); + packet(0x016c,43); + packet(0x016d,14); + parseable_packet(0x016e,186,clif_parse_GuildChangeNotice,2,6,66); + packet(0x016f,182); + parseable_packet(0x0170,14,clif_parse_GuildRequestAlliance,2,6,10); + packet(0x0171,30); + parseable_packet(0x0172,10,clif_parse_GuildReplyAlliance,2,6); + packet(0x0173,3); + packet(0x0174,-1); + packet(0x0175,6); + packet(0x0176,106); + packet(0x0177,-1); + parseable_packet(0x0178,4,clif_parse_ItemIdentify,2); + packet(0x0179,5); + parseable_packet(0x017a,4,clif_parse_UseCard,2); + packet(0x017b,-1); + parseable_packet(0x017c,6,clif_parse_InsertCard,2,4); + packet(0x017d,7); + parseable_packet(0x017e,-1,clif_parse_GuildMessage,2,4); + packet(0x017f,-1); + parseable_packet(0x0180,6,clif_parse_GuildOpposition,2); + packet(0x0181,3); + packet(0x0182,106); + parseable_packet(0x0183,10,clif_parse_GuildDelAlliance,2,6); + packet(0x0184,10); + packet(0x0185,34); + //packet(0x0186,-1); + packet(0x0187,6); + packet(0x0188,8); + packet(0x0189,4); + parseable_packet(0x018a,4,clif_parse_QuitGame,2); + packet(0x018b,4); + packet(0x018c,29); + packet(0x018d,-1); + parseable_packet(0x018e,10,clif_parse_ProduceMix,2,4,6,8); + packet(0x018f,6); + parseable_packet(0x0190,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0191,86); + packet(0x0192,24); + parseable_packet(0x0193,6,clif_parse_SolveCharName,2); + packet(0x0194,30); + packet(0x0195,102); + packet(0x0196,9); + parseable_packet(0x0197,4,clif_parse_ResetChar,2); + parseable_packet(0x0198,8,clif_parse_GMChangeMapType,2,4,6); + packet(0x0199,4); + packet(0x019a,14); + packet(0x019b,10); + parseable_packet(0x019c,-1,clif_parse_LocalBroadcast,2,4); + parseable_packet(0x019d,6,clif_parse_GMHide,2); + packet(0x019e,2); + parseable_packet(0x019f,6,clif_parse_CatchPet,2); + packet(0x01a0,3); + parseable_packet(0x01a1,3,clif_parse_PetMenu,2); + packet(0x01a2,35); + packet(0x01a3,5); + packet(0x01a4,11); + parseable_packet(0x01a5,26,clif_parse_ChangePetName,2); + packet(0x01a6,-1); + parseable_packet(0x01a7,4,clif_parse_SelectEgg,2); + packet(0x01a8,4); + parseable_packet(0x01a9,6,clif_parse_SendEmotion,2); + packet(0x01aa,10); + packet(0x01ab,12); + packet(0x01ac,6); + packet(0x01ad,-1); + parseable_packet(0x01ae,4,clif_parse_SelectArrow,2); + parseable_packet(0x01af,4,clif_parse_ChangeCart,2); + packet(0x01b0,11); + packet(0x01b1,7); + parseable_packet(0x01b2,-1,clif_parse_OpenVending,2,4,84,85); + packet(0x01b3,67); + packet(0x01b4,12); + packet(0x01b5,18); + packet(0x01b6,114); + packet(0x01b7,6); + packet(0x01b8,3); + packet(0x01b9,6); + parseable_packet(0x01ba,26,clif_parse_GMShift,2); + parseable_packet(0x01bb,26,clif_parse_GMShift,2); + parseable_packet(0x01bc,26,clif_parse_GMRecall,2); + parseable_packet(0x01bd,26,clif_parse_GMRecall,2); + packet(0x01be,2); + packet(0x01bf,3); + packet(0x01c0,2); + packet(0x01c1,14); + packet(0x01c2,10); + packet(0x01c3,-1); + packet(0x01c4,22); + packet(0x01c5,22); + packet(0x01c6,4); + packet(0x01c7,2); + packet(0x01c8,13); + packet(0x01c9,97); + //packet(0x01ca,-1); + packet(0x01cb,9); + packet(0x01cc,9); + packet(0x01cd,30); + parseable_packet(0x01ce,6,clif_parse_AutoSpell,2); + packet(0x01cf,28); + packet(0x01d0,8); + packet(0x01d1,14); + packet(0x01d2,10); + packet(0x01d3,35); + packet(0x01d4,6); + parseable_packet(0x01d5,-1,clif_parse_NpcStringInput,2,4,8); + packet(0x01d6,4); + packet(0x01d7,11); + packet(0x01d8,54); + packet(0x01d9,53); + packet(0x01da,60); + packet(0x01db,2); + packet(0x01dc,-1); + packet(0x01dd,47); + packet(0x01de,33); + parseable_packet(0x01df,6,clif_parse_GMReqAccountName,2); + packet(0x01e0,30); + packet(0x01e1,8); + packet(0x01e2,34); + packet(0x01e3,14); + packet(0x01e4,2); + packet(0x01e5,6); + packet(0x01e6,26); + parseable_packet(0x01e7,2,clif_parse_NoviceDoriDori,0); + parseable_packet(0x01e8,28,clif_parse_CreateParty2,2,26,27); + packet(0x01e9,81); + packet(0x01ea,6); + packet(0x01eb,10); + packet(0x01ec,26); + parseable_packet(0x01ed,2,clif_parse_NoviceExplosionSpirits,0); + packet(0x01ee,-1); + packet(0x01ef,-1); + packet(0x01f0,-1); + packet(0x01f1,-1); + packet(0x01f2,20); + packet(0x01f3,10); + packet(0x01f4,32); + packet(0x01f5,9); + packet(0x01f6,34); + parseable_packet(0x01f7,14,clif_parse_Adopt_reply,2,6,10); + packet(0x01f8,2); + parseable_packet(0x01f9,6,clif_parse_Adopt_request,2); + packet(0x01fa,48); + packet(0x01fb,56); + packet(0x01fc,-1); + parseable_packet(0x01fd,4,clif_parse_RepairItem,2); + packet(0x01fe,5); + packet(0x01ff,10); + packet(0x0200,26); + packet(0x0201,-1); + parseable_packet(0x0202,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0203,10,clif_parse_FriendsListRemove,2,6); + packet(0x0204,18); + packet(0x0205,26); + packet(0x0206,11); + packet(0x0207,34); + parseable_packet(0x0208,11,clif_parse_FriendsListReply,2,6,10); + packet(0x0209,36); + packet(0x020a,10); + //packet(0x020b,-1); + //packet(0x020c,-1); + packet(0x020d,-1); + packet(0x8b3,-1); + ack_packet(ZC_CLEAR_DIALOG,0x8d6,6,2); + +// 2004-07-05aSakexe +#if PACKETVER >= 20040705 + parseable_packet(0x0072,22,clif_parse_WantToConnection,5,9,13,17,21); + parseable_packet(0x0085,8,clif_parse_WalkToXY,5); + parseable_packet(0x00a7,13,clif_parse_UseItem,5,9); + parseable_packet(0x0113,15,clif_parse_UseSkillToId,4,9,11); + parseable_packet(0x0116,15,clif_parse_UseSkillToPos,4,9,11,13); + parseable_packet(0x0190,95,clif_parse_UseSkillToPosMoreInfo,4,9,11,13,15); + parseable_packet(0x0208,14,clif_parse_FriendsListReply,2,6,10); + packet(0x020e,24); +#endif + +// 2004-07-13aSakexe +#if PACKETVER >= 20040713 + parseable_packet(0x0072,39,clif_parse_WantToConnection,12,22,30,34,38); + parseable_packet(0x0085,9,clif_parse_WalkToXY,6); + parseable_packet(0x009b,13,clif_parse_ChangeDir,5,12); + parseable_packet(0x009f,10,clif_parse_TakeItem,6); + parseable_packet(0x00a7,17,clif_parse_UseItem,6,13); + parseable_packet(0x0113,19,clif_parse_UseSkillToId,7,9,15); + parseable_packet(0x0116,19,clif_parse_UseSkillToPos,7,9,15,17); + parseable_packet(0x0190,99,clif_parse_UseSkillToPosMoreInfo,7,9,15,17,19); +#endif + +// 2004-07-26aSakexe +#if PACKETVER >= 20040726 + parseable_packet(0x0072,14,clif_parse_DropItem,5,12); + parseable_packet(0x007e,33,clif_parse_WantToConnection,12,18,24,28,32); + parseable_packet(0x0085,20,clif_parse_UseSkillToId,7,12,16); + parseable_packet(0x0089,15,clif_parse_GetCharNameRequest,11); + parseable_packet(0x008c,23,clif_parse_UseSkillToPos,3,6,17,21); + parseable_packet(0x0094,10,clif_parse_TakeItem,6); + parseable_packet(0x009b,6,clif_parse_WalkToXY,3); + parseable_packet(0x009f,13,clif_parse_ChangeDir,5,12); + parseable_packet(0x00a2,103,clif_parse_UseSkillToPosMoreInfo,3,6,17,21,23); + parseable_packet(0x00a7,12,clif_parse_SolveCharName,8); + parseable_packet(0x00f3,-1,clif_parse_GlobalMessage,2,4); + parseable_packet(0x00f5,17,clif_parse_UseItem,6,12); + parseable_packet(0x00f7,10,clif_parse_TickSend,6); + parseable_packet(0x0113,16,clif_parse_MoveToKafra,5,12); + parseable_packet(0x0116,2,clif_parse_CloseKafra,0); + parseable_packet(0x0190,26,clif_parse_MoveFromKafra,10,22); + parseable_packet(0x0193,9,clif_parse_ActionRequest,3,8); +#endif + +// 2004-08-09aSakexe +#if PACKETVER >= 20040809 + parseable_packet(0x0072,17,clif_parse_DropItem,8,15); + parseable_packet(0x007e,37,clif_parse_WantToConnection,9,21,28,32,36); + parseable_packet(0x0085,26,clif_parse_UseSkillToId,11,18,22); + parseable_packet(0x0089,12,clif_parse_GetCharNameRequest,8); + parseable_packet(0x008c,40,clif_parse_UseSkillToPos,5,15,29,38); + parseable_packet(0x0094,13,clif_parse_TakeItem,9); + parseable_packet(0x009b,15,clif_parse_WalkToXY,12); + parseable_packet(0x009f,12,clif_parse_ChangeDir,7,11); + parseable_packet(0x00a2,120,clif_parse_UseSkillToPosMoreInfo,5,15,29,38,40); + parseable_packet(0x00a7,11,clif_parse_SolveCharName,7); + parseable_packet(0x00f5,24,clif_parse_UseItem,9,20); + parseable_packet(0x00f7,13,clif_parse_TickSend,9); + parseable_packet(0x0113,23,clif_parse_MoveToKafra,5,19); + parseable_packet(0x0190,26,clif_parse_MoveFromKafra,11,22); + parseable_packet(0x0193,18,clif_parse_ActionRequest,7,17); +#endif + +// 2004-08-16aSakexe +#if PACKETVER >= 20040816 + parseable_packet(0x0212,26,clif_parse_GMRc,2); + parseable_packet(0x0213,26,clif_parse_Check,2); + packet(0x0214,42); +#endif + +// 2004-08-17aSakexe +#if PACKETVER >= 20040817 + parseable_packet(0x020f,10,clif_parse_PVPInfo,2,6); + packet(0x0210,22); +#endif + +// 2004-09-06aSakexe +#if PACKETVER >= 20040906 + parseable_packet(0x0072,20,clif_parse_UseItem,9,20); + parseable_packet(0x007e,19,clif_parse_MoveToKafra,3,15); + parseable_packet(0x0085,23,clif_parse_ActionRequest,9,22); + parseable_packet(0x0089,9,clif_parse_WalkToXY,6); + parseable_packet(0x008c,105,clif_parse_UseSkillToPosMoreInfo,10,14,18,23,25); + parseable_packet(0x0094,17,clif_parse_DropItem,6,15); + parseable_packet(0x009b,14,clif_parse_GetCharNameRequest,10); + parseable_packet(0x009f,-1,clif_parse_GlobalMessage,2,4); + parseable_packet(0x00a2,14,clif_parse_SolveCharName,10); + parseable_packet(0x00a7,25,clif_parse_UseSkillToPos,10,14,18,23); + parseable_packet(0x00f3,10,clif_parse_ChangeDir,4,9); + parseable_packet(0x00f5,34,clif_parse_WantToConnection,7,15,25,29,33); + parseable_packet(0x00f7,2,clif_parse_CloseKafra,0); + parseable_packet(0x0113,11,clif_parse_TakeItem,7); + parseable_packet(0x0116,11,clif_parse_TickSend,7); + parseable_packet(0x0190,22,clif_parse_UseSkillToId,9,15,18); + parseable_packet(0x0193,17,clif_parse_MoveFromKafra,3,13); +#endif + +// 2004-09-20aSakexe +#if PACKETVER >= 20040920 + parseable_packet(0x0072,18,clif_parse_UseItem,10,14); + parseable_packet(0x007e,25,clif_parse_MoveToKafra,6,21); + parseable_packet(0x0085,9,clif_parse_ActionRequest,3,8); + parseable_packet(0x0089,14,clif_parse_WalkToXY,11); + parseable_packet(0x008c,109,clif_parse_UseSkillToPosMoreInfo,16,20,23,27,29); + parseable_packet(0x0094,19,clif_parse_DropItem,12,17); + parseable_packet(0x009b,10,clif_parse_GetCharNameRequest,6); + parseable_packet(0x00a2,10,clif_parse_SolveCharName,6); + parseable_packet(0x00a7,29,clif_parse_UseSkillToPos,6,20,23,27); + parseable_packet(0x00f3,18,clif_parse_ChangeDir,8,17); + parseable_packet(0x00f5,32,clif_parse_WantToConnection,10,17,23,27,31); + parseable_packet(0x0113,14,clif_parse_TakeItem,10); + parseable_packet(0x0116,14,clif_parse_TickSend,10); + parseable_packet(0x0190,14,clif_parse_UseSkillToId,4,7,10); + parseable_packet(0x0193,12,clif_parse_MoveFromKafra,4,8); +#endif + +// 2004-10-05aSakexe +#if PACKETVER >= 20041005 + parseable_packet(0x0072,17,clif_parse_UseItem,6,13); + parseable_packet(0x007e,16,clif_parse_MoveToKafra,5,12); + parseable_packet(0x0089,6,clif_parse_WalkToXY,3); + parseable_packet(0x008c,103,clif_parse_UseSkillToPosMoreInfo,2,6,17,21,23); + parseable_packet(0x0094,14,clif_parse_DropItem,5,12); + parseable_packet(0x009b,15,clif_parse_GetCharNameRequest,11); + parseable_packet(0x00a2,12,clif_parse_SolveCharName,8); + parseable_packet(0x00a7,23,clif_parse_UseSkillToPos,3,6,17,21); + parseable_packet(0x00f3,13,clif_parse_ChangeDir,5,12); + parseable_packet(0x00f5,33,clif_parse_WantToConnection,12,18,24,28,32); + parseable_packet(0x0113,10,clif_parse_TakeItem,6); + parseable_packet(0x0116,10,clif_parse_TickSend,6); + parseable_packet(0x0190,20,clif_parse_UseSkillToId,7,12,16); + parseable_packet(0x0193,26,clif_parse_MoveFromKafra,10,22); +#endif + +// 2004-10-25aSakexe +#if PACKETVER >= 20041025 + parseable_packet(0x0072,13,clif_parse_UseItem,5,9); + parseable_packet(0x007e,13,clif_parse_MoveToKafra,6,9); + parseable_packet(0x0085,15,clif_parse_ActionRequest,4,14); + parseable_packet(0x008c,108,clif_parse_UseSkillToPosMoreInfo,6,9,23,26,28); + parseable_packet(0x0094,12,clif_parse_DropItem,6,10); + parseable_packet(0x009b,10,clif_parse_GetCharNameRequest,6); + parseable_packet(0x00a2,16,clif_parse_SolveCharName,12); + parseable_packet(0x00a7,28,clif_parse_UseSkillToPos,6,9,23,26); + parseable_packet(0x00f3,15,clif_parse_ChangeDir,6,14); + parseable_packet(0x00f5,29,clif_parse_WantToConnection,5,14,20,24,28); + parseable_packet(0x0113,9,clif_parse_TakeItem,5); + parseable_packet(0x0116,9,clif_parse_TickSend,5); + parseable_packet(0x0190,26,clif_parse_UseSkillToId,4,10,22); + parseable_packet(0x0193,22,clif_parse_MoveFromKafra,12,18); +#endif + +// 2004-11-01aSakexe +#if PACKETVER >= 20041101 + packet(0x0084,-1); + packet(0x0215,6); +#endif + +// 2004-11-08aSakexe +#if PACKETVER >= 20041108 + packet(0x0084,2); + packet(0x0216,6); + parseable_packet(0x0217,2,clif_parse_Blacksmith,0); + parseable_packet(0x0218,2,clif_parse_Alchemist,0); + packet(0x0219,282); + packet(0x021a,282); + packet(0x021b,10); + packet(0x021c,10); +#endif + +// 2004-11-15aSakexe +#if PACKETVER >= 20041115 + parseable_packet(0x021d,6,clif_parse_LessEffect,2); +#endif + +// 2004-11-29aSakexe +#if PACKETVER >= 20041129 + parseable_packet(0x0072,22,clif_parse_UseSkillToId,8,12,18); + parseable_packet(0x007e,30,clif_parse_UseSkillToPos,4,9,22,28); + parseable_packet(0x0085,-1,clif_parse_GlobalMessage,2,4); + parseable_packet(0x0089,7,clif_parse_TickSend,3); + parseable_packet(0x008c,13,clif_parse_GetCharNameRequest,9); + parseable_packet(0x0094,14,clif_parse_MoveToKafra,4,10); + parseable_packet(0x009b,2,clif_parse_CloseKafra,0); + parseable_packet(0x009f,18,clif_parse_ActionRequest,6,17); + parseable_packet(0x00a2,7,clif_parse_TakeItem,3); + parseable_packet(0x00a7,7,clif_parse_WalkToXY,4); + parseable_packet(0x00f3,8,clif_parse_ChangeDir,3,7); + parseable_packet(0x00f5,29,clif_parse_WantToConnection,3,10,20,24,28); + parseable_packet(0x00f7,14,clif_parse_SolveCharName,10); + parseable_packet(0x0113,110,clif_parse_UseSkillToPosMoreInfo,4,9,22,28,30); + parseable_packet(0x0116,12,clif_parse_DropItem,4,10); + parseable_packet(0x0190,15,clif_parse_UseItem,3,11); + parseable_packet(0x0193,21,clif_parse_MoveFromKafra,4,17); + packet(0x0221,-1); + parseable_packet(0x0222,6,clif_parse_WeaponRefine,2); + packet(0x0223,8); +#endif + +// 2004-12-13aSakexe +#if PACKETVER >= 20041213 + //skipped: many packets being set to -1 + packet(0x0066,3); + packet(0x0070,3); + packet(0x01ca,3); + packet(0x021e,6); + packet(0x021f,66); + packet(0x0220,10); +#endif + +// 2005-01-10bSakexe +#if PACKETVER >= 20050110 + parseable_packet(0x0072,26,clif_parse_UseSkillToId,8,16,22); + parseable_packet(0x007e,114,clif_parse_UseSkillToPosMoreInfo,10,18,22,32,34); + parseable_packet(0x0085,23,clif_parse_ChangeDir,12,22); + parseable_packet(0x0089,9,clif_parse_TickSend,5); + parseable_packet(0x008c,8,clif_parse_GetCharNameRequest,4); + parseable_packet(0x0094,20,clif_parse_MoveToKafra,10,16); + parseable_packet(0x009b,32,clif_parse_WantToConnection,3,12,23,27,31); + parseable_packet(0x009f,17,clif_parse_UseItem,5,13); + parseable_packet(0x00a2,11,clif_parse_SolveCharName,7); + parseable_packet(0x00a7,13,clif_parse_WalkToXY,10); + parseable_packet(0x00f3,-1,clif_parse_GlobalMessage,2,4); + parseable_packet(0x00f5,9,clif_parse_TakeItem,5); + parseable_packet(0x00f7,21,clif_parse_MoveFromKafra,11,17); + parseable_packet(0x0113,34,clif_parse_UseSkillToPos,10,18,22,32); + parseable_packet(0x0116,20,clif_parse_DropItem,15,18); + parseable_packet(0x0190,20,clif_parse_ActionRequest,9,19); + parseable_packet(0x0193,2,clif_parse_CloseKafra,0); +#endif + +// 2005-03-28aSakexe +#if PACKETVER >= 20050328 + packet(0x0224,10); + parseable_packet(0x0225,2,clif_parse_Taekwon,0); + packet(0x0226,282); +#endif + +// 2005-04-04aSakexe +#if PACKETVER >= 20050404 + packet(0x0227,18); + packet(0x0228,18); +#endif + +// 2005-04-11aSakexe +#if PACKETVER >= 20050411 + packet(0x0229,15); + packet(0x022a,58); + packet(0x022b,57); + packet(0x022c,64); +#endif + +// 2005-04-25aSakexe +#if PACKETVER >= 20050425 + parseable_packet(0x022d,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0232,9,clif_parse_HomMoveTo,2,6); + parseable_packet(0x0233,11,clif_parse_HomAttack,2,6,10); + parseable_packet(0x0234,6,clif_parse_HomMoveToMaster,2); +#endif + +// 2005-05-09aSakexe +#if PACKETVER >= 20050509 + parseable_packet(0x0072,25,clif_parse_UseSkillToId,6,10,21); + parseable_packet(0x007e,102,clif_parse_UseSkillToPosMoreInfo,5,9,12,20,22); + parseable_packet(0x0085,11,clif_parse_ChangeDir,7,10); + parseable_packet(0x0089,8,clif_parse_TickSend,4); + parseable_packet(0x008c,11,clif_parse_GetCharNameRequest,7); + parseable_packet(0x0094,14,clif_parse_MoveToKafra,7,10); + parseable_packet(0x009b,26,clif_parse_WantToConnection,4,9,17,21,25); + parseable_packet(0x009f,14,clif_parse_UseItem,4,10); + parseable_packet(0x00a2,15,clif_parse_SolveCharName,11); + parseable_packet(0x00a7,8,clif_parse_WalkToXY,5); + parseable_packet(0x00f5,8,clif_parse_TakeItem,4); + parseable_packet(0x00f7,22,clif_parse_MoveFromKafra,14,18); + parseable_packet(0x0113,22,clif_parse_UseSkillToPos,5,9,12,20); + parseable_packet(0x0116,10,clif_parse_DropItem,5,8); + parseable_packet(0x0190,19,clif_parse_ActionRequest,5,18); +#endif + +// 2005-05-23aSakexe +#if PACKETVER >= 20050523 + packet(0x022e,69); + packet(0x0230,12); +#endif + +// 2005-05-30aSakexe +#if PACKETVER >= 20050530 + packet(0x022e,71); + packet(0x0235,-1); + packet(0x0236,10); + parseable_packet(0x0237,2,clif_parse_RankingPk,0); + packet(0x0238,282); +#endif + +// 2005-05-31aSakexe +#if PACKETVER >= 20050531 + packet(0x0216,2); + packet(0x0239,11); +#endif + +// 2005-06-08aSakexe +#if PACKETVER >= 20050608 + packet(0x0216,6); + parseable_packet(0x0217,2,clif_parse_Blacksmith,0); + packet(0x022f,5); + parseable_packet(0x0231,26,clif_parse_ChangeHomunculusName,2); + packet(0x023a,4); + parseable_packet(0x023b,36,clif_parse_StoragePassword,2,4,20); + packet(0x023c,6); +#endif + +// 2005-06-22aSakexe +#if PACKETVER >= 20050622 + packet(0x022e,71); +#endif + +// 2005-06-28aSakexe +#if PACKETVER >= 20050628 + parseable_packet(0x0072,34,clif_parse_UseSkillToId,6,17,30); + parseable_packet(0x007e,113,clif_parse_UseSkillToPosMoreInfo,12,15,18,31,33); + parseable_packet(0x0085,17,clif_parse_ChangeDir,8,16); + parseable_packet(0x0089,13,clif_parse_TickSend,9); + parseable_packet(0x008c,8,clif_parse_GetCharNameRequest,4); + parseable_packet(0x0094,31,clif_parse_MoveToKafra,16,27); + parseable_packet(0x009b,32,clif_parse_WantToConnection,9,15,23,27,31); + parseable_packet(0x009f,19,clif_parse_UseItem,9,15); + parseable_packet(0x00a2,9,clif_parse_SolveCharName,5); + parseable_packet(0x00a7,11,clif_parse_WalkToXY,8); + parseable_packet(0x00f5,13,clif_parse_TakeItem,9); + parseable_packet(0x00f7,18,clif_parse_MoveFromKafra,11,14); + parseable_packet(0x0113,33,clif_parse_UseSkillToPos,12,15,18,31); + parseable_packet(0x0116,12,clif_parse_DropItem,3,10); + parseable_packet(0x0190,24,clif_parse_ActionRequest,11,23); + packet(0x0216,-1); + packet(0x023d,-1); + packet(0x023e,4); +#endif + +// 2005-07-18aSakexe +#if PACKETVER >= 20050718 + parseable_packet(0x0072,19,clif_parse_UseSkillToId,5,11,15); + parseable_packet(0x007e,110,clif_parse_UseSkillToPosMoreInfo,9,15,23,28,30); + parseable_packet(0x0085,11,clif_parse_ChangeDir,6,10); + parseable_packet(0x0089,7,clif_parse_TickSend,3); + parseable_packet(0x008c,11,clif_parse_GetCharNameRequest,7); + parseable_packet(0x0094,21,clif_parse_MoveToKafra,12,17); + parseable_packet(0x009b,31,clif_parse_WantToConnection,3,13,22,26,30); + parseable_packet(0x009f,12,clif_parse_UseItem,3,8); + parseable_packet(0x00a2,18,clif_parse_SolveCharName,14); + parseable_packet(0x00a7,15,clif_parse_WalkToXY,12); + parseable_packet(0x00f5,7,clif_parse_TakeItem,3); + parseable_packet(0x00f7,13,clif_parse_MoveFromKafra,5,9); + parseable_packet(0x0113,30,clif_parse_UseSkillToPos,9,15,23,28); + parseable_packet(0x0116,12,clif_parse_DropItem,6,10); + parseable_packet(0x0190,21,clif_parse_ActionRequest,5,20); + packet(0x0216,6); + parseable_packet(0x023f,2,clif_parse_Mail_refreshinbox,0); + packet(0x0240,8); + parseable_packet(0x0241,6,clif_parse_Mail_read,2); + packet(0x0242,-1); + parseable_packet(0x0243,6,clif_parse_Mail_delete,2); + parseable_packet(0x0244,6,clif_parse_Mail_getattach,2); + packet(0x0245,7); + parseable_packet(0x0246,4,clif_parse_Mail_winopen,2); + parseable_packet(0x0247,8,clif_parse_Mail_setattach,2,4); + packet(0x0248,68); + packet(0x0249,3); + packet(0x024a,70); + parseable_packet(0x024b,4,clif_parse_Auction_cancelreg,2); + parseable_packet(0x024c,8,clif_parse_Auction_setitem,2,4); + packet(0x024d,14); + parseable_packet(0x024e,6,clif_parse_Auction_cancel,2); + parseable_packet(0x024f,10,clif_parse_Auction_bid,2,6); + packet(0x0250,3); + packet(0x0251,2); + packet(0x0252,-1); +#endif + +// 2005-07-19bSakexe +#if PACKETVER >= 20050719 + parseable_packet(0x0072,34,clif_parse_UseSkillToId,6,17,30); + parseable_packet(0x007e,113,clif_parse_UseSkillToPosMoreInfo,12,15,18,31,33); + parseable_packet(0x0085,17,clif_parse_ChangeDir,8,16); + parseable_packet(0x0089,13,clif_parse_TickSend,9); + parseable_packet(0x008c,8,clif_parse_GetCharNameRequest,4); + parseable_packet(0x0094,31,clif_parse_MoveToKafra,16,27); + parseable_packet(0x009b,32,clif_parse_WantToConnection,9,15,23,27,31); + parseable_packet(0x009f,19,clif_parse_UseItem,9,15); + parseable_packet(0x00a2,9,clif_parse_SolveCharName,5); + parseable_packet(0x00a7,11,clif_parse_WalkToXY,8); + parseable_packet(0x00f5,13,clif_parse_TakeItem,9); + parseable_packet(0x00f7,18,clif_parse_MoveFromKafra,11,14); + parseable_packet(0x0113,33,clif_parse_UseSkillToPos,12,15,18,31); + parseable_packet(0x0116,12,clif_parse_DropItem,3,10); + parseable_packet(0x0190,24,clif_parse_ActionRequest,11,23); +#endif + +// 2005-08-01aSakexe +#if PACKETVER >= 20050801 + packet(0x0245,3); + packet(0x0251,4); +#endif + +// 2005-08-08aSakexe +#if PACKETVER >= 20050808 + parseable_packet(0x024d,12,clif_parse_Auction_register,2,6,10); + packet(0x024e,4); +#endif + +// 2005-08-17aSakexe +#if PACKETVER >= 20050817 + packet(0x0253,3); + parseable_packet(0x0254,3,clif_parse_FeelSaveOk,2); +#endif + +// 2005-08-29aSakexe +#if PACKETVER >= 20050829 + packet(0x0240,-1); + parseable_packet(0x0248,-1,clif_parse_Mail_send,2,4,28,68,69); + packet(0x0255,5); + packet(0x0256,-1); + packet(0x0257,8); +#endif + +// 2005-09-12bSakexe +#if PACKETVER >= 20050912 + packet(0x0256,5); + packet(0x0258,2); + packet(0x0259,3); +#endif + +// 2005-10-10aSakexe +#if PACKETVER >= 20051010 + packet(0x020e,32); + packet(0x025a,-1); + parseable_packet(0x025b,6,clif_parse_Cooking,2,4); +#endif + +// 2005-10-13aSakexe +#if PACKETVER >= 20051013 + packet(0x007a,6); + packet(0x0251,32); + parseable_packet(0x025c,4,clif_parse_Auction_buysell,2); +#endif + +// 2005-10-17aSakexe +#if PACKETVER >= 20051017 + packet(0x007a,58); + parseable_packet(0x025d,6,clif_parse_Auction_close,2); + packet(0x025e,4); +#endif + +// 2005-10-24aSakexe +#if PACKETVER >= 20051024 + packet(0x025f,6); + packet(0x0260,6); +#endif + +// 2005-11-07aSakexe +#if PACKETVER >= 20051107 + parseable_packet(0x024e,6,clif_parse_Auction_cancel,2); + parseable_packet(0x0251,34,clif_parse_Auction_search,2,4,8,32); +#endif + +// 2006-01-09aSakexe +#if PACKETVER >= 20060109 + packet(0x0261,11); + packet(0x0262,11); + packet(0x0263,11); + packet(0x0264,20); + packet(0x0265,20); + packet(0x0266,30); + packet(0x0267,4); + packet(0x0268,4); + packet(0x0269,4); + packet(0x026a,4); + packet(0x026b,4); + packet(0x026c,4); + packet(0x026d,4); + packet(0x026f,2); + packet(0x0270,2); + packet(0x0271,38); + packet(0x0272,44); +#endif + +// 2006-01-26aSakexe +#if PACKETVER >= 20060126 + packet(0x0271,40); +#endif + +// 2006-03-06aSakexe +#if PACKETVER >= 20060306 + packet(0x0273,6); + packet(0x0274,8); +#endif + +// 2006-03-13aSakexe +#if PACKETVER >= 20060313 + parseable_packet(0x0273,30,clif_parse_Mail_return,2,6); +#endif + +// 2006-03-27aSakexe +#if PACKETVER >= 20060327 + parseable_packet(0x0072,26,clif_parse_UseSkillToId,11,18,22); + parseable_packet(0x007e,120,clif_parse_UseSkillToPosMoreInfo,5,15,29,38,40); + parseable_packet(0x0085,12,clif_parse_ChangeDir,7,11); + //parseable_packet(0x0089,13,clif_parse_TickSend,9); + parseable_packet(0x008c,12,clif_parse_GetCharNameRequest,8); + parseable_packet(0x0094,23,clif_parse_MoveToKafra,5,19); + parseable_packet(0x009b,37,clif_parse_WantToConnection,9,21,28,32,36); + parseable_packet(0x009f,24,clif_parse_UseItem,9,20); + parseable_packet(0x00a2,11,clif_parse_SolveCharName,7); + parseable_packet(0x00a7,15,clif_parse_WalkToXY,12); + parseable_packet(0x00f5,13,clif_parse_TakeItem,9); + parseable_packet(0x00f7,26,clif_parse_MoveFromKafra,11,22); + parseable_packet(0x0113,40,clif_parse_UseSkillToPos,5,15,29,38); + parseable_packet(0x0116,17,clif_parse_DropItem,8,15); + parseable_packet(0x0190,18,clif_parse_ActionRequest,7,17); +#endif + +// 2006-10-23aSakexe +#if PACKETVER >= 20061023 + packet(0x006d,110); +#endif + +//2006-04-24aSakexe to 2007-01-02aSakexe +#if PACKETVER >= 20060424 + packet(0x023e,8); + packet(0x0277,84); + packet(0x0278,2); + packet(0x0279,2); + packet(0x027a,-1); + packet(0x027b,14); + packet(0x027c,60); + packet(0x027d,62); + packet(0x027e,-1); + packet(0x027f,8); + packet(0x0280,12); + packet(0x0281,4); + packet(0x0282,284); + packet(0x0283,6); + packet(0x0284,14); + packet(0x0285,6); + packet(0x0286,4); + packet(0x0287,-1); + packet(0x0288,6); + packet(0x0289,8); + packet(0x028a,18); + packet(0x028b,-1); + packet(0x028c,46); + packet(0x028d,34); + packet(0x028e,4); + packet(0x028f,6); + packet(0x0290,4); + packet(0x0291,4); + parseable_packet(0x0292,2,clif_parse_AutoRevive,0); + packet(0x0293,70); + packet(0x0294,10); + packet(0x0295,-1); + packet(0x0296,-1); + packet(0x0297,-1); + packet(0x0298,8); + packet(0x0299,6); + packet(0x029a,27); + packet(0x029c,66); + packet(0x029d,-1); + packet(0x029e,11); + parseable_packet(0x029f,3,clif_parse_mercenary_action,2); + packet(0x02a0,-1); + packet(0x02a1,-1); + packet(0x02a2,8); +#endif + +// 2007-01-08aSakexe +#if PACKETVER >= 20070108 + parseable_packet(0x0072,30,clif_parse_UseSkillToId,10,14,26); + parseable_packet(0x007e,120,clif_parse_UseSkillToPosMoreInfo,10,19,23,38,40); + parseable_packet(0x0085,14,clif_parse_ChangeDir,10,13); + parseable_packet(0x0089,11,clif_parse_TickSend,7); + parseable_packet(0x008c,17,clif_parse_GetCharNameRequest,13); + parseable_packet(0x0094,17,clif_parse_MoveToKafra,4,13); + parseable_packet(0x009b,35,clif_parse_WantToConnection,7,21,26,30,34); + parseable_packet(0x009f,21,clif_parse_UseItem,7,17); + parseable_packet(0x00a2,10,clif_parse_SolveCharName,6); + parseable_packet(0x00a7,8,clif_parse_WalkToXY,5); + parseable_packet(0x00f5,11,clif_parse_TakeItem,7); + parseable_packet(0x00f7,15,clif_parse_MoveFromKafra,3,11); + parseable_packet(0x0113,40,clif_parse_UseSkillToPos,10,19,23,38); + parseable_packet(0x0116,19,clif_parse_DropItem,11,17); + parseable_packet(0x0190,10,clif_parse_ActionRequest,4,9); +#endif + +// 2007-01-22aSakexe +#if PACKETVER >= 20070122 + packet(0x02a3,18); + packet(0x02a4,2); +#endif + +// 2007-01-29aSakexe +#if PACKETVER >= 20070129 + packet(0x029b,72); + packet(0x02a3,-1); + packet(0x02a4,-1); + packet(0x02a5,8); +#endif + +// 2007-02-05aSakexe +#if PACKETVER >= 20070205 + packet(0x02aa,4); + packet(0x02ab,36); + packet(0x02ac,6); +#endif + +// 2007-02-12aSakexe +#if PACKETVER >= 20070212 + parseable_packet(0x0072,25,clif_parse_UseSkillToId,6,10,21); + parseable_packet(0x007e,102,clif_parse_UseSkillToPosMoreInfo,5,9,12,20,22); + parseable_packet(0x0085,11,clif_parse_ChangeDir,7,10); + parseable_packet(0x0089,8,clif_parse_TickSend,4); + parseable_packet(0x008c,11,clif_parse_GetCharNameRequest,7); + parseable_packet(0x0094,14,clif_parse_MoveToKafra,7,10); + parseable_packet(0x009b,26,clif_parse_WantToConnection,4,9,17,21,25); + parseable_packet(0x009f,14,clif_parse_UseItem,4,10); + parseable_packet(0x00a2,15,clif_parse_SolveCharName,11); + //parseable_packet(0x00a7,8,clif_parse_WalkToXY,5); + parseable_packet(0x00f5,8,clif_parse_TakeItem,4); + parseable_packet(0x00f7,22,clif_parse_MoveFromKafra,14,18); + parseable_packet(0x0113,22,clif_parse_UseSkillToPos,5,9,12,20); + parseable_packet(0x0116,10,clif_parse_DropItem,5,8); + parseable_packet(0x0190,19,clif_parse_ActionRequest,5,18); +#endif + +// 2007-05-07aSakexe +#if PACKETVER >= 20070507 + parseable_packet(0x01fd,15,clif_parse_RepairItem,2,4,6,7,9,11,13); +#endif + +// 2007-02-27aSakexe to 2007-10-02aSakexe +#if PACKETVER >= 20070227 + parseable_packet(0x0288,10,clif_parse_cashshop_buy,2,4,6); + packet(0x0289,12); + packet(0x02a6,22); + packet(0x02a7,22); + packet(0x02a8,162); + packet(0x02a9,58); + packet(0x02ad,8); + packet(0x02b0,85); + packet(0x02b1,-1); + packet(0x02b2,-1); + packet(0x02b3,107); + packet(0x02b4,6); + packet(0x02b5,-1); + parseable_packet(0x02b6,7,clif_parse_questStateAck,2,6); + packet(0x02b7,7); + packet(0x02b8,22); + packet(0x02b9,191); + parseable_packet(0x02ba,11,clif_parse_Hotkey,2,4,5,9); + packet(0x02bb,8); + packet(0x02bc,6); + packet(0x02bf,10); + packet(0x02c0,2); + packet(0x02c1,-1); + packet(0x02c2,-1); + parseable_packet(0x02c4,26,clif_parse_PartyInvite2,2); + packet(0x02c5,30); + packet(0x02c6,30); + parseable_packet(0x02c7,7,clif_parse_ReplyPartyInvite2,2,6); + parseable_packet(0x02c8,3,clif_parse_PartyTick,2); + packet(0x02c9,3); + packet(0x02ca,3); + packet(0x02cb,20); + packet(0x02cc,4); + packet(0x02cd,26); + packet(0x02ce,10); + packet(0x02cf,6); + packet(0x02d0,-1); + packet(0x02d1,-1); + packet(0x02d2,-1); + ack_packet(ZC_NOTIFY_BIND_ON_EQUIP,0x02d3,4,2); + packet(0x02d4,29); + packet(0x02d5,2); + parseable_packet(0x02d6,6,clif_parse_ViewPlayerEquip,2); + packet(0x02d7,-1); + parseable_packet(0x02d8,10,clif_parse_EquipTick,2,6); + packet(0x02d9,10); + packet(0x02da,3); + parseable_packet(0x02db,-1,clif_parse_BattleChat,2,4); + packet(0x02dc,-1); + packet(0x02dd,32); + packet(0x02de,6); + packet(0x02df,36); + packet(0x02e0,34); +#endif + +// 2007-10-23aSakexe +#if PACKETVER >= 20071023 + packet(0x02cb,65); + packet(0x02cd,71); +#endif + +// 2007-11-06aSakexe +#if PACKETVER >= 20071106 + packet(0x0078,55); + packet(0x007c,42); + packet(0x022c,65); + packet(0x029b,80); +#endif + +// 2007-11-13aSakexe +#if PACKETVER >= 20071113 + packet(0x02e1,33); +#endif + +// 2007-11-20aSakexe +#if PACKETVER >= 20071120 + //packet(0x01df,10 <- ???); + packet(0x02e2,14); + packet(0x02e3,25); + packet(0x02e4,8); + packet(0x02e5,8); + packet(0x02e6,6); +#endif + +// 2007-11-27aSakexe +#if PACKETVER >= 20071127 + packet(0x02e7,-1); +#endif + +// 2008-01-02aSakexe +#if PACKETVER >= 20080102 + parseable_packet(0x01df,6,clif_parse_GMReqAccountName,2); + packet(0x02e8,-1); + packet(0x02e9,-1); + packet(0x02ea,-1); + packet(0x02eb,13); + packet(0x02ec,67); + packet(0x02ed,59); + packet(0x02ee,60); + packet(0x02ef,8); +#endif + +// 2008-03-18aSakexe +#if PACKETVER >= 20080318 + packet(0x02bf,-1); + packet(0x02c0,-1); + packet(0x02f0,10); + parseable_packet(0x02f1,2,clif_parse_progressbar,0); + packet(0x02f2,2); +#endif + +// 2008-03-25bSakexe +#if PACKETVER >= 20080325 + packet(0x02f3,-1); + packet(0x02f4,-1); + packet(0x02f5,-1); + packet(0x02f6,-1); + packet(0x02f7,-1); + packet(0x02f8,-1); + packet(0x02f9,-1); + packet(0x02fa,-1); + packet(0x02fb,-1); + packet(0x02fc,-1); + packet(0x02fd,-1); + packet(0x02fe,-1); + packet(0x02ff,-1); + packet(0x0300,-1); +#endif + +// 2008-04-01aSakexe +#if PACKETVER >= 20080401 + packet(0x0301,-1); + packet(0x0302,-1); + packet(0x0303,-1); + packet(0x0304,-1); + packet(0x0305,-1); + packet(0x0306,-1); + packet(0x0307,-1); + packet(0x0308,-1); + packet(0x0309,-1); + packet(0x030a,-1); + packet(0x030b,-1); + packet(0x030c,-1); + packet(0x030d,-1); + packet(0x030e,-1); + packet(0x030f,-1); + packet(0x0310,-1); + packet(0x0311,-1); + packet(0x0312,-1); + packet(0x0313,-1); + packet(0x0314,-1); + packet(0x0315,-1); + packet(0x0316,-1); + packet(0x0317,-1); + packet(0x0318,-1); + packet(0x0319,-1); + packet(0x031a,-1); + packet(0x031b,-1); + packet(0x031c,-1); + packet(0x031d,-1); + packet(0x031e,-1); + packet(0x031f,-1); + packet(0x0320,-1); + packet(0x0321,-1); + packet(0x0322,-1); + packet(0x0323,-1); + packet(0x0324,-1); + packet(0x0325,-1); + packet(0x0326,-1); + packet(0x0327,-1); + packet(0x0328,-1); + packet(0x0329,-1); + packet(0x032a,-1); + packet(0x032b,-1); + packet(0x032c,-1); + packet(0x032d,-1); + packet(0x032e,-1); + packet(0x032f,-1); + packet(0x0330,-1); + packet(0x0331,-1); + packet(0x0332,-1); + packet(0x0333,-1); + packet(0x0334,-1); + packet(0x0335,-1); + packet(0x0336,-1); + packet(0x0337,-1); + packet(0x0338,-1); + packet(0x0339,-1); + packet(0x033a,-1); + packet(0x033b,-1); + packet(0x033c,-1); + packet(0x033d,-1); + packet(0x033e,-1); + packet(0x033f,-1); + packet(0x0340,-1); + packet(0x0341,-1); + packet(0x0342,-1); + packet(0x0343,-1); + packet(0x0344,-1); + packet(0x0345,-1); + packet(0x0346,-1); + packet(0x0347,-1); + packet(0x0348,-1); + packet(0x0349,-1); + packet(0x034a,-1); + packet(0x034b,-1); + packet(0x034c,-1); + packet(0x034d,-1); + packet(0x034e,-1); + packet(0x034f,-1); + packet(0x0350,-1); + packet(0x0351,-1); + packet(0x0352,-1); + packet(0x0353,-1); + packet(0x0354,-1); + packet(0x0355,-1); + packet(0x0356,-1); + packet(0x0357,-1); + packet(0x0358,-1); + packet(0x0359,-1); + packet(0x035a,-1); +#endif + +// 2008-05-27aSakexe +#if PACKETVER >= 20080527 + packet(0x035b,-1); + packet(0x035c,2); + packet(0x035d,-1); + packet(0x035e,2); + packet(0x035f,-1); + packet(0x0389,-1); +#endif + +// 2008-08-20aSakexe +#if PACKETVER >= 20080820 + packet(0x040c,-1); + packet(0x040d,-1); + packet(0x040e,-1); + packet(0x040f,-1); + packet(0x0410,-1); + packet(0x0411,-1); + packet(0x0412,-1); + packet(0x0413,-1); + packet(0x0414,-1); + packet(0x0415,-1); + packet(0x0416,-1); + packet(0x0417,-1); + packet(0x0418,-1); + packet(0x0419,-1); + packet(0x041a,-1); + packet(0x041b,-1); + packet(0x041c,-1); + packet(0x041d,-1); + packet(0x041e,-1); + packet(0x041f,-1); + packet(0x0420,-1); + packet(0x0421,-1); + packet(0x0422,-1); + packet(0x0423,-1); + packet(0x0424,-1); + packet(0x0425,-1); + packet(0x0426,-1); + packet(0x0427,-1); + packet(0x0428,-1); + packet(0x0429,-1); + packet(0x042a,-1); + packet(0x042b,-1); + packet(0x042c,-1); + packet(0x042d,-1); + packet(0x042e,-1); + packet(0x042f,-1); + packet(0x0430,-1); + packet(0x0431,-1); + packet(0x0432,-1); + packet(0x0433,-1); + packet(0x0434,-1); + packet(0x0435,-1); +#endif + +// 2008-09-10aSakexe +#if PACKETVER >= 20080910 + parseable_packet(0x0436,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0437,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0438,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0439,8,clif_parse_UseItem,2,4); +#endif + +// 2008-11-13aSakexe +#if PACKETVER >= 20081113 + packet(0x043d,8); + packet(0x043e,-1); + packet(0x043f,8); +#endif + +// 2008-11-26aSakexe +#if PACKETVER >= 20081126 + packet(0x01a2,37); + packet(0x0440,10); + packet(0x0441,4); +#endif + +// 2008-12-10aSakexe +#if PACKETVER >= 20081210 + packet(0x0442,-1); + parseable_packet(0x0443,8,clif_parse_SkillSelectMenu,2,6); +#endif + +// 2009-01-14aSakexe +#if PACKETVER >= 20090114 + packet(0x043f,25); + packet(0x0444,-1); + packet(0x0445,10); +#endif + +// 2009-02-18aSakexe +#if PACKETVER >= 20090218 + packet(0x0446,14); +#endif + +// 2009-02-25aSakexe +#if PACKETVER >= 20090225 + packet(0x0448,-1); +#endif + +// 2009-03-30aSakexe +#if PACKETVER >= 20090330 + packet(0x0449,4); +#endif + +// 2009-04-08aSakexe +#if PACKETVER >= 20090408 + packet(0x02a6,-1); + packet(0x02a7,-1); + parseable_packet(0x044a,6,clif_parse_client_version,2); +#endif + +// Renewal Clients +// 2008-08-27aRagexeRE +#if PACKETVER >= 20080827 + parseable_packet(0x0072,22,clif_parse_UseSkillToId,9,15,18); + packet(0x007c,44); + parseable_packet(0x007e,105,clif_parse_UseSkillToPosMoreInfo,10,14,18,23,25); + parseable_packet(0x0085,10,clif_parse_ChangeDir,4,9); + parseable_packet(0x0089,11,clif_parse_TickSend,7); + parseable_packet(0x008c,14,clif_parse_GetCharNameRequest,10); + parseable_packet(0x0094,19,clif_parse_MoveToKafra,3,15); + parseable_packet(0x009b,34,clif_parse_WantToConnection,7,15,25,29,33); + parseable_packet(0x009f,20,clif_parse_UseItem,7,20); + parseable_packet(0x00a2,14,clif_parse_SolveCharName,10); + parseable_packet(0x00a7,9,clif_parse_WalkToXY,6); + parseable_packet(0x00f5,11,clif_parse_TakeItem,7); + parseable_packet(0x00f7,17,clif_parse_MoveFromKafra,3,13); + parseable_packet(0x0113,25,clif_parse_UseSkillToPos,10,14,18,23); + parseable_packet(0x0116,17,clif_parse_DropItem,6,15); + parseable_packet(0x0190,23,clif_parse_ActionRequest,9,22); + packet(0x02e2,20); + packet(0x02e3,22); + packet(0x02e4,11); + packet(0x02e5,9); +#endif + +// 2008-09-10aRagexeRE +#if PACKETVER >= 20080910 + parseable_packet(0x0436,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0437,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0438,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0439,8,clif_parse_UseItem,2,4); +#endif + +// 2008-11-12aRagexeRE +#if PACKETVER >= 20081112 + packet(0x043d,8); + //packet(0x043e,-1); + packet(0x043f,8); +#endif + +// 2008-12-17aRagexeRE +#if PACKETVER >= 20081217 + packet(0x01a2,37); + //packet(0x0440,10); + //packet(0x0441,4); + //packet(0x0442,8); + //packet(0x0443,8); +#endif + +// 2008-12-17bRagexeRE +#if PACKETVER >= 20081217 + packet(0x006d,114); +#endif + +// 2009-01-21aRagexeRE +#if PACKETVER >= 20090121 + packet(0x043f,25); + //packet(0x0444,-1); + //packet(0x0445,10); +#endif + +// 2009-02-18aRagexeRE +#if PACKETVER >= 20090218 + //packet(0x0446,14); +#endif + +// 2009-02-26cRagexeRE +#if PACKETVER >= 20090226 + //packet(0x0448,-1); +#endif + +// 2009-04-01aRagexeRE +#if PACKETVER >= 20090401 + //packet(0x0449,4); +#endif + +// 2009-05-14aRagexeRE +#if PACKETVER >= 20090514 + //packet(0x044b,2); +#endif + +// 2009-05-20aRagexeRE +#if PACKETVER >= 20090520 + //packet(0x07d0,6); + //packet(0x07d1,2); + //packet(0x07d2,-1); + //packet(0x07d3,4); + //packet(0x07d4,4); + //packet(0x07d5,4); + //packet(0x07d6,4); + //packet(0x0447,2); +#endif + +// 2009-06-03aRagexeRE +#if PACKETVER >= 20090603 + parseable_packet(0x07d7,8,clif_parse_PartyChangeOption,2,6,7); + packet(0x07d8,8); + packet(0x07d9,254); + parseable_packet(0x07da,6,clif_parse_PartyChangeLeader,2); +#endif + +// 2009-06-10aRagexeRE +#if PACKETVER >= 20090610 + //packet(0x07db,8); +#endif + +// 2009-06-17aRagexeRE +#if PACKETVER >= 20090617 + packet(0x07d9,268); + //packet(0x07dc,6); + //packet(0x07dd,54); + //packet(0x07de,30); + //packet(0x07df,54); +#endif + +// 2009-07-01aRagexeRE +#if PACKETVER >= 20090701 + //packet(0x0275,37); + //packet(0x0276,-1); +#endif + +// 2009-07-08aRagexeRE +#if PACKETVER >= 20090708 + //packet(0x07e0,58); +#endif + +// 2009-07-15aRagexeRE +#if PACKETVER >= 20090715 + packet(0x07e1,15); +#endif + +// 2009-08-05aRagexeRE +#if PACKETVER >= 20090805 + packet(0x07e2,8); +#endif + +// 2009-08-18aRagexeRE +#if PACKETVER >= 20090818 + packet(0x07e3,6); + parseable_packet(0x07e4,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + packet(0x07e6,8); +#endif + +// 2009-08-25aRagexeRE +#if PACKETVER >= 20090825 + //packet(0x07e6,28); + packet(0x07e7,5); +#endif + +// 2009-09-22aRagexeRE +#if PACKETVER >= 20090922 + packet(0x07e5,8); + packet(0x07e6,8); + packet(0x07e7,32); + packet(0x07e8,-1); + packet(0x07e9,5); +#endif + +// 2009-09-29aRagexeRE +#if PACKETVER >= 20090929 + //packet(0x07ea,2); + //packet(0x07eb,-1); + //packet(0x07ec,6); + //packet(0x07ed,8); + //packet(0x07ee,6); + //packet(0x07ef,8); + //packet(0x07f0,4); + //packet(0x07f2,4); + //packet(0x07f3,3); +#endif + +// 2009-10-06aRagexeRE +#if PACKETVER >= 20091006 + //packet(0x07ec,8); + //packet(0x07ed,10); + //packet(0x07f0,8); + //packet(0x07f1,15); + //packet(0x07f2,6); + //packet(0x07f3,4); + //packet(0x07f4,3); +#endif + +// 2009-10-27aRagexeRE +#if PACKETVER >= 20091027 + parseable_packet(0x07f5,6,clif_parse_GMFullStrip,2); + packet(0x07f6,14); +#endif + +// 2009-11-03aRagexeRE +#if PACKETVER >= 20091103 + packet(0x07f7,-1); + packet(0x07f8,-1); + packet(0x07f9,-1); +#endif + +// 2009-11-17aRagexeRE +#if PACKETVER >= 20091117 + packet(0x07fa,8); +#endif + +// 2009-11-24aRagexeRE +#if PACKETVER >= 20091124 + packet(0x07fb,25); +#endif + +// 2009-12-01aRagexeRE +#if PACKETVER >= 20091201 + packet(0x07fc,10); + ack_packet(ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN,0x07fd,-1,0); + packet(0x07fe,26); + //packet(0x07ff,-1); +#endif + +// 2009-12-15aRagexeRE +#if PACKETVER >= 20091215 + packet(0x0800,-1); + //packet(0x0801,-1); +#endif + +// 2009-12-22aRagexeRE +#if PACKETVER >= 2009122 + parseable_packet(0x0802,18,clif_parse_PartyBookingRegisterReq,2,4,6); // Booking System + packet(0x0803,4); + packet(0x0804,8); // Booking System + packet(0x0805,-1); + parseable_packet(0x0806,4,clif_parse_PartyBookingDeleteReq,2); // Booking System + //packet(0x0807,2); + packet(0x0808,4); // Booking System + //packet(0x0809,14); + //packet(0x080A,50); + //packet(0x080B,18); + //packet(0x080C,6); +#endif + +// 2009-12-29aRagexeRE +#if PACKETVER >= 20091229 + parseable_packet(0x0804,14,clif_parse_PartyBookingSearchReq,2,4,6,8,12); // Booking System + parseable_packet(0x0806,2,clif_parse_PartyBookingDeleteReq,0); // Booking System + packet(0x0807,4); + parseable_packet(0x0808,14,clif_parse_PartyBookingUpdateReq,2); // Booking System + packet(0x0809,50); + packet(0x080A,18); + packet(0x080B,6); // Booking System +#endif + +// 2010-01-05aRagexeRE +#if PACKETVER >= 20100105 + parseable_packet(0x0801,-1,clif_parse_PurchaseReq2,2,4,8,12); +#endif + +// 2010-01-26aRagexeRE +#if PACKETVER >= 20100126 + //packet(0x080C,2); + //packet(0x080D,3); + packet(0x080E,14); +#endif + +// 2010-02-09aRagexeRE +#if PACKETVER >= 20100209 + //packet(0x07F0,6); +#endif + +// 2010-02-23aRagexeRE +#if PACKETVER >= 20100223 + packet(0x080F,20); +#endif + +// 2010-03-03aRagexeRE +#if PACKETVER >= 20100303 + packet(0x0810,3); + parseable_packet(0x0811,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + //packet(0x0812,86); + //packet(0x0813,6); + //packet(0x0814,6); + //packet(0x0815,-1); + //packet(0x0817,-1); + //packet(0x0818,6); + //packet(0x0819,4); +#endif + +// 2010-03-09aRagexeRE +#if PACKETVER >= 20100309 + packet(0x0813,-1); + //packet(0x0814,2); + //packet(0x0815,6); + packet(0x0816,6); + packet(0x0818,-1); + //packet(0x0819,10); + //packet(0x081A,4); + //packet(0x081B,4); + //packet(0x081C,6); + packet(0x081d,22); + packet(0x081e,8); +#endif + +// 2010-03-23aRagexeRE +#if PACKETVER >= 20100323 + //packet(0x081F,-1); +#endif + +// 2010-04-06aRagexeRE +#if PACKETVER >= 20100406 + //packet(0x081A,6); +#endif + +// 2010-04-13aRagexeRE +#if PACKETVER >= 20100413 + //packet(0x081A,10); + packet(0x0820,11); + //packet(0x0821,2); + //packet(0x0822,9); + //packet(0x0823,-1); +#endif + +// 2010-04-14dRagexeRE +#if PACKETVER >= 20100414 + //packet(0x081B,8); +#endif + +// 2010-04-20aRagexeRE +#if PACKETVER >= 20100420 + packet(0x0812,8); + packet(0x0814,86); + parseable_packet(0x0815,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0817,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0819,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + packet(0x081a,4); + packet(0x081b,10); + packet(0x081c,10); + packet(0x0824,6); +#endif + +// 2010-06-01aRagexeRE +#if PACKETVER >= 20100601 + //packet(0x0825,-1); + //packet(0x0826,4); + parseable_packet(0x0835,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0836,-1); + packet(0x0837,3); + //packet(0x0838,3); +#endif + +// 2010-06-08aRagexeRE +#if PACKETVER >= 20100608 + parseable_packet(0x0838,2,clif_parse_SearchStoreInfoNextPage,0); + packet(0x083A,4); // Search Stalls Feature + parseable_packet(0x083B,2,clif_parse_CloseSearchStoreInfo,0); + parseable_packet(0x083C,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + packet(0x083D,6); +#endif + +// 2010-06-15aRagexeRE +#if PACKETVER >= 20100615 + //packet(0x083E,26); +#endif + +// 2010-06-22aRagexeRE +#if PACKETVER >= 20100622 + //packet(0x083F,22); +#endif + +// 2010-06-29aRagexeRE +#if PACKETVER >= 20100629 + ack_packet(ZC_WEAR_EQUIP_ACK,0x00AA,9,2,4,6,8); + //packet(0x07F1,18); + //packet(0x07F2,8); + //packet(0x07F3,6); +#endif + +// 2010-07-01aRagexeRE +#if PACKETVER >= 20100701 + packet(0x083A,5); // Search Stalls Feature +#endif + +// 2010-07-13aRagexeRE +#if PACKETVER >= 20100713 + //packet(0x0827,6); + //packet(0x0828,14); + //packet(0x0829,6); + //packet(0x082A,10); + //packet(0x082B,6); + //packet(0x082C,14); + //packet(0x0840,-1); + //packet(0x0841,19); +#endif + +// 2010-07-14aRagexeRE +#if PACKETVER >= 20100714 + //packet(0x0841,4); +#endif + +// 2010-08-03aRagexeRE +#if PACKETVER >= 20100803 + packet(0x0839,66); + parseable_packet(0x0842,6,clif_parse_GMRecall2,2); + parseable_packet(0x0843,6,clif_parse_GMRemove2,2); +#endif + +// 2010-11-24aRagexeRE +#if PACKETVER >= 20101124 + parseable_packet(0x0288,-1,clif_parse_cashshop_buy,2,4,8,10); + parseable_packet(0x0436,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x035f,5,clif_parse_WalkToXY,2); + parseable_packet(0x0360,6,clif_parse_TickSend,2); + parseable_packet(0x0361,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0362,6,clif_parse_TakeItem,2); + parseable_packet(0x0363,6,clif_parse_DropItem,2,4); + parseable_packet(0x0364,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0365,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0366,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0367,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0369,6,clif_parse_SolveCharName,2); + packet(0x0856,-1); + packet(0x0857,-1); + packet(0x0858,-1); + packet(0x0859,-1); + ack_packet(ZC_WEAR_EQUIP_ACK,0x08d0,9,2,4,6,8); +#endif + +// 2011-10-05aRagexeRE +#if PACKETVER >= 20111005 + parseable_packet(0x0364,5,clif_parse_WalkToXY,2); + parseable_packet(0x0817,6,clif_parse_TickSend,2); + parseable_packet(0x0366,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0815,6,clif_parse_TakeItem,2); + parseable_packet(0x0885,6,clif_parse_DropItem,2,4); + parseable_packet(0x0893,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0897,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0369,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x08ad,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x088a,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0838,6,clif_parse_SolveCharName,2); + parseable_packet(0x0439,8,clif_parse_UseItem,2,4); + packet(0x08d2,10); + packet(0x08d1,7); + parseable_packet(0x0846,4,clif_parse_CashShopReqTab,2); //2011-07-18 +#endif + +// 2011-11-02aRagexe +#if PACKETVER >= 20111102 + parseable_packet(0x0436,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0898,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0281,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x088d,26,clif_parse_PartyInvite2,2); + parseable_packet(0x083c,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x08aa,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x02c4,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0811,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + packet(0x0890,8); + parseable_packet(0x08a5,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0835,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x089b,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x08a1,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x089e,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x08ab,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x088b,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x08a2,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + packet(0x08cf,10); //Amulet spirits +#endif + +// 2012-03-07fRagexeRE +#if PACKETVER >= 20120307 + parseable_packet(0x086A,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0887,6,clif_parse_TickSend,2); + parseable_packet(0x0890,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0865,6,clif_parse_TakeItem,2); + parseable_packet(0x02C4,6,clif_parse_DropItem,2,4); + parseable_packet(0x093B,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0963,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0863,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0861,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0929,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0885,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0889,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0870,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + //parseable_packet(0x0926,41,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0884,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0439,8,clif_parse_UseItem,2,4); + parseable_packet(0x0365,41,clif_parse_PartyBookingRegisterReq,2,4,6); + // New Packet + packet(0x090F,-1); // ZC_NOTIFY_NEWENTRY7 + packet(0x0914,-1); // ZC_NOTIFY_MOVEENTRY8 + packet(0x0915,-1); // ZC_NOTIFY_STANDENTRY9 +#endif + +// 2012-04-10aRagexeRE +#if PACKETVER >= 20120410 + parseable_packet(0x01fd,15,clif_parse_RepairItem,2,4,6,7,9,11,13); + parseable_packet(0x089c,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0885,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0961,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0288,-1,clif_parse_cashshop_buy,2,4,8,10); + parseable_packet(0x091c,26,clif_parse_PartyInvite2,2); + parseable_packet(0x094b,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0439,8,clif_parse_UseItem,2,4); + parseable_packet(0x0945,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0886,6,clif_parse_TickSend,2); + parseable_packet(0x0871,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0938,6,clif_parse_TakeItem,2); + parseable_packet(0x0891,6,clif_parse_DropItem,2,4); + parseable_packet(0x086c,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a6,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0889,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0884,6,clif_parse_SolveCharName,2); + packet(0x08e6,4); + parseable_packet(0x08e7,10,clif_parse_PartyBookingSearchReq,2,4,6,8,12); + packet(0x08e8,-1); + parseable_packet(0x08e9,2,clif_parse_PartyBookingDeleteReq,0); + packet(0x08ea,4); + parseable_packet(0x08eb,39,clif_parse_PartyBookingUpdateReq,2); + packet(0x08ec,73); + packet(0x08ed,43); + packet(0x08ee,6); + parseable_packet(0x08ef,6,NULL,2); + packet(0x08f0,6); + parseable_packet(0x08f1,6,NULL,2); + packet(0x08f2,36); + packet(0x08f3,-1); + packet(0x08f4,6); + parseable_packet(0x08f5,-1,NULL,2,4); + packet(0x08f6,22); + packet(0x08f7,3); + packet(0x08f8,7); + packet(0x08f9,6); + packet(0x08fa,6); + parseable_packet(0x08fb,6,NULL,2); + parseable_packet(0x0907,5,clif_parse_MoveItem,2,4); + packet(0x0908,5); + parseable_packet(0x08d7,28,NULL,2,4); + packet(0x0977,14); //Monster HP Bar + parseable_packet(0x0916,26,clif_parse_GuildInvite2,2); + parseable_packet(0x091d,41,clif_parse_PartyBookingRegisterReq,2,4,6); + ack_packet(ZC_PERSONAL_INFOMATION,0x08cb,10,2,4,6,8,10,11,13,15); //Still need further information + // Merge Item + ack_packet(ZC_MERGE_ITEM_OPEN,0x096D,-1,2,4); // ZC_MERGE_ITEM_OPEN + parseable_packet(0x096E,-1,clif_parse_merge_item_req,2,4); // CZ_REQ_MERGE_ITEM + ack_packet(ZC_ACK_MERGE_ITEM,0x096F,7,2,4,6); // ZC_ACK_MERGE_ITEM + parseable_packet(0x0974,2,clif_parse_merge_item_cancel,0); // CZ_CANCEL_MERGE_ITEM + parseable_packet(0x0844,2,clif_parse_cashshop_open_request,0); + packet(0x0849,16); //clif_cashshop_result + parseable_packet(0x0848,-1,clif_parse_cashshop_buy,2,6,4,10); + parseable_packet(0x084a,2,clif_parse_cashshop_close,0); + parseable_packet(0x08c9,2,clif_parse_cashshop_list_request,0); +#endif + +// 2012-04-18aRagexeRE [Special Thanks to Judas!] +#if PACKETVER >= 20120418 + parseable_packet(0x023B,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x08A8,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x08E5,41,clif_parse_PartyBookingRegisterReq,2,4,6); //Added to prevent disconnections + packet(0x08d2,10); +#endif + +// 2012-06-18 +#if PACKETVER >= 20120618 + packet(0x0983,29); // ZC_MSG_STATE_CHANGE3 + parseable_packet(0x0861,41,clif_parse_PartyBookingRegisterReq,2,4,6); //actually 12-05-03 +#endif + +// 2012-07-02aRagexeRE (unstable) +#if PACKETVER >= 20120702 + parseable_packet(0x0363,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0364,6,clif_parse_TickSend,2); + parseable_packet(0x085a,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0861,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0862,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0863,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0886,6,clif_parse_SolveCharName,2); + parseable_packet(0x0889,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x089e,6,clif_parse_DropItem,2,4); + parseable_packet(0x089f,6,clif_parse_TakeItem,2); + parseable_packet(0x08a0,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x094a,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0953,5,clif_parse_WalkToXY,2); + parseable_packet(0x0960,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0879,41,clif_parse_PartyBookingRegisterReq,2,4,6); +#endif + +// 2013-03-20Ragexe (Judas) +#if PACKETVER >= 20130320 + parseable_packet(0x014f,6,clif_parse_GuildRequestInfo,2); + parseable_packet(0x01fd,15,clif_parse_RepairItem,2,4,6,7,9,11,13); + //parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035f,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0363,6,clif_parse_TickSend,2); + parseable_packet(0x0365,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0438,6,clif_parse_DropItem,2,4); + parseable_packet(0x0447,2,clif_parse_blocking_playcancel,0); // CZ_BLOCKING_PLAY_CANCEL + parseable_packet(0x044A,6,clif_parse_client_version,2); + parseable_packet(0x0844,2,clif_parse_cashshop_open_request,0); + packet(0x0849,16); //clif_cashshop_result + parseable_packet(0x0848,-1,clif_parse_cashshop_buy,2,6,4,10); + parseable_packet(0x084a,2,clif_parse_cashshop_close,0); + packet(0x084b,19); //fallitem4 + parseable_packet(0x085a,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x085d,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0868,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x086d,26,clif_parse_PartyInvite2,2); + parseable_packet(0x086f,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0874,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0881,5,clif_parse_WalkToXY,2); + parseable_packet(0x0886,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0888,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x088e,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0897,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0898,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x089b,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x08ac,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08c9,2,clif_parse_cashshop_list_request,0); + packet(0x08cf,10); //Amulet spirits + packet(0x08d2,10); + parseable_packet(0x0907,5,clif_parse_MoveItem,2,4); + packet(0x0908,5); + parseable_packet(0x0922,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + //parseable_packet(0x092e,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0933,6,clif_parse_TakeItem,2); + parseable_packet(0x0938,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x093f,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0947,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x094c,6,clif_parse_SolveCharName,2); + parseable_packet(0x094e,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0959,10,clif_parse_UseSkillToPos,2,4,6,8); + //parseable_packet(0x095a,8,clif_parse_Mail_setattach,2,4); + packet(0x0977,14); //Monster HP Bar + parseable_packet(0x0978,6,clif_parse_reqworldinfo,2); + packet(0x0979,50); //ackworldinfo + ack_packet(ZC_PERSONAL_INFOMATION,0x097b,16,2,4,8,12,16,17,21,25); //Still need further information + //ack_packet(ZC_PERSONAL_INFOMATION_CHN,0x0981,12,2,4,6,8,12,13,15,17,10); // Disabled until further information is found. + packet(0x0990,31); //additem + packet(0x0991,-1); //inv itemlist normal + packet(0x0992,-1); //inv itemlist equip + packet(0x0993,-1); //cart itemlist normal + packet(0x0994,-1); //cart itemlist equip + packet(0x0995,-1); //store itemlist normal + packet(0x0996,-1); //store itemlist equip + packet(0x0997,-1); //ZC_EQUIPWIN_MICROSCOPE_V5 + parseable_packet(0x0998,8,clif_parse_EquipItem,2,4); // CZ_REQ_WEAR_EQUIP_V5 + ack_packet(ZC_WEAR_EQUIP_ACK,0x0999,11,2,4,8,10); // cz_wear_equipv5 + packet(0x099a,9); // take_off_equipv5 + packet(0x099b,8); //maptypeproperty2 + // New Packets + packet(0x08C8,34); // ZC_NOTIFY_ACT3 + packet(0x08ff,24); // ZC_EFST_SET_ENTER + packet(0x0984,28); // ZC_EFST_SET_ENTER2 + packet(0x099f,22); // ZC_SKILL_ENTRY4 +#endif + +// 2013-06-05Ragexe +#if PACKETVER >= 20130605 + parseable_packet(0x097C,4,clif_parse_ranklist,2); +#endif + +// 2013-07-10Ragexe +#if PACKETVER >= 20130710 + parseable_packet(0x0848,-1,clif_parse_cashshop_buy,2,6,4,10); + packet(0x097D,288); //ZC_ACK_RANKING +#endif + +// 2013-07-17Ragexe +#if PACKETVER >= 20130717 + ack_packet(ZC_BANKING_CHECK,0x09A6,12,2,10); + parseable_packet(0x09A7,10,clif_parse_BankDeposit,2,6); + ack_packet(ZC_ACK_BANKING_DEPOSIT,0x09A8,16,2,4,12); + parseable_packet(0x09A9,10,clif_parse_BankWithdraw,2,6); + ack_packet(ZC_ACK_BANKING_WITHDRAW,0x09AA,16,2,4,12); + parseable_packet(0x09AB,6,clif_parse_BankCheck,2); + parseable_packet(0x09B6,6,clif_parse_BankOpen,2); + ack_packet(ZC_ACK_OPEN_BANKING,0x09B7,4,2); + parseable_packet(0x09B8,6,clif_parse_BankClose,2); + ack_packet(ZC_ACK_CLOSE_BANKING,0x09B9,4,2); +#endif + +// 2013-07-31cRagexe +#if PACKETVER >= 20130731 + packet(0x09ca,23); // ZC_SKILL_ENTRY5 + packet(0x09cb,17); // ZC_USE_SKILL2 +#endif + +// 2013-08-07Ragexe +#if PACKETVER >= 20130807 + ack_packet(ZC_C_MARKERINFO,0x09C1,10,2,6,8); + // Merge Item + ack_packet(ZC_MERGE_ITEM_OPEN,0x096D,-1,2,4); // ZC_MERGE_ITEM_OPEN + parseable_packet(0x096E,-1,clif_parse_merge_item_req,2,4); // CZ_REQ_MERGE_ITEM + ack_packet(ZC_ACK_MERGE_ITEM,0x096F,7,2,4,6,7); // ZC_ACK_MERGE_ITEM + parseable_packet(0x0974,2,clif_parse_merge_item_cancel,0); // CZ_CANCEL_MERGE_ITEM +#endif + +// 2013-12-23Ragexe +#if PACKETVER >= 20131223 + //New Packets + //packet(0x097E,12); //ZC_UPDATE_RANKING_POINT + parseable_packet(0x09CE,102,clif_parse_GM_Item_Monster,2); + parseable_packet(0x09D4,2,clif_parse_NPCShopClosed,0); + //NPC Market + packet(0x09D5,-1); + parseable_packet(0x09D6,-1,clif_parse_NPCMarketPurchase,2,4,6); + packet(0x09D7,-1); + parseable_packet(0x09D8,2,clif_parse_NPCMarketClosed,0); + // Clan System + packet(0x0988,6); + packet(0x0989,2); + packet(0x098A,-1); + parseable_packet(0x098D,-1,clif_parse_clan_chat,2,4); + packet(0x098E,-1); + // Sale + parseable_packet(0x09AC,-1,clif_parse_sale_search,2,4,8); + packet(0x09AD,8); + parseable_packet(0x09AE,17,clif_parse_sale_add,2,6,8,12,16); + packet(0x09AF,4); + parseable_packet(0x09B0,8,clif_parse_sale_remove,2,6); + packet(0x09B1,4); + packet(0x09B2,8); + packet(0x09B3,4); + parseable_packet(0x09B4,6,clif_parse_sale_open,2); + parseable_packet(0x09BC,6,clif_parse_sale_close,2); + parseable_packet(0x09C3,8,clif_parse_sale_refresh,2,6); + packet(0x09C4,8); + // New Packet + packet(0x097A,-1); // ZC_ALL_QUEST_LIST2 + packet(0x09DB,-1); // ZC_NOTIFY_MOVEENTRY10 + packet(0x09DC,-1); // ZC_NOTIFY_NEWENTRY10 + packet(0x09DD,-1); // ZC_NOTIFY_STANDENTRY10 + packet(0x09DF,7); // ZC_ACK_WHISPER02 +#endif + +// 2014-10-16Ragexe +#if PACKETVER >= 20141016 + packet(0x09DF,7); + // New packet + packet(0x0A00,269); // ZC_SHORTCUT_KEY_LIST_V3 + parseable_packet(0x0A01,3,clif_parse_HotkeyRowShift,2); // CZ_SHORTCUTKEYBAR_ROTATE + packet(0x0A02,4); // ZC_DRESSROOM_OPEN + packet(0x0A0E,14); // ZC_BATTLEFIELD_NOTIFY_HP2 + packet(0x09F7,75); // ZC_PROPERTY_HOMUN_2 + packet(0x09E5,18); // ZC_DELETEITEM_FROM_MCSTORE2 + packet(0x09E6,22); // ZC_UPDATE_ITEM_FROM_BUYING_STORE2 + // Roulette System [Yommy] + parseable_packet(0x0A19,2,clif_parse_RouletteOpen,0); // CZ_REQ_OPEN_ROULETTE + packet(0x0A1A,23); // ZC_ACK_OPEN_ROULETTE + parseable_packet(0x0A1B,2,clif_parse_RouletteInfo,0); // CZ_REQ_ROULETTE_INFO + packet(0x0A1C,-1); // ZC_ACK_ROULETTE_INFO + parseable_packet(0x0A1D,2,clif_parse_RouletteClose,0); // CZ_REQ_CLOSE_ROULETTE + packet(0x0A1E,3); // ZC_ACK_CLOSE_ROULETTE + parseable_packet(0x0A1F,2,clif_parse_RouletteGenerate,0); // CZ_REQ_GENERATE_ROULETTE + packet(0x0A20,21); // ZC_ACK_GENERATE_ROULETTE + parseable_packet(0x0A21,3,clif_parse_RouletteRecvItem,2); // CZ_RECV_ROULETTE_ITEM + packet(0x0A22,5); // ZC_RECV_ROULETTE_ITEM +#endif + +// 2014-10-22bRagexe +#if PACKETVER >= 20141022 + packet(0x006d,149); + packet(0x08e3,149); + // New Packet + packet(0x0A18,14); // ZC_ACCEPT_ENTER3 + packet(0x0A28,3); // ZC_ACK_OPENSTORE2 + packet(0x09FD,-1); // ZC_NOTIFY_MOVEENTRY11 + packet(0x09FE,-1); // ZC_NOTIFY_NEWENTRY11 + packet(0x09FF,-1); // ZC_NOTIFY_STANDENTRY11 + //packet(0x09F8,-1); // ZC_ALL_QUEST_LIST3 +#endif + +// 2015-05-13aRagexe +#if PACKETVER >= 20150513 + // New Packets + packet(0xA3B,-1); // ZC_HAT_EFFECT + // RODEX Mail system + packet(0x09E7,3); // ZC_NOTIFY_UNREADMAIL + parseable_packet(0x09E8,11,clif_parse_Mail_refreshinbox,2,3); // CZ_OPEN_MAILBOX + parseable_packet(0x09E9,2,clif_parse_dull,0); // CZ_CLOSE_MAILBOX + parseable_packet(0x09EA,11,clif_parse_Mail_read,2,3); // CZ_REQ_READ_MAIL + packet(0x09EB,-1); // ZC_ACK_READ_MAIL + parseable_packet(0x09EC,-1,clif_parse_Mail_send,2,4,28,52,60,62,64); // CZ_REQ_WRITE_MAIL + packet(0x09ED,3); // ZC_ACK_WRITE_MAIL + parseable_packet(0x09EE,11,clif_parse_Mail_refreshinbox,2,3); // CZ_REQ_NEXT_MAIL_LIST + parseable_packet(0x09EF,11,clif_parse_Mail_refreshinbox,2,3); // CZ_REQ_REFRESH_MAIL_LIST + packet(0x09F0,-1); // ZC_ACK_MAIL_LIST + parseable_packet(0x09F1,11,clif_parse_Mail_getattach,0); // CZ_REQ_ZENY_FROM_MAIL + packet(0x09F2,12); // ZC_ACK_ZENY_FROM_MAIL + parseable_packet(0x09F3,11,clif_parse_Mail_getattach,0); // CZ_REQ_ITEM_FROM_MAIL + packet(0x09F4,12); // ZC_ACK_ITEM_FROM_MAIL + parseable_packet(0x09F5,11,clif_parse_Mail_delete,0); // CZ_REQ_DELETE_MAIL + packet(0x09F6,11); // ZC_ACK_DELETE_MAIL + parseable_packet(0x0A03,2,clif_parse_Mail_cancelwrite,0); // CZ_REQ_CANCEL_WRITE_MAIL + parseable_packet(0x0A04,6,clif_parse_Mail_setattach,2,4); // CZ_REQ_ADD_ITEM_TO_MAIL + packet(0x0A05,53); // ZC_ACK_ADD_ITEM_TO_MAIL + parseable_packet(0x0A06,6,clif_parse_Mail_winopen,2,4); // CZ_REQ_REMOVE_ITEM_MAIL + packet(0x0A07,9); // ZC_ACK_REMOVE_ITEM_MAIL + parseable_packet(0x0A08,26,clif_parse_Mail_beginwrite,0); // CZ_REQ_OPEN_WRITE_MAIL + packet(0x0A12,27); // ZC_ACK_OPEN_WRITE_MAIL + parseable_packet(0x0A13,26,clif_parse_Mail_Receiver_Check,2); // CZ_CHECK_RECEIVE_CHARACTER_NAME + packet(0x0A14,10); // ZC_CHECK_RECEIVE_CHARACTER_NAME + packet(0x0A32,2); // ZC_OPEN_RODEX_THROUGH_NPC_ONLY + // New EquipPackets Support + packet(0x0A09,45); // ZC_ADD_EXCHANGE_ITEM3 + packet(0x0A0A,47); // ZC_ADD_ITEM_TO_STORE3 + packet(0x0A0B,47); // ZC_ADD_ITEM_TO_CART3 + packet(0x0A0C,56); // ZC_ITEM_PICKUP_ACK_V6 + packet(0x0A0D,-1); // ZC_INVENTORY_ITEMLIST_EQUIP_V6 + packet(0x0A0F,-1); // ZC_CART_ITEMLIST_EQUIP_V6 + packet(0x0A10,-1); // ZC_STORE_ITEMLIST_EQUIP_V6 + packet(0x0A2D,-1); // ZC_EQUIPWIN_MICROSCOPE_V6 + // OneClick Itemidentify + parseable_packet(0x0A35,4,clif_parse_Oneclick_Itemidentify,2); // CZ_REQ_ONECLICK_ITEMIDENTIFY + // Achievement System + packet(0x0A23,-1); // ZC_ALL_ACH_LIST + packet(0x0A24,66); // ZC_ACH_UPDATE + parseable_packet(0x0A25,6,clif_parse_dull,0); // CZ_REQ_ACH_REWARD + packet(0x0A26,7); // ZC_REQ_ACH_REWARD_ACK + // Title System + parseable_packet(0x0A2E,6,clif_parse_dull,0); // CZ_REQ_CHANGE_TITLE + packet(0x0A2F,7); // ZC_ACK_CHANGE_TITLE + packet(0x0A30,106); // ZC_ACK_REQNAMEALL2 + // Pet Evolution System + parseable_packet(0x09FB,-1,clif_parse_dull,0); // CZ_PET_EVOLUTION + packet(0x09FC,6); // ZC_PET_EVOLUTION_RESULT +#endif + +// 2015-05-20aRagexe +#if PACKETVER >= 20150520 + parseable_packet(0x0A3D,18,clif_parse_sale_add,2,6,8,12,16); +#endif + +// 2015-09-16Ragexe +#if PACKETVER >= 20150916 + // New Packet + packet(0x097F,-1); // ZC_SELECTCART + parseable_packet(0x0980,7,clif_parse_SelectCart,2,6); // CZ_SELECTCART +#endif + +// 2016-03-02bRagexe +#if PACKETVER >= 20160302 + packet(0x0A51,34); +#endif + +// 2016-03-30aRagexe +#if PACKETVER >= 20160330 + parseable_packet(0x0A6E,-1,clif_parse_Mail_send,2,4,28,52,60,62,64,68); // CZ_REQ_WRITE_MAIL2 +#endif + +// 2016-06-01aRagexe +#if PACKETVER >= 20160601 + packet(0x0A7D,-1); +#endif + +// 2017-05-02dRagexeRE +#if PACKETVER >= 20170502 + packet(0x0A43,85); + packet(0x0A44,-1); + packet(0x0ABD,10); +#endif + +#endif /* _CLIF_PACKETDB_H_ */ diff --git a/src/map/clif_shuffle.h b/src/map/clif_shuffle.h new file mode 100644 index 0000000000..24351d1cf5 --- /dev/null +++ b/src/map/clif_shuffle.h @@ -0,0 +1,3511 @@ +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#ifndef _CLIF_SHUFFLE_H_ +#define _CLIF_SHUFFLE_H_ + +// 2013-05-15aRagexe +#if PACKETVER == 20130515 + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + //parseable_packet(0x0862,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0887,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08A1,6,clif_parse_TakeItem,2); + //parseable_packet(0x08AA,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x08AC,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x092D,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0931,5,clif_parse_HomMenu,2,4); + parseable_packet(0x093e,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0943,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0944,6,clif_parse_DropItem,2,4); + parseable_packet(0x0947,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0962,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0963,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2013-05-22Ragexe +#elif PACKETVER == 20130522 + parseable_packet(0x0360,5,clif_parse_WalkToXY,2); + parseable_packet(0x0362,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0368,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0369,6,clif_parse_SolveCharName,2); + parseable_packet(0x07EC,6,clif_parse_TickSend,2); + parseable_packet(0x0811,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x086A,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x086E,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0874,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x087E,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x088e,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x089B,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x089C,6,clif_parse_DropItem,2,4); + parseable_packet(0x08A2,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08A9,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x08AC,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x08a3,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a6,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x08aa,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0925,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0926,5,clif_parse_HomMenu,2,4); + parseable_packet(0x093e,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0950,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0952,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x095C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x095E,6,clif_parse_TakeItem,2); + parseable_packet(0x095b,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0964,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + //parseable_packet(0x0965,8,NULL,0); // CZ_JOIN_BATTLE_FIELD +// 2013-05-29Ragexe +#elif PACKETVER == 20130529 + parseable_packet(0x023B,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0438,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085A,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x085E,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0863,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0869,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0874,18,clif_parse_PartyBookingRegisterReq,2); + parseable_packet(0x0876,5,clif_parse_WalkToXY,2); + parseable_packet(0x0877,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x0888,4,NULL,0); // CZ_GANGSI_RANK + //parseable_packet(0x088E,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0890,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0892,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0895,6,clif_parse_TakeItem,2); + parseable_packet(0x0897,6,clif_parse_TickSend,2); + parseable_packet(0x08A7,6,clif_parse_DropItem,2,4); + parseable_packet(0x08A8,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0917,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0918,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0919,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0936,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0937,6,clif_parse_SolveCharName,2); + parseable_packet(0x0938,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0941,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0951,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0956,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0957,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0958,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0964,2,clif_parse_ReqCloseBuyingStore,0); +// 2013-06-05Ragexe +#elif PACKETVER == 20130605 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023B,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0883,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2013-06-12Ragexe +#elif PACKETVER == 20130612 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x087E,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0919,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x093A,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0940,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0964,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2013-06-18Ragexe +#elif PACKETVER == 20130618 + parseable_packet(0x0281,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x02C4,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0363,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x085A,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0862,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0864,36,clif_parse_StoragePassword,2,4,20); + //parseable_packet(0x0878,4,NULL,0); // CZ_GANGSI_RANK + //parseable_packet(0x087A,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0885,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0887,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0889,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x088E,5,clif_parse_WalkToXY,2); + parseable_packet(0x0890,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0891,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x08A6,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x08A7,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0917,6,clif_parse_DropItem,2,4); + parseable_packet(0x0930,6,clif_parse_TickSend,2); + parseable_packet(0x0932,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0936,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0942,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0944,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0945,6,clif_parse_SolveCharName,2); + parseable_packet(0x094F,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0951,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0953,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x095B,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0962,6,clif_parse_TakeItem,2); + parseable_packet(0x096A,10,clif_parse_UseSkillToPos,2,4,6,8); +// 2013-06-26Ragexe +#elif PACKETVER == 20130626 + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0365,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + //parseable_packet(0x0860,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x088B,6,clif_parse_TakeItem,2); + parseable_packet(0x088C,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x088F,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0894,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0895,26,clif_parse_PartyInvite2,2); + parseable_packet(0x08A5,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x08AB,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0921,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0930,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x094D,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0952,6,clif_parse_DropItem,2,4); + parseable_packet(0x0960,5,clif_parse_HomMenu,2,4); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2013-07-03Ragexe +#elif PACKETVER == 20130703 + parseable_packet(0x0202,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0873,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0930,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x094A,5,clif_parse_HomMenu,2,4); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2013-07-10Ragexe +#elif PACKETVER == 20130710 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023B,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0880,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2013-07-17Ragexe +#elif PACKETVER == 20130717 + parseable_packet(0x02C4,6,clif_parse_TickSend,2); + parseable_packet(0x0819,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x083C,5,clif_parse_WalkToXY,2); + parseable_packet(0x0862,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0863,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x086B,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + //parseable_packet(0x086C,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0882,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x088A,5,clif_parse_HomMenu,2,4); + parseable_packet(0x088C,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0897,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0898,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x089B,8,clif_parse_MoveToKafra,2,4); + //parseable_packet(0x08A6,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x08A9,6,clif_parse_TakeItem,2); + parseable_packet(0x08AA,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0917,6,clif_parse_DropItem,2,4); + parseable_packet(0x0918,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x091D,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x091E,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x092F,26,clif_parse_PartyInvite2,2); + parseable_packet(0x093B,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0952,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0956,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0958,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x095B,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0960,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0967,6,clif_parse_SolveCharName,2); + parseable_packet(0x096A,2,clif_parse_ReqCloseBuyingStore,0); +// 2013-08-07Ragexe +#elif PACKETVER == 20130807 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023B,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0887,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2013-12-23Ragexe +#elif PACKETVER == 20131223 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023B,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x08A4,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2014-10-16Ragexe +#elif PACKETVER == 20141016 + parseable_packet(0x022D,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x086E,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x0922,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0936,36,clif_parse_StoragePassword,0); + parseable_packet(0x094B,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0967,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2014-10-22bRagexe +#elif PACKETVER == 20141022 + parseable_packet(0x023b,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0878,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x087d,6,clif_parse_DropItem,2,4); + parseable_packet(0x0896,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0899,5,clif_parse_HomMenu,2,4); + parseable_packet(0x08aa,8,clif_parse_MoveFromKafra,2,4); + //parseable_packet(0x08ab,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x08ad,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x091a,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x092b,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x093b,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0940,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x094e,6,clif_parse_TakeItem,2); + parseable_packet(0x0955,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-01-07aRagexeRE +#elif PACKETVER == 20150107 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x087c,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0895,36,clif_parse_StoragePassword,0); + parseable_packet(0x092d,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0943,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0947,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-01-14aRagexe +#elif PACKETVER == 20150114 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0436,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0868,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0899,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0946,36,clif_parse_StoragePassword,0); + //parseable_packet(0x0955,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0957,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-01-28aRagexe +#elif PACKETVER == 20150128 + parseable_packet(0x0202,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x023b,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x035f,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0365,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + //parseable_packet(0x0368,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0838,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x085a,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0864,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x086d,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0870,5,clif_parse_WalkToXY,2); + parseable_packet(0x0874,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0875,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0876,5,clif_parse_HomMenu,2,4); + parseable_packet(0x087d,6,clif_parse_SolveCharName,2); + parseable_packet(0x0888,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x089a,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x08ab,6,clif_parse_TakeItem,2); + parseable_packet(0x091f,6,clif_parse_TickSend,2); + parseable_packet(0x0927,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0929,36,clif_parse_StoragePassword,0); + parseable_packet(0x092d,2,clif_parse_SearchStoreInfoNextPage,0); + //parseable_packet(0x0938,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x093a,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0944,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x094d,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x094e,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0952,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0963,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0968,6,clif_parse_DropItem,2,4); +// 2015-02-04aRagexe +#elif PACKETVER == 20150204 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0966,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-02-25aRagexeRE or 2015-02-26aRagexeRE +#elif PACKETVER == 20150225 || PACKETVER == 20150226 + parseable_packet(0x02c4,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0362,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0436,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,6,clif_parse_TakeItem,2); + parseable_packet(0x0819,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0867,18,clif_parse_PartyBookingRegisterReq,2,4); + //parseable_packet(0x0885,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0896,-1,clif_parse_ItemListWindowSelected,2,4,8); + //parseable_packet(0x089b,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x089c,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a4,36,clif_parse_StoragePassword,0); + parseable_packet(0x0940,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0946,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0948,6,clif_parse_DropItem,2,4); + parseable_packet(0x094f,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0952,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0955,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x096a,19,clif_parse_WantToConnection,2,6,10,14,18); +// 2015-03-11aRagexeRE +#elif PACKETVER == 20150311 + parseable_packet(0x023b,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0360,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0436,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0438,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0838,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x086a,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x086c,36,clif_parse_StoragePassword,0); + parseable_packet(0x087b,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0883,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0886,5,clif_parse_WalkToXY,2); + parseable_packet(0x0888,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0896,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08a1,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x08a3,6,clif_parse_TakeItem,2); + parseable_packet(0x08a5,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x08a6,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x091c,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0928,5,clif_parse_ChangeDir,2,4); + //parseable_packet(0x092a,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x092e,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x093b,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0943,6,clif_parse_SolveCharName,2); + //parseable_packet(0x0946,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0957,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0958,6,clif_parse_TickSend,2); + parseable_packet(0x095b,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0963,6,clif_parse_DropItem,2,4); + parseable_packet(0x0964,8,clif_parse_MoveToKafra,2,4); +// 2015-03-25aRagexe +#elif PACKETVER == 20150325 + parseable_packet(0x0202,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0363,6,clif_parse_DropItem,2,4); + parseable_packet(0x0365,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0438,2,clif_parse_SearchStoreInfoNextPage,0); + //parseable_packet(0x0802,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0819,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x085d,6,clif_parse_SolveCharName,2); + parseable_packet(0x086f,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x087c,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x087e,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0883,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0885,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0891,6,clif_parse_GetCharNameRequest,2); + //parseable_packet(0x0893,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0897,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0899,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x08a1,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08a7,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0919,36,clif_parse_StoragePassword,0); + parseable_packet(0x092c,6,clif_parse_TakeItem,2); + parseable_packet(0x0931,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0932,5,clif_parse_WalkToXY,2); + parseable_packet(0x0938,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0940,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0947,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x094a,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0950,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0954,6,clif_parse_TickSend,2); + parseable_packet(0x0969,8,clif_parse_MoveFromKafra,2,4); +// 2015-04-01aRagexe +#elif PACKETVER == 20150401 + parseable_packet(0x0362,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0367,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0437,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x083c,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x085e,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x086f,5,clif_parse_WalkToXY,2); + parseable_packet(0x0875,-1,clif_parse_ItemListWindowSelected,2,4,8); + //parseable_packet(0x087e,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x088c,6,clif_parse_DropItem,2,4); + parseable_packet(0x088f,6,clif_parse_TickSend,2); + parseable_packet(0x0895,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0898,5,clif_parse_HomMenu,2,4); + parseable_packet(0x089c,36,clif_parse_StoragePassword,0); + parseable_packet(0x08a5,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x091b,26,clif_parse_PartyInvite2,2); + parseable_packet(0x091c,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0922,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0924,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0938,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0939,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x093a,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x093b,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x093e,2,clif_parse_SearchStoreInfoNextPage,0); + //parseable_packet(0x0946,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0949,6,clif_parse_TakeItem,2); + parseable_packet(0x094b,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0953,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x095f,6,clif_parse_SolveCharName,2); + parseable_packet(0x0964,5,clif_parse_ChangeDir,2,4); +// 2015-04-22aRagexeRE +#elif PACKETVER == 20150422 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0955,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-04-29aRagexe +#elif PACKETVER == 20150429 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0363,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0867,36,clif_parse_StoragePassword,0); + parseable_packet(0x086a,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0886,26,clif_parse_PartyInvite2,2); + parseable_packet(0x088f,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0894,6,clif_parse_DropItem,2,4); + parseable_packet(0x0899,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x089f,-1,clif_parse_ItemListWindowSelected,2,4,8); + //parseable_packet(0x08a6,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + //parseable_packet(0x08a8,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x08ad,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0929,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x093d,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0943,6,clif_parse_TakeItem,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-05-07bRagexe +#elif PACKETVER == 20150507 + parseable_packet(0x023b,5,clif_parse_HomMenu,2,4); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,6,clif_parse_TakeItem,2); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085a,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0864,26,clif_parse_PartyInvite2,2); + //parseable_packet(0x0887,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0889,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0924,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x092e,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x093b,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0941,8,clif_parse_MoveFromKafra,2,4); + //parseable_packet(0x0942,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0953,36,clif_parse_StoragePassword,0); + parseable_packet(0x0955,6,clif_parse_DropItem,2,4); + parseable_packet(0x0958,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-05-13aRagexe +#elif PACKETVER == 20150513 + parseable_packet(0x022D,2,clif_parse_ReqCloseBuyingStore,0); + //parseable_packet(0x02C4,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0363,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0864,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0879,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0883,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0885,6,clif_parse_DropItem,2,4); + parseable_packet(0x08A8,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0923,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0924,5,clif_parse_ChangeDir,2,4); + //parseable_packet(0x0927,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x094A,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0958,6,clif_parse_TakeItem,2); + parseable_packet(0x0960,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2015-05-27aRagexe +#elif PACKETVER == 20150527 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x083c,36,clif_parse_StoragePassword,0); + parseable_packet(0x0940,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-06-17aRagexeRE or 2015-06-18aRagexeRE +#elif PACKETVER == 20150617 || PACKETVER == 20150618 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_TakeItem,2); + parseable_packet(0x0362,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0363,36,clif_parse_StoragePassword,0); + parseable_packet(0x0365,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0436,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07ec,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + //parseable_packet(0x0811,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0869,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x086a,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x086b,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0870,26,clif_parse_PartyInvite2,2); + parseable_packet(0x087a,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0886,5,clif_parse_HomMenu,2,4); + //parseable_packet(0x0894,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0940,6,clif_parse_DropItem,2,4); + parseable_packet(0x094e,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-08-19aRagexeRE +#elif PACKETVER == 20150819 + parseable_packet(0x0202,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x022d,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0281,6,clif_parse_TakeItem,2); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x085d,8,clif_parse_MoveFromKafra,2,4); + //parseable_packet(0x0862,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0865,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0871,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0888,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0919,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x091e,36,clif_parse_StoragePassword,0); + parseable_packet(0x0927,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0940,6,clif_parse_DropItem,2,4); + parseable_packet(0x0961,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0967,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-08-26aRagexeRE +#elif PACKETVER == 20150826 + parseable_packet(0x0362,36,clif_parse_StoragePassword,0); + parseable_packet(0x0368,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0436,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x07ec,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0819,6,clif_parse_ReqClickBuyingStore,2); + //parseable_packet(0x0861,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0865,5,clif_parse_WalkToXY,2); + parseable_packet(0x086b,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0870,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x087b,6,clif_parse_SolveCharName,2); + parseable_packet(0x088b,26,clif_parse_PartyInvite2,2); + parseable_packet(0x088d,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0890,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0891,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x08a0,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x08a1,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a4,6,clif_parse_TakeItem,2); + parseable_packet(0x08a8,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0924,6,clif_parse_DropItem,2,4); + parseable_packet(0x0928,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x092e,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x093b,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0945,5,clif_parse_HomMenu,2,4); + parseable_packet(0x094f,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0951,6,clif_parse_TickSend,2); + parseable_packet(0x0959,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0964,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x0968,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0969,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); +// 2015-09-16Ragexe +#elif PACKETVER == 20150916 + parseable_packet(0x022D,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0817,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0835,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x085E,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0869,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0873,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0877,5,clif_parse_WalkToXY,2); + parseable_packet(0x087F,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0881,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x089B,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x089C,6,clif_parse_TakeItem,2); + parseable_packet(0x089E,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x08AC,6,clif_parse_TickSend,2); + parseable_packet(0x0920,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0924,26,clif_parse_PartyInvite2,2); + parseable_packet(0x092E,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x092F,6,clif_parse_DropItem,2,4); + parseable_packet(0x0934,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0936,5,clif_parse_ChangeDir,2,4); + //parseable_packet(0x0938,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x093E,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0941,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0942,6,clif_parse_SolveCharName,2); + parseable_packet(0x0948,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + //parseable_packet(0x094F,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x095A,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0960,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0961,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0969,19,clif_parse_WantToConnection,2,6,10,14,18); +// 2015-10-01bRagexeRE +#elif PACKETVER == 20151001 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,NULL,2,4,6); + parseable_packet(0x0366,90,NULL,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0860,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-10-07aRagexeRE +#elif PACKETVER == 20151007 + parseable_packet(0x0202,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + //parseable_packet(0x0862,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x093f,5,clif_parse_HomMenu,2,4); + parseable_packet(0x095f,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0961,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0967,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-10-14bRagexeRE +#elif PACKETVER == 20151014 + parseable_packet(0x0202,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0817,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0838,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x085a,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085c,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0860,6,clif_parse_DropItem,2,4); + parseable_packet(0x0863,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0867,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0872,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0874,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0881,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0883,6,clif_parse_TickSend,2); + parseable_packet(0x0884,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0889,6,clif_parse_ReqClickBuyingStore,2); + //parseable_packet(0x088e,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + //parseable_packet(0x089a,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x089b,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x089f,5,clif_parse_WalkToXY,2); + parseable_packet(0x08aa,6,clif_parse_TakeItem,2); + parseable_packet(0x091c,26,clif_parse_PartyInvite2,2); + parseable_packet(0x091d,36,clif_parse_StoragePassword,0); + parseable_packet(0x0930,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0934,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0944,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x094f,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0956,6,clif_parse_SolveCharName,2); + parseable_packet(0x095e,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0961,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0964,19,clif_parse_WantToConnection,2,6,10,14,18); +// 2015-10-28cRagexeRE +#elif PACKETVER == 20151028 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0860,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-10-29aRagexe +#elif PACKETVER == 20151029 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023B,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0860,36,clif_parse_StoragePassword,0); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2015-11-04aRagexe +#elif PACKETVER == 20151104 + parseable_packet(0x023B,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0360,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0363,5,clif_parse_WalkToXY,2); + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0436,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0437,6,clif_parse_DropItem,2,4); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07EC,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0811,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0815,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0886,6,clif_parse_TickSend,2); + parseable_packet(0x0887,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x088B,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x088D,5,clif_parse_HomMenu,2,4); + //parseable_packet(0x08A3,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x08A5,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0928,5,clif_parse_ChangeDir,2,4); + //parseable_packet(0x0939,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x093A,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0940,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x0964,6,clif_parse_TakeItem,2); +// 2015-11-18aRagexeRE +#elif PACKETVER == 20151118 + parseable_packet(0x022d,6,clif_parse_TickSend,2); + parseable_packet(0x035f,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0365,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x086b,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x088b,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x08ab,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0921,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0925,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x092e,5,clif_parse_ChangeDir,2,4); + //parseable_packet(0x092f,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x093c,6,clif_parse_DropItem,2,4); + parseable_packet(0x0943,6,clif_parse_TakeItem,2); + parseable_packet(0x0946,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + //parseable_packet(0x0957,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x095c,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2015-12-02bRagexeRE +#elif PACKETVER == 20151202 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0870,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +#elif PACKETVER == 20151216 + parseable_packet(0x022D,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0361,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,5,clif_parse_HomMenu,2,4); + //parseable_packet(0x0364,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0436,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x085B,6,clif_parse_TickSend,2); + parseable_packet(0x0864,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0865,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x086E,26,clif_parse_PartyInvite2,2); + //parseable_packet(0x086a,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0870,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0874,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0885,36,clif_parse_StoragePassword,0); + parseable_packet(0x088B,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x089D,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x089E,6,clif_parse_SolveCharName,2); + parseable_packet(0x08A2,5,clif_parse_WalkToXY,2); + parseable_packet(0x08A9,6,clif_parse_TakeItem,2); + parseable_packet(0x08AC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x091D,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0944,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0947,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0949,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0954,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0960,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0966,6,clif_parse_DropItem,2,4); + parseable_packet(0x0968,10,clif_parse_UseSkillToId,2,4,6); +// 2015-12-23bRagexeRE +#elif PACKETVER == 20151223 + parseable_packet(0x02c4,8,clif_parse_MoveToKafra,2,4); + //parseable_packet(0x0362,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,6,clif_parse_TakeItem,2); + //parseable_packet(0x0802,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0815,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0864,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0866,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x086e,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0872,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0875,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0876,6,clif_parse_DropItem,2,4); + parseable_packet(0x0881,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0884,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0886,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x088d,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0890,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0891,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0898,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x08aa,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0918,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x091a,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x091b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0920,5,clif_parse_WalkToXY,2); + parseable_packet(0x0923,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0924,6,clif_parse_TickSend,2); + parseable_packet(0x095e,6,clif_parse_SolveCharName,2); + parseable_packet(0x095f,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0965,36,clif_parse_StoragePassword,0); + parseable_packet(0x0967,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); +// 2016-01-06aRagexeRE +#elif PACKETVER == 20160106 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07ec,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0861,6,clif_parse_TakeItem,2); + parseable_packet(0x086a,6,clif_parse_DropItem,2,4); + //parseable_packet(0x086c,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0878,36,clif_parse_StoragePassword,0); + parseable_packet(0x087a,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x087f,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0885,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0889,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x088a,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0891,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x08a0,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x091d,-1,clif_parse_ItemListWindowSelected,2,4,8); + //parseable_packet(0x0940,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-01-13cRagexeRE +#elif PACKETVER == 20160113 + parseable_packet(0x022d,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x023b,5,clif_parse_WalkToXY,2); + parseable_packet(0x035f,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0815,36,clif_parse_StoragePassword,0); + parseable_packet(0x085b,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0864,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x086d,5,clif_parse_HomMenu,2,4); + //parseable_packet(0x0873,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0875,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0888,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x088b,26,clif_parse_PartyInvite2,2); + parseable_packet(0x088c,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0892,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0893,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0899,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x089a,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08a0,6,clif_parse_TickSend,2); + parseable_packet(0x08a6,6,clif_parse_TakeItem,2); + parseable_packet(0x08aa,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0919,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x091b,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0924,6,clif_parse_DropItem,2,4); + parseable_packet(0x0930,6,clif_parse_SolveCharName,2); + parseable_packet(0x0932,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x093c,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0941,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x094d,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x094f,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0967,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); +// 2016-01-20aRagexeRE +#elif PACKETVER == 20160120 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0865,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-01-27bRagexeRE +#elif PACKETVER == 20160127 + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085e,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0922,5,clif_parse_HomMenu,2,4); + parseable_packet(0x095a,36,clif_parse_StoragePassword,0); + parseable_packet(0x0961,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-02-03aRagexeRE +#elif PACKETVER == 20160203 + parseable_packet(0x0202,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0436,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0437,6,clif_parse_TickSend,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0811,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0835,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x086c,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0872,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0873,36,clif_parse_StoragePassword,0); + //parseable_packet(0x088c,4,NULL,0); // CZ_GANGSI_RANK + //parseable_packet(0x0918,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x093e,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0940,5,clif_parse_WalkToXY,2); + parseable_packet(0x0947,6,clif_parse_DropItem,2,4); + parseable_packet(0x0954,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x095a,6,clif_parse_TakeItem,2); + parseable_packet(0x095d,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-02-11aRagexeRE +#elif PACKETVER == 20160211 + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,36,clif_parse_StoragePassword,0); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x086c,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0870,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0886,5,clif_parse_HomMenu,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-02-17cRagexeRE +#elif PACKETVER == 20160217 + parseable_packet(0x0202,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x023b,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0362,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0365,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0864,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0870,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0873,5,clif_parse_HomMenu,2,4); + parseable_packet(0x087a,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0888,6,clif_parse_TickSend,2); + parseable_packet(0x088d,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x088f,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0899,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x08a0,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x08a9,26,clif_parse_PartyInvite2,2); + parseable_packet(0x08ac,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x08ad,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x091d,5,clif_parse_WalkToXY,2); + parseable_packet(0x0920,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0926,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x092e,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x093b,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x093e,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0941,6,clif_parse_TakeItem,2); + parseable_packet(0x094a,10,clif_parse_UseSkillToPos,2,4,6,8); + //parseable_packet(0x094f,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x095e,36,clif_parse_StoragePassword,0); + parseable_packet(0x0966,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0967,6,clif_parse_SolveCharName,2); + parseable_packet(0x0969,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); +// 2016-02-24bRagexeRE +#elif PACKETVER == 20160224 + parseable_packet(0x022d,26,clif_parse_PartyInvite2,2); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0364,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0436,6,clif_parse_DropItem,2,4); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0861,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x086b,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0884,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0885,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0888,5,clif_parse_WalkToXY,2); + parseable_packet(0x08a9,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x0920,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0929,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x092f,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0936,36,clif_parse_StoragePassword,0); + parseable_packet(0x0938,6,clif_parse_TakeItem,2); + parseable_packet(0x094c,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0961,5,clif_parse_HomMenu,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-03-02bRagexeRE +#elif PACKETVER == 20160302 + parseable_packet(0x022d,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0367,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0802,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0819,5,clif_parse_WalkToXY,2); + parseable_packet(0x085b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0864,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0865,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0867,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0868,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0873,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0875,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x087a,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x087d,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0883,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x08a6,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x08a9,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x091a,6,clif_parse_DropItem,2,4); + parseable_packet(0x0927,6,clif_parse_TakeItem,2); + //parseable_packet(0x092d,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x092f,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0945,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x094e,36,clif_parse_StoragePassword,0); + //parseable_packet(0x0950,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0957,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x095a,6,clif_parse_TickSend,2); + parseable_packet(0x0960,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0961,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0967,6,clif_parse_SolveCharName,2); + parseable_packet(0x0968,7,clif_parse_ActionRequest,2,6); +// 2016-03-09aRagexeRE +#elif PACKETVER == 20160309 + parseable_packet(0x023b,6,clif_parse_DropItem,2,4); + parseable_packet(0x0281,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0364,36,clif_parse_StoragePassword,0); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0819,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0838,5,clif_parse_WalkToXY,2); + parseable_packet(0x083c,26,clif_parse_PartyInvite2,2); + parseable_packet(0x085a,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x085f,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0866,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x086a,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + //parseable_packet(0x0873,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x087c,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x087e,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x089b,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x089d,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x08a7,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x091d,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0920,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0922,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + //parseable_packet(0x0929,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x092a,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x092e,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0932,5,clif_parse_HomMenu,2,4); + parseable_packet(0x094f,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0956,6,clif_parse_TickSend,2); + parseable_packet(0x095e,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x096a,6,clif_parse_TakeItem,2); +// 2016-03-16aRagexeRE +#elif PACKETVER == 20160316 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0922,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-03-23aRagexeRE +#elif PACKETVER == 20160323 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0365,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + //parseable_packet(0x0867,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0869,6,clif_parse_TakeItem,2); + parseable_packet(0x086a,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0872,36,clif_parse_StoragePassword,0); + parseable_packet(0x0878,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0883,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0896,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x089a,5,clif_parse_HomMenu,2,4); + //parseable_packet(0x091b,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0926,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0927,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0933,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x093c,6,clif_parse_DropItem,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-03-30aRagexeRE +#elif PACKETVER == 20160330 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0365,36,clif_parse_StoragePassword,0); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0867,26,clif_parse_PartyInvite2,2); + parseable_packet(0x086d,6,clif_parse_TakeItem,2); + //parseable_packet(0x0878,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x087f,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0889,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x088b,5,clif_parse_HomMenu,2,4); + //parseable_packet(0x088d,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0918,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0925,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x092a,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x092c,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0930,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0939,6,clif_parse_DropItem,2,4); + parseable_packet(0x093b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-04-06aRagexeRE +#elif PACKETVER == 20160406 + parseable_packet(0x0364,6,clif_parse_SolveCharName,2); + parseable_packet(0x07e4,6,clif_parse_DropItem,2,4); + parseable_packet(0x0819,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x085a,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x085c,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0869,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0877,6,clif_parse_TakeItem,2); + parseable_packet(0x0878,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0879,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0884,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0892,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0895,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0898,26,clif_parse_PartyInvite2,2); + parseable_packet(0x089b,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x089e,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x08a1,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08a9,2,clif_parse_ReqCloseBuyingStore,0); + //parseable_packet(0x08ac,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0927,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x092d,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0933,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0934,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0940,6,clif_parse_TickSend,2); + parseable_packet(0x0949,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x094d,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0953,36,clif_parse_StoragePassword,0); + parseable_packet(0x095d,5,clif_parse_HomMenu,2,4); + parseable_packet(0x095f,5,clif_parse_WalkToXY,2); + //parseable_packet(0x0962,4,NULL,0); // CZ_GANGSI_RANK +// 2016-04-14bRagexeRE +#elif PACKETVER == 20160414 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0363,6,clif_parse_TakeItem,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0862,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x087a,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0880,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0885,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x089e,26,clif_parse_PartyInvite2,2); + //parseable_packet(0x0918,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0922,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0927,36,clif_parse_StoragePassword,0); + parseable_packet(0x0931,6,clif_parse_DropItem,2,4); + parseable_packet(0x0934,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0945,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0953,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-04-20aRagexeRE +#elif PACKETVER == 20160420 + parseable_packet(0x022d,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x02c4,6,clif_parse_TickSend,2); + parseable_packet(0x035f,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0864,6,clif_parse_TakeItem,2); + //parseable_packet(0x0870,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0872,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0874,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0884,6,clif_parse_DropItem,2,4); + parseable_packet(0x0888,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x088b,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x08a5,36,clif_parse_StoragePassword,0); + parseable_packet(0x092f,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0935,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x094e,-1,clif_parse_ItemListWindowSelected,2,4,8); + //parseable_packet(0x095c,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-04-27aRagexeRE +#elif PACKETVER == 20160427 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0835,36,clif_parse_StoragePassword,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0940,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-05-04aRagexeRE +#elif PACKETVER == 20160504 + parseable_packet(0x0202,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0363,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + //parseable_packet(0x0365,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x083c,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x085f,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x086b,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x087f,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0884,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0886,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0887,26,clif_parse_PartyInvite2,2); + parseable_packet(0x088a,6,clif_parse_TakeItem,2); + parseable_packet(0x088d,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x088f,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0890,6,clif_parse_DropItem,2,4); + parseable_packet(0x0893,18,clif_parse_PartyBookingRegisterReq,2,4); + //parseable_packet(0x0898,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x089d,6,clif_parse_SolveCharName,2); + parseable_packet(0x08ad,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0918,6,clif_parse_TickSend,2); + parseable_packet(0x0921,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0922,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0924,5,clif_parse_WalkToXY,2); + parseable_packet(0x093e,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0940,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0941,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0948,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0952,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x095b,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0969,36,clif_parse_StoragePassword,0); +// 2016-05-11aRagexeRE +#elif PACKETVER == 20160511 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085e,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0894,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x089b,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0918,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0920,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0940,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-05-18aRagexeRE +#elif PACKETVER == 20160518 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x086c,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0874,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x089a,36,clif_parse_StoragePassword,0); + parseable_packet(0x08a9,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0928,5,clif_parse_HomMenu,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-05-25aRagexeRE +#elif PACKETVER == 20160525 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + //parseable_packet(0x085a,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x085e,6,clif_parse_DropItem,2,4); + parseable_packet(0x0867,5,clif_parse_HomMenu,2,4); + parseable_packet(0x086a,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0899,6,clif_parse_TakeItem,2); + parseable_packet(0x089c,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x091d,36,clif_parse_StoragePassword,0); + parseable_packet(0x092c,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0937,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0945,26,clif_parse_PartyInvite2,2); + parseable_packet(0x094a,8,clif_parse_MoveToKafra,2,4); + //parseable_packet(0x094e,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0951,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0956,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-06-01aRagexeRE +#elif PACKETVER == 20160601 + parseable_packet(0x0202,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x02c4,26,clif_parse_PartyInvite2,2); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0863,6,clif_parse_TakeItem,2); + parseable_packet(0x0870,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x087d,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x088d,6,clif_parse_DropItem,2,4); + parseable_packet(0x088f,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0895,5,clif_parse_HomMenu,2,4); + //parseable_packet(0x08a7,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x08ac,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x0924,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x095b,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x095f,36,clif_parse_StoragePassword,0); + parseable_packet(0x0961,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-06-08aRagexeRE +#elif PACKETVER == 20160608 + parseable_packet(0x022d,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x02c4,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x035f,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0436,5,clif_parse_WalkToXY,2); + parseable_packet(0x0437,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07ec,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0802,6,clif_parse_TickSend,2); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + //parseable_packet(0x085c,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0885,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0889,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0899,6,clif_parse_TakeItem,2); + parseable_packet(0x089b,5,clif_parse_HomMenu,2,4); + parseable_packet(0x08a6,8,clif_parse_MoveFromKafra,2,4); + //parseable_packet(0x093b,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x094d,6,clif_parse_DropItem,2,4); + parseable_packet(0x0958,36,clif_parse_StoragePassword,0); + parseable_packet(0x095b,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0969,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-06-15aRagexeRE +#elif PACKETVER == 20160615 + parseable_packet(0x0281,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0363,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0364,36,clif_parse_StoragePassword,0); + parseable_packet(0x0369,5,clif_parse_HomMenu,2,4); + parseable_packet(0x083c,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0866,5,clif_parse_WalkToXY,2); + //parseable_packet(0x0870,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x087d,6,clif_parse_SolveCharName,2); + parseable_packet(0x087e,6,clif_parse_TakeItem,2); + parseable_packet(0x087f,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + //parseable_packet(0x0884,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0887,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0888,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x088a,6,clif_parse_TickSend,2); + parseable_packet(0x088d,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0891,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0898,6,clif_parse_DropItem,2,4); + parseable_packet(0x092f,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x093e,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0947,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0948,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x094a,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x094b,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0954,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0957,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0958,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x095c,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x095e,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0961,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); +// 2016-06-22aRagexeRE +#elif PACKETVER == 20160622 + parseable_packet(0x023b,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x035f,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0361,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x07e4,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0861,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + //parseable_packet(0x0865,4,NULL,0); // CZ_GANGSI_RANK + //parseable_packet(0x0867,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0880,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0887,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0890,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0891,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0892,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x089a,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x089e,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08a2,6,clif_parse_SolveCharName,2); + parseable_packet(0x08a8,36,clif_parse_StoragePassword,0); + parseable_packet(0x091c,6,clif_parse_TakeItem,2); + parseable_packet(0x092d,6,clif_parse_TickSend,2); + parseable_packet(0x092f,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0936,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0937,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x093b,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x093f,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0946,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0959,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0965,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0969,6,clif_parse_DropItem,2,4); +// 2016-06-30aRagexeRE +#elif PACKETVER == 20160630 + parseable_packet(0x0202,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x022d,5,clif_parse_WalkToXY,2); + //parseable_packet(0x035f,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0363,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0368,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x085c,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + //parseable_packet(0x085e,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0860,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0861,6,clif_parse_DropItem,2,4); + parseable_packet(0x0863,6,clif_parse_SolveCharName,2); + parseable_packet(0x0867,36,clif_parse_StoragePassword,0); + parseable_packet(0x086b,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0881,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0885,5,clif_parse_HomMenu,2,4); + parseable_packet(0x088e,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0893,6,clif_parse_TickSend,2); + parseable_packet(0x091e,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0922,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0925,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0926,26,clif_parse_PartyInvite2,2); + parseable_packet(0x093e,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0946,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0948,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x094a,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0957,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x095a,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0968,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0969,6,clif_parse_TakeItem,2); + parseable_packet(0x096a,8,clif_parse_MoveToKafra,2,4); +// 2016-07-06cRagexeRE +#elif PACKETVER == 20160706 + parseable_packet(0x0362,6,clif_parse_SolveCharName,2); + parseable_packet(0x0436,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x085f,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0860,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0869,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x086b,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0884,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x0886,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0889,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0892,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0899,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x08a4,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x08a5,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x08a8,6,clif_parse_TickSend,2); + parseable_packet(0x0918,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x091b,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0924,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0926,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0927,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0929,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x092d,5,clif_parse_WalkToXY,2); + parseable_packet(0x0939,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x093d,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0944,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0945,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x094c,36,clif_parse_StoragePassword,0); + parseable_packet(0x0952,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0957,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0958,6,clif_parse_TakeItem,2); +// 2016-07-13bRagexeRE +#elif PACKETVER == 20160713 + parseable_packet(0x022d,36,clif_parse_StoragePassword,0); + parseable_packet(0x0363,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0364,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0838,6,clif_parse_TakeItem,2); + parseable_packet(0x0860,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0865,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0869,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0875,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0877,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x087b,6,clif_parse_TickSend,2); + parseable_packet(0x0883,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x088d,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0892,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x089a,26,clif_parse_PartyInvite2,2); + //parseable_packet(0x089f,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x08a2,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x08a4,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x091c,5,clif_parse_WalkToXY,2); + parseable_packet(0x091d,6,clif_parse_SolveCharName,2); + parseable_packet(0x0921,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0922,5,clif_parse_HomMenu,2,4); + parseable_packet(0x092c,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0931,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0939,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0944,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0945,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0947,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0957,6,clif_parse_DropItem,2,4); + //parseable_packet(0x095b,8,NULL,0); // CZ_JOIN_BATTLE_FIELD +// 2016-07-20aRagexeRE +#elif PACKETVER == 20160720 + parseable_packet(0x0362,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0363,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0365,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x07e4,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0819,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0838,5,clif_parse_WalkToXY,2); + parseable_packet(0x085b,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x086a,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x086d,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x087f,6,clif_parse_DropItem,2,4); + parseable_packet(0x0883,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0887,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0897,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x089a,36,clif_parse_StoragePassword,0); + parseable_packet(0x089c,5,clif_parse_HomMenu,2,4); + parseable_packet(0x089e,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x08a0,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x08aa,-1,clif_parse_ItemListWindowSelected,2,4,8); + //parseable_packet(0x0917,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x091c,6,clif_parse_TakeItem,2); + parseable_packet(0x092a,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x093b,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x093e,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0946,6,clif_parse_TickSend,2); + parseable_packet(0x094d,6,clif_parse_SolveCharName,2); + //parseable_packet(0x0953,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x095b,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0960,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0969,26,clif_parse_PartyInvite2,2); +// 2016-07-27bRagexeRE +#elif PACKETVER == 20160727 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + //parseable_packet(0x023b,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0362,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0363,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0436,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0438,6,clif_parse_TickSend,2); + parseable_packet(0x07ec,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0866,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0868,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0869,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0874,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0877,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0883,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0887,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x088e,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0891,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x089f,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x08a2,36,clif_parse_StoragePassword,0); + parseable_packet(0x08a4,6,clif_parse_SolveCharName,2); + parseable_packet(0x08a7,6,clif_parse_TakeItem,2); + parseable_packet(0x092e,5,clif_parse_WalkToXY,2); + parseable_packet(0x0936,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0941,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0946,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0949,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0951,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x095f,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0966,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0969,-1,clif_parse_ItemListWindowSelected,2,4,8); +// 2016-08-03bRagexeRE +#elif PACKETVER == 20160803 + parseable_packet(0x0364,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x085d,6,clif_parse_ReqClickBuyingStore,2); + //parseable_packet(0x0878,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x087f,5,clif_parse_WalkToXY,2); + parseable_packet(0x0881,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0886,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0887,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0888,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x088b,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0891,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0895,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x089c,6,clif_parse_DropItem,2,4); + parseable_packet(0x089e,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x08a1,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x091b,6,clif_parse_TakeItem,2); + parseable_packet(0x0929,36,clif_parse_StoragePassword,0); + parseable_packet(0x0930,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0932,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0934,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0937,10,clif_parse_UseSkillToPos,2,4,6,8); + //parseable_packet(0x093a,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x093e,6,clif_parse_TickSend,2); + parseable_packet(0x093f,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0952,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0955,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0956,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0959,6,clif_parse_SolveCharName,2); + parseable_packet(0x095a,26,clif_parse_PartyInvite2,2); + parseable_packet(0x096a,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); +// 2016-08-10aRagexeRE +#elif PACKETVER == 20160810 + parseable_packet(0x0361,36,clif_parse_StoragePassword,0); + parseable_packet(0x0819,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0838,26,clif_parse_PartyInvite2,2); + parseable_packet(0x085d,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x085e,6,clif_parse_DropItem,2,4); + parseable_packet(0x085f,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0860,6,clif_parse_SolveCharName,2); + parseable_packet(0x086f,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0875,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0879,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x087a,5,clif_parse_WalkToXY,2); + parseable_packet(0x0885,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0888,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0890,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x089d,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x089f,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x08a9,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x091a,6,clif_parse_TakeItem,2); + parseable_packet(0x091b,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x091c,10,clif_parse_UseSkillToId,2,4,6); + //parseable_packet(0x0926,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x092b,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x092d,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0935,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0943,6,clif_parse_TickSend,2); + parseable_packet(0x094b,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0959,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x095b,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0967,8,NULL,0); // CZ_JOIN_BATTLE_FIELD +// 2016-08-31bRagexeRE +#elif PACKETVER == 20160831 + parseable_packet(0x022d,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0366,6,clif_parse_DropItem,2,4); + parseable_packet(0x07ec,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0835,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0865,5,clif_parse_WalkToXY,2); + parseable_packet(0x086d,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0870,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0874,26,clif_parse_PartyInvite2,2); + //parseable_packet(0x0876,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0878,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x087c,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x08a8,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x08a9,6,clif_parse_TickSend,2); + parseable_packet(0x0917,36,clif_parse_StoragePassword,0); + //parseable_packet(0x091b,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x092c,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x092e,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0938,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x093a,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0946,6,clif_parse_SolveCharName,2); + parseable_packet(0x094a,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x094f,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0950,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0954,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0957,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x095e,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0960,6,clif_parse_TakeItem,2); + parseable_packet(0x0964,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0967,10,clif_parse_UseSkillToId,2,4,6); +// 2016-09-07aRagexeRE +#elif PACKETVER == 20160907 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x091c,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-09-13aRagexeRE +#elif PACKETVER == 20160913 + parseable_packet(0x0361,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0817,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x085b,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0865,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0874,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0875,6,clif_parse_TickSend,2); + parseable_packet(0x0879,6,clif_parse_DropItem,2,4); + //parseable_packet(0x087a,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x087b,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0887,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0889,6,clif_parse_TakeItem,2); + parseable_packet(0x088e,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x088f,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0891,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0892,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x089b,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x089c,36,clif_parse_StoragePassword,0); + parseable_packet(0x08a5,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0928,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0935,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x093a,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0949,26,clif_parse_PartyInvite2,2); + parseable_packet(0x094a,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0950,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0952,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0954,5,clif_parse_WalkToXY,2); + //parseable_packet(0x0962,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0963,6,clif_parse_SolveCharName,2); + parseable_packet(0x0968,2,clif_parse_ReqCloseBuyingStore,0); +// 2016-09-21bRagexeRE +#elif PACKETVER == 20160921 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x094a,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-09-28dRagexeRE +#elif PACKETVER == 20160928 + parseable_packet(0x0202,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0366,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0436,6,clif_parse_ReqClickBuyingStore,2); + //parseable_packet(0x0811,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0838,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0864,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0866,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x086d,6,clif_parse_DropItem,2,4); + parseable_packet(0x0872,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0878,6,clif_parse_SolveCharName,2); + parseable_packet(0x087f,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0889,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x088e,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0897,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x089a,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08a2,36,clif_parse_StoragePassword,0); + parseable_packet(0x08a9,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0919,5,clif_parse_WalkToXY,2); + parseable_packet(0x091e,6,clif_parse_TickSend,2); + parseable_packet(0x0927,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x092d,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0944,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x094d,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x094e,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0953,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0955,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0957,6,clif_parse_TakeItem,2); + //parseable_packet(0x095a,4,NULL,0); // CZ_GANGSI_RANK +// 2016-10-05aRagexeRE +#elif PACKETVER == 20161005 + parseable_packet(0x0202,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0838,36,clif_parse_StoragePassword,0); + parseable_packet(0x0863,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0886,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x088e,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0891,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0892,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x089b,26,clif_parse_PartyInvite2,2); + parseable_packet(0x089c,6,clif_parse_TakeItem,2); + parseable_packet(0x08a0,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08ac,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x08ad,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0918,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0919,6,clif_parse_SolveCharName,2); + //parseable_packet(0x091e,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x092b,6,clif_parse_TickSend,2); + parseable_packet(0x0931,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0932,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x093b,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0942,6,clif_parse_DropItem,2,4); + parseable_packet(0x0944,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0945,5,clif_parse_WalkToXY,2); + parseable_packet(0x094a,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x094d,5,clif_parse_HomMenu,2,4); + //parseable_packet(0x0952,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x095a,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x095b,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0967,10,clif_parse_UseSkillToId,2,4,6); +// 2016-10-12aRagexeRE +#elif PACKETVER == 20161012 + parseable_packet(0x023b,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + parseable_packet(0x0364,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0365,6,clif_parse_TickSend,2); + parseable_packet(0x0369,26,clif_parse_PartyInvite2,2); + parseable_packet(0x07ec,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0819,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x085b,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x085e,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0863,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0868,6,clif_parse_TakeItem,2); + parseable_packet(0x086d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0872,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0875,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0880,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0893,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a0,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x092d,6,clif_parse_SolveCharName,2); + parseable_packet(0x0936,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0937,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0939,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0943,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0944,8,clif_parse_MoveFromKafra,2,4); + //parseable_packet(0x094f,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0951,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x095c,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0962,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0966,5,clif_parse_WalkToXY,2); + parseable_packet(0x0967,36,clif_parse_StoragePassword,0); +// 2016-10-19aRagexeRE +#elif PACKETVER == 20161019 + parseable_packet(0x022d,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0361,5,clif_parse_WalkToXY,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0889,36,clif_parse_StoragePassword,0); + //parseable_packet(0x0892,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0946,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0963,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-10-26bRagexeRE +#elif PACKETVER == 20161026 + parseable_packet(0x0363,36,clif_parse_StoragePassword,0); + parseable_packet(0x0438,5,clif_parse_WalkToXY,2); + parseable_packet(0x0802,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x085a,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x085f,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0861,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0862,6,clif_parse_TickSend,2); + parseable_packet(0x086a,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x086c,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + //parseable_packet(0x086e,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x087a,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + //parseable_packet(0x087c,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x087f,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0886,6,clif_parse_DropItem,2,4); + parseable_packet(0x0891,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0894,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0898,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x091a,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x091b,6,clif_parse_TakeItem,2); + parseable_packet(0x0926,6,clif_parse_SolveCharName,2); + parseable_packet(0x092c,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x092e,5,clif_parse_HomMenu,2,4); + parseable_packet(0x092f,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0930,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x094b,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0953,26,clif_parse_PartyInvite2,2); + parseable_packet(0x095c,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x095e,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0962,5,clif_parse_ChangeDir,2,4); +// 2016-11-03aRagexeRE +#elif PACKETVER == 20161103 + parseable_packet(0x0361,8,clif_parse_MoveFromKafra,2,4); + //parseable_packet(0x0367,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0436,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0802,6,clif_parse_TakeItem,2); + parseable_packet(0x0838,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x083c,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x085f,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0869,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x086c,2,clif_parse_SearchStoreInfoNextPage,0); + //parseable_packet(0x086f,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0874,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0886,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x088f,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0890,6,clif_parse_DropItem,2,4); + parseable_packet(0x089f,26,clif_parse_PartyInvite2,2); + parseable_packet(0x08a2,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x08aa,5,clif_parse_WalkToXY,2); + parseable_packet(0x091b,36,clif_parse_StoragePassword,0); + parseable_packet(0x0922,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0925,6,clif_parse_SolveCharName,2); + parseable_packet(0x0928,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x092f,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0936,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0946,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0949,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x095e,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0964,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0965,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0966,6,clif_parse_TickSend,2); +// 2016-11-09bRagexeRE +#elif PACKETVER == 20161109 + parseable_packet(0x02c4,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0361,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0362,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,6,clif_parse_TickSend,2); + parseable_packet(0x0366,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,6,clif_parse_SolveCharName,2); + parseable_packet(0x085d,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x085e,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0865,5,clif_parse_WalkToXY,2); + parseable_packet(0x086a,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x086d,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0870,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0876,6,clif_parse_ReqClickBuyingStore,2); + //parseable_packet(0x087a,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0881,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x088e,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0891,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0898,6,clif_parse_TakeItem,2); + parseable_packet(0x089a,6,clif_parse_DropItem,2,4); + parseable_packet(0x089d,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + //parseable_packet(0x089f,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x08a7,5,clif_parse_HomMenu,2,4); + parseable_packet(0x08ad,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0927,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0937,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x093c,36,clif_parse_StoragePassword,0); + parseable_packet(0x093f,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0954,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0956,5,clif_parse_ChangeDir,2,4); +// 2016-11-16cRagexeRE +#elif PACKETVER == 20161116 + parseable_packet(0x0368,6,clif_parse_TickSend,2); + parseable_packet(0x0369,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0835,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x085f,6,clif_parse_DropItem,2,4); + parseable_packet(0x0864,26,clif_parse_PartyInvite2,2); + parseable_packet(0x086f,6,clif_parse_TakeItem,2); + parseable_packet(0x0885,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x088b,5,clif_parse_HomMenu,2,4); + parseable_packet(0x088d,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x088f,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0890,5,clif_parse_WalkToXY,2); + parseable_packet(0x0892,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0893,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08a1,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x08a2,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x08aa,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x08ac,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0920,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0925,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x092a,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0931,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x093c,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x094a,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0952,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0957,6,clif_parse_SolveCharName,2); + parseable_packet(0x095b,36,clif_parse_StoragePassword,0); + //parseable_packet(0x095d,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x095f,2,clif_parse_SearchStoreInfoNextPage,0); + //parseable_packet(0x0967,8,NULL,0); // CZ_JOIN_BATTLE_FIELD +// 2016-11-23aRagexeRE +#elif PACKETVER == 20161123 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0362,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0437,6,clif_parse_TickSend,2); + parseable_packet(0x085c,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0861,5,clif_parse_WalkToXY,2); + parseable_packet(0x0862,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0866,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x086f,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0871,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x087f,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0880,36,clif_parse_StoragePassword,0); + parseable_packet(0x0882,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x088b,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x089c,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x08a9,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x08aa,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x091a,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0926,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x092a,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x092f,6,clif_parse_TakeItem,2); + parseable_packet(0x0930,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0941,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x094d,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x094f,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + //parseable_packet(0x095a,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x095b,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0962,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x096a,6,clif_parse_SolveCharName,2); +// 2016-11-30bRagexeRE +#elif PACKETVER == 20161130 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,6,clif_parse_TickSend,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + //parseable_packet(0x088f,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0931,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0943,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0954,36,clif_parse_StoragePassword,0); + parseable_packet(0x0959,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-12-07eRagexeRE +#elif PACKETVER == 20161207 + parseable_packet(0x023b,5,clif_parse_HomMenu,2,4); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0867,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x0868,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0875,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x087e,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0886,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08a1,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x08a2,6,clif_parse_TakeItem,2); + parseable_packet(0x08ad,6,clif_parse_DropItem,2,4); + parseable_packet(0x0918,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x091d,8,clif_parse_MoveFromKafra,2,4); + //parseable_packet(0x0943,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x095d,36,clif_parse_StoragePassword,0); + parseable_packet(0x0965,26,clif_parse_PartyInvite2,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-12-14bRagexeRE +#elif PACKETVER == 20161214 + parseable_packet(0x022d,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0281,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x02c4,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0364,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0436,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + //parseable_packet(0x0819,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085a,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0862,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x086d,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0887,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0895,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0899,36,clif_parse_StoragePassword,0); + parseable_packet(0x08a6,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x092e,6,clif_parse_TakeItem,2); + parseable_packet(0x093d,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2016-12-21aRagexeRE +#elif PACKETVER == 20161221 + parseable_packet(0x035f,6,clif_parse_TakeItem,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + parseable_packet(0x0366,6,clif_parse_SolveCharName,2); + parseable_packet(0x0438,5,clif_parse_WalkToXY,2); + parseable_packet(0x0817,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x085b,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0866,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0876,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0881,6,clif_parse_GetCharNameRequest,2); + //parseable_packet(0x0884,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0885,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x088c,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0890,36,clif_parse_StoragePassword,0); + //parseable_packet(0x0899,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x089a,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x089b,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x08aa,6,clif_parse_TickSend,2); + parseable_packet(0x091e,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0926,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0928,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x092c,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x092e,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0930,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0943,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0946,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x094b,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x095a,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0964,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0965,5,clif_parse_ChangeDir,2,4); +// 2016-12-28aRagexeRE +#elif PACKETVER == 20161228 + parseable_packet(0x0362,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x085a,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x085e,5,clif_parse_HomMenu,4); + parseable_packet(0x0865,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x086a,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x086c,6,clif_parse_TakeItem,2); + parseable_packet(0x086d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0870,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0871,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0875,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x087f,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0886,5,clif_parse_WalkToXY,2); + parseable_packet(0x0889,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0893,6,clif_parse_DropItem,2,4); + parseable_packet(0x089f,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a2,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x08a3,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x08a5,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x08ab,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x08ac,6,clif_parse_SolveCharName,2); + parseable_packet(0x08ad,36,clif_parse_StoragePassword,0); + parseable_packet(0x091c,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0929,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x092c,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0934,26,clif_parse_PartyInvite2,2); + //parseable_packet(0x0935,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + //parseable_packet(0x0938,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x093d,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0944,6,clif_parse_TickSend,2); +// 2017-01-04bRagexeRE +#elif PACKETVER == 20170104 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x085a,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x087f,36,clif_parse_StoragePassword,0); + parseable_packet(0x0896,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x091b,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0940,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-01-11aRagexeRE +#elif PACKETVER == 20170111 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085d,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0877,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x087f,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x088a,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a1,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x08a3,6,clif_parse_TakeItem,2); + parseable_packet(0x08a6,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x091a,36,clif_parse_StoragePassword,0); + parseable_packet(0x091b,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0940,6,clif_parse_DropItem,2,4); + parseable_packet(0x094c,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0961,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0969,26,clif_parse_PartyInvite2,2); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-01-18aRagexeRE +#elif PACKETVER == 20170118 + parseable_packet(0x022d,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0364,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0436,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0862,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0865,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x086f,6,clif_parse_TakeItem,2); + //parseable_packet(0x0873,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x089e,26,clif_parse_PartyInvite2,2); + parseable_packet(0x08ad,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x091f,18,clif_parse_PartyBookingRegisterReq,2,4); + //parseable_packet(0x0927,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0933,6,clif_parse_DropItem,2,4); + parseable_packet(0x0958,36,clif_parse_StoragePassword,0); + parseable_packet(0x0962,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x096a,8,clif_parse_MoveToKafra,2,4); +// 2017-01-25aRagexeRE +#elif PACKETVER == 20170125 + parseable_packet(0x0438,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0811,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x086e,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0876,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0877,6,clif_parse_DropItem,2,4); + parseable_packet(0x0879,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x087b,6,clif_parse_TakeItem,2); + parseable_packet(0x087d,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0881,5,clif_parse_ChangeDir,2,4); + //parseable_packet(0x0884,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0893,36,clif_parse_StoragePassword,0); + //parseable_packet(0x0894,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0895,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0898,6,clif_parse_SolveCharName,2); + parseable_packet(0x089b,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x08a5,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x091b,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x091c,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x091d,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0920,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0929,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x092b,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0930,5,clif_parse_WalkToXY,2); + parseable_packet(0x093c,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0943,6,clif_parse_TickSend,2); + parseable_packet(0x0944,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x095c,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0965,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0968,2,clif_parse_SearchStoreInfoNextPage,0); +// 2017-02-01aRagexeRE +#elif PACKETVER == 20170201 + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0815,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085d,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x085e,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0875,6,clif_parse_TakeItem,2); + //parseable_packet(0x0879,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0881,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0884,5,clif_parse_WalkToXY,2); + parseable_packet(0x0885,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0886,36,clif_parse_StoragePassword,0); + parseable_packet(0x088b,6,clif_parse_DropItem,2,4); + //parseable_packet(0x08a4,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0919,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0920,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0938,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0940,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x094c,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0966,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0969,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-02-08aRagexeRE +#elif PACKETVER == 20170208 + //parseable_packet(0x02c4,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0367,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085c,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0860,5,clif_parse_ChangeDir,2,4); + //parseable_packet(0x087a,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x088c,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0892,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x08a1,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x08ac,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0921,6,clif_parse_DropItem,2,4); + parseable_packet(0x0923,6,clif_parse_TakeItem,2); + parseable_packet(0x092d,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0932,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0937,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-02-15aRagexeRE +#elif PACKETVER == 20170215 + parseable_packet(0x02c4,36,clif_parse_StoragePassword,0); + parseable_packet(0x035f,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0360,6,clif_parse_TickSend,2); + parseable_packet(0x0811,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x083c,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x085c,6,clif_parse_DropItem,2,4); + parseable_packet(0x0876,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x087c,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x087d,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x087e,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0883,6,clif_parse_SolveCharName,2); + //parseable_packet(0x0884,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x088a,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x088b,26,clif_parse_PartyInvite2,2); + parseable_packet(0x088c,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0890,10,clif_parse_UseSkillToPos,2,4,6,8); + //parseable_packet(0x0896,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x089b,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a2,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x08a8,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x091c,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0925,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x092b,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x092d,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0942,6,clif_parse_TakeItem,2); + parseable_packet(0x094e,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x095f,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0962,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0969,5,clif_parse_WalkToXY,2); +// 2017-02-22aRagexeRE +#elif PACKETVER == 20170222 + parseable_packet(0x0202,5,clif_parse_HomMenu,2,4); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085f,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0866,6,clif_parse_DropItem,2,4); + parseable_packet(0x0870,18,clif_parse_PartyBookingRegisterReq,2,4); + //parseable_packet(0x0871,4,NULL,0); // CZ_GANGSI_RANK + //parseable_packet(0x0877,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0889,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0894,6,clif_parse_TakeItem,2); + parseable_packet(0x08a3,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x08a8,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0937,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0939,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0943,36,clif_parse_StoragePassword,0); + parseable_packet(0x095d,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0962,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-02-28aRagexeRE +#elif PACKETVER == 20170228 + parseable_packet(0x022d, 6, clif_parse_DropItem, 2, 4); + parseable_packet(0x0360, 7, clif_parse_ActionRequest, 2, 6); + parseable_packet(0x0362, 5, clif_parse_HomMenu, 2, 4); + parseable_packet(0x0819, 12, clif_parse_SearchStoreInfoListItemClick, 2, 6, 10); + parseable_packet(0x085e, 90, clif_parse_UseSkillToPosMoreInfo, 2, 4, 6, 8, 10); + parseable_packet(0x0863, -1, clif_parse_SearchStoreInfo, 2, 4, 5, 9, 13, 14, 15); + parseable_packet(0x086b, 19, clif_parse_WantToConnection, 2, 6, 10, 14, 18); + parseable_packet(0x0873, -1, clif_parse_ItemListWindowSelected, 2, 4, 8); + parseable_packet(0x0874, -1, clif_parse_ReqOpenBuyingStore, 2, 4, 8, 9, 89); + parseable_packet(0x0876, 2, clif_parse_ReqCloseBuyingStore, 0); + parseable_packet(0x0883, 2, clif_parse_SearchStoreInfoNextPage, 0); + parseable_packet(0x0884, 5, clif_parse_WalkToXY, 2); + parseable_packet(0x0889, 5, clif_parse_ChangeDir, 2, 4); + parseable_packet(0x0893, 6, clif_parse_GetCharNameRequest, 2); + parseable_packet(0x089e, 8, clif_parse_MoveToKafra, 2, 4); + parseable_packet(0x08a0, 26, clif_parse_FriendsListAdd, 2); + parseable_packet(0x08a2, 36, clif_parse_StoragePassword, 0); + //parseable_packet(0x08a6,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x08a7, 6, clif_parse_ReqClickBuyingStore, 2); + parseable_packet(0x091f, 10, clif_parse_UseSkillToId, 2, 4, 6); + parseable_packet(0x092a, 6, clif_parse_TakeItem, 2); + parseable_packet(0x092e, -1, clif_parse_ReqTradeBuyingStore, 2, 4, 8, 12); + parseable_packet(0x0937, 6, clif_parse_TickSend, 2); + //parseable_packet(0x093e,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0944, 8, clif_parse_MoveFromKafra, 2, 4); + parseable_packet(0x0947, 6, clif_parse_SolveCharName, 2); + parseable_packet(0x0948, 26, clif_parse_PartyInvite2, 2); + parseable_packet(0x0952, 10, clif_parse_UseSkillToPos, 2, 4, 6, 8); + parseable_packet(0x0955, 18, clif_parse_PartyBookingRegisterReq, 2, 4); +// 2017-03-08bRagexeRE +#elif PACKETVER == 20170308 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x087d,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-03-15cRagexeRE +#elif PACKETVER == 20170315 + parseable_packet(0x02c4,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x035f,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0360,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0366,6,clif_parse_TakeItem,2); + parseable_packet(0x0367,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0436,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x07ec,6,clif_parse_TickSend,2); + //parseable_packet(0x085c,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0863,5,clif_parse_HomMenu,2,4); + parseable_packet(0x086a,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0872,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x087b,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0884,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x088b,18,clif_parse_PartyBookingRegisterReq,2,4); + //parseable_packet(0x088d,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x088f,5,clif_parse_WalkToXY,2); + parseable_packet(0x0892,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x089c,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x08aa,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x091a,6,clif_parse_DropItem,2,4); + parseable_packet(0x091b,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x091d,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0920,6,clif_parse_SolveCharName,2); + parseable_packet(0x0922,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0944,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x094a,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x094e,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0950,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0952,36,clif_parse_StoragePassword,0); +// 2017-03-22aRagexeRE +#elif PACKETVER == 20170322 + parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x022d,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x023b,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0361,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x091a,36,clif_parse_StoragePassword,0); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-03-29dRagexeRE +#elif PACKETVER == 20170329 + parseable_packet(0x0281,26,clif_parse_PartyInvite2,2); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0363,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085d,36,clif_parse_StoragePassword,0); + parseable_packet(0x087a,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0888,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x08a8,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0917,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0926,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0929,6,clif_parse_TakeItem,2); + parseable_packet(0x092e,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0937,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0939,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0949,8,clif_parse_MoveFromKafra,2,4); + //parseable_packet(0x095f,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-04-05bRagexeRE +#elif PACKETVER == 20170405 + parseable_packet(0x022d,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0281,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0363,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,6,clif_parse_TakeItem,2); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085f,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0860,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0864,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0865,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x086f,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0893,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x08a5,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x094c,36,clif_parse_StoragePassword,0); + //parseable_packet(0x094f,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0964,6,clif_parse_DropItem,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-04-12aRagexeRE +#elif PACKETVER == 20170412 + parseable_packet(0x023b,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0365,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0863,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0869,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x086d,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0878,5,clif_parse_WalkToXY,2); + //parseable_packet(0x0879,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x087b,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x088b,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0890,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0893,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0898,6,clif_parse_SolveCharName,2); + parseable_packet(0x089a,5,clif_parse_HomMenu,2,4); + parseable_packet(0x089c,6,clif_parse_DropItem,2,4); + parseable_packet(0x08a1,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x091a,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x091e,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0929,6,clif_parse_TickSend,2); + //parseable_packet(0x092e,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0938,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0942,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0945,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0949,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x094f,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0952,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0959,6,clif_parse_TakeItem,2); + parseable_packet(0x095b,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x095c,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x095d,36,clif_parse_StoragePassword,0); +// 2017-04-19bRagexeRE +#elif PACKETVER == 20170419 + parseable_packet(0x0811,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0819,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0838,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x085a,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x085e,5,clif_parse_WalkToXY,2); + parseable_packet(0x0862,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0868,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x086a,18,clif_parse_PartyBookingRegisterReq,2,4); + //parseable_packet(0x0872,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0881,36,clif_parse_StoragePassword,0); + parseable_packet(0x088d,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x088f,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0897,6,clif_parse_DropItem,2,4); + parseable_packet(0x0898,6,clif_parse_TickSend,2); + parseable_packet(0x089d,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x08aa,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x091b,6,clif_parse_SolveCharName,2); + parseable_packet(0x0920,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0922,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0930,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0931,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0935,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x093a,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x093f,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0942,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x095c,6,clif_parse_TakeItem,2); + parseable_packet(0x095d,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + //parseable_packet(0x0963,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0965,6,clif_parse_ReqClickBuyingStore,2); +// 2017-04-26dRagexeRE +#elif PACKETVER == 20170426 + parseable_packet(0x0281,36,clif_parse_StoragePassword,0); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0866,-1,clif_parse_ItemListWindowSelected,2,4,8); + //parseable_packet(0x086f,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x087a,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0887,6,clif_parse_SolveCharName,2); + parseable_packet(0x0899,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x089c,5,clif_parse_HomMenu,2,4); + parseable_packet(0x08a2,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x08a4,6,clif_parse_TakeItem,2); + //parseable_packet(0x091f,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0927,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0940,6,clif_parse_DropItem,2,4); + parseable_packet(0x0958,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0963,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-05-02dRagexeRE +#elif PACKETVER == 20170502 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x035f,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07e4,6,clif_parse_TakeItem,2); + parseable_packet(0x07ec,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083c,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0875,36,clif_parse_StoragePassword,0); + parseable_packet(0x0894,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x089c,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x093c,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0950,5,clif_parse_HomMenu,2,4); + parseable_packet(0x096a,6,clif_parse_GetCharNameRequest,2); +// 2017-05-17aRagexeRE +#elif PACKETVER == 20170517 + //parseable_packet(0x0364,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0367,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0437,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0802,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0815,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0817,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0868,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0875,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x087b,6,clif_parse_SolveCharName,2); + parseable_packet(0x087d,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x088c,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x088d,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0894,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0896,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0899,26,clif_parse_PartyInvite2,2); + //parseable_packet(0x089e,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x089f,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x08a2,6,clif_parse_TickSend,2); + parseable_packet(0x08a8,5,clif_parse_WalkToXY,2); + parseable_packet(0x08aa,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x091b,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0923,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x093b,6,clif_parse_DropItem,2,4); + parseable_packet(0x0945,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0946,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0947,36,clif_parse_StoragePassword,0); + parseable_packet(0x0958,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0960,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0964,6,clif_parse_TakeItem,2); +// 2017-05-24aRagexeRE +#elif PACKETVER == 20170524 + parseable_packet(0x0364,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0368,36,clif_parse_StoragePassword,0); + parseable_packet(0x0802,6,clif_parse_DropItem,2,4); + parseable_packet(0x085e,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x085f,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0860,6,clif_parse_TickSend,2); + parseable_packet(0x0864,6,clif_parse_TakeItem,2); + parseable_packet(0x0866,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0868,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x086d,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0873,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0874,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x087d,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0882,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x088d,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0894,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x089c,5,clif_parse_WalkToXY,2); + parseable_packet(0x08a1,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + //parseable_packet(0x091e,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0923,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x0925,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0934,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0946,10,clif_parse_UseSkillToPos,2,4,6,8); + //parseable_packet(0x0958,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x095a,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x095b,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0964,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0967,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0968,6,clif_parse_SolveCharName,2); +// 2017-05-31aRagexeRE +#elif PACKETVER == 20170531 + parseable_packet(0x0361,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0369,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x07e4,5,clif_parse_WalkToXY,2); + parseable_packet(0x07ec,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0819,6,clif_parse_TickSend,2); + //parseable_packet(0x085b,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x085f,6,clif_parse_SolveCharName,2); + parseable_packet(0x0861,26,clif_parse_FriendsListAdd,2); + //parseable_packet(0x0868,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0873,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0875,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0878,26,clif_parse_PartyInvite2,2); + parseable_packet(0x087b,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0885,-1,clif_parse_ItemListWindowSelected,2,4,8); + parseable_packet(0x088b,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x088d,6,clif_parse_DropItem,2,4); + parseable_packet(0x0894,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x089a,36,clif_parse_StoragePassword,0); + parseable_packet(0x089c,5,clif_parse_HomMenu,4); + parseable_packet(0x08a2,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x08ac,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x08ad,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x092d,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0933,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0937,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0940,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0945,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0963,6,clif_parse_TakeItem,2); + parseable_packet(0x0968,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); +// 2017-06-07cRagexeRE +#elif PACKETVER == 20170607 + parseable_packet(0x0361,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0364,36,clif_parse_StoragePassword,2,4,20); + parseable_packet(0x07e4,6,clif_parse_TickSend,2); + parseable_packet(0x085a,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x085e,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0862,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0863,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0864,6,clif_parse_DropItem,2,4); + parseable_packet(0x0871,19,clif_parse_WantToConnection,2,6,10,14,18); + //parseable_packet(0x0873,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0875,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0885,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x088a,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0897,6,clif_parse_TakeItem,2); + parseable_packet(0x089d,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x08a9,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x08ab,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0917,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0918,18,clif_parse_PartyBookingRegisterReq,2,4,6); + parseable_packet(0x0919,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0925,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0927,10,clif_parse_UseSkillToPos,2,4,6,8); + //parseable_packet(0x0931,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0934,5,clif_parse_WalkToXY,2); + parseable_packet(0x0938,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x093d,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0942,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0944,6,clif_parse_SolveCharName,2); + parseable_packet(0x0949,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); +#endif + +#endif /* _CLIF_SHUFFLE_H_ */ diff --git a/src/map/map-server.vcxproj.filters b/src/map/map-server.vcxproj.filters index b78f42f62a..751815681b 100644 --- a/src/map/map-server.vcxproj.filters +++ b/src/map/map-server.vcxproj.filters @@ -131,6 +131,15 @@ <ClInclude Include="clan.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="clif_obfuscation.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="clif_packetdb.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="clif_shuffle.h"> + <Filter>Header Files</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <ClCompile Include="atcommand.c"> diff --git a/src/map/pc.c b/src/map/pc.c index c941e0dd24..ee1c222f6f 100755 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1228,10 +1228,10 @@ bool pc_authok(struct map_session_data *sd, uint32 login_id2, time_t expiration_ //display login notice ShowInfo("'"CL_WHITE"%s"CL_RESET"' logged in." " (AID/CID: '"CL_WHITE"%d/%d"CL_RESET"'," - " Packet Ver: '"CL_WHITE"%d"CL_RESET"', IP: '"CL_WHITE"%d.%d.%d.%d"CL_RESET"'," + " IP: '"CL_WHITE"%d.%d.%d.%d"CL_RESET"'," " Group '"CL_WHITE"%d"CL_RESET"').\n", sd->status.name, sd->status.account_id, sd->status.char_id, - sd->packet_ver, CONVIP(ip), sd->group_id); + CONVIP(ip), sd->group_id); // Send friends list clif_friendslist_send(sd); diff --git a/src/map/pc.h b/src/map/pc.h index 3853d8294d..7e72a76b9e 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -289,7 +289,6 @@ struct map_session_data { int count_rewarp; //count how many time we being rewarped int langtype; - uint32 packet_ver; // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 9aug04/16aug04/17aug04, 10: 6sept04, 11: 21sept04, 12: 18oct04, 13: 25oct04 ... 18 struct mmo_charstatus status; // Item Storages diff --git a/src/map/script.c b/src/map/script.c index e7bcfbae7a..1303898aba 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -21284,36 +21284,6 @@ BUILDIN_FUNC(party_destroy) return SCRIPT_CMD_SUCCESS; } -/** Checks if a player's client version meets a required version or date. -* @param type: 0 - check by version number; 1 - check by date -* @param data: Input -*/ -BUILDIN_FUNC(is_clientver) { - TBL_PC *sd = NULL; - int type; - int data; - int ret = 0; - - if ( !script_charid2sd(4,sd) ) { - script_pushint(st,0); - return SCRIPT_CMD_FAILURE; - } - - type = script_getnum(st,2); - data = script_getnum(st,3); - - switch(type){ - case 0: - ret = (sd->packet_ver >= data)?1:0; - break; - case 1: - ret = (sd->packet_ver >= date2version(data))?1:0; - break; - } - script_pushint(st,ret); - return SCRIPT_CMD_SUCCESS; -} - /** Returns various information about a player's VIP status. Need to enable VIP system * vip_status <type>,{"<character name>"}; * @param type: Info type, see enum vip_status_type @@ -23758,7 +23728,6 @@ struct script_function buildin_func[] = { BUILDIN_DEF(clan_join,"i?"), BUILDIN_DEF(clan_leave,"?"), - BUILDIN_DEF(is_clientver,"ii?"), BUILDIN_DEF2(montransform, "transform", "vi?????"), // Monster Transform [malufett/Hercules] BUILDIN_DEF2(montransform, "active_transform", "vi?????"), BUILDIN_DEF(vip_status,"i?"),