diff --git a/AOSnifferNET/AOSnifferNET.csproj b/AOSnifferNET/AOSnifferNET.csproj
index 0d41438..6e7d58d 100644
--- a/AOSnifferNET/AOSnifferNET.csproj
+++ b/AOSnifferNET/AOSnifferNET.csproj
@@ -111,6 +111,7 @@
..\packages\SharpPcap.6.2.5\lib\netstandard2.0\SharpPcap.dll
+ True
@@ -151,8 +152,14 @@
+
+
+
+
+
+
@@ -188,6 +195,7 @@
+
diff --git a/AOSnifferNET/AlbionObjects/AuctionItems.cs b/AOSnifferNET/AlbionObjects/AuctionItems.cs
index 57640cf..4a6c0bd 100644
--- a/AOSnifferNET/AlbionObjects/AuctionItems.cs
+++ b/AOSnifferNET/AlbionObjects/AuctionItems.cs
@@ -10,7 +10,7 @@ namespace AOSnifferNET
//\"HasBuyerFetched\":false,\"HasSellerFetched\":false,\"SellerCharacterId\":\"cc61fb20-fa4a-4fe2-843e-1f71f25d0f4a\",\"SellerName\":\"SoloAGG\",
//\"BuyerCharacterId\":null,\"BuyerName\":null,\"ItemTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"ItemGroupTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",
//\"EnchantmentLevel\":0,\"QualityLevel\":1,\"Expires\":\"2022-06-17T01:47:22.125773\",\"ReferenceId\":\"8f62ce8b-3521-48dc-a429-32671c5aaeeb\"}
- internal class AuctionItems
+ public class AuctionItems
{
public long id;
public long unitPriceSilver;
diff --git a/AOSnifferNET/AlbionObjects/Harvestable/HarvestableObject.cs b/AOSnifferNET/AlbionObjects/Harvestable/HarvestableObject.cs
index 44398e2..54c2170 100644
--- a/AOSnifferNET/AlbionObjects/Harvestable/HarvestableObject.cs
+++ b/AOSnifferNET/AlbionObjects/Harvestable/HarvestableObject.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class HarvestableObject
+ public class HarvestableObject
{
public int id;
public byte type;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/HarvestableChangeState.cs b/AOSnifferNET/AlbionObjects/Packets/Events/HarvestableChangeState.cs
index 3935288..e8ffd23 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/HarvestableChangeState.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/HarvestableChangeState.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class HarvestableChangeState
+ public class HarvestableChangeState
{
public int id;
public int charges;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/HarvestableObjectList.cs b/AOSnifferNET/AlbionObjects/Packets/Events/HarvestableObjectList.cs
index 0622736..e0efbc7 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/HarvestableObjectList.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/HarvestableObjectList.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class HarvestableObjectList
+ public class HarvestableObjectList
{
public List harvestableObjectList;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/InCombatStateUpdate.cs b/AOSnifferNET/AlbionObjects/Packets/Events/InCombatStateUpdate.cs
index 2738a8d..3b00703 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/InCombatStateUpdate.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/InCombatStateUpdate.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class InCombatStateUpdate
+ public class InCombatStateUpdate
{
//InCombatStateUpdate: {"0":297731,"2":true,"252":255}
public long playerId;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evActiveSpellEffectsUpdate.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evActiveSpellEffectsUpdate.cs
new file mode 100644
index 0000000..3a0e46a
--- /dev/null
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evActiveSpellEffectsUpdate.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AOSnifferNET
+{
+ public class evActiveSpellEffectsUpdate
+ {
+ }
+}
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evAttachItemContainer.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evAttachItemContainer.cs
index 91e8d1e..df6710d 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evAttachItemContainer.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evAttachItemContainer.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evAttachItemContainer
+ public class evAttachItemContainer
{
public int objectID;
public byte[] ownerMarkID;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evAttack.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evAttack.cs
index 7faed42..c3d6aa1 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evAttack.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evAttack.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evAttack
+ public class evAttack
{
public int attackerID;
public int targetID;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evCastHits.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evCastHits.cs
new file mode 100644
index 0000000..02077d8
--- /dev/null
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evCastHits.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AOSnifferNET
+{
+ public class evCastHits
+ {
+ }
+}
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evCastStart.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evCastStart.cs
new file mode 100644
index 0000000..ec28858
--- /dev/null
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evCastStart.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AOSnifferNET
+{
+ public class evCastStart
+ {
+ }
+}
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evCastTimeUpdate.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evCastTimeUpdate.cs
new file mode 100644
index 0000000..aba4aa8
--- /dev/null
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evCastTimeUpdate.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AOSnifferNET
+{
+ public class evCastTimeUpdate
+ {
+ }
+}
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evCharacterEquipmentChanged.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evCharacterEquipmentChanged.cs
index d721365..454292f 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evCharacterEquipmentChanged.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evCharacterEquipmentChanged.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evCharacterEquipmentChanged
+ public class evCharacterEquipmentChanged
{
public short[] items;
public short[] skills;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evEasyAntiCheatMessageToClient.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evEasyAntiCheatMessageToClient.cs
new file mode 100644
index 0000000..81d022f
--- /dev/null
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evEasyAntiCheatMessageToClient.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AOSnifferNET
+{
+ public class evEasyAntiCheatMessageToClient
+ {
+ }
+}
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evFishingMiniGame.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evFishingMiniGame.cs
new file mode 100644
index 0000000..ba8c0f4
--- /dev/null
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evFishingMiniGame.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AOSnifferNET
+{
+ public class evFishingMiniGame
+ {
+ }
+}
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evHarvestFinished.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evHarvestFinished.cs
index b4fc5bd..d159086 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evHarvestFinished.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evHarvestFinished.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evHarvestFinished
+ public class evHarvestFinished
{
public int playerId;
public int harvestableId;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evHarvestStart.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evHarvestStart.cs
index b084697..aa7aefd 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evHarvestStart.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evHarvestStart.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
//HarvestStart: {"0":807374,"1":637995874087127581,"2":637995874087127581,"3":3802,"4":23,"5":1.4,"6":807547,"7":2151,"252":52} 0: playerId 3: harvestableId 4:type 5:time to finish
- internal class evHarvestStart
+ public class evHarvestStart
{
public int harvestableId;
public float timeToFinish;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evHealthUpdate.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evHealthUpdate.cs
index 18c6390..7ce1673 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evHealthUpdate.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evHealthUpdate.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
// mi id: "characterId":166380" PACKETE: {"0: targetEntityId":166414,"1":14992275,"2: healthUpdate":-10.0,"3: targetEntityCurrentHealth":591.0,"4":1,"5":5,"6: attackerEntityId":166380,"7":1757,"252":6}
- internal class evHealthUpdate
+ public class evHealthUpdate
{
public int targetEntityId;
public int targetHealthUpdate;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evInventoryPutItem.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evInventoryPutItem.cs
index d855923..51a797e 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evInventoryPutItem.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evInventoryPutItem.cs
@@ -2,7 +2,7 @@
namespace AOSnifferNET
{
- internal class evInventoryPutItem
+ public class evInventoryPutItem
{
public int itemID;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evJoinFinished.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evJoinFinished.cs
index 713fc56..7bbb621 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evJoinFinished.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evJoinFinished.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evJoinFinished
+ public class evJoinFinished
{
public bool joinFinished;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evLeave.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evLeave.cs
index c4f8745..eb09af7 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evLeave.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evLeave.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evLeave
+ public class evLeave
{
public int entityId;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evMobChangeState.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evMobChangeState.cs
index 521efd8..8635fea 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evMobChangeState.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evMobChangeState.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evMobChangeState
+ public class evMobChangeState
{
public int mobID;
public short enchantment;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evMounted.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evMounted.cs
index 508c992..52ac69d 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evMounted.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evMounted.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evMounted
+ public class evMounted
{
public int playerId;
public bool isMounted;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewBuilding.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewBuilding.cs
index 33e1fdc..6628e0b 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewBuilding.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewBuilding.cs
@@ -4,7 +4,7 @@ namespace AOSnifferNET
{
// {"0":3978,"1":"/rjqYKIGrkKfUuUcq51rxA==","2":466,"3":"MOUNTAIN_GREEN_REPAIRSHOP_OUTPOST","4":[285.0,-294.0],"8":"System","9":"System","13":true,"16":17496000000,"17":638132642575260623,"18":7950000000,"19":-1,"20":638238907980059788,"21":7949930000,"22":638132642575260623,"26":true,"27":true,"28":true,"29":0,"252":41}
- internal class evNewBuilding
+ public class evNewBuilding
{
public int packetID;
public string name;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewCharacter.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewCharacter.cs
index ce7f0d7..9d496d9 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewCharacter.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewCharacter.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evNewCharacter
+ public class evNewCharacter
{
public int id;
public string nick;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewExit.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewExit.cs
index 798a622..877ee94 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewExit.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewExit.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
// {"0":1,"1":"P0qQVW1rgESBs9jwDb9+ZA==","2":[-15.0,35.0],"252":205}
- internal class evNewExit
+ public class evNewExit
{
public Single[] pos;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewFishingZoneObject.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewFishingZoneObject.cs
index ef59a6a..79eb755 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewFishingZoneObject.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewFishingZoneObject.cs
@@ -4,7 +4,7 @@ namespace AOSnifferNET
{
//NewFishingZoneObject: { "0":1182,"1":[253.4,52.8],"2":3,"3":2,"4":"FishingNodeSwarm","252":341}
//0: objectID 1: zone pos 2:charges (not present when empty) 3:times fished from 4:zone tipe
- internal class evNewFishingZoneObject
+ public class evNewFishingZoneObject
{
public int objectID;
public Single[] zonePos;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewFloatObject.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewFloatObject.cs
index 2909c36..ea86d1c 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewFloatObject.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewFloatObject.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evNewFloatObject
+ public class evNewFloatObject
{
public int bobberID;
public Single[] bobberPos;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewLoot.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewLoot.cs
index 7daaca0..22c9546 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewLoot.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewLoot.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evNewLoot
+ public class evNewLoot
{
public int lootId;
public Single[] pos;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewMob.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewMob.cs
index 5354097..9e9c572 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewMob.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewMob.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
// map[0:830511 1:753 2:-1 6: 7:[-270 -68] 8:[-270 -68] 9:63249422 10:180 11:2.25 13:385 14:385 16:63249422 17:138 18:138 19:4 20:63249422 28:0 252:113]
- internal class evNewMob
+ public class evNewMob
{
public int id;
public int typeId;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewMountObject.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewMountObject.cs
index 94c3168..dee149a 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewMountObject.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewMountObject.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evNewMountObject
+ public class evNewMountObject
{
public int id;
public float[] pos;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewPortalExit.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewPortalExit.cs
index 343ab35..7314306 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewPortalExit.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewPortalExit.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
// [0:1871612 1:[70 -201] 3:MOUNTAIN_GREEN_RANDOM_EXIT_10x10_PORTAL_SOLO_B 4:true 5:0 11:0 12:1 252:301]
- internal class evNewPortalExit
+ public class evNewPortalExit
{
public int id;
public Single[] pos;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evNewSimpleItem.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evNewSimpleItem.cs
index 38e176d..5cfd658 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evNewSimpleItem.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evNewSimpleItem.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evNewSimpleItem
+ public class evNewSimpleItem
{
public int objectID;
public int itemID;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Events/evUpdateSilver.cs b/AOSnifferNET/AlbionObjects/Packets/Events/evUpdateSilver.cs
index ba15012..ac2cdc1 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Events/evUpdateSilver.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Events/evUpdateSilver.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class evUpdateSilver
+ public class evUpdateSilver
{
public int id;
public long currentSilver;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/UnRegisterFromObject.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/UnRegisterFromObject.cs
index 3120bb6..89dd51c 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/UnRegisterFromObject.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/UnRegisterFromObject.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class UnRegisterFromObject
+ public class UnRegisterFromObject
{
public long objectId;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opAuctionGetAny.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opAuctionGetAny.cs
index 60d82e9..026878b 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opAuctionGetAny.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opAuctionGetAny.cs
@@ -3,7 +3,7 @@
namespace AOSnifferNET
{
// {"0":8,"1":"accessories","2":"bag","3":"5","4":0,"5":"8","6":'query text', "7":0,"8":"3","9":50,"11":0,"12":true,"253":76} (id, category, subcategory, quality, unknown, tier, unknown, enhancement...
- internal class opAuctionGetAny
+ public class opAuctionGetAny
{
public int id;
public Int16[] itemsID;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opHarvestStart.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opHarvestStart.cs
index 234fbc6..db2b9b1 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opHarvestStart.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opHarvestStart.cs
@@ -1,6 +1,6 @@
namespace AOSnifferNET
{
- internal class opHarvestStart
+ public class opHarvestStart
{
public int harvestableId;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opMount.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opMount.cs
index c74dd29..e95c3d5 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opMount.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opMount.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
//{ "0":637903427842091224,"1":214347,"2: Mounting or unmounted if absent":true,"3: quickMounting":true,"253":192}
- internal class opMount
+ public class opMount
{
public bool isMounting;
public bool quickMounting;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opMove.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opMove.cs
index 0bb385d..4202ec3 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opMove.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opMove.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
// [OnRequest]Move: [{"Key":0,"Value":637885351667868041},{"Key":1,"Value":[-21.3366661,12.3170137]},{"Key":2,"Value":138.935577},{"Key":3,"Value":[-21.3366661,12.3170137]},{"Key":4,"Value":8.8},{"Key":253,"Value":21}]
- internal class opMove
+ public class opMove
{
public long id;
public float[] pos;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opRegisterToObject.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opRegisterToObject.cs
index 13fb547..e32cad0 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opRegisterToObject.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Request/opRegisterToObject.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class opRegisterToObject
+ public class opRegisterToObject
{
public long objectId;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Response/OpJoin.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Response/OpJoin.cs
index 027db1c..36119f5 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Response/OpJoin.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Response/OpJoin.cs
@@ -16,7 +16,7 @@
// 46: items equiped
// 49: skills
// 60: previous cluster
- internal class OpJoin
+ public class OpJoin
{
public int characterId;
public byte[] markId;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetItemAverageValue.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetItemAverageValue.cs
index 05b11af..c4f332a 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetItemAverageValue.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetItemAverageValue.cs
@@ -6,7 +6,7 @@
namespace AOSnifferNET
{
- internal class opAuctionGetItemAverageValue
+ public class opAuctionGetItemAverageValue
{
public long itemAverageValue;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetOffersResponse.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetOffersResponse.cs
index e344d31..e47f143 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetOffersResponse.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetOffersResponse.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
//{"0":["{\"Id\":8755020507,\"UnitPriceSilver\":19999980000,\"TotalPriceSilver\":19999980000,\"Amount\":1,\"Tier\":8,\"IsFinished\":false,\"AuctionType\":\"offer\",\"HasBuyerFetched\":false,\"HasSellerFetched\":false,\"SellerCharacterId\":\"cc61fb20-fa4a-4fe2-843e-1f71f25d0f4a\",\"SellerName\":\"SoloAGG\",\"BuyerCharacterId\":null,\"BuyerName\":null,\"ItemTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"ItemGroupTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"EnchantmentLevel\":0,\"QualityLevel\":1,\"Expires\":\"2022-06-17T01:47:22.125773\",\"ReferenceId\":\"8f62ce8b-3521-48dc-a429-32671c5aaeeb\"}","{\"Id\":8715166777,\"UnitPriceSilver\":20000000000,\"TotalPriceSilver\":20000000000,\"Amount\":1,\"Tier\":8,\"IsFinished\":false,\"AuctionType\":\"offer\",\"HasBuyerFetched\":false,\"HasSellerFetched\":false,\"SellerCharacterId\":\"d35fd339-c5a7-45e8-8ed7-766cfc5cf33e\",\"SellerName\":\"CAHEK48\",\"BuyerCharacterId\":null,\"BuyerName\":null,\"ItemTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"ItemGroupTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"EnchantmentLevel\":0,\"QualityLevel\":1,\"Expires\":\"2022-06-08T22:04:09.684997\",\"ReferenceId\":\"2d4a743f-0e0d-46a1-bf62-4c195d1b42cf\"}","{\"Id\":8745473936,\"UnitPriceSilver\":20000000000,\"TotalPriceSilver\":60000000000,\"Amount\":3,\"Tier\":8,\"IsFinished\":false,\"AuctionType\":\"offer\",\"HasBuyerFetched\":false,\"HasSellerFetched\":false,\"SellerCharacterId\":\"13314bf9-3080-459e-ade7-bae3a0f794ac\",\"SellerName\":\"AnemiaxD\",\"BuyerCharacterId\":null,\"BuyerName\":null,\"ItemTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"ItemGroupTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"EnchantmentLevel\":0,\"QualityLevel\":1,\"Expires\":\"2022-06-15T02:11:45.049899\",\"ReferenceId\":\"14b2dda0-d63b-4c28-a35d-c227b6d2b4be\"}"],"253":76}
- internal class opAuctionGetOffersResponse
+ public class opAuctionGetOffersResponse
{
public List offersList;
diff --git a/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetRequestsResponse.cs b/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetRequestsResponse.cs
index 437ecbb..393ee7e 100644
--- a/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetRequestsResponse.cs
+++ b/AOSnifferNET/AlbionObjects/Packets/Operations/Response/opAuctionGetRequestsResponse.cs
@@ -7,7 +7,7 @@
namespace AOSnifferNET
{
//{"0":["{\"Id\":8755020507,\"UnitPriceSilver\":19999980000,\"TotalPriceSilver\":19999980000,\"Amount\":1,\"Tier\":8,\"IsFinished\":false,\"AuctionType\":\"offer\",\"HasBuyerFetched\":false,\"HasSellerFetched\":false,\"SellerCharacterId\":\"cc61fb20-fa4a-4fe2-843e-1f71f25d0f4a\",\"SellerName\":\"SoloAGG\",\"BuyerCharacterId\":null,\"BuyerName\":null,\"ItemTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"ItemGroupTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"EnchantmentLevel\":0,\"QualityLevel\":1,\"Expires\":\"2022-06-17T01:47:22.125773\",\"ReferenceId\":\"8f62ce8b-3521-48dc-a429-32671c5aaeeb\"}","{\"Id\":8715166777,\"UnitPriceSilver\":20000000000,\"TotalPriceSilver\":20000000000,\"Amount\":1,\"Tier\":8,\"IsFinished\":false,\"AuctionType\":\"offer\",\"HasBuyerFetched\":false,\"HasSellerFetched\":false,\"SellerCharacterId\":\"d35fd339-c5a7-45e8-8ed7-766cfc5cf33e\",\"SellerName\":\"CAHEK48\",\"BuyerCharacterId\":null,\"BuyerName\":null,\"ItemTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"ItemGroupTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"EnchantmentLevel\":0,\"QualityLevel\":1,\"Expires\":\"2022-06-08T22:04:09.684997\",\"ReferenceId\":\"2d4a743f-0e0d-46a1-bf62-4c195d1b42cf\"}","{\"Id\":8745473936,\"UnitPriceSilver\":20000000000,\"TotalPriceSilver\":60000000000,\"Amount\":3,\"Tier\":8,\"IsFinished\":false,\"AuctionType\":\"offer\",\"HasBuyerFetched\":false,\"HasSellerFetched\":false,\"SellerCharacterId\":\"13314bf9-3080-459e-ade7-bae3a0f794ac\",\"SellerName\":\"AnemiaxD\",\"BuyerCharacterId\":null,\"BuyerName\":null,\"ItemTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"ItemGroupTypeId\":\"T8_FURNITUREITEM_TROPHY_ORE\",\"EnchantmentLevel\":0,\"QualityLevel\":1,\"Expires\":\"2022-06-15T02:11:45.049899\",\"ReferenceId\":\"14b2dda0-d63b-4c28-a35d-c227b6d2b4be\"}"],"253":76}
- internal class opAuctionGetRequestsResponse
+ public class opAuctionGetRequestsResponse
{
public List requestsList;
diff --git a/AOSnifferNET/AlbionPackets/PacketDelegate.cs b/AOSnifferNET/AlbionPackets/PacketDelegate.cs
new file mode 100644
index 0000000..e3e6213
--- /dev/null
+++ b/AOSnifferNET/AlbionPackets/PacketDelegate.cs
@@ -0,0 +1,53 @@
+using System;
+
+namespace AOSnifferNET
+{
+ public delegate void RequestMove(opMove data);
+ public delegate void RequestMount(opMount data);
+ public delegate void RequestHarvestStart(opHarvestStart data);
+ public delegate void RequestAuctionGetOffers(opAuctionGetAny data);
+ public delegate void RequestAuctionGetRequests(opAuctionGetAny data);
+ public delegate void RequestRegisterToObject(opRegisterToObject data);
+ public delegate void RequestUnRegisterFromObject(UnRegisterFromObject data);
+
+ public delegate void ResponseJoin(OpJoin data);
+ public delegate void ResponseAuctionGetOffers(opAuctionGetOffersResponse data);
+ public delegate void ResponseAuctionGetRequests(opAuctionGetRequestsResponse data);
+ public delegate void ResponseAuctionGetItemAverageValue(opAuctionGetItemAverageValue data);
+
+ public delegate void EventMove(Entity data);
+ public delegate void EventCharacterEquipmentChanged(evCharacterEquipmentChanged data);
+ public delegate void EventNewExit(evNewExit data);
+ public delegate void EventInventoryPutItem(evInventoryPutItem data);
+ public delegate void EventNewItem(evNewSimpleItem data);
+ public delegate void EventAttachItemContainer(evAttachItemContainer data);
+ public delegate void EventNewLoot(evNewLoot data);
+ public delegate void EventNewCharacter(evNewCharacter data);
+ public delegate void EventLeave(evLeave data);
+ public delegate void EventMounted(evMounted data);
+ public delegate void EventNewMountObject(evNewMountObject data);
+ public delegate void EventNewMob(evNewMob data);
+ public delegate void EventJoinFinished(evJoinFinished data);
+ public delegate void EventUpdateMoney(evUpdateSilver data);
+ public delegate void EventHarvestableObject(HarvestableObject data);
+ public delegate void EventHarvestableObjectList(HarvestableObjectList data);
+ public delegate void EventHarvestableChangeState(HarvestableChangeState data);
+ public delegate void EventMobChangeState(evMobChangeState data);
+ public delegate void EventInCombatStateUpdate(InCombatStateUpdate data);
+ public delegate void EventHealthUpdate(evHealthUpdate data);
+ public delegate void EventAttack(evAttack data);
+ public delegate void EventNewPortalExit(evNewPortalExit data);
+ public delegate void EventActiveSpellEffectsUpdate(evActiveSpellEffectsUpdate data);
+ public delegate void EventHarvestStart(evHarvestStart data);
+ public delegate void EventHarvestFinished(evHarvestFinished data);
+ public delegate void EventNewFloatObject(evNewFloatObject data);
+ public delegate void EventNewFishingZoneObject(evNewFishingZoneObject data);
+ public delegate void EventFishingMiniGame(evFishingMiniGame data);
+ public delegate void EventNewBuilding(evNewBuilding data);
+ public delegate void EventEasyAntiCheatMessageToClient(evEasyAntiCheatMessageToClient data);
+ public delegate void EventCastHits(evCastHits data);
+ public delegate void EventCastStart(evCastStart data);
+ public delegate void EventCastTimeUpdate(evCastTimeUpdate data);
+
+ public delegate void RespondHarvestStart(string Class, string Method, Exception Ex);
+}
diff --git a/AOSnifferNET/AlbionPackets/PacketHandler.cs b/AOSnifferNET/AlbionPackets/PacketHandler.cs
index 7678f7c..a6fb83c 100644
--- a/AOSnifferNET/AlbionPackets/PacketHandler.cs
+++ b/AOSnifferNET/AlbionPackets/PacketHandler.cs
@@ -6,315 +6,403 @@
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Security.Cryptography;
namespace AOSnifferNET
{
- class PacketHandler : PhotonParser
+ public class PacketHandler : PhotonParser
{
+ public event RequestMove OnRequestMove;
+ public event RequestMount OnRequestMount;
+ public event RequestHarvestStart OnRequestHarvestStart;
+ public event RequestAuctionGetOffers OnRequestAuctionGetOffers;
+ public event RequestAuctionGetRequests OnRequestAuctionGetRequests;
+ public event RequestRegisterToObject OnRequestRegisterToObject;
+ public event RequestUnRegisterFromObject OnRequestUnRegisterFromObject;
+
+ public event ResponseJoin OnResponseJoin;
+ public event ResponseAuctionGetOffers OnResponseAuctionGetOffers;
+ public event ResponseAuctionGetRequests OnResponseAuctionGetRequests;
+ public event ResponseAuctionGetItemAverageValue OnResponseAuctionGetItemAverageValue;
+
+ public event EventMove OnEventMove;
+ public event EventCharacterEquipmentChanged OnEventCharacterEquipmentChanged;
+ public event EventNewExit OnEventNewExit;
+ public event EventInventoryPutItem OnEventInventoryPutItem;
+ public event EventNewItem OnNewEquipmentItem;
+ public event EventNewItem OnNewSimpleItem;
+ public event EventNewItem OnNewFurnitureItem;
+ public event EventNewItem OnNewJournalItem;
+ public event EventNewItem OnNewLaborerItem;
+ public event EventAttachItemContainer OnEventAttachItemContainer;
+ public event EventNewLoot OnEventNewLoot;
+ public event EventNewCharacter OnEventNewCharacter;
+ public event EventLeave OnEventevLeave;
+ public event EventMounted OnEventMounted;
+ public event EventNewMountObject OnEventNewMountObject;
+ public event EventNewMob OnEventNewMob;
+ public event EventJoinFinished OnEventJoinFinished;
+ public event EventUpdateMoney OnEventUpdateMoney;
+ public event EventHarvestableObject OnEventNewHarvestableObject;
+ public event EventHarvestableObject OnEventNewSimpleHarvestableObject;
+ public event EventHarvestableObjectList OnEventNewSimpleHarvestableObjectList;
+ public event EventHarvestableChangeState OnEventHarvestableChangeState;
+ public event EventMobChangeState OnEventMobChangeState;
+ public event EventInCombatStateUpdate OnEventInCombatStateUpdate;
+ public event EventHealthUpdate OnEventHealthUpdate;
+ public event EventAttack OnEventAttack;
+ public event EventNewPortalExit OnEventNewPortalExit;
+ public event EventActiveSpellEffectsUpdate OnEventActiveSpellEffectsUpdate;
+ public event EventHarvestStart OnEventHarvestStart;
+ public event EventHarvestFinished OnEventHarvestFinished;
+ public event EventNewFloatObject OnEventNewFloatObject;
+ public event EventNewFishingZoneObject OnEventNewFishingZoneObject;
+ public event EventFishingMiniGame OnEventFishingMiniGame;
+ public event EventNewBuilding OnEventNewBuilding;
+ public event EventEasyAntiCheatMessageToClient OnEventEasyAntiCheatMessageToClient;
+ public event EventCastHits OnEventCastHits;
+ public event EventCastStart OnEventCastStart;
+ public event EventCastTimeUpdate OnEventCastTimeUpdate;
+
public PacketHandler() { }
protected override void OnEvent(byte code, Dictionary parameters)
{
- EventCodes evCode = 0;
- if (code == 1)
+ try
{
- parameters.TryGetValue((byte)252, out object val);
- if (val == null) return;
+ EventCodes evCode = 0;
- if (!int.TryParse(val.ToString(), out int iCode)) return;
-
- try
+ if (code == 1)
{
+ parameters.TryGetValue((byte)252, out object val);
+
+ if (val == null) return;
+
+ if (!int.TryParse(val.ToString(), out int iCode)) return;
+
evCode = (EventCodes)iCode;
}
- catch (System.Collections.Generic.KeyNotFoundException)
+ else
{
- debugPacket(parameters, iCode);
+ evCode = (EventCodes)code;
}
- }else
- {
- evCode = (EventCodes)code;
- }
- switch (evCode)
+ switch (evCode)
+ {
+ case EventCodes.Move:
+ onEventMove(parameters);
+ break;
+
+ case EventCodes.CharacterEquipmentChanged:
+ onCharacterEquipmentChanged(parameters);
+ break;
+
+ case EventCodes.NewExit:
+ onNewExit(parameters);
+ break;
+
+ case EventCodes.InventoryPutItem:
+ onInventoryPutItem(parameters);
+ break;
+
+ case EventCodes.NewEquipmentItem:
+ onNewEquipmentItem(parameters, evCode);
+ break;
+
+ case EventCodes.NewSimpleItem:
+ onNewSimpleItem(parameters, evCode);
+ break;
+
+ case EventCodes.NewFurnitureItem:
+ onNewFurnitureItem(parameters, evCode);
+ break;
+
+ case EventCodes.NewJournalItem:
+ onNewJournalItem(parameters, evCode);
+ break;
+
+ case EventCodes.NewLaborerItem:
+ onNewLaborerItem(parameters, evCode);
+ break;
+
+ case EventCodes.AttachItemContainer:
+ onAttachItemContainer(parameters);
+ break;
+
+ case EventCodes.NewLoot:
+ onNewLoot(parameters);
+ break;
+
+ case EventCodes.NewCharacter:
+ onNewCharacter(parameters);
+ break;
+
+ case EventCodes.Leave:
+ onLeaveEvent(parameters);
+ break;
+
+ case EventCodes.Mounted:
+ onMounted(parameters);
+ break;
+
+ case EventCodes.NewMountObject:
+ onNewMountObject(parameters);
+ break;
+
+ case EventCodes.NewMob:
+ onNewMob(parameters);
+ break;
+
+ case EventCodes.JoinFinished:
+ onJoinFinished(parameters);
+ break;
+
+ case EventCodes.UpdateMoney:
+ onUpdateSilver(parameters);
+ break;
+
+ case EventCodes.NewSimpleHarvestableObjectList:
+ onNewSimpleHarvestableObjectList(parameters);
+ break;
+
+ case EventCodes.NewSimpleHarvestableObject:
+ onNewSimpleHarvestableObject(parameters);
+ break;
+
+ case EventCodes.NewHarvestableObject:
+ onNewHarvestableObject(parameters);
+ break;
+
+ case EventCodes.HarvestableChangeState:
+ onHarvestableChangeState(parameters);
+ break;
+
+ case EventCodes.MobChangeState:
+ onMobChangeState(parameters);
+ break;
+
+ case EventCodes.InCombatStateUpdate:
+ onInCombatStateUpdate(parameters);
+ break;
+
+ case EventCodes.HealthUpdate:
+ onHealthUpdate(parameters);
+ break;
+
+ case EventCodes.Attack:
+ onAttack(parameters);
+ break;
+
+ case EventCodes.NewRandomDungeonExit:
+ onNewPortalExit(parameters);
+ break;
+
+ case EventCodes.ActiveSpellEffectsUpdate:
+ onActiveSpellEffectsUpdate(parameters);
+ break;
+
+ case EventCodes.HarvestStart:
+ onHarvestStart(parameters);
+ break;
+
+ case EventCodes.HarvestFinished:
+ onHarvestFinished(parameters);
+ break;
+
+ case EventCodes.NewFloatObject:
+ onNewFloatObject(parameters);
+ break;
+
+ case EventCodes.NewFishingZoneObject:
+ onNewFishingZoneObject(parameters);
+ break;
+
+ case EventCodes.FishingMiniGame:
+ onFishingMiniGame(parameters);
+ break;
+
+ case EventCodes.NewBuilding:
+ onNewBuilding(parameters);
+ break;
+
+ case EventCodes.EasyAntiCheatMessageToClient:
+ onEventEasyAntiCheatMessageToClient(parameters);
+ break;
+
+ case EventCodes.CastHits:
+ onEventCastHits(parameters);
+ break;
+
+ case EventCodes.CastStart:
+ onEventCastStart(parameters);
+ break;
+
+ case EventCodes.CastTimeUpdate:
+ onEventCastTimeUpdate(parameters);
+ break;
+
+ default:
+ debugPacket("OnEvent", code, parameters);
+ break;
+ }
+ }
+ catch (Exception ex)
{
- case EventCodes.Move:
- onEntityMovementEvent(parameters);
- break;
- case EventCodes.CharacterEquipmentChanged:
- onCharacterEquipmentChanged(parameters);
- break;
- case EventCodes.NewExit:
- //onNewExit(parameters);
- break;
- case EventCodes.InventoryPutItem:
- onInventoryPutItem(parameters);
- break;
- case EventCodes.NewEquipmentItem:
- onNewGeneralItem(parameters, evCode);
- break;
- case EventCodes.NewSimpleItem:
- onNewGeneralItem(parameters, evCode);
- break;
- case EventCodes.NewFurnitureItem:
- onNewGeneralItem(parameters, evCode);
- break;
- case EventCodes.NewJournalItem:
- onNewGeneralItem(parameters, evCode);
- break;
- case EventCodes.NewLaborerItem:
- onNewGeneralItem(parameters, evCode);
- break;
- case EventCodes.AttachItemContainer:
- onAttachItemContainer(parameters);
- break;
- case EventCodes.NewLoot:
- onNewLoot(parameters);
- break;
- case EventCodes.NewCharacter:
- onNewCharacter(parameters);
- break;
- case EventCodes.Leave:
- onLeaveEvent(parameters);
- break;
- case EventCodes.Mounted:
- onMounted(parameters);
- break;
- case EventCodes.NewMountObject:
- onNewMountObject(parameters);
- break;
- case EventCodes.NewMob:
- onNewMob(parameters);
- break;
- case EventCodes.JoinFinished:
- onJoinFinished();
- break;
- case EventCodes.UpdateMoney:
- onUpdateSilver(parameters);
- break;
- case EventCodes.NewSimpleHarvestableObjectList:
- onNewSimpleHarvestableObjectList(parameters);
- break;
- case EventCodes.NewHarvestableObject:
- onNewHarvestableObject(parameters);
- break;
- case EventCodes.HarvestableChangeState:
- onHarvestableChangeState(parameters);
- break;
- case EventCodes.MobChangeState:
- onMobChangeState(parameters);
- break;
- case EventCodes.InCombatStateUpdate:
- onInCombatStateUpdate(parameters);
- printEventInfo(parameters, EventCodes.InCombatStateUpdate);
- break;
- case EventCodes.HealthUpdate:
- onHealthUpdate(parameters);
- break;
- case EventCodes.Attack:
- onAttack(parameters);
- break;
- case EventCodes.NewRandomDungeonExit:
- onNewPortalExit(parameters);
- break;
- case EventCodes.ActiveSpellEffectsUpdate:
- // [10]evActiveSpellEffectsUpdate - map[0:655873 1:[685 279 339 509 399] 2:[100 389.11096 369.137 100 389.11096] 3:[100 233.6818 226.1142 100 233.6818] 4:[637945635939432036 637945670488995997 637945670488995997 637903462984937618 637945670488995997] 5:[1 10 10 1 10] 7:[75 - 110 36 73 - 110 36 73 - 110 36 9] 8:[208406056] 9:[9] 10:[0 0] 252:10]
- // 9 parece ser el tiempo restante
- //printEventInfo(parameters, evCode);
- break;
- case EventCodes.HarvestStart:
- onHarvestStart(parameters);
- break;
- case EventCodes.HarvestFinished:
- //onHarvestFinished(parameters);
- break;
- case EventCodes.NewFloatObject:
- onNewFloatObject(parameters);
- break;
- case EventCodes.NewFishingZoneObject:
- onNewFishingZoneObject(parameters);
- break;
- case EventCodes.FishingMiniGame:
- printEventInfo(parameters, evCode);
- break;
- case EventCodes.NewBuilding:
- onNewBuilding(parameters);
- break;
- case EventCodes.EasyAntiCheatMessageToClient:
- //printEventInfo(parameters, evCode);
- break;
- case EventCodes.CastHits:
- // {"0":88105,"1":95538,"2":4414,"3":1,"4":1,"252":20}
- // 0: target id 1: attacker id
- printEventInfo(parameters, evCode);
- break;
- case EventCodes.CastStart:
- // CastStart: {"0":89514,"1":18668197,"2":[201.960464,220.702423],"4":18669497,"5":4400,"6":-1,"8":7,"9":0,"252":13}
- // 0: caster id 2:Spell direction pos
- printEventInfo(parameters, evCode);
- break;
- case EventCodes.CastTimeUpdate:
- printEventInfo(parameters, evCode);
- break;
- default:
- printEventInfo(parameters, evCode);
- break;
+ debugPacket("OnEventEx", code, parameters);
}
}
protected override void OnRequest(byte operationCode, Dictionary parameters)
{
- parameters.TryGetValue((byte)253, out object val);
- if (val == null) return;
-
- if (!int.TryParse(val.ToString(), out int iCode)) return;
-
- OperationCodes opCode = 0;
try
{
- opCode = (OperationCodes)iCode;
- }
- catch (System.Collections.Generic.KeyNotFoundException)
- {
- debugPacket(parameters, iCode);
- }
+ parameters.TryGetValue((byte)253, out object val);
+
+ if (val == null) return;
+ if (!int.TryParse(val.ToString(), out int iCode)) return;
+
+ OperationCodes opCode = (OperationCodes)iCode;
- switch (opCode)
+ switch (opCode)
+ {
+ case OperationCodes.Move:
+ onRequestMove(parameters);
+ break;
+
+ case OperationCodes.AuctionGetOffers:
+ onRequestAuctionGetOffers(parameters);
+ break;
+
+ case OperationCodes.AuctionGetRequests:
+ onRequestAuctionGetRequests(parameters);
+ break;
+
+ case OperationCodes.RegisterToObject:
+ onRequestRegisterToObject(parameters);
+ break;
+
+ case OperationCodes.UnRegisterFromObject:
+ onRequestUnRegisterFromObject(parameters);
+ break;
+
+ case OperationCodes.Mount:
+ onRequestMount(parameters);
+ break;
+
+ case OperationCodes.HarvestStart:
+ onReqHarvestStart(parameters);
+ break;
+
+ //case OperationCodes.HarvestCancel:
+ // // No llega al minar un cuerpo
+ // printOperationInfo(parameters, opCode, "onRequest");
+ // break;
+
+ //case OperationCodes.AttackStart:
+ // printOperationInfo(parameters, opCode, "onRequest");
+ // break;
+
+ //case OperationCodes.MountCancel:
+ // printOperationInfo(parameters, opCode, "onRequest");
+ // break;
+
+ //case OperationCodes.ChangeCluster:
+ // printOperationInfo(parameters, opCode, "onRequest");
+ // break;
+
+ //case OperationCodes.GetGameServerByCluster:
+ // // Cuando le pide al servidor la direccion dns del cluster
+ // // GetGameServerByCluster: {"0":"0000","255":10,"253":16}
+ // printOperationInfo(parameters, opCode, "onRequest");
+ // break;
+
+ //case OperationCodes.GetReferralLink:
+ // printOperationInfo(parameters, opCode, "onRequest");
+ // break;
+
+ //case OperationCodes.EasyAntiCheatMessageToServer:
+ // printOperationInfo(parameters, opCode, "onRequest");
+ // break;
+
+ default:
+ debugPacket("OnRequest", operationCode, parameters);
+ break;
+ }
+ }
+ catch (Exception ex)
{
- case OperationCodes.Move:
- onMoveOperation(parameters);
- break;
- case OperationCodes.AuctionGetOffers:
- //onAuctionGetOffers_Req(parameters);
- break;
- case OperationCodes.AuctionGetRequests:
- //onAuctionGetRequests_Req(parameters);
- break;
- case OperationCodes.RegisterToObject:
- //onRegisterToObject(parameters);
- break;
- case OperationCodes.UnRegisterFromObject:
- //onUnRegisterFromObject(parameters);
- break;
- case OperationCodes.AttackStart:
- printOperationInfo(parameters, opCode, "onRequest");
- break;
- case OperationCodes.Mount:
- onMount(parameters);
- break;
- case OperationCodes.MountCancel:
- printOperationInfo(parameters, opCode, "onRequest");
- break;
- case OperationCodes.HarvestStart:
- onReqHarvestStart(parameters);
- break;
- case OperationCodes.HarvestCancel:
- // No llega al minar un cuerpo
- printOperationInfo(parameters, opCode, "onRequest");
- break;
- case OperationCodes.ChangeCluster:
- printOperationInfo(parameters, opCode, "onRequest");
- break;
- case OperationCodes.GetGameServerByCluster:
- // Cuando le pide al servidor la direccion dns del cluster
- // GetGameServerByCluster: {"0":"0000","255":10,"253":16}
- printOperationInfo(parameters, opCode, "onRequest");
- break;
- case OperationCodes.GetReferralLink:
- printOperationInfo(parameters, opCode, "onRequest");
- break;
- case OperationCodes.EasyAntiCheatMessageToServer:
- //printOperationInfo(parameters, opCode, "onRequest");
- break;
- default:
- //printOperationInfo(parameters, opCode, "onRequest");
- break;
+ debugPacket("OnRequestEx", operationCode, parameters);
}
-
}
protected override void OnResponse(byte operationCode, short returnCode, string debugMessage, Dictionary parameters)
{
- parameters.TryGetValue((byte)253, out object val);
- if (val == null) return;
+ try
+ {
+ parameters.TryGetValue((byte)253, out object val);
- if (!int.TryParse(val.ToString(), out int iCode)) return;
+ if (val == null) return;
+ if (!int.TryParse(val.ToString(), out int iCode)) return;
- OperationCodes opCode = (OperationCodes)iCode;
- switch (opCode)
- {
- case OperationCodes.Join:
- onJoinResponse(parameters);
- break;
- case OperationCodes.AuctionGetOffers:
- //onAuctionGetOffers_Res(parameters);
- break;
- case OperationCodes.AuctionGetRequests:
- //onAuctionGetRequests_Res(parameters);
- break;
- case OperationCodes.AuctionGetItemAverageValue:
- onAuctionGetItemAverageValue(parameters);
- break;
- case OperationCodes.HarvestStart:
- //printOperationInfo(parameters, opCode, "onResponse");
- break;
- case OperationCodes.HarvestCancel:
- printOperationInfo(parameters, opCode, "onResponse");
- break;
- case OperationCodes.ChangeCluster:
- printOperationInfo(parameters, opCode, "onResponse");
- break;
- case OperationCodes.GetGameServerByCluster:
- // GetGameServerByCluster: {"0":"live01-win-28.dc02.albion.zone:5056","255":10,"253":16}
- //printOperationInfo(parameters, opCode, "onResponse");
- break;
- default:
- //printOperationInfo(parameters, opCode, "onResponse");
- break;
- }
+ OperationCodes opCode = (OperationCodes)iCode;
- }
+ switch (opCode)
+ {
+ case OperationCodes.Join:
+ onResponseJoin(parameters);
+ break;
- private void printEventInfo(Object obj, EventCodes evCode)
- {
- string jsonPacket;
- jsonPacket = JsonConvert.SerializeObject(obj);
- /*
- if (jsonPacket.IndexOf("[") != -1)
+ case OperationCodes.AuctionGetOffers:
+ onResponseAuctionGetOffers(parameters);
+ break;
+
+ case OperationCodes.AuctionGetRequests:
+ onResponseAuctionGetRequests(parameters);
+ break;
+
+ case OperationCodes.AuctionGetItemAverageValue:
+ onResponseAuctionGetItemAverageValue(parameters);
+ break;
+
+ //case OperationCodes.HarvestStart:
+ // printOperationInfo(parameters, opCode, "onResponse");
+ // break;
+
+ //case OperationCodes.HarvestCancel:
+ // printOperationInfo(parameters, opCode, "onResponse");
+ // break;
+
+ //case OperationCodes.ChangeCluster:
+ // printOperationInfo(parameters, opCode, "onResponse");
+ // break;
+
+ //case OperationCodes.GetGameServerByCluster:
+ // //GetGameServerByCluster: {"0":"live01-win-28.dc02.albion.zone:5056","255":10,"253":16}
+ // printOperationInfo(parameters, opCode, "onResponse");
+ // break;
+
+ default:
+ debugPacket("OnResponse", operationCode, parameters);
+ break;
+ }
+ }
+ catch (Exception ex)
{
- string outLine = "[onEvent][" + (int)evCode + "] " + evCode + ": " + jsonPacket;
- Console.WriteLine(outLine);
+ debugPacket("OnResponseEx", operationCode, parameters);
}
- */
- string outLine = "[onEvent][" + (int)evCode + "] " + evCode + ": " + jsonPacket;
- var output = new StreamWriter(Console.OpenStandardOutput());
- output.WriteLine(outLine);
- output.Flush();
- //Console.WriteLine(outLine);
- //Console.Out.Flush();
- }
- private void printOperationInfo(Object obj, OperationCodes opCode, String typeInfo)
- {
- string jsonPacket;
- jsonPacket = JsonConvert.SerializeObject(obj);
- string outLine = "[" + typeInfo + "][" + (int)opCode + "] " + opCode + ": " + jsonPacket;
- var output = new StreamWriter(Console.OpenStandardOutput());
- output.WriteLine(outLine);
- output.Flush();
- //Console.WriteLine(outLine);
- //Console.Out.Flush();
}
- private void debugPacket(Object obj, int iCode)
+ private void debugPacket(string type, int iCode, Object obj)
{
- string jsonPacket;
- jsonPacket = JsonConvert.SerializeObject(obj);
- string outLine = iCode + ": " + jsonPacket;
+ string jsonPacket = JsonConvert.SerializeObject(obj);
+ string outLine = $"type:{type} iCode:{iCode} jsonPacket:{jsonPacket}";
+
Console.WriteLine(outLine);
Console.Out.Flush();
}
- #region OnEvent
+ #region onOperation Event
+
private void onNewBuilding(Dictionary parameters)
{
int packetID = int.Parse(parameters[0].ToString());
@@ -322,18 +410,20 @@ private void onNewBuilding(Dictionary parameters)
Single[] pos = (Single[])parameters[4];
var nb = new evNewBuilding(packetID, name, pos);
- printEventInfo(nb, EventCodes.NewBuilding);
-
+ OnEventNewBuilding?.Invoke(nb);
}
+
private void onCharacterEquipmentChanged(Dictionary parameters)
{
short[] items = new short[10];
short[] skills = new short[6];
int index = 0;
+
if (parameters[2].GetType() == typeof(Byte[]))
{
Byte[] itemList = (Byte[])parameters[2];
+
foreach (Byte b in itemList)
{
if (index >= 10)
@@ -346,6 +436,7 @@ private void onCharacterEquipmentChanged(Dictionary parameters)
else
{
Int16[] itemList = (Int16[])parameters[2];
+
foreach (Int16 b in itemList)
{
if (index >= 10)
@@ -357,9 +448,11 @@ private void onCharacterEquipmentChanged(Dictionary parameters)
}
index = 0;
+
if (parameters[5].GetType() == typeof(Byte[]))
{
Byte[] skillList = (Byte[])parameters[5];
+
foreach (Byte b in skillList)
{
if (index >= 6)
@@ -372,6 +465,7 @@ private void onCharacterEquipmentChanged(Dictionary parameters)
else
{
Int16[] skillList = (Int16[])parameters[5];
+
foreach (Int16 b in skillList)
{
if (index >= 6)
@@ -383,95 +477,127 @@ private void onCharacterEquipmentChanged(Dictionary parameters)
}
var eqc = new evCharacterEquipmentChanged(items, skills);
- printEventInfo(eqc, EventCodes.CharacterEquipmentChanged);
+ OnEventCharacterEquipmentChanged?.Invoke(eqc);
}
+
private void onNewExit(Dictionary parameters)
{
Single[] entryPos = new Single[2];
+
if (parameters.ContainsKey(2))
{
entryPos = (Single[])parameters[2];
+
var ne = new evNewExit(entryPos);
- printEventInfo(ne, EventCodes.NewExit);
+ OnEventNewExit?.Invoke(ne);
}
}
+
private void onMobChangeState(Dictionary parameters)
{
int mobID = int.Parse(parameters[0].ToString());
short enchantment = short.Parse(parameters[1].ToString());
var cs = new evMobChangeState(mobID, enchantment);
- printEventInfo(cs, EventCodes.MobChangeState);
+ OnEventMobChangeState?.Invoke(cs);
}
+
private void onInventoryPutItem(Dictionary parameters)
{
int itemID = int.Parse(parameters[0].ToString());
+
var putItem = new evInventoryPutItem(itemID);
- printEventInfo(putItem, EventCodes.InventoryPutItem);
+ OnEventInventoryPutItem?.Invoke(putItem);
}
+
private void onNewFishingZoneObject(Dictionary parameters)
{
//NewFishingZoneObject: { "0":1182,"1":[253.4,52.8],"2":3,"3":2,"4":"FishingNodeSwarm","252":341} 0: objectID 1: zone pos 2:charges (not present when empty) 3:times fished from 4:zone tipe
+
int objectID = int.Parse(parameters[0].ToString());
Single[] zonePos = (Single[])parameters[1];
- short charges = 0;
+
+ short charges = 0;
+
if (parameters.ContainsKey(2))
charges = short.Parse(parameters[2].ToString());
+
short fished = 0;
+
if (parameters.ContainsKey(3))
fished = short.Parse(parameters[3].ToString());
+
string zoneType = parameters[4].ToString();
var fishingZone = new evNewFishingZoneObject(objectID, zonePos, charges, fished, zoneType);
- printEventInfo(fishingZone, EventCodes.NewFishingZoneObject);
+ OnEventNewFishingZoneObject?.Invoke(fishingZone);
+ }
+ private void onFishingMiniGame(Dictionary parameters)
+ {
+ int id = int.Parse(parameters[0].ToString());
+ Single[] pos = (Single[])parameters[1];
+ String type = (string)parameters[3].ToString();
+
+ var portal = new evFishingMiniGame();
+ OnEventFishingMiniGame?.Invoke(portal);
}
+
private void onNewFloatObject(Dictionary parameters)
{
// NewFloatObject: { "0":665769,"1":[-190.193344,59.3336449],"2":298.5448,"3":632262,"4":1,"252":340} 0: bobber ID 1: bobber pos 2:angle
// 3:player ID 4:fishing state (1: bobber landed 2:fish bitten 3:playing minigam 4:catched a fish 5:failed)
+
int bobberID = int.Parse(parameters[0].ToString());
Single[] bobberPos = (Single[])parameters[1];
float angleFromPlayer = float.Parse(parameters[2].ToString());
int playerId = int.Parse(parameters[3].ToString());
short fishingState = short.Parse(parameters[4].ToString());
-
string readableState;
+
switch (fishingState)
{
case 1:
readableState = "Floating";
break;
+
case 2:
readableState = "Bitten";
break;
+
case 3:
readableState = "Minigame";
break;
+
case 4:
readableState = "Catched";
break;
+
case 5:
readableState = "Lost";
break;
+
default:
readableState = "";
break;
}
var bobber = new evNewFloatObject(bobberID, bobberPos, angleFromPlayer, playerId, readableState);
- printEventInfo(bobber, EventCodes.NewFloatObject);
+ OnEventNewFloatObject?.Invoke(bobber);
}
+
private void onHarvestStart(Dictionary parameters)
{
//HarvestStart: { "0":144653,"1":638045717068106818,"2":638045717068106818,"3":1263,"5":2.0,"6":-1,"7":-1,"252":54} 5: tiempo para terminar de harvestear
+
int harvestableId = int.Parse(parameters[3].ToString());
float time = float.Parse(parameters[5].ToString());
var hs = new evHarvestStart(harvestableId, time);
- printEventInfo(hs, EventCodes.HarvestStart);
+ OnEventHarvestStart?.Invoke(hs);
}
- private void onNewGeneralItem(Dictionary parameters, EventCodes evCode)
+
+ private evNewSimpleItem onNewItem(Dictionary parameters)
{
int objectID = int.Parse(parameters[0].ToString());
int itemID = int.Parse(parameters[1].ToString());
@@ -485,58 +611,95 @@ private void onNewGeneralItem(Dictionary parameters, EventCodes ev
}
var newItem = new evNewSimpleItem(objectID, itemID, amount, avgValue);
- printEventInfo(newItem, evCode);
-
+ return newItem;
+ }
+
+ private void onNewEquipmentItem(Dictionary parameters, EventCodes evCode)
+ {
+ var data = onNewItem(parameters);
+ OnNewEquipmentItem?.Invoke(data);
+ }
+
+ private void onNewSimpleItem(Dictionary parameters, EventCodes evCode)
+ {
+ var data = onNewItem(parameters);
+ OnNewSimpleItem?.Invoke(data);
+ }
+
+ private void onNewFurnitureItem(Dictionary parameters, EventCodes evCode)
+ {
+ var data = onNewItem(parameters);
+ OnNewFurnitureItem?.Invoke(data);
+ }
+
+ private void onNewJournalItem(Dictionary parameters, EventCodes evCode)
+ {
+ var data = onNewItem(parameters);
+ OnNewJournalItem?.Invoke(data);
+ }
+
+ private void onNewLaborerItem(Dictionary parameters, EventCodes evCode)
+ {
+ var data = onNewItem(parameters);
+ OnNewLaborerItem?.Invoke(data);
}
+
private void onAttachItemContainer(Dictionary parameters)
{
- int objectID = int.Parse(parameters[0].ToString());
- byte[] ownerMarkID = (byte[])parameters[1];
- int[] itemsID = (int[])parameters[3];
// Estos itemsID son los objectID de eventos como
// NewEquipmentItem: {"0":203114,"1":2984,"2":1,"4":6204632,"5":"Bettooo","6":2,"7":48000000,"8":[-1],"9":[-1],"252":28}
// donde 0 es el objectID
+ int objectID = int.Parse(parameters[0].ToString());
+ byte[] ownerMarkID = (byte[])parameters[1];
+ int[] itemsID = (int[])parameters[3];
+
var itemContainer = new evAttachItemContainer(objectID, ownerMarkID, itemsID);
- printEventInfo(itemContainer, EventCodes.AttachItemContainer);
+ OnEventAttachItemContainer?.Invoke(itemContainer);
}
+
private void onNewLoot(Dictionary parameters)
{
int lootId = int.Parse(parameters[0].ToString());
Single[] pos = (Single[])parameters[4];
var newloot = new evNewLoot(lootId, pos);
- printEventInfo(newloot, EventCodes.NewLoot);
+ OnEventNewLoot?.Invoke(newloot);
}
+
private void onHarvestFinished(Dictionary parameters)
{
//map[0:686375 1:637959518682696481 2:637959518687702927 3:2580 4:2 5:2 6:1 8:[] 9:[] 252:54]
+
int playerId = int.Parse(parameters[0].ToString());
int harvestableId = int.Parse(parameters[3].ToString());
short gathered = short.Parse(parameters[4].ToString());
short yield = 0;
+
if (parameters.ContainsKey(5))
{
yield = short.Parse(parameters[5].ToString());
}
short premium = 0;
+
if (parameters.ContainsKey(6))
{
premium = short.Parse(parameters[6].ToString());
}
short charges = 0;
+
if (parameters.ContainsKey(7))
{
charges = short.Parse(parameters[7].ToString());
}
var hf = new evHarvestFinished(playerId, harvestableId, gathered, yield, premium, charges);
- printEventInfo(hf, EventCodes.HarvestFinished);
-
+ OnEventHarvestFinished?.Invoke(hf);
}
+
private void onMounted(Dictionary parameters)
{
int playerId = int.Parse(parameters[0].ToString());
@@ -546,17 +709,18 @@ private void onMounted(Dictionary parameters)
isMounted = true;
var mounted = new evMounted(playerId, isMounted);
- printEventInfo(mounted, EventCodes.Mounted);
-
+ OnEventMounted?.Invoke(mounted);
}
+
public void onAttack(Dictionary parameters)
{
int attackerID = int.Parse(parameters[0].ToString());
int targetID = int.Parse(parameters[2].ToString());
var attackEv = new evAttack(attackerID, targetID);
- printEventInfo(attackEv, EventCodes.Attack);
+ OnEventAttack?.Invoke(attackEv);
}
+
private void onNewPortalExit(Dictionary parameters)
{
int id = int.Parse(parameters[0].ToString());
@@ -564,12 +728,21 @@ private void onNewPortalExit(Dictionary parameters)
String type = (string)parameters[3].ToString();
var portal = new evNewPortalExit(id, pos, type);
- printEventInfo(portal, EventCodes.NewRandomDungeonExit);
+ OnEventNewPortalExit?.Invoke(portal);
+ }
+
+ private void onActiveSpellEffectsUpdate(Dictionary parameters)
+ {
+ // [10]evActiveSpellEffectsUpdate - map[0:655873 1:[685 279 339 509 399] 2:[100 389.11096 369.137 100 389.11096] 3:[100 233.6818 226.1142 100 233.6818] 4:[637945635939432036 637945670488995997 637945670488995997 637903462984937618 637945670488995997] 5:[1 10 10 1 10] 7:[75 - 110 36 73 - 110 36 73 - 110 36 9] 8:[208406056] 9:[9] 10:[0 0] 252:10]
+
+ var ase = new evActiveSpellEffectsUpdate();
+ OnEventActiveSpellEffectsUpdate?.Invoke(ase);
}
private void onNewHarvestableObject(Dictionary parameters)
{
// NewHarvestableObject: { "0":211813,"1":211239,"2":637903348349073726,"3":"+Z47IXg2YUWs1j2NjqNMZQ==","5":24,"6":112,"7":3,"8":[-374.0117,209.0445],"9":319.8794,"11":0,"252":36}
+
int id = int.Parse(parameters[0].ToString());
byte type = byte.Parse(parameters[5].ToString());
byte tier = byte.Parse(parameters[7].ToString());
@@ -579,42 +752,53 @@ private void onNewHarvestableObject(Dictionary parameters)
byte enchantment = byte.Parse(parameters[11].ToString());
var nho = new HarvestableObject(id, type, tier, pos, charges, enchantment);
- printEventInfo(nho, EventCodes.NewHarvestableObject);
+ OnEventNewHarvestableObject?.Invoke(nho);
+ }
+
+ private void onNewSimpleHarvestableObject(Dictionary parameters)
+ {
+ // NewHarvestableObject: { "0":211813,"1":211239,"2":637903348349073726,"3":"+Z47IXg2YUWs1j2NjqNMZQ==","5":24,"6":112,"7":3,"8":[-374.0117,209.0445],"9":319.8794,"11":0,"252":36}
+
+ int id = int.Parse(parameters[0].ToString());
+ byte type = byte.Parse(parameters[5].ToString());
+ byte tier = byte.Parse(parameters[7].ToString());
+ Single[] pos = (Single[])parameters[8];
+ parameters.TryGetValue((byte)10, out object _charges);
+ byte charges = _charges == null ? (byte)0 : byte.Parse(_charges.ToString());
+ byte enchantment = byte.Parse(parameters[11].ToString());
+
+ var nho = new HarvestableObject(id, type, tier, pos, charges, enchantment);
+ OnEventNewSimpleHarvestableObject?.Invoke(nho);
}
+
private void onHealthUpdate(Dictionary parameters)
{
- try
- {
- parameters.TryGetValue((byte)0, out object _attEntityID);
- int attackerEntityId = _attEntityID == null ? 0 : int.Parse(_attEntityID.ToString());
- parameters.TryGetValue((byte)2, out object _tHU);
- int targetHealthUpdate = _tHU == null ? 0 : int.Parse(_tHU.ToString());
- parameters.TryGetValue((byte)3, out object _tH);
- int targetHealth = _tH == null ? 0 : int.Parse(_tH.ToString());
- int targetEntityId = int.Parse(parameters[6].ToString());
-
- var hu = new evHealthUpdate(attackerEntityId, targetHealthUpdate, targetHealth, targetEntityId);
- printEventInfo(hu, EventCodes.HealthUpdate);
- }
- catch (Exception e)
- {
- Debug.WriteLine(e.StackTrace);
- }
+ parameters.TryGetValue((byte)0, out object _attEntityID);
+ int attackerEntityId = _attEntityID == null ? 0 : int.Parse(_attEntityID.ToString());
+ parameters.TryGetValue((byte)2, out object _tHU);
+ int targetHealthUpdate = _tHU == null ? 0 : int.Parse(_tHU.ToString());
+ parameters.TryGetValue((byte)3, out object _tH);
+ int targetHealth = _tH == null ? 0 : int.Parse(_tH.ToString());
+ int targetEntityId = int.Parse(parameters[6].ToString());
+
+ var hu = new evHealthUpdate(attackerEntityId, targetHealthUpdate, targetHealth, targetEntityId);
+ OnEventHealthUpdate?.Invoke(hu);
}
+
private void onLeaveEvent(Dictionary parameters)
{
int entityId = int.Parse(parameters[0].ToString());
+
var leave = new evLeave(entityId);
-
- printEventInfo(leave, EventCodes.Leave);
+ OnEventevLeave?.Invoke(leave);
}
-
- private void onJoinFinished()
+
+ private void onJoinFinished(Dictionary parameters)
{
evJoinFinished jf = new evJoinFinished();
- printEventInfo(jf, EventCodes.JoinFinished);
+ OnEventJoinFinished?.Invoke(jf);
}
-
+
private void onUpdateSilver(Dictionary parameters)
{
int id = int.Parse(parameters[0].ToString());
@@ -623,24 +807,26 @@ private void onUpdateSilver(Dictionary parameters)
long currentSilver = long.Parse(silver.Substring(0, len));
var us = new evUpdateSilver(id, currentSilver);
-
- printEventInfo(us, EventCodes.UpdateMoney);
+ OnEventUpdateMoney?.Invoke(us);
}
-
+
private void onNewSimpleHarvestableObjectList(Dictionary parameters)
{
List harvestableList = new List();
List idList = new List();
+
if (parameters[0].GetType() == typeof(Byte[]))
{
Byte[] typeListByte = (Byte[])parameters[0]; //list of types
+
foreach (Byte b in typeListByte)
idList.Add(b);
}
else if (parameters[0].GetType() == typeof(Int16[]))
{
Int16[] typeListByte = (Int16[])parameters[0]; //list of types
+
foreach (Int16 b in typeListByte)
idList.Add(b);
}
@@ -650,58 +836,52 @@ private void onNewSimpleHarvestableObjectList(Dictionary parameter
return;
}
- try
- {
- Byte[] typesList = (Byte[])parameters[1]; //list of types
- Byte[] tiersList = (Byte[])parameters[2]; //list of tiers
- Single[] posList = (Single[])parameters[3]; //list of positions X1, Y1, X2, Y2 ...
- Byte[] chargeList = (Byte[])parameters[4]; //charge
-
- for (int i = 0; i < idList.Count; i++)
- {
- int id = int.Parse(idList.ElementAt(i).ToString());
- byte type = byte.Parse(typesList[i].ToString());
- byte tier = byte.Parse(tiersList[i].ToString());
- Single posX = (Single)posList[i * 2];
- Single posY = (Single)posList[i * 2 + 1];
- Single[] pos = new Single[2] { posX, posY };
- Byte charges = byte.Parse(chargeList[i].ToString());
- byte enchantent = (byte)0;
-
- var hObject = new HarvestableObject(id, type, tier, pos, charges, enchantent);
- harvestableList.Add(hObject);
- }
+ Byte[] typesList = (Byte[])parameters[1]; //list of types
+ Byte[] tiersList = (Byte[])parameters[2]; //list of tiers
+ Single[] posList = (Single[])parameters[3]; //list of positions X1, Y1, X2, Y2 ...
+ Byte[] chargeList = (Byte[])parameters[4]; //charge
- }
- catch (Exception e)
+ for (int i = 0; i < idList.Count; i++)
{
- Debug.WriteLine("eL: " + e.ToString());
+ int id = int.Parse(idList.ElementAt(i).ToString());
+ byte type = byte.Parse(typesList[i].ToString());
+ byte tier = byte.Parse(tiersList[i].ToString());
+ Single posX = (Single)posList[i * 2];
+ Single posY = (Single)posList[i * 2 + 1];
+ Single[] pos = new Single[2] { posX, posY };
+ Byte charges = byte.Parse(chargeList[i].ToString());
+ byte enchantent = (byte)0;
+
+ var hObject = new HarvestableObject(id, type, tier, pos, charges, enchantent);
+ harvestableList.Add(hObject);
}
var jol = new HarvestableObjectList(harvestableList);
- printEventInfo(jol, EventCodes.NewSimpleHarvestableObjectList);
+ OnEventNewSimpleHarvestableObjectList?.Invoke(jol);
}
-
+
private void onHarvestableChangeState(Dictionary parameters)
{
int id = int.Parse(parameters[0].ToString());
int charges = 0;
+
if (parameters.ContainsKey(1))
{
charges = int.Parse(parameters[1].ToString());
}
int enchantment = 0;
+
if (parameters.ContainsKey(2))
{
enchantment = int.Parse(parameters[2].ToString());
}
var change = new HarvestableChangeState(id, charges, enchantment);
- printEventInfo(change, EventCodes.HarvestableChangeState);
+ OnEventHarvestableChangeState?.Invoke(change);
}
-
+
private void onInCombatStateUpdate(Dictionary parameters)
{
long playerId = long.Parse(parameters[0].ToString());
@@ -713,9 +893,9 @@ private void onInCombatStateUpdate(Dictionary parameters)
bool enemyAttacking = _enemyStatus == null ? false: bool.Parse(_enemyStatus.ToString());
var comUp = new InCombatStateUpdate(playerId, playerAttacking, enemyAttacking);
- printEventInfo(comUp, EventCodes.InCombatStateUpdate);
+ OnEventInCombatStateUpdate?.Invoke(comUp);
}
-
+
private void onNewMountObject(Dictionary parameters)
{
int id = int.Parse(parameters[0].ToString());
@@ -723,18 +903,19 @@ private void onNewMountObject(Dictionary parameters)
byte[] ownerMarkId = (byte[])parameters[5];
var newMount = new evNewMountObject(id, pos, ownerMarkId);
- printEventInfo(newMount, EventCodes.NewMountObject);
+ OnEventNewMountObject?.Invoke(newMount);
}
-
+
private void onNewMob(Dictionary parameters)
{
//if (!parameters.ContainsKey(13))
// return;
- int id = int.Parse(parameters[0].ToString());
+ int id = int.Parse(parameters[0].ToString());
int typeId = int.Parse(parameters[1].ToString());
Single[] pos = (Single[])parameters[7];
int health;
+
if (parameters.ContainsKey(13))
{
health = int.Parse(parameters[13].ToString());
@@ -743,38 +924,41 @@ private void onNewMob(Dictionary parameters)
{
health = int.Parse(parameters[14].ToString());
}
+
int rarity = int.Parse(parameters[22].ToString());
var mob = new evNewMob(id, typeId, pos, health, rarity);
- printEventInfo(mob, EventCodes.NewMob);
+ OnEventNewMob?.Invoke(mob);
}
-
+
private void onNewCharacter(Dictionary parameters)
{
int id = int.Parse(parameters[0].ToString());
string nick = parameters[1].ToString();
object oGuild = "";
object oAlliance = "";
+
parameters.TryGetValue((byte)8, out oGuild);
parameters.TryGetValue((byte)44, out oAlliance);
+
string guild = oGuild == null ? "" : oGuild.ToString();
string alliance = oAlliance == null ? "" : oAlliance.ToString();
Single[] pos = (Single[])parameters[14];
short[] items = new short[10];
short[] skills;
- try
- {
- skills = new short[6];
- }
- catch { return; }
+
+ try { skills = new short[6]; } catch { return; }
+
int faction = int.Parse(parameters[51].ToString());
int currentHealth = int.Parse(parameters[20].ToString());
int maxHealth = int.Parse(parameters[21].ToString());
int index = 0;
+
if (parameters[38].GetType() == typeof(Byte[]))
{
Byte[] itemList = (Byte[])parameters[38];
+
foreach (Byte b in itemList)
{
if (index >= 10)
@@ -787,6 +971,7 @@ private void onNewCharacter(Dictionary parameters)
else
{
Int16[] itemList = (Int16[])parameters[38];
+
foreach (Int16 b in itemList)
{
if (index >= 10)
@@ -798,9 +983,11 @@ private void onNewCharacter(Dictionary parameters)
}
index = 0;
+
if (parameters[41].GetType() == typeof(Byte[]))
{
Byte[] skillList = (Byte[])parameters[41];
+
foreach (Byte b in skillList)
{
if (index >= 6)
@@ -813,6 +1000,7 @@ private void onNewCharacter(Dictionary parameters)
else
{
Int16[] skillList = (Int16[])parameters[41];
+
foreach (Int16 b in skillList)
{
if (index >= 6)
@@ -824,10 +1012,10 @@ private void onNewCharacter(Dictionary parameters)
}
var newChar = new evNewCharacter(id, nick, guild, alliance, pos, items, skills, faction, currentHealth, maxHealth);
- printEventInfo(newChar, EventCodes.NewCharacter);
+ OnEventNewCharacter?.Invoke(newChar);
}
-
- private void onEntityMovementEvent(Dictionary parameters)
+
+ private void onEventMove(Dictionary parameters)
{
int id = int.Parse(parameters[0].ToString());
Byte[] a = (Byte[])parameters[1];
@@ -835,25 +1023,60 @@ private void onEntityMovementEvent(Dictionary parameters)
Single posY = BitConverter.ToSingle(a, 13);
var ent = new Entity(id, posX, posY);
+ OnEventMove?.Invoke(ent);
+ }
- string strJson;
- strJson = JsonConvert.SerializeObject(ent);
- string outLine = "[onEntityMovementEvent]: " + strJson;
- var output = new StreamWriter(Console.OpenStandardOutput());
- output.WriteLine(outLine);
- output.Flush();
+ private void onEventEasyAntiCheatMessageToClient(Dictionary parameters)
+ {
+ int packetID = int.Parse(parameters[0].ToString());
+
+ var nb = new evEasyAntiCheatMessageToClient();
+ OnEventEasyAntiCheatMessageToClient?.Invoke(nb);
+ }
+
+ private void onEventCastHits(Dictionary parameters)
+ {
+ // {"0":88105,"1":95538,"2":4414,"3":1,"4":1,"252":20}
+ // 0: target id 1: attacker id
+
+ int packetID = int.Parse(parameters[0].ToString());
+
+ var nb = new evCastHits();
+ OnEventCastHits?.Invoke(nb);
+ }
+
+ private void onEventCastStart(Dictionary parameters)
+ {
+ // CastStart: {"0":89514,"1":18668197,"2":[201.960464,220.702423],"4":18669497,"5":4400,"6":-1,"8":7,"9":0,"252":13}
+ // 0: caster id 2:Spell direction pos
+
+ int packetID = int.Parse(parameters[0].ToString());
+
+ var nb = new evCastStart();
+ OnEventCastStart?.Invoke(nb);
+ }
+
+ private void onEventCastTimeUpdate(Dictionary parameters)
+ {
+ int packetID = int.Parse(parameters[0].ToString());
+
+ var nb = new evCastTimeUpdate();
+ OnEventCastTimeUpdate?.Invoke(nb);
}
+
#endregion
#region onOperation Request
+
private void onReqHarvestStart(Dictionary parameters)
{
int harvest_id = int.Parse(parameters[1].ToString());
- var hs = new opHarvestStart(harvest_id);
- printOperationInfo(hs, OperationCodes.HarvestStart, "onRequest");
+ var hs = new opHarvestStart(harvest_id);
+ OnRequestHarvestStart?.Invoke(hs);
}
- private void onMount(Dictionary parameters)
+
+ private void onRequestMount(Dictionary parameters)
{
parameters.TryGetValue((byte)2, out object _isMounting);
bool isMounting = _isMounting == null ? false : bool.Parse(_isMounting.ToString());
@@ -861,13 +1084,16 @@ private void onMount(Dictionary parameters)
bool quickMount = _quickMount == null ? false: bool.Parse(_quickMount.ToString());
var opm = new opMount(isMounting, quickMount);
- printOperationInfo(opm, OperationCodes.Mount, "onRequest");
+ OnRequestMount?.Invoke(opm);
}
- private void onMoveOperation(Dictionary parameters)
+
+ private void onRequestMove(Dictionary parameters)
{
if (parameters == null)
return;
+
long timestamp = long.Parse(parameters[0].ToString());
+
/***
long today_tick = DateTime.Now.Ticks;
DateTime fechaHora_server = new DateTime(timestamp, DateTimeKind.Utc);
@@ -879,88 +1105,96 @@ private void onMoveOperation(Dictionary parameters)
long diff = timestamp - today_tick;
long espected_timestamp = today_tick + diff;
***/
+
float[] pos = (float[])parameters[1];
float angle = (float)parameters[2];
float[] target = (float[])parameters[3];
float speed = (float)parameters[4];
- opMove _ = new opMove(timestamp, pos, angle, target, speed);
- printOperationInfo(_, OperationCodes.Move, "onRequest");
+ opMove mov = new opMove(timestamp, pos, angle, target, speed);
+ OnRequestMove?.Invoke(mov);
}
-
- private void onAuctionGetOffers_Req(Dictionary parameters)
+
+ private void onRequestAuctionGetOffers(Dictionary parameters)
{
int id = int.Parse(parameters[0].ToString());
Int16[] itemsID = new short[10];
+
if (parameters.ContainsKey(6))
{
itemsID = (Int16[])parameters[6];
}
+
string category = parameters[1].ToString();
string subcategory = parameters[2].ToString();
+
short quality;
try { quality = short.Parse(parameters[3].ToString()); }
- catch (System.FormatException) { quality = 0; }
+ catch (FormatException) { quality = 0; }
short tier;
try { tier = short.Parse(parameters[5].ToString()); }
- catch (System.FormatException) { tier = 0; }
+ catch (FormatException) { tier = 0; }
short enchantment;
try { enchantment = short.Parse(parameters[8].ToString()); }
- catch (System.FormatException) { enchantment = -1; }
+ catch (FormatException) { enchantment = -1; }
var agor = new opAuctionGetAny(id, itemsID, category, subcategory, quality, tier, enchantment);
-
- printOperationInfo(agor, OperationCodes.AuctionGetOffers, "onRequest");
+ OnRequestAuctionGetOffers?.Invoke(agor);
}
-
- private void onAuctionGetRequests_Req(Dictionary parameters)
+
+ private void onRequestAuctionGetRequests(Dictionary parameters)
{
// {"0":867,"1":"accessories","2":"bag","3":"5","4":0,"5":"8","7":"3","8":0,"9":1,"10":50,"12":true,"253":77}
int id = int.Parse(parameters[0].ToString());
Int16[] itemsID = new short[10];
+
if (parameters.ContainsKey(6))
{
itemsID = (Int16[])parameters[6];
}
+
string category = parameters[1].ToString();
string subcategory = parameters[2].ToString();
short quality;
try { quality = short.Parse(parameters[3].ToString()); }
- catch (System.FormatException) { quality = 0; }
+ catch (FormatException) { quality = 0; }
short tier;
try { tier = short.Parse(parameters[5].ToString()); }
- catch (System.FormatException) { tier = 0; }
+ catch (FormatException) { tier = 0; }
short enchantment;
try { enchantment = short.Parse(parameters[7].ToString()); }
- catch (System.FormatException) { enchantment = -1; }
+ catch (FormatException) { enchantment = -1; }
var agrr = new opAuctionGetAny(id, itemsID, category, subcategory, quality, tier, enchantment);
-
- printOperationInfo(agrr, OperationCodes.AuctionGetRequests, "onRequest");
+ OnRequestAuctionGetRequests?.Invoke(agrr);
}
-
- private void onRegisterToObject(Dictionary parameters)
+
+ private void onRequestRegisterToObject(Dictionary parameters)
{
long id = long.Parse(parameters[0].ToString());
+
var reg = new opRegisterToObject(id);
- printOperationInfo(reg, OperationCodes.RegisterToObject, "onRequest");
+ OnRequestRegisterToObject?.Invoke(reg);
}
-
- private void onUnRegisterFromObject(Dictionary parameters)
+
+ private void onRequestUnRegisterFromObject(Dictionary parameters)
{
long id = long.Parse(parameters[0].ToString());
+
var unreg = new UnRegisterFromObject(id);
- printOperationInfo(unreg, OperationCodes.UnRegisterFromObject, "onRequest");
+ OnRequestUnRegisterFromObject?.Invoke(unreg);
}
+
#endregion
#region onOperation Response
- private void onJoinResponse(Dictionary parameters)
+
+ private void onResponseJoin(Dictionary parameters)
{
// [onResponse][2] Join: {"0":229611,"1":"HldB6eRwfU6UYy3c3Cuenw==","2":"Anyalgo","3":9,"4":22,"5":1,"6":"AwAJAw==","7":"AA8CAA==",
// "8":"4203","9":[-79.5,-363.5],"11":3083.0,"12":3083.0,"14":86.31288,"15":638371386969141790,"16":387.0,"17":387.0,"19":4.83620453,"20":638371386969141790,"21":885.0,"22":885.0,"24":8.85,"25":638371386969141790,"26":30000.0,"27":30000.0,"29":0.115740739,"30":638371386961696661,"32":2100836716,"34":20028876730,"35":{},"36":370000,"37":638371385370000000,"38":9999990000,"39":28800000,"40":1899.15479,"41":638371386969141790,"42":"AAAAAAA=","43":2,"44":"","45":0,"46":"","47":0,"48":true,"49":"Pq+miG0ZgEevySATGhQ+bQ==","50":[229616,0,229617,229613,229618,229620,229615,229621,229614,229619],"52":"kh9EpT9bZU6nL1vdJFcBLw==","53":[229622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229624,229623],"55":0,"60":"4000","64":"4000","65":"","66":638371386969141790,"67":-2019027515,"76":"","78":"","80":47740000,"81":0,"83":638389385370000000,"84":33,"85":638349760192334510,"87":"","88":[],"89":"","91":true,"92":true,"94":638371386918888800,"95":638371383266745275,"96":12,"97":{},"98":"AAAAAAAA","99":0,"100":100258296,"101":12000000,"102":[-1,-1,-1,-1,-1,-1,-1],"103":0,"111":1,"112":"4000","253":2}
@@ -969,7 +1203,9 @@ private void onJoinResponse(Dictionary parameters)
string cName = parameters[2].ToString();
string cluster = parameters[8].ToString();
float[] pos = (float[])parameters[9];
+
float angle = 0;
+
if (parameters.ContainsKey(10))
angle = float.Parse(parameters[10].ToString());
else
@@ -986,20 +1222,21 @@ private void onJoinResponse(Dictionary parameters)
int faction = int.Parse(parameters[48].ToString());
var jo = new OpJoin(cId, markId, cName, cluster, pos, angle, currentHealth, maxHealth, currentEnergy, maxEnergy, faction);
- printOperationInfo(jo, OperationCodes.Join, "onResponse");
+ OnResponseJoin?.Invoke(jo);
}
- private void onAuctionGetOffers_Res(Dictionary parameters)
+ private void onResponseAuctionGetOffers(Dictionary parameters)
{
string line = JsonConvert.SerializeObject(parameters[0]);
JArray offers = JArray.Parse(line);
List offerList = new List();
+
foreach (JValue value in offers)
{
JObject offer = JObject.Parse(value.ToString());
long id = ((long)offer.GetValue("Id"));
- long unitPrice = ((long)offer.GetValue("UnitPriceSilver"));
- long totalPrice = ((long)offer.GetValue("TotalPriceSilver"));
+ long unitPrice = ((long)offer.GetValue("UnitPriceSilver")) / 10000;
+ long totalPrice = ((long)offer.GetValue("TotalPriceSilver")) / 10000;
int amount = ((int)offer.GetValue("Amount"));
short tier = ((short)offer.GetValue("Tier"));
bool isFinished = ((bool)offer.GetValue("IsFinished"));
@@ -1022,20 +1259,21 @@ private void onAuctionGetOffers_Res(Dictionary parameters)
}
var response = new opAuctionGetOffersResponse(offerList);
- printOperationInfo(response, OperationCodes.AuctionGetOffers, "onResponse");
+ OnResponseAuctionGetOffers?.Invoke(response);
}
- private void onAuctionGetRequests_Res(Dictionary parameters)
+ private void onResponseAuctionGetRequests(Dictionary parameters)
{
string line = JsonConvert.SerializeObject(parameters[0]);
JArray requests = JArray.Parse(line);
List requestList = new List();
+
foreach (JValue value in requests)
{
JObject request = JObject.Parse(value.ToString());
long id = ((long)request.GetValue("Id"));
- long unitPrice = ((long)request.GetValue("UnitPriceSilver"));
- long totalPrice = ((long)request.GetValue("TotalPriceSilver"));
+ long unitPrice = ((long)request.GetValue("UnitPriceSilver")) / 10000;
+ long totalPrice = ((long)request.GetValue("TotalPriceSilver")) / 10000;
int amount = ((int)request.GetValue("Amount"));
short tier = ((short)request.GetValue("Tier"));
bool isFinished = ((bool)request.GetValue("IsFinished"));
@@ -1058,18 +1296,19 @@ private void onAuctionGetRequests_Res(Dictionary parameters)
}
var response = new opAuctionGetRequestsResponse(requestList);
- printOperationInfo(response, OperationCodes.AuctionGetRequests, "onResponse");
+ OnResponseAuctionGetRequests?.Invoke(response);
}
- private void onAuctionGetItemAverageValue(Dictionary parameters)
+ private void onResponseAuctionGetItemAverageValue(Dictionary parameters)
{
string line = parameters[0].ToString();
int len = line.Length;
long average = long.Parse(line.Substring(0, len - 4));
- var averageObj = new opAuctionGetItemAverageValue(average);
- printOperationInfo(averageObj, OperationCodes.AuctionGetItemAverageValue, "onResponse");
+ var averageObj = new opAuctionGetItemAverageValue(average);
+ OnResponseAuctionGetItemAverageValue?.Invoke(averageObj);
}
+
#endregion
}
}
diff --git a/AOSnifferNET/AlbionPackets/PacketReciever.cs b/AOSnifferNET/AlbionPackets/PacketReciever.cs
index 213dd47..5638046 100644
--- a/AOSnifferNET/AlbionPackets/PacketReciever.cs
+++ b/AOSnifferNET/AlbionPackets/PacketReciever.cs
@@ -7,14 +7,15 @@
namespace AOSnifferNET
{
- class PacketReciever
+ public class PacketReciever
{
- readonly PacketHandler photonParser;
+ readonly public PacketHandler photonParser;
readonly Thread photonThread;
public PacketReciever()
{
photonParser = new PacketHandler();
+
try
{
photonThread = new Thread(() => CreateListener()) { };
@@ -30,6 +31,7 @@ private void CreateListener()
{
var allDevices = CaptureDeviceList.Instance;
+
if (allDevices.Count < 1)
{
throw new Exception("No interfaces found! Make sure NPcap is installed.");
@@ -37,6 +39,7 @@ private void CreateListener()
List devicesOpened = new List();
Console.WriteLine("Start");
+
// Escuche todos los dispositivos en la máquina local.
foreach (ILiveDevice deviceSelected in allDevices)
{
@@ -114,7 +117,9 @@ private void PacketHandler(object sender, PacketCapture e)
try
{
var packet = Packet.ParsePacket(e.GetPacket().LinkLayerType, e.GetPacket().Data);
+
UdpPacket udp_packet = packet.Extract();
+
if (udp_packet != null && (udp_packet.SourcePort == 5056 || udp_packet.DestinationPort == 5056))
{
photonParser.ReceivePacket(udp_packet.PayloadData);
diff --git a/AOSnifferNET/Program.cs b/AOSnifferNET/Program.cs
index 64134c7..141bf08 100644
--- a/AOSnifferNET/Program.cs
+++ b/AOSnifferNET/Program.cs
@@ -1,10 +1,347 @@
-namespace AOSnifferNET
+using Newtonsoft.Json;
+using PhotonPackageParser;
+using System.IO;
+using System;
+
+namespace AOSnifferNET
{
internal class Program
{
static void Main(string[] args)
{
- _ = new PacketReciever();
+ PacketReciever packetReciever = new PacketReciever();
+
+ packetReciever.photonParser.OnRequestMove += PhotonParser_OnRequestMove;
+ packetReciever.photonParser.OnRequestMount += PhotonParser_OnRequestMount;
+ packetReciever.photonParser.OnRequestAuctionGetOffers += PhotonParser_OnRequestAuctionGetOffers;
+ packetReciever.photonParser.OnRequestAuctionGetRequests += PhotonParser_OnRequestAuctionGetRequests;
+ packetReciever.photonParser.OnRequestRegisterToObject += PhotonParser_OnRequestRegisterToObject;
+ packetReciever.photonParser.OnRequestUnRegisterFromObject += PhotonParser_OnRequestUnRegisterFromObject;
+
+ packetReciever.photonParser.OnResponseJoin += PhotonParser_OnResponseJoin;
+ packetReciever.photonParser.OnResponseAuctionGetOffers += PhotonParser_OnResponseAuctionGetOffers;
+ packetReciever.photonParser.OnResponseAuctionGetRequests += PhotonParser_OnResponseAuctionGetRequests;
+ packetReciever.photonParser.OnResponseAuctionGetItemAverageValue += PhotonParser_OnResponseAuctionGetItemAverageValue;
+
+
+ packetReciever.photonParser.OnEventMove += PhotonParser_OnEventMove;
+ packetReciever.photonParser.OnEventCharacterEquipmentChanged += PhotonParser_OnEventCharacterEquipmentChanged;
+ packetReciever.photonParser.OnEventNewExit += PhotonParser_OnEventNewExit;
+ packetReciever.photonParser.OnEventInventoryPutItem += PhotonParser_OnEventInventoryPutItem;
+ packetReciever.photonParser.OnNewEquipmentItem += PhotonParser_OnNewEquipmentItem;
+ packetReciever.photonParser.OnNewSimpleItem += PhotonParser_OnNewSimpleItem;
+ packetReciever.photonParser.OnNewFurnitureItem += PhotonParser_OnNewFurnitureItem;
+ packetReciever.photonParser.OnNewJournalItem += PhotonParser_OnNewJournalItem;
+ packetReciever.photonParser.OnNewLaborerItem += PhotonParser_OnNewLaborerItem;
+ packetReciever.photonParser.OnEventAttachItemContainer += PhotonParser_OnEventAttachItemContainer;
+ packetReciever.photonParser.OnEventNewLoot += PhotonParser_OnEventNewLoot;
+ packetReciever.photonParser.OnEventNewCharacter += PhotonParser_OnEventNewCharacter;
+ packetReciever.photonParser.OnEventevLeave += PhotonParser_OnEventevLeave;
+ packetReciever.photonParser.OnEventMounted += PhotonParser_OnEventMounted;
+ packetReciever.photonParser.OnEventNewMountObject += PhotonParser_OnEventNewMountObject;
+ packetReciever.photonParser.OnEventNewMob += PhotonParser_OnEventNewMob;
+ packetReciever.photonParser.OnEventJoinFinished += PhotonParser_OnEventJoinFinished;
+ packetReciever.photonParser.OnEventUpdateMoney += PhotonParser_OnEventUpdateMoney;
+ packetReciever.photonParser.OnEventNewHarvestableObject += PhotonParser_OnEventNewHarvestableObject;
+ packetReciever.photonParser.OnEventNewSimpleHarvestableObject += PhotonParser_OnEventNewSimpleHarvestableObject;
+ packetReciever.photonParser.OnEventNewSimpleHarvestableObjectList += PhotonParser_OnEventNewSimpleHarvestableObjectList;
+ packetReciever.photonParser.OnEventHarvestableChangeState += PhotonParser_OnEventHarvestableChangeState;
+ packetReciever.photonParser.OnEventMobChangeState += PhotonParser_OnEventMobChangeState;
+ packetReciever.photonParser.OnEventInCombatStateUpdate += PhotonParser_OnEventInCombatStateUpdate;
+ packetReciever.photonParser.OnEventHealthUpdate += PhotonParser_OnEventHealthUpdate;
+ packetReciever.photonParser.OnEventAttack += PhotonParser_OnEventAttack;
+ packetReciever.photonParser.OnEventNewPortalExit += PhotonParser_OnEventNewPortalExit;
+ packetReciever.photonParser.OnEventActiveSpellEffectsUpdate += PhotonParser_OnEventActiveSpellEffectsUpdate;
+ packetReciever.photonParser.OnEventHarvestStart += PhotonParser_OnEventHarvestStart;
+ packetReciever.photonParser.OnEventHarvestFinished += PhotonParser_OnEventHarvestFinished;
+ packetReciever.photonParser.OnEventNewFloatObject += PhotonParser_OnEventNewFloatObject;
+ packetReciever.photonParser.OnEventNewFishingZoneObject += PhotonParser_OnEventNewFishingZoneObject;
+ packetReciever.photonParser.OnEventFishingMiniGame += PhotonParser_OnEventFishingMiniGame;
+ packetReciever.photonParser.OnEventNewBuilding += PhotonParser_OnEventNewBuilding;
+ packetReciever.photonParser.OnEventEasyAntiCheatMessageToClient += PhotonParser_OnEventEasyAntiCheatMessageToClient;
+ packetReciever.photonParser.OnEventCastHits += PhotonParser_OnEventCastHits;
+ packetReciever.photonParser.OnEventCastStart += PhotonParser_OnEventCastStart;
+ packetReciever.photonParser.OnEventCastTimeUpdate += PhotonParser_OnEventCastTimeUpdate;
}
+
+ private static void printOperationInfo(string type, OperationCodes opCode, Object obj)
+ {
+ string jsonPacket;
+ jsonPacket = JsonConvert.SerializeObject(obj);
+ string outLine = "[onRequest][" + (int)opCode + "] " + opCode + ": " + jsonPacket;
+
+ var output = new StreamWriter(Console.OpenStandardOutput());
+ output.WriteLine(outLine);
+ output.Flush();
+
+ //Console.WriteLine(outLine);
+ //Console.Out.Flush();
+ }
+
+ private static void printOperationInfo(EventCodes opCode, Object obj)
+ {
+ string jsonPacket;
+ jsonPacket = JsonConvert.SerializeObject(obj);
+ string outLine = "[OnEvent][" + (int)opCode + "] " + opCode + ": " + jsonPacket;
+
+ var output = new StreamWriter(Console.OpenStandardOutput());
+ output.WriteLine(outLine);
+ output.Flush();
+
+ //Console.WriteLine(outLine);
+ //Console.Out.Flush();
+ }
+
+ #region OnEvent
+
+ private static void PhotonParser_OnEventMove(Entity data)
+ {
+ printOperationInfo(EventCodes.Move, data);
+ }
+
+ private static void PhotonParser_OnEventCharacterEquipmentChanged(evCharacterEquipmentChanged data)
+ {
+ printOperationInfo(EventCodes.CharacterEquipmentChanged, data);
+ }
+
+ private static void PhotonParser_OnEventNewExit(evNewExit data)
+ {
+ printOperationInfo(EventCodes.NewExit, data);
+ }
+
+ private static void PhotonParser_OnEventInventoryPutItem(evInventoryPutItem data)
+ {
+ printOperationInfo(EventCodes.InventoryPutItem, data);
+ }
+
+ private static void PhotonParser_OnNewEquipmentItem(evNewSimpleItem data)
+ {
+ printOperationInfo(EventCodes.NewEquipmentItem, data);
+ }
+
+ private static void PhotonParser_OnNewSimpleItem(evNewSimpleItem data)
+ {
+ printOperationInfo(EventCodes.NewSimpleItem, data);
+ }
+
+ private static void PhotonParser_OnNewFurnitureItem(evNewSimpleItem data)
+ {
+ printOperationInfo(EventCodes.NewFurnitureItem, data);
+ }
+
+ private static void PhotonParser_OnNewJournalItem(evNewSimpleItem data)
+ {
+ printOperationInfo(EventCodes.NewJournalItem, data);
+ }
+
+ private static void PhotonParser_OnNewLaborerItem(evNewSimpleItem data)
+ {
+ printOperationInfo(EventCodes.NewLaborerItem, data);
+ }
+
+ private static void PhotonParser_OnEventAttachItemContainer(evAttachItemContainer data)
+ {
+ printOperationInfo(EventCodes.AttachItemContainer, data);
+ }
+
+ private static void PhotonParser_OnEventNewLoot(evNewLoot data)
+ {
+ printOperationInfo(EventCodes.NewLoot, data);
+ }
+
+ private static void PhotonParser_OnEventNewCharacter(evNewCharacter data)
+ {
+ printOperationInfo(EventCodes.NewCharacter, data);
+ }
+
+ private static void PhotonParser_OnEventevLeave(evLeave data)
+ {
+ printOperationInfo(EventCodes.Leave, data);
+ }
+
+ private static void PhotonParser_OnEventMounted(evMounted data)
+ {
+ printOperationInfo(EventCodes.Mounted, data);
+ }
+
+ private static void PhotonParser_OnEventNewMountObject(evNewMountObject data)
+ {
+ printOperationInfo(EventCodes.NewMountObject, data);
+ }
+
+ private static void PhotonParser_OnEventNewMob(evNewMob data)
+ {
+ printOperationInfo(EventCodes.NewMob, data);
+ }
+
+ private static void PhotonParser_OnEventJoinFinished(evJoinFinished data)
+ {
+ printOperationInfo(EventCodes.JoinFinished, data);
+ }
+
+ private static void PhotonParser_OnEventUpdateMoney(evUpdateSilver data)
+ {
+ printOperationInfo(EventCodes.UpdateMoney, data);
+ }
+
+ private static void PhotonParser_OnEventNewHarvestableObject(HarvestableObject data)
+ {
+ printOperationInfo(EventCodes.NewHarvestableObject, data);
+ }
+
+ private static void PhotonParser_OnEventNewSimpleHarvestableObject(HarvestableObject data)
+ {
+ printOperationInfo(EventCodes.NewSimpleHarvestableObject, data);
+ }
+
+ private static void PhotonParser_OnEventNewSimpleHarvestableObjectList(HarvestableObjectList data)
+ {
+ printOperationInfo(EventCodes.NewSimpleHarvestableObjectList, data);
+ }
+
+ private static void PhotonParser_OnEventHarvestableChangeState(HarvestableChangeState data)
+ {
+ printOperationInfo(EventCodes.HarvestableChangeState, data);
+ }
+
+ private static void PhotonParser_OnEventMobChangeState(evMobChangeState data)
+ {
+ printOperationInfo(EventCodes.MobChangeState, data);
+ }
+
+ private static void PhotonParser_OnEventInCombatStateUpdate(InCombatStateUpdate data)
+ {
+ printOperationInfo(EventCodes.InCombatStateUpdate, data);
+ }
+
+ private static void PhotonParser_OnEventHealthUpdate(evHealthUpdate data)
+ {
+ printOperationInfo(EventCodes.HealthUpdate, data);
+ }
+
+ private static void PhotonParser_OnEventAttack(evAttack data)
+ {
+ printOperationInfo(EventCodes.Attack, data);
+ }
+
+ private static void PhotonParser_OnEventNewPortalExit(evNewPortalExit data)
+ {
+ printOperationInfo(EventCodes.NewPortalExit, data);
+ }
+
+ private static void PhotonParser_OnEventActiveSpellEffectsUpdate(evActiveSpellEffectsUpdate data)
+ {
+ printOperationInfo(EventCodes.ActiveSpellEffectsUpdate, data);
+ }
+
+ private static void PhotonParser_OnEventHarvestStart(evHarvestStart data)
+ {
+ printOperationInfo(EventCodes.HarvestStart, data);
+ }
+
+ private static void PhotonParser_OnEventHarvestFinished(evHarvestFinished data)
+ {
+ printOperationInfo(EventCodes.HarvestFinished, data);
+ }
+
+ private static void PhotonParser_OnEventNewFloatObject(evNewFloatObject data)
+ {
+ printOperationInfo(EventCodes.NewFloatObject, data);
+ }
+
+ private static void PhotonParser_OnEventNewFishingZoneObject(evNewFishingZoneObject data)
+ {
+ printOperationInfo(EventCodes.NewFishingZoneObject, data);
+ }
+
+ private static void PhotonParser_OnEventFishingMiniGame(evFishingMiniGame data)
+ {
+ printOperationInfo(EventCodes.FishingMiniGame, data);
+ }
+
+ private static void PhotonParser_OnEventNewBuilding(evNewBuilding data)
+ {
+ printOperationInfo(EventCodes.NewBuilding, data);
+ }
+
+ private static void PhotonParser_OnEventEasyAntiCheatMessageToClient(evEasyAntiCheatMessageToClient data)
+ {
+ printOperationInfo(EventCodes.EasyAntiCheatMessageToClient, data);
+ }
+
+ private static void PhotonParser_OnEventCastHits(evCastHits data)
+ {
+ printOperationInfo(EventCodes.CastHits, data);
+ }
+
+ private static void PhotonParser_OnEventCastStart(evCastStart data)
+ {
+ printOperationInfo(EventCodes.CastStart, data);
+ }
+
+ private static void PhotonParser_OnEventCastTimeUpdate(evCastTimeUpdate data)
+ {
+ printOperationInfo(EventCodes.CastTimeUpdate, data);
+ }
+
+ #endregion
+
+ #region onOperation Request
+
+ private static void PhotonParser_OnRequestMove(opMove data)
+ {
+ printOperationInfo("OnRequest", OperationCodes.Move, data);
+ }
+
+ private static void PhotonParser_OnRequestMount(opMount data)
+ {
+ printOperationInfo("OnRequest", OperationCodes.Mount, data);
+ }
+
+ private static void PhotonParser_OnRequestAuctionGetOffers(opAuctionGetAny data)
+ {
+ printOperationInfo("OnRequest", OperationCodes.AuctionGetOffers, data);
+ }
+
+ private static void PhotonParser_OnRequestAuctionGetRequests(opAuctionGetAny data)
+ {
+ printOperationInfo("OnRequest", OperationCodes.AuctionGetRequests, data);
+ }
+
+ private static void PhotonParser_OnRequestRegisterToObject(opRegisterToObject data)
+ {
+ printOperationInfo("OnRequest", OperationCodes.RegisterToObject, data);
+ }
+
+ private static void PhotonParser_OnRequestUnRegisterFromObject(UnRegisterFromObject data)
+ {
+ printOperationInfo("OnRequest", OperationCodes.UnRegisterFromObject, data);
+ }
+
+ #endregion
+
+ #region onOperation Response
+
+ private static void PhotonParser_OnResponseJoin(OpJoin data)
+ {
+ printOperationInfo("OnResponse", OperationCodes.Join, data);
+ }
+
+ private static void PhotonParser_OnResponseAuctionGetOffers(opAuctionGetOffersResponse data)
+ {
+ printOperationInfo("OnResponse", OperationCodes.AuctionGetOffers, data);
+ }
+
+ private static void PhotonParser_OnResponseAuctionGetRequests(opAuctionGetRequestsResponse data)
+ {
+ printOperationInfo("OnResponse", OperationCodes.AuctionGetRequests, data);
+ }
+
+ private static void PhotonParser_OnResponseAuctionGetItemAverageValue(opAuctionGetItemAverageValue data)
+ {
+ printOperationInfo("OnResponse", OperationCodes.AuctionGetItemAverageValue, data);
+ }
+
+ #endregion
}
}