From 42db76dbc939faece4b58256f25121b3cfebfcea Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sat, 15 Jul 2017 14:11:26 +0200 Subject: [PATCH 01/24] Fixed item description --- src/UI/Components/ItemInfo/ItemInfo.css | 3 +- src/UI/Components/ItemInfo/ItemInfo.html | 20 ++++--- src/UI/Components/ItemInfo/ItemInfo.js | 74 +++++++++++++++++++++++- 3 files changed, 85 insertions(+), 12 deletions(-) diff --git a/src/UI/Components/ItemInfo/ItemInfo.css b/src/UI/Components/ItemInfo/ItemInfo.css index 85fb8a4..4f2ee88 100644 --- a/src/UI/Components/ItemInfo/ItemInfo.css +++ b/src/UI/Components/ItemInfo/ItemInfo.css @@ -1,10 +1,11 @@ .ItemInfo { position:absolute; top:0px; left:0px; width:280px; background-repeat:no-repeat; background-color:transparent; } -.ItemInfo .container { height:120px; position:relative; } +.ItemInfo .container { height:120px; position:relative; box-shadow: white 0px 0px 0px 3px inset, rgb(192, 192, 192) 0px 0px 0px 4px inset; background-repeat: no-repeat; background-color: white; border-radius: 10px; } .ItemInfo .view { position:absolute; width:42px; height:20px; background-repeat:no-repeat; background-color:transparent; border:none; top:6px; left:6px; } .ItemInfo .collection { position:absolute; top:11px; left:10px; width:75px; height:100px; background-repeat:no-repeat; background-color:transparent; } .ItemInfo .title { position:absolute; top:3px; left:86px; width:185px; height:14px; padding-left:4px; padding-top:6px; font-size:12px; text-shadow:1px 1px 0px white; white-space:nowrap; } .ItemInfo .close { position:absolute; top:3px; right:3px; width:11px; height:11px; display:block; background-repeat:no-repeat; background-color:transparent; border:none; } .ItemInfo .description { position:absolute; top:35px; left:100px; line-height:18px; width:170px; height:75px; overflow-y:auto;} +.ItemInfo .description .description-inner { width: 150px } .ItemInfo .extend { position:absolute; right:4px; bottom:3px; width:13px; height:13px; border:none; background-repeat:no-repeat; background-color:transparent; } .ItemInfo .cardlist { border-radius:5px; background:white; padding:2px; margin-top:3px; } diff --git a/src/UI/Components/ItemInfo/ItemInfo.html b/src/UI/Components/ItemInfo/ItemInfo.html index bffd62d..c58c981 100644 --- a/src/UI/Components/ItemInfo/ItemInfo.html +++ b/src/UI/Components/ItemInfo/ItemInfo.html @@ -1,11 +1,15 @@ -
-
-
- -
- -
-
+
+
+
+ +
+ +
+
+
+
+ +
diff --git a/src/UI/Components/ItemInfo/ItemInfo.js b/src/UI/Components/ItemInfo/ItemInfo.js index cdac585..2fc2492 100644 --- a/src/UI/Components/ItemInfo/ItemInfo.js +++ b/src/UI/Components/ItemInfo/ItemInfo.js @@ -21,6 +21,7 @@ define(function(require) var Client = require('Core/Client'); var KEYS = require('Controls/KeyEventHandler'); var CardIllustration = require('UI/Components/CardIllustration/CardIllustration'); + var Mouse = require('Controls/MouseEventHandler'); var UIManager = require('UI/UIManager'); var UIComponent = require('UI/UIComponent'); var htmlText = require('text!./ItemInfo.html'); @@ -62,6 +63,7 @@ define(function(require) // Seems like "EscapeWindow" is execute first, push it before. var events = jQuery._data( window, 'events').keydown; events.unshift( events.pop() ); + resize(ItemInfo.ui.find('.container').height()); }; @@ -80,7 +82,7 @@ define(function(require) ItemInfo.init = function init() { this.ui.css({ top: 200, left:200 }); - + this.ui.find('.extend').mousedown(onResize); this.ui.find('.close') .mousedown(function(event){ event.stopImmediatePropagation(); @@ -116,7 +118,7 @@ define(function(require) ui.find('.title').text( item.IsIdentified ? it.identifiedDisplayName : it.unidentifiedDisplayName ); - ui.find('.description').text( item.IsIdentified ? it.identifiedDescriptionName : it.unidentifiedDescriptionName ); + ui.find('.description-inner').text( item.IsIdentified ? it.identifiedDescriptionName : it.unidentifiedDescriptionName ); // Add view button (for cards) if (item.type === ItemType.CARD) { @@ -154,6 +156,8 @@ define(function(require) } break; } + + resize(ItemInfo.ui.find('.container').height()); }; @@ -205,7 +209,71 @@ define(function(require) }); } - + /** + * Extend SkillList window size + */ + function onResize() + { + var ui = ItemInfo.ui; + var top = ui.position().top; + var left = ui.position().left; + var lastHeight = 0; + var _Interval; + + function resizing() + { + var h = Math.floor((Mouse.screen.y - top)); + if (h === lastHeight) { + return; + } + resize( h ); + lastHeight = h; + } + + // Start resizing + _Interval = setInterval(resizing, 30); + + // Stop resizing on left click + jQuery(window).on('mouseup.resize', function(event){ + if (event.which === 1) { + clearInterval(_Interval); + jQuery(window).off('mouseup.resize'); + } + }); + } + + + /** + * Extend Item window size + * + * @param {number} height + */ + function resize( height ) + { + var container = ItemInfo.ui.find('.container'); + var description = ItemInfo.ui.find('.description'); + var descriptionInner = ItemInfo.ui.find('.description-inner'); + var containerHeight = height; + var minHeight = 120; + var maxHeight = (descriptionInner.height() + 45 > 120) ? descriptionInner.height() + 45 : 120; + + if (containerHeight <= minHeight) { + containerHeight = minHeight; + } + + if (containerHeight >= maxHeight) { + containerHeight = maxHeight; + } + + container.css({ + height: containerHeight + }); + description.css({ + height: containerHeight - 45 + }); + } + + /** * Create component and export it */ From 31b756b4d4c2916ff0817d9aabb02191c207d7f7 Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sat, 15 Jul 2017 14:18:28 +0200 Subject: [PATCH 02/24] =?UTF-8?q?Corrected=20comments=20=F0=9F=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/UI/Components/ItemInfo/ItemInfo.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/UI/Components/ItemInfo/ItemInfo.js b/src/UI/Components/ItemInfo/ItemInfo.js index 2fc2492..cb1a7bc 100644 --- a/src/UI/Components/ItemInfo/ItemInfo.js +++ b/src/UI/Components/ItemInfo/ItemInfo.js @@ -210,7 +210,7 @@ define(function(require) } /** - * Extend SkillList window size + * Extend ItemInfo window size */ function onResize() { @@ -244,7 +244,7 @@ define(function(require) /** - * Extend Item window size + * Extend ItemInfo window size * * @param {number} height */ From cc07b6e6d23aef4a2c077e505f804e3675f0f0cb Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sat, 15 Jul 2017 18:47:59 +0200 Subject: [PATCH 03/24] Fixed CardList for unidentified items --- src/UI/Components/ItemInfo/ItemInfo.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/UI/Components/ItemInfo/ItemInfo.js b/src/UI/Components/ItemInfo/ItemInfo.js index cb1a7bc..29ba0cc 100644 --- a/src/UI/Components/ItemInfo/ItemInfo.js +++ b/src/UI/Components/ItemInfo/ItemInfo.js @@ -154,6 +154,10 @@ define(function(require) for (i = 0; i < 4; ++i) { addCard(cardList, (item.slot && item.slot['card' + (i+1)]) || 0, i, slotCount); } + + if (!item.IsIdentified) { + cardList.parent().hide(); + } break; } From 0ef977e6116bd771f3a24fbc672c9db58a85fe1c Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 13:19:20 +0200 Subject: [PATCH 04/24] Added parser for AC_ACCEPT_LOGIN3 --- src/Network/PacketRegister.js | 2 ++ src/Network/PacketStructure.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/Network/PacketRegister.js b/src/Network/PacketRegister.js index 6a58289..0975f7d 100644 --- a/src/Network/PacketRegister.js +++ b/src/Network/PacketRegister.js @@ -567,5 +567,7 @@ define( ['./PacketStructure' ], function( PACKET ) //0x9d7: npcmarketresultackType 0xa00: PACKET.ZC.SHORTCUT_KEY_LIST_V3, // ok 0xa18: PACKET.ZC.ACCEPT_ENTER3, // ok + + 0xac4: PACKET.AC.ACCEPT_LOGIN3 }; }); \ No newline at end of file diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index 554381f..e341278 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -11286,6 +11286,20 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK PACKET.ZC.ACCEPT_ENTER3.size = 14; + // 0xac4 + PACKET.AC.ACCEPT_LOGIN3 = function PACKET_AC_ACCEPT_LOGIN3(fp, end) { + this.AuthCode = fp.readLong(); + this.AID = fp.readULong(); + this.userLevel = fp.readULong(); + this.lastLoginIP = fp.readULong(); + this.lastLoginTime = fp.readBinaryString(26); + this.Sex = fp.readUChar(); + this.unknown1 = fp.readStr(17); + this.iAccountSID = fp.readLong(); + this.unknown2 = fp.readStr(128); + }; + PACKET.AC.ACCEPT_LOGIN2.size = 160; + /** * Export */ From 70e2b4a4e7da8ac8cb6f6d68e6f83a65b3ab5b3e Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 13:39:54 +0200 Subject: [PATCH 05/24] Fixed parsing of PACKET_AC_ACCEPT_LOGIN3 --- src/Network/PacketStructure.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index e341278..bd596e4 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -11294,11 +11294,23 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK this.lastLoginIP = fp.readULong(); this.lastLoginTime = fp.readBinaryString(26); this.Sex = fp.readUChar(); - this.unknown1 = fp.readStr(17); - this.iAccountSID = fp.readLong(); - this.unknown2 = fp.readStr(128); + this.unknown = fp.readString(17); + this.ServerList = (function() { + var i, count=(end-fp.tell())/32|0, out=new Array(count); + for (i = 0; i < count; ++i) { + out[i] = {}; + out[i].ip = fp.readULong(); + out[i].port = fp.readUShort(); + out[i].name = fp.readString(20); + out[i].usercount = fp.readUShort(); + out[i].state = fp.readUShort(); + out[i].property = fp.readUShort(); + out[i].unknown = fp.readString(128); + } + return out; + })(); }; - PACKET.AC.ACCEPT_LOGIN2.size = 160; + PACKET.AC.ACCEPT_LOGIN3.size = -1; /** * Export From 96e3340f4eecc2b19480460e82ae024fb362d1ca Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 13:58:41 +0200 Subject: [PATCH 06/24] Changed PACKET_HC_CHARLIST_NOTIFY to support Clients >= 20151001 --- src/Network/PacketStructure.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index bd596e4..a3792e6 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -10994,8 +10994,11 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK // 0x9a0 PACKET.HC.CHARLIST_NOTIFY = function PACKET_HC_CHARLIST_NOTIFY(fp, end) { this.TotalCnt = fp.readLong(); + if (PACKETVER.value >= 20151001) { + this.char_slots = fp.readLong(); + } }; - PACKET.HC.CHARLIST_NOTIFY.size = 6; + PACKET.HC.CHARLIST_NOTIFY.size = (PACKETVER.value >= 20151001 ? 10 : 6); // 0x9ca From 9213664389ecda34fbc6333afa784ba57e8b9fb7 Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sun, 23 Jul 2017 14:10:23 +0200 Subject: [PATCH 07/24] #29 - Improved packetversion support --- src/Engine/LoginEngine.js | 2 +- src/Network/PacketCrypt.js | 3 ++- src/Network/PacketStructure.js | 8 ++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Engine/LoginEngine.js b/src/Engine/LoginEngine.js index 9f9ebc0..87cff0d 100644 --- a/src/Engine/LoginEngine.js +++ b/src/Engine/LoginEngine.js @@ -188,7 +188,7 @@ define(function( require ) } // Hook packets - Network.hookPacket( PACKET.AC.ACCEPT_LOGIN, onConnectionAccepted ); + Network.hookPacket( PACKET.AC.ACCEPT_LOGIN3, onConnectionAccepted ); Network.hookPacket( PACKET.AC.REFUSE_LOGIN, onConnectionRefused ); Network.hookPacket( PACKET.AC.REFUSE_LOGIN_R2, onConnectionRefused ); Network.hookPacket( PACKET.SC.NOTIFY_BAN, onServerClosed ); diff --git a/src/Network/PacketCrypt.js b/src/Network/PacketCrypt.js index 1e9fda4..7b1e6e2 100644 --- a/src/Network/PacketCrypt.js +++ b/src/Network/PacketCrypt.js @@ -97,7 +97,8 @@ define(['Core/Configs'], function( Configs ) 20140416: [0x04810281,0x42814281,0x42814281], 20141016: [0x2DFF467C,0x444B37EE,0x2C1B634F], 20141022: [0x290551EA,0x2B952C75,0x2D67669B], - 20150513: [0x62C86D09,0x75944F17,0x112C133D] + 20150513: [0x62C86D09,0x75944F17,0x112C133D], + 20170517: [0x2CC4749A,0x1FA954DC,0x72276857] }; diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index a3792e6..8adcf20 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -10995,7 +10995,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK PACKET.HC.CHARLIST_NOTIFY = function PACKET_HC_CHARLIST_NOTIFY(fp, end) { this.TotalCnt = fp.readLong(); if (PACKETVER.value >= 20151001) { - this.char_slots = fp.readLong(); + this.charSlots = fp.readLong(); } }; PACKET.HC.CHARLIST_NOTIFY.size = (PACKETVER.value >= 20151001 ? 10 : 6); @@ -11297,9 +11297,9 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK this.lastLoginIP = fp.readULong(); this.lastLoginTime = fp.readBinaryString(26); this.Sex = fp.readUChar(); - this.unknown = fp.readString(17); + this.unknown = fp.readBinaryString(17); this.ServerList = (function() { - var i, count=(end-fp.tell())/32|0, out=new Array(count); + var i, count=(end-fp.tell())/160|0, out=new Array(count); for (i = 0; i < count; ++i) { out[i] = {}; out[i].ip = fp.readULong(); @@ -11308,7 +11308,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK out[i].usercount = fp.readUShort(); out[i].state = fp.readUShort(); out[i].property = fp.readUShort(); - out[i].unknown = fp.readString(128); + out[i].unknown = fp.readBinaryString(128); } return out; })(); From d8687966714dc10f1848eac2e1162b2449243981 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 14:12:56 +0200 Subject: [PATCH 08/24] Fixed bug where expireDate was read although it is only send when a character is actually banned --- src/Network/PacketStructure.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index 8adcf20..de00102 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -7459,7 +7459,9 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK for (i = 0; i < count; ++i) { out[i] = {}; out[i].GID = fp.readULong(); - out[i].szExpireDate = fp.readBinaryString(20); + if (out[i].GID != 0) { + out[i].szExpireDate = fp.readBinaryString(20); + } } return out; })(); From 21019f1b6af9153ff86d0f19777e6725d86beec9 Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sun, 23 Jul 2017 14:48:09 +0200 Subject: [PATCH 09/24] #29 - Improved packetversion support --- src/Network/PacketRegister.js | 3 ++- src/Network/PacketStructure.js | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/Network/PacketRegister.js b/src/Network/PacketRegister.js index 0975f7d..c8b1597 100644 --- a/src/Network/PacketRegister.js +++ b/src/Network/PacketRegister.js @@ -568,6 +568,7 @@ define( ['./PacketStructure' ], function( PACKET ) 0xa00: PACKET.ZC.SHORTCUT_KEY_LIST_V3, // ok 0xa18: PACKET.ZC.ACCEPT_ENTER3, // ok - 0xac4: PACKET.AC.ACCEPT_LOGIN3 + 0xac4: PACKET.AC.ACCEPT_LOGIN3, + 0xa3b: PACKET.ZC.HAT_EFFECT, }; }); \ No newline at end of file diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index de00102..12fb6e0 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -7459,9 +7459,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK for (i = 0; i < count; ++i) { out[i] = {}; out[i].GID = fp.readULong(); - if (out[i].GID != 0) { - out[i].szExpireDate = fp.readBinaryString(20); - } + out[i].szExpireDate = fp.readBinaryString(20); } return out; })(); @@ -11317,6 +11315,20 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK }; PACKET.AC.ACCEPT_LOGIN3.size = -1; + // 0xa3b + PACKET.ZC.HAT_EFFECT = function PACKET_ZC_HAT_EFFECT(fp, end) { + this.GID = fp.readULong(); + this.one = fp.readChar(); // Always 1 + this.hatEffectIDs = (function() { + var i, count=(end-fp.tell())/2|0, out=new Array(count); + for (i = 0; i < count; ++i) { + out[i] = fp.readShort(); + } + return out; + })(); + }; + PACKET.ZC.HAT_EFFECT.size = -1; + /** * Export */ From 28dfa8b8f4273bb0a7a3e7a278ae9e48e8d960dd Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sun, 23 Jul 2017 18:45:26 +0200 Subject: [PATCH 10/24] #29 - Improved packetversion support --- src/Engine/LoginEngine.js | 9 +++++++-- src/Network/PacketRegister.js | 2 +- src/Network/PacketStructure.js | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Engine/LoginEngine.js b/src/Engine/LoginEngine.js index 87cff0d..a83d342 100644 --- a/src/Engine/LoginEngine.js +++ b/src/Engine/LoginEngine.js @@ -188,11 +188,16 @@ define(function( require ) } // Hook packets - Network.hookPacket( PACKET.AC.ACCEPT_LOGIN3, onConnectionAccepted ); + if (PACKETVER.value >= 20141022 && PACKETVER.value < 20160330) { + Network.hookPacket( PACKET.AC.ACCEPT_LOGIN3, onConnectionAccepted ); + } else { + Network.hookPacket( PACKET.AC.ACCEPT_LOGIN2, onConnectionAccepted ); + } Network.hookPacket( PACKET.AC.REFUSE_LOGIN, onConnectionRefused ); Network.hookPacket( PACKET.AC.REFUSE_LOGIN_R2, onConnectionRefused ); Network.hookPacket( PACKET.SC.NOTIFY_BAN, onServerClosed ); - } + + } /** diff --git a/src/Network/PacketRegister.js b/src/Network/PacketRegister.js index c8b1597..5699afa 100644 --- a/src/Network/PacketRegister.js +++ b/src/Network/PacketRegister.js @@ -569,6 +569,6 @@ define( ['./PacketStructure' ], function( PACKET ) 0xa18: PACKET.ZC.ACCEPT_ENTER3, // ok 0xac4: PACKET.AC.ACCEPT_LOGIN3, - 0xa3b: PACKET.ZC.HAT_EFFECT, + 0xa3b: PACKET.ZC.HAT_EFFECT }; }); \ No newline at end of file diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index 12fb6e0..7e036ad 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -11318,7 +11318,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK // 0xa3b PACKET.ZC.HAT_EFFECT = function PACKET_ZC_HAT_EFFECT(fp, end) { this.GID = fp.readULong(); - this.one = fp.readChar(); // Always 1 + this.enabled = fp.readChar(); // Always 1 this.hatEffectIDs = (function() { var i, count=(end-fp.tell())/2|0, out=new Array(count); for (i = 0; i < count; ++i) { From 06c997e74b5480817e9abcbf3e3ec423dd516718 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 18:46:30 +0200 Subject: [PATCH 11/24] Added Packet for Version 0 --- src/Network/PacketRegister.js | 4 +++- src/Network/PacketStructure.js | 18 +++++++++++++++--- src/Network/PacketVersions.js | 1 + 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Network/PacketRegister.js b/src/Network/PacketRegister.js index 0975f7d..c3af13d 100644 --- a/src/Network/PacketRegister.js +++ b/src/Network/PacketRegister.js @@ -568,6 +568,8 @@ define( ['./PacketStructure' ], function( PACKET ) 0xa00: PACKET.ZC.SHORTCUT_KEY_LIST_V3, // ok 0xa18: PACKET.ZC.ACCEPT_ENTER3, // ok - 0xac4: PACKET.AC.ACCEPT_LOGIN3 + 0xac4: PACKET.AC.ACCEPT_LOGIN3, + + 0xa3b: PACKET.ZC.HAT_EFFECT }; }); \ No newline at end of file diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index de00102..5021821 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -7459,9 +7459,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK for (i = 0; i < count; ++i) { out[i] = {}; out[i].GID = fp.readULong(); - if (out[i].GID != 0) { - out[i].szExpireDate = fp.readBinaryString(20); - } + out[i].szExpireDate = fp.readBinaryString(20); } return out; })(); @@ -11317,6 +11315,20 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK }; PACKET.AC.ACCEPT_LOGIN3.size = -1; + // 0xa3b + PACKET.ZC.HAT_EFFECT = function PACKET_ZC_HAT_EFFECT(fp, end) { + this.GID = fp.readULong(); + this.enabled = fp.readChar(); + this.hatEffectIDs = (function() { + var i, count=(end-fp.tell())/2|0, out=new Array(count); + for (i = 0; i < count; ++i) { + out[i] = fp.readShort(); // #FixMe: Can also be send as single packet, which sends the effectId as Long... + } + return out; + })(); + }; + PACKET.ZC.HAT_EFFECT = -1; + /** * Export */ diff --git a/src/Network/PacketVersions.js b/src/Network/PacketVersions.js index e935bfc..13bd4c4 100644 --- a/src/Network/PacketVersions.js +++ b/src/Network/PacketVersions.js @@ -29,6 +29,7 @@ define( ['./PacketStructure'], function( PACKET ) [PACKET.CZ.ITEM_THROW,0x00a2,6,2,4], [PACKET.CZ.USE_ITEM,0x00a7,8,2,4], [PACKET.CZ.REQ_WEAR_EQUIP,0x00a9,6,2,4], + [PACKET.CZ.REQ_TAKEOFF_EQUIP,0x00ab,4,2], [PACKET.CZ.MOVE_ITEM_FROM_BODY_TO_STORE,0x00f3,8,2,4], [PACKET.CZ.MOVE_ITEM_FROM_STORE_TO_BODY,0x00f5,8,2,4], [PACKET.CZ.CLOSE_STORE,0x00f7,2,0], From abade8d7379eb85617cff37d1f263b0e81d763ff Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sun, 23 Jul 2017 19:10:58 +0200 Subject: [PATCH 12/24] #29 - Improved packetversion support --- src/Engine/LoginEngine.js | 4 ++-- src/Network/PacketCrypt.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Engine/LoginEngine.js b/src/Engine/LoginEngine.js index a83d342..577c75c 100644 --- a/src/Engine/LoginEngine.js +++ b/src/Engine/LoginEngine.js @@ -188,10 +188,10 @@ define(function( require ) } // Hook packets - if (PACKETVER.value >= 20141022 && PACKETVER.value < 20160330) { + if (PACKETVER.value >= 20170315) { Network.hookPacket( PACKET.AC.ACCEPT_LOGIN3, onConnectionAccepted ); } else { - Network.hookPacket( PACKET.AC.ACCEPT_LOGIN2, onConnectionAccepted ); + Network.hookPacket( PACKET.AC.ACCEPT_LOGIN, onConnectionAccepted ); } Network.hookPacket( PACKET.AC.REFUSE_LOGIN, onConnectionRefused ); Network.hookPacket( PACKET.AC.REFUSE_LOGIN_R2, onConnectionRefused ); diff --git a/src/Network/PacketCrypt.js b/src/Network/PacketCrypt.js index 7b1e6e2..b4c8c1a 100644 --- a/src/Network/PacketCrypt.js +++ b/src/Network/PacketCrypt.js @@ -98,6 +98,7 @@ define(['Core/Configs'], function( Configs ) 20141016: [0x2DFF467C,0x444B37EE,0x2C1B634F], 20141022: [0x290551EA,0x2B952C75,0x2D67669B], 20150513: [0x62C86D09,0x75944F17,0x112C133D], + 20150422: [0x10D22CE2,0x69E279E2,0x79E279E2], 20170517: [0x2CC4749A,0x1FA954DC,0x72276857] }; From c50542d008a332e50bc270e360269b27d137d125 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 19:32:58 +0200 Subject: [PATCH 13/24] Upgraded parseCharList --- src/Network/PacketVerManager.js | 61 ++++++++++++--------------------- 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/src/Network/PacketVerManager.js b/src/Network/PacketVerManager.js index f4ed37b..a258719 100644 --- a/src/Network/PacketVerManager.js +++ b/src/Network/PacketVerManager.js @@ -157,13 +157,8 @@ define(['Core/Configs'], function( Configs ) out[i].honor = fp.readLong(); out[i].jobpoint = fp.readShort(); - if (blockSize < 112) { - out[i].hp = fp.readShort(); - out[i].maxhp = fp.readShort(); - } else { - out[i].hp = fp.readLong(); - out[i].maxhp = fp.readLong(); - } + out[i].hp = fp.readLong(); + out[i].maxhp = fp.readLong(); out[i].sp = fp.readShort(); out[i].maxsp = fp.readShort(); @@ -171,7 +166,7 @@ define(['Core/Configs'], function( Configs ) out[i].job = fp.readShort(); out[i].head = fp.readShort(); - if (blockSize >= 147) { + if (PACKETVER.value >= 20141022) { out[i].body = fp.readShort(); } @@ -192,45 +187,31 @@ define(['Core/Configs'], function( Configs ) out[i].Dex = fp.readUChar(); out[i].Luk = fp.readUChar(); - if (blockSize < 108) { - out[i].CharNum = fp.readUShort(); - } - else if (blockSize < 124) { - out[i].CharNum = fp.readUShort(); - out[i].haircolor = fp.readUShort(); - } - else { - out[i].CharNum = fp.readUChar(); - out[i].haircolor = fp.readUChar(); - } + out[i].CharNum = fp.readUShort(); + out[i].bIsChangedCharName = fp.readShort(); - if (blockSize === 116) { - fp.seek(0x04, SEEK_CUR); // unknown + if (PACKETVER.value >= 20100720 && PACKETVER.value <= 20100727 || PACKETVER.value >= 20100803) { + out[i].lastMap = fp.readString(16); } - if (blockSize >= 124) { - out[i].bIsChangedCharName = fp.readShort(); - out[i].lastMap = fp.readBinaryString(blockSize === 124 ? 12 : 16); + if (PACKETVER.value >= 20100803) { + out[i].deleteDate = fp.readLong(); } - if (blockSize >= 132) { - out[i].DeleteDate = fp.readLong(); + if (PACKETVER.value >= 20110111) { + out[i].robe = fp.readLong(); } - if (blockSize >= 136) { - out[i].Robe = fp.readLong(); - } - - if (blockSize >= 140) { - out[i].SlotAddon = fp.readLong(); - } - - if (blockSize >= 144) { - out[i].RenameAddon = fp.readLong(); - } - - if (blockSize >= 145) { - out[i].sex = fp.readUChar(); + if (PACKETVER.value != 20111116) { + if (PACKETVER.value >= 20110928) { + out[i].SlotAddon = fp.readLong(); + } + if (PACKETVER.value >= 20111025) { + out[i].RenameAddon = fp.readLong(); + } + if (PACKETVER.value >= 20141016) { + out[i].sex = fp.readUChar(); + } } } From 4bbcfff852e78ef2bbddd153b198439bf74c4951 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 20:07:59 +0200 Subject: [PATCH 14/24] fixed packet version checks --- src/Network/PacketVerManager.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Network/PacketVerManager.js b/src/Network/PacketVerManager.js index a258719..fcf6242 100644 --- a/src/Network/PacketVerManager.js +++ b/src/Network/PacketVerManager.js @@ -190,26 +190,27 @@ define(['Core/Configs'], function( Configs ) out[i].CharNum = fp.readUShort(); out[i].bIsChangedCharName = fp.readShort(); - if (PACKETVER.value >= 20100720 && PACKETVER.value <= 20100727 || PACKETVER.value >= 20100803) { + if (this._value >= 20100720 && this._value <= 20100727 + || this._value >= 20100803) { out[i].lastMap = fp.readString(16); } - if (PACKETVER.value >= 20100803) { + if (this._value >= 20100803) { out[i].deleteDate = fp.readLong(); } - if (PACKETVER.value >= 20110111) { + if (this._value >= 20110111) { out[i].robe = fp.readLong(); } - if (PACKETVER.value != 20111116) { + if (this._value != 20111116) { if (PACKETVER.value >= 20110928) { out[i].SlotAddon = fp.readLong(); } - if (PACKETVER.value >= 20111025) { + if (this._value >= 20111025) { out[i].RenameAddon = fp.readLong(); } - if (PACKETVER.value >= 20141016) { + if (this._value >= 20141016) { out[i].sex = fp.readUChar(); } } From e92791593a522407cf817e30f4bc721602b76d41 Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sun, 23 Jul 2017 20:36:15 +0200 Subject: [PATCH 15/24] #29 - Improved packetversion support --- src/Network/PacketRegister.js | 3 +-- src/Network/PacketStructure.js | 1 + src/Network/PacketVerManager.js | 20 +++++++++++--------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/Network/PacketRegister.js b/src/Network/PacketRegister.js index 5699afa..0975f7d 100644 --- a/src/Network/PacketRegister.js +++ b/src/Network/PacketRegister.js @@ -568,7 +568,6 @@ define( ['./PacketStructure' ], function( PACKET ) 0xa00: PACKET.ZC.SHORTCUT_KEY_LIST_V3, // ok 0xa18: PACKET.ZC.ACCEPT_ENTER3, // ok - 0xac4: PACKET.AC.ACCEPT_LOGIN3, - 0xa3b: PACKET.ZC.HAT_EFFECT + 0xac4: PACKET.AC.ACCEPT_LOGIN3 }; }); \ No newline at end of file diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index 2bdb82d..95de7f0 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -145,6 +145,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK }; PACKET.CZ.ENTER.prototype.build = function() { var ver = this.getPacketVersion(); + console.log(ver); var pkt = new BinaryWriter(ver[2]); pkt.writeShort(ver[1]); diff --git a/src/Network/PacketVerManager.js b/src/Network/PacketVerManager.js index fcf6242..5431060 100644 --- a/src/Network/PacketVerManager.js +++ b/src/Network/PacketVerManager.js @@ -144,6 +144,8 @@ define(['Core/Configs'], function( Configs ) } for (i = 0, count = length / blockSize; i < count; ++i) { + + console.log(_value); out[i] = {}; out[i].GID = fp.readULong(); out[i].exp = fp.readLong(); @@ -166,7 +168,7 @@ define(['Core/Configs'], function( Configs ) out[i].job = fp.readShort(); out[i].head = fp.readShort(); - if (PACKETVER.value >= 20141022) { + if (_value >= 20141022) { out[i].body = fp.readShort(); } @@ -190,27 +192,27 @@ define(['Core/Configs'], function( Configs ) out[i].CharNum = fp.readUShort(); out[i].bIsChangedCharName = fp.readShort(); - if (this._value >= 20100720 && this._value <= 20100727 - || this._value >= 20100803) { + if (_value >= 20100720 && _value <= 20100727 + || _value >= 20100803) { out[i].lastMap = fp.readString(16); } - if (this._value >= 20100803) { + if (_value >= 20100803) { out[i].deleteDate = fp.readLong(); } - if (this._value >= 20110111) { + if (_value >= 20110111) { out[i].robe = fp.readLong(); } - if (this._value != 20111116) { - if (PACKETVER.value >= 20110928) { + if (_value !== 20111116) { + if (_value >= 20110928) { out[i].SlotAddon = fp.readLong(); } - if (this._value >= 20111025) { + if (_value >= 20111025) { out[i].RenameAddon = fp.readLong(); } - if (this._value >= 20141016) { + if (_value >= 20141016) { out[i].sex = fp.readUChar(); } } From 3667b51b839e38e58e5af9da2de22821ad9f4d48 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 20:40:33 +0200 Subject: [PATCH 16/24] Added Packet Version 20150422 ENTER Packet --- src/Network/PacketVersions.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Network/PacketVersions.js b/src/Network/PacketVersions.js index 13bd4c4..ed9600d 100644 --- a/src/Network/PacketVersions.js +++ b/src/Network/PacketVersions.js @@ -1425,6 +1425,10 @@ define( ['./PacketStructure'], function( PACKET ) [PACKET.CZ.ACK_STORE_PASSWORD,0x0438,36,0], ], + // 2015-04-22aRagexeRE + 20150422: [ + [PACKET.CZ.ENTER,0x022d,19,2,6,10,14,18] + ], // 2015-05-13aRagexe 20150513: [ @@ -1449,5 +1453,6 @@ define( ['./PacketStructure'], function( PACKET ) // packet(0x09e8,11); //CZ_OPEN_MAILBOX // packet(0x0a2e,6); //TITLE ], + }; }); From 422b717a71a575e38475f01430082d6bd6fcd1f6 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 20:59:16 +0200 Subject: [PATCH 17/24] Added all packets of 20150422 --- src/Network/PacketVersions.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Network/PacketVersions.js b/src/Network/PacketVersions.js index ed9600d..365b84f 100644 --- a/src/Network/PacketVersions.js +++ b/src/Network/PacketVersions.js @@ -1427,7 +1427,33 @@ define( ['./PacketStructure'], function( PACKET ) // 2015-04-22aRagexeRE 20150422: [ - [PACKET.CZ.ENTER,0x022d,19,2,6,10,14,18] + [PACKET.CZ.CHANGE_DIRECTION,0x0202,5,2,4], + [PACKET.CZ.ENTER,0x022d,19,2,6,10,14,18], + [PACKET.CZ.ACK_REQ_ADD_FRIENDS,0x023b,26,2], + [PACKET.CZ.ITEMLISTWIN_RES,0x0281,-1,2,4,8], + [PACKET.CZ.REQUEST_TIME,0x035f,6,2], + [PACKET.CZ.REQ_CLICK_TO_BUYING_STORE,0x0360,6,2], + [PACKET.CZ.COMMAND_MER,0x0361,5,2,4], + [PACKET.CZ.ITEM_THROW,0x362,6,2,4], + [PACKET.CZ.MOVE_ITEM_FROM_STORE_TO_BODY,0x0364,8,2,4], + [PACKET.CZ.PARTY_BOOKING_REQ_REGISTER,0x0365,18,2,4], + [PACKET.CZ.USE_SKILL_TOGROUNDMoreInfo,0x366,90,2,4,6,8,10], + [PACKET.CZ.REQNAME_BYGID,0x368,6,2], + [PACKET.CZ.REQUEST_ACT,0x0369,7,2,6], + [PACKET.CZ.REQUEST_MOVE,0x0437,5,2], + [PACKET.CZ.USE_SKILL_TOGROUND,0x0438,10,2,4,6,8], + [PACKET.CZ.ITEM_PICKUP,0x07e4,6,2], + [PACKET.CZ.MOVE_ITEM_FROM_BODY_TO_STORE,0x07ec,8,2,4], + [PACKET.CZ.PARTY_JOIN_REQ,0x0802,26,2], + [PACKET.CZ.REQ_TRADE_BUYING_STORE,0x0811,-1,2,4,8,12], + [PACKET.CZ.REQ_OPEN_BUYING_STORE,0x0815,-1,2,4,8,9,89], + [PACKET.CZ.REQ_CLOSE_BUYING_STORE,0x0817,2,0], + [PACKET.CZ.SEARCH_STORE_INFO,0x0819,-1,2,4,5,9,13,14,15], + [PACKET.CZ.SEARCH_STORE_INFO_NEXT_PAGE,0x0835,2,0], + [PACKET.CZ.SSILIST_ITEM_CLICK,0x0838,12,2,6,10], + [PACKET.CZ.USE_SKILL,0x083c,10,2,4,6], + [PACKET.CZ.ACK_STORE_PASSWORD,0x0995,36,0], + [PACKET.CZ.REQNAME,0x096a,6,2], ], // 2015-05-13aRagexe From f67fdc35fde79bf7e8a1faa40b73d3a9ce7b8627 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 21:18:21 +0200 Subject: [PATCH 18/24] =?UTF-8?q?Added=20=C2=9FEQUIPMENT=5FITEMLIST5=20as?= =?UTF-8?q?=20new=20version=20of=20ITEMLIST?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Network/PacketRegister.js | 1 + src/Network/PacketStructure.js | 55 ++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/Network/PacketRegister.js b/src/Network/PacketRegister.js index 0975f7d..b55b254 100644 --- a/src/Network/PacketRegister.js +++ b/src/Network/PacketRegister.js @@ -566,6 +566,7 @@ define( ['./PacketStructure' ], function( PACKET ) //0x9d5: npcmarketopenType //0x9d7: npcmarketresultackType 0xa00: PACKET.ZC.SHORTCUT_KEY_LIST_V3, // ok + 0xa0d: PACKET.ZC.EQUIPMENT_ITEMLIST5, 0xa18: PACKET.ZC.ACCEPT_ENTER3, // ok 0xac4: PACKET.AC.ACCEPT_LOGIN3 diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index 95de7f0..ad9d9c8 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -11277,6 +11277,61 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK }; PACKET.ZC.SHORTCUT_KEY_LIST_V3.size = 269; + // 0xa0d + PACKET.ZC.EQUIPMENT_ITEMLIST5 = function PACKET_ZC_EQUIPMENT_ITEMLIST5(fp, end) { + this.ItemInfo = (function() { + var i, count = (end - fp.tell()) / 31 | 0, + out = new Array(count); + var flag; + for (i = 0; i < count; ++i) { + out[i] = {}; + out[i].index = fp.readShort(); + out[i].ITID = fp.readUShort(); + out[i].type = fp.readUChar(); + + if (end - fp.tell() == 31) { + out[i].location = fp.readULong(); + out[i].WearState = fp.readULong(); + out[i].RefiningLevel = fp.readUChar(); + out[i].slot = {}; + out[i].slot.card1 = fp.readUShort(); + out[i].slot.card2 = fp.readUShort(); + out[i].slot.card3 = fp.readUShort(); + out[i].slot.card4 = fp.readUShort(); + out[i].HireExpireDate = fp.readLong(); + out[i].bindOnEquipType = fp.readUShort(); + out[i].wItemSpriteNumber = fp.readUShort(); + if (PACKETVER.value >= 20150226) { // Random Options Support + out[i].option = []; + for (var j = 0; j < 5; j++) { + out[i].option[j] = {}; + out[i].option[j].optIndex = fp.readUShort(); + out[i].option[j].value = fp.readShort(); + out[i].option[j].param = fp.readChar(); + } + } + flag = fp.readUChar(); + out[i].IsIdentified = flag & 1; + out[i].IsDamaged = flag & 2; + out[i].PlaceETCTab = flag & 4; + } else if (end - fp.tell() == 24) { + out[i].amount = fp.readShort(); + out[i].WearState = fp.readULong(); + out[i].slot.card1 = fp.readUShort(); + out[i].slot.card2 = fp.readUShort(); + out[i].slot.card3 = fp.readUShort(); + out[i].slot.card4 = fp.readUShort(); + out[i].expireTime = fp.readULong(); + flag = fp.readUChar(); + out[i].IsIdentified = flag & 0x1; + out[i].PlaceETCTab = flag & 0x2; + } + } + return out; + })(); + }; + PACKET.ZC.EQUIPMENT_ITEMLIST5.size = -1; + // 0xa18 PACKET.ZC.ACCEPT_ENTER3 = function PACKET_ZC_ACCEPT_ENTER3(fp, end) { From 1749e4ff0788d435007e363d3f208bf9954fccfa Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sun, 23 Jul 2017 21:40:00 +0200 Subject: [PATCH 19/24] #29 - Improved packetversion support --- src/Engine/MapEngine/Item.js | 1 + src/Network/PacketStructure.js | 62 +++++++++++++--------------------- 2 files changed, 25 insertions(+), 38 deletions(-) diff --git a/src/Engine/MapEngine/Item.js b/src/Engine/MapEngine/Item.js index a2b32c1..12ea80f 100644 --- a/src/Engine/MapEngine/Item.js +++ b/src/Engine/MapEngine/Item.js @@ -362,6 +362,7 @@ define(function( require ) Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST2, onInventorySetList ); Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST3, onInventorySetList ); Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST4, onInventorySetList ); + Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST5, onInventorySetList ); Network.hookPacket( PACKET.ZC.REQ_TAKEOFF_EQUIP_ACK, onEquipementTakeOff ); Network.hookPacket( PACKET.ZC.REQ_TAKEOFF_EQUIP_ACK2, onEquipementTakeOff ); Network.hookPacket( PACKET.ZC.ACK_TAKEOFF_EQUIP_V5, onEquipementTakeOff ); diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index ad9d9c8..985e22e 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -145,7 +145,6 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK }; PACKET.CZ.ENTER.prototype.build = function() { var ver = this.getPacketVersion(); - console.log(ver); var pkt = new BinaryWriter(ver[2]); pkt.writeShort(ver[1]); @@ -11289,43 +11288,30 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK out[i].ITID = fp.readUShort(); out[i].type = fp.readUChar(); - if (end - fp.tell() == 31) { - out[i].location = fp.readULong(); - out[i].WearState = fp.readULong(); - out[i].RefiningLevel = fp.readUChar(); - out[i].slot = {}; - out[i].slot.card1 = fp.readUShort(); - out[i].slot.card2 = fp.readUShort(); - out[i].slot.card3 = fp.readUShort(); - out[i].slot.card4 = fp.readUShort(); - out[i].HireExpireDate = fp.readLong(); - out[i].bindOnEquipType = fp.readUShort(); - out[i].wItemSpriteNumber = fp.readUShort(); - if (PACKETVER.value >= 20150226) { // Random Options Support - out[i].option = []; - for (var j = 0; j < 5; j++) { - out[i].option[j] = {}; - out[i].option[j].optIndex = fp.readUShort(); - out[i].option[j].value = fp.readShort(); - out[i].option[j].param = fp.readChar(); - } - } - flag = fp.readUChar(); - out[i].IsIdentified = flag & 1; - out[i].IsDamaged = flag & 2; - out[i].PlaceETCTab = flag & 4; - } else if (end - fp.tell() == 24) { - out[i].amount = fp.readShort(); - out[i].WearState = fp.readULong(); - out[i].slot.card1 = fp.readUShort(); - out[i].slot.card2 = fp.readUShort(); - out[i].slot.card3 = fp.readUShort(); - out[i].slot.card4 = fp.readUShort(); - out[i].expireTime = fp.readULong(); - flag = fp.readUChar(); - out[i].IsIdentified = flag & 0x1; - out[i].PlaceETCTab = flag & 0x2; - } + out[i].location = fp.readULong(); + out[i].WearState = fp.readULong(); + out[i].RefiningLevel = fp.readUChar(); + out[i].slot = {}; + out[i].slot.card1 = fp.readUShort(); + out[i].slot.card2 = fp.readUShort(); + out[i].slot.card3 = fp.readUShort(); + out[i].slot.card4 = fp.readUShort(); + out[i].HireExpireDate = fp.readLong(); + out[i].bindOnEquipType = fp.readUShort(); + out[i].wItemSpriteNumber = fp.readUShort(); + if (PACKETVER.value >= 20150226) { // Random Options Support + out[i].option = []; + for (var j = 0; j < 5; j++) { + out[i].option[j] = {}; + out[i].option[j].optIndex = fp.readUShort(); + out[i].option[j].value = fp.readShort(); + out[i].option[j].param = fp.readChar(); + } + } + flag = fp.readUChar(); + out[i].IsIdentified = flag & 1; + out[i].IsDamaged = flag & 2; + out[i].PlaceETCTab = flag & 4; } return out; })(); From d54c33cfbee7a4082609d8ef7d91cf60a475b305 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 21:41:50 +0200 Subject: [PATCH 20/24] Fixed merge conflict --- src/Network/PacketStructure.js | 46 ++++++++++++++++------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index 985e22e..9d9cc3c 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -11288,30 +11288,28 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK out[i].ITID = fp.readUShort(); out[i].type = fp.readUChar(); - out[i].location = fp.readULong(); - out[i].WearState = fp.readULong(); - out[i].RefiningLevel = fp.readUChar(); - out[i].slot = {}; - out[i].slot.card1 = fp.readUShort(); - out[i].slot.card2 = fp.readUShort(); - out[i].slot.card3 = fp.readUShort(); - out[i].slot.card4 = fp.readUShort(); - out[i].HireExpireDate = fp.readLong(); - out[i].bindOnEquipType = fp.readUShort(); - out[i].wItemSpriteNumber = fp.readUShort(); - if (PACKETVER.value >= 20150226) { // Random Options Support - out[i].option = []; - for (var j = 0; j < 5; j++) { - out[i].option[j] = {}; - out[i].option[j].optIndex = fp.readUShort(); - out[i].option[j].value = fp.readShort(); - out[i].option[j].param = fp.readChar(); - } - } - flag = fp.readUChar(); - out[i].IsIdentified = flag & 1; - out[i].IsDamaged = flag & 2; - out[i].PlaceETCTab = flag & 4; + out[i].location = fp.readULong(); + out[i].WearState = fp.readULong(); + out[i].RefiningLevel = fp.readUChar(); + out[i].slot = {}; + out[i].slot.card1 = fp.readUShort(); + out[i].slot.card2 = fp.readUShort(); + out[i].slot.card3 = fp.readUShort(); + out[i].slot.card4 = fp.readUShort(); + out[i].HireExpireDate = fp.readLong(); + out[i].bindOnEquipType = fp.readUShort(); + out[i].wItemSpriteNumber = fp.readUShort(); + out[i].option = []; + for (var j = 0; j < 5; j++) { + out[i].option[j] = {}; + out[i].option[j].optIndex = fp.readUShort(); + out[i].option[j].value = fp.readShort(); + out[i].option[j].param = fp.readChar(); + } + flag = fp.readUChar(); + out[i].IsIdentified = flag & 1; + out[i].IsDamaged = flag & 2; + out[i].PlaceETCTab = flag & 4; } return out; })(); From 9051878d61a54d54e32231b44e5d571451c8f925 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 21:48:00 +0200 Subject: [PATCH 21/24] Fixed forgotten attribute and size mismatch --- src/Network/PacketStructure.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index 9d9cc3c..cf65ab0 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -10723,6 +10723,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK out[i].index = fp.readShort(); out[i].ITID = fp.readUShort(); out[i].type = fp.readUChar(); + out[i].count = fp.readShort(); out[i].WearState = fp.readULong(); out[i].slot = {}; @@ -11279,7 +11280,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK // 0xa0d PACKET.ZC.EQUIPMENT_ITEMLIST5 = function PACKET_ZC_EQUIPMENT_ITEMLIST5(fp, end) { this.ItemInfo = (function() { - var i, count = (end - fp.tell()) / 31 | 0, + var i, count = (end - fp.tell()) / 57 | 0, out = new Array(count); var flag; for (i = 0; i < count; ++i) { @@ -11299,6 +11300,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK out[i].HireExpireDate = fp.readLong(); out[i].bindOnEquipType = fp.readUShort(); out[i].wItemSpriteNumber = fp.readUShort(); + out[i].nRandomOptionCnt = fp.readChar(); out[i].option = []; for (var j = 0; j < 5; j++) { out[i].option[j] = {}; From 40bbc66d64fc2dd83075affddf6e15df42170673 Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 22:41:40 +0200 Subject: [PATCH 22/24] Fixed new packets for packetver --- src/Engine/MapEngine/Item.js | 1 + src/Network/PacketRegister.js | 7 +- src/Network/PacketStructure.js | 135 ++++++++++++++++++++++++++++++++- src/Network/PacketVersions.js | 1 + 4 files changed, 141 insertions(+), 3 deletions(-) diff --git a/src/Engine/MapEngine/Item.js b/src/Engine/MapEngine/Item.js index 12ea80f..9f848ea 100644 --- a/src/Engine/MapEngine/Item.js +++ b/src/Engine/MapEngine/Item.js @@ -353,6 +353,7 @@ define(function( require ) Network.hookPacket( PACKET.ZC.ITEM_PICKUP_ACK2, onItemPickAnswer ); Network.hookPacket( PACKET.ZC.ITEM_PICKUP_ACK3, onItemPickAnswer ); Network.hookPacket( PACKET.ZC.ITEM_PICKUP_ACK5, onItemPickAnswer ); + Network.hookPacket( PACKET.ZC.ITEM_PICKUP_ACK6, onItemPickAnswer ); Network.hookPacket( PACKET.ZC.ITEM_THROW_ACK, onIventoryRemoveItem ); Network.hookPacket( PACKET.ZC.NORMAL_ITEMLIST, onInventorySetList ); Network.hookPacket( PACKET.ZC.NORMAL_ITEMLIST2, onInventorySetList ); diff --git a/src/Network/PacketRegister.js b/src/Network/PacketRegister.js index b55b254..ccd7b49 100644 --- a/src/Network/PacketRegister.js +++ b/src/Network/PacketRegister.js @@ -566,7 +566,12 @@ define( ['./PacketStructure' ], function( PACKET ) //0x9d5: npcmarketopenType //0x9d7: npcmarketresultackType 0xa00: PACKET.ZC.SHORTCUT_KEY_LIST_V3, // ok - 0xa0d: PACKET.ZC.EQUIPMENT_ITEMLIST5, + 0xa07: PACKET.ZC.ACK_REMOVE_RODEX_ITEM, + 0xa09: PACKET.ZC.ADD_EXCHANGE_ITEM3, + 0xa0a: PACKET.ZC.ADD_ITEM_TO_STORE3, + 0xa0b: PACKET.ZC.ADD_ITEM_TO_CART3, + 0xa0c: PACKET.ZC.ITEM_PICKUP_ACK6, + 0xa0d: PACKET.ZC.EQUIPMENT_ITEMLIST6, 0xa18: PACKET.ZC.ACCEPT_ENTER3, // ok 0xac4: PACKET.AC.ACCEPT_LOGIN3 diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index cf65ab0..c6b8fec 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -11277,8 +11277,139 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK }; PACKET.ZC.SHORTCUT_KEY_LIST_V3.size = 269; + + // 0xa07 + PACKET.ZC.ACK_REMOVE_RODEX_ITEM = function PACKET_ZC_ACK_REMOVE_RODEX_ITEM(fp, end) { + this.success = fp.readChar(); + this.index = fp.readUShort(); + this.amount = fp.readUShort(); + this.weight_ = fp.readShort(); + }; + PACKET.ZC.ACK_REMOVE_RODEX_ITEM.size = 9; + + + // 0xa08 + PACKET.CA.LOGIN = function PACKET_CA_LOGIN() { + this.receiver = ''; + }; + PACKET.CA.LOGIN.prototype.build = function() { + var pkt_len = 2 + 24; + var pkt_buf = new BinaryWriter(pkt_len); + + pkt_buf.writeShort(0x64); + pkt_buf.writeString(this.receiver); + return pkt_buf; + }; + + + // 0xa09 + PACKET.ZC.ADD_EXCHANGE_ITEM3 = function PACKET_ZC_ADD_EXCHANGE_ITEM3(fp, end) { + this.ITID = fp.readUShort(); + this.type = fp.readUChar(); + this.count = fp.readLong(); + this.IsIdentified = fp.readUChar(); + this.IsDamaged = fp.readUChar(); + this.RefiningLevel = fp.readUChar(); + this.slot = {}; + this.slot.card1 = fp.readUShort(); + this.slot.card2 = fp.readUShort(); + this.slot.card3 = fp.readUShort(); + this.slot.card4 = fp.readUShort(); + + this.randomOptions = [] + for (var i = 0; i < 5; i++) { + this.randomOptions[i] = {} + this.randomOptions[i].optIndex = fp.readShort(); + this.randomOptions[i].value = fp.readShort(); + this.randomOptions[i].param = fp.readChar(); + } + }; + PACKET.ZC.ADD_EXCHANGE_ITEM3.size = 44; + + + // 0xa0a + PACKET.ZC.ADD_ITEM_TO_STORE3 = function PACKET_ZC_ADD_ITEM_TO_STORE3(fp, end) { + this.index = fp.readShort(); + this.count = fp.readLong(); + this.ITID = fp.readUShort(); + this.type = fp.readUChar(); + this.IsIdentified = fp.readUChar(); + this.IsDamaged = fp.readUChar(); + this.RefiningLevel = fp.readUChar(); + this.slot = {}; + this.slot.card1 = fp.readUShort(); + this.slot.card2 = fp.readUShort(); + this.slot.card3 = fp.readUShort(); + this.slot.card4 = fp.readUShort(); + + this.randomOptions = [] + for (var i = 0; i < 5; i++) { + this.randomOptions[i] = {} + this.randomOptions[i].optIndex = fp.readShort(); + this.randomOptions[i].value = fp.readShort(); + this.randomOptions[i].param = fp.readChar(); + } + }; + PACKET.ZC.ADD_ITEM_TO_STORE3.size = 47; + + + // 0xa0b + PACKET.ZC.ADD_ITEM_TO_CART3 = function PACKET_ZC_ADD_ITEM_TO_CART3(fp, end) { + this.index = fp.readShort(); + this.count = fp.readLong(); + this.ITID = fp.readUShort(); + this.type = fp.readUChar(); + this.IsIdentified = fp.readUChar(); + this.IsDamaged = fp.readUChar(); + this.RefiningLevel = fp.readUChar(); + this.slot = {}; + this.slot.card1 = fp.readUShort(); + this.slot.card2 = fp.readUShort(); + this.slot.card3 = fp.readUShort(); + this.slot.card4 = fp.readUShort(); + + this.randomOptions = [] + for (var i = 0; i < 5; i++) { + this.randomOptions[i] = {} + this.randomOptions[i].optIndex = fp.readShort(); + this.randomOptions[i].value = fp.readShort(); + this.randomOptions[i].param = fp.readChar(); + } + }; + PACKET.ZC.ADD_ITEM_TO_CART2.size = 47; + + + // 0xa0c + PACKET.ZC.ITEM_PICKUP_ACK6 = function PACKET_ZC_ITEM_PICKUP_ACK6(fp, end) { + this.index = fp.readUShort(); + this.count = fp.readUShort(); + this.ITID = fp.readUShort(); + this.IsIdentified = fp.readUChar(); + this.IsDamaged = fp.readUChar(); + this.RefiningLevel = fp.readUChar(); + this.slot = {}; + this.slot.card1 = fp.readUShort(); + this.slot.card2 = fp.readUShort(); + this.slot.card3 = fp.readUShort(); + this.slot.card4 = fp.readUShort(); + this.location = fp.readLong(); + this.type = fp.readUChar(); + this.result = fp.readUChar(); + this.HireExpireDate = fp.readLong(); + + this.randomOptions = [] + for (var i = 0; i < 5; i++) { + this.randomOptions[i] = {} + this.randomOptions[i].optIndex = fp.readShort(); + this.randomOptions[i].value = fp.readShort(); + this.randomOptions[i].param = fp.readChar(); + } + }; + PACKET.ZC.ITEM_PICKUP_ACK6.size = 54; + + // 0xa0d - PACKET.ZC.EQUIPMENT_ITEMLIST5 = function PACKET_ZC_EQUIPMENT_ITEMLIST5(fp, end) { + PACKET.ZC.EQUIPMENT_ITEMLIST6 = function PACKET_ZC_EQUIPMENT_ITEMLIST6(fp, end) { this.ItemInfo = (function() { var i, count = (end - fp.tell()) / 57 | 0, out = new Array(count); @@ -11316,7 +11447,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK return out; })(); }; - PACKET.ZC.EQUIPMENT_ITEMLIST5.size = -1; + PACKET.ZC.EQUIPMENT_ITEMLIST6.size = -1; // 0xa18 diff --git a/src/Network/PacketVersions.js b/src/Network/PacketVersions.js index 365b84f..4167b9f 100644 --- a/src/Network/PacketVersions.js +++ b/src/Network/PacketVersions.js @@ -1309,6 +1309,7 @@ define( ['./PacketStructure'], function( PACKET ) [PACKET.CZ.ADD_FRIENDS,0x07E4,26,2], [PACKET.CZ.COMMAND_MER,0x0934,5,2,4], [PACKET.CZ.ACK_STORE_PASSWORD,0x095e,36,0], + [PACKET.CZ.REQ_OPEN_WRITE_RODEX,0x0a08,5], ], From 0ed29f1d1aea001cde7dc0c5569602ffd5fded38 Mon Sep 17 00:00:00 2001 From: Andre Cavallaro Date: Sun, 23 Jul 2017 23:00:48 +0200 Subject: [PATCH 23/24] #29 - Improved packetversion support --- src/Engine/MapEngine/Item.js | 2 +- src/Network/PacketStructure.js | 4 ++-- src/Network/PacketVersions.js | 2 +- src/UI/Components/BasicInfo/BasicInfo.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Engine/MapEngine/Item.js b/src/Engine/MapEngine/Item.js index 9f848ea..c261a68 100644 --- a/src/Engine/MapEngine/Item.js +++ b/src/Engine/MapEngine/Item.js @@ -363,7 +363,7 @@ define(function( require ) Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST2, onInventorySetList ); Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST3, onInventorySetList ); Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST4, onInventorySetList ); - Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST5, onInventorySetList ); + Network.hookPacket( PACKET.ZC.EQUIPMENT_ITEMLIST6, onInventorySetList ); Network.hookPacket( PACKET.ZC.REQ_TAKEOFF_EQUIP_ACK, onEquipementTakeOff ); Network.hookPacket( PACKET.ZC.REQ_TAKEOFF_EQUIP_ACK2, onEquipementTakeOff ); Network.hookPacket( PACKET.ZC.ACK_TAKEOFF_EQUIP_V5, onEquipementTakeOff ); diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index c6b8fec..15a633d 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -11289,10 +11289,10 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK // 0xa08 - PACKET.CA.LOGIN = function PACKET_CA_LOGIN() { + PACKET.CZ.REQ_OPEN_WRITE_RODEX = function PACKET_CA_LOGIN() { this.receiver = ''; }; - PACKET.CA.LOGIN.prototype.build = function() { + PACKET.CZ.REQ_OPEN_WRITE_RODEX.prototype.build = function() { var pkt_len = 2 + 24; var pkt_buf = new BinaryWriter(pkt_len); diff --git a/src/Network/PacketVersions.js b/src/Network/PacketVersions.js index 4167b9f..3dfc020 100644 --- a/src/Network/PacketVersions.js +++ b/src/Network/PacketVersions.js @@ -1309,7 +1309,7 @@ define( ['./PacketStructure'], function( PACKET ) [PACKET.CZ.ADD_FRIENDS,0x07E4,26,2], [PACKET.CZ.COMMAND_MER,0x0934,5,2,4], [PACKET.CZ.ACK_STORE_PASSWORD,0x095e,36,0], - [PACKET.CZ.REQ_OPEN_WRITE_RODEX,0x0a08,5], + // [PACKET.CZ.REQ_OPEN_WRITE_RODEX,0x0a08,5,2], ], diff --git a/src/UI/Components/BasicInfo/BasicInfo.js b/src/UI/Components/BasicInfo/BasicInfo.js index 301e0c3..aa73fe9 100644 --- a/src/UI/Components/BasicInfo/BasicInfo.js +++ b/src/UI/Components/BasicInfo/BasicInfo.js @@ -231,7 +231,7 @@ define(function(require) * @param {number} val1 * @param {number} val2 (optional) */ - BasicInfo.update = function ipdate( type, val1, val2 ) + BasicInfo.update = function update( type, val1, val2 ) { switch (type) { case 'name': From a7c8e790493a0934c1c69e544105810188ea91de Mon Sep 17 00:00:00 2001 From: Jannik Franz Date: Sun, 23 Jul 2017 23:13:49 +0200 Subject: [PATCH 24/24] Fixed typo in size --- src/Network/PacketStructure.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Network/PacketStructure.js b/src/Network/PacketStructure.js index 15a633d..f2c2de6 100644 --- a/src/Network/PacketStructure.js +++ b/src/Network/PacketStructure.js @@ -11324,7 +11324,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK this.randomOptions[i].param = fp.readChar(); } }; - PACKET.ZC.ADD_EXCHANGE_ITEM3.size = 44; + PACKET.ZC.ADD_EXCHANGE_ITEM3.size = 45; // 0xa0a @@ -11405,7 +11405,7 @@ define(['Utils/BinaryWriter', './PacketVerManager'], function(BinaryWriter, PACK this.randomOptions[i].param = fp.readChar(); } }; - PACKET.ZC.ITEM_PICKUP_ACK6.size = 54; + PACKET.ZC.ITEM_PICKUP_ACK6.size = 56; // 0xa0d