| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971 |
- using C = ClientPackets;
- using S = ServerPackets;
- public abstract class Packet
- {
- public static bool IsServer;
- public virtual bool Observable => true;
- public virtual bool Compressed => false;
- public abstract short Index { get; }
- public static Packet ReceivePacket(byte[] rawBytes, out byte[] extra)
- {
- extra = rawBytes;
- Packet p;
- if (rawBytes.Length < 4) return null; //| 2Bytes: Packet Size | 2Bytes: Packet ID |
- var length = BitConverter.ToUInt16(rawBytes, 0);
- var id = BitConverter.ToInt16(rawBytes, 2);
- if (length > rawBytes.Length || length < 2) return null;
- try
- {
- p = IsServer ? GetClientPacket(id) : GetServerPacket(id);
- if (p == null)
- {
- //prevents server from getting stuck in a 'loop' (only on this connection)
- //if the incomming data is corrupt/invalid > simply remove all data instead of trying to process it over and over again
- extra = new byte[0];
- return null;
- }
- using var ms = p.Compressed ?
- new MemoryStream(p.DecompressPacket(rawBytes[4..(length - 4)])) :
- new MemoryStream(rawBytes, 4, length - 4);
- using var reader = new BinaryReader(ms);
- p.ReadPacket(reader);
- }
- catch (Exception e)
- {
- throw new InvalidDataException();
- }
- extra = new byte[rawBytes.Length - length];
- Buffer.BlockCopy(rawBytes, length, extra, 0, rawBytes.Length - length);
- return p;
- }
- public IEnumerable<byte> GetPacketBytes()
- {
- if (Index < 0) return new byte[0];
- byte[] data, mem;
- using (var ms = new MemoryStream())
- {
- using (var writer = new BinaryWriter(ms))
- {
- WritePacket(writer);
- }
- mem = Compressed ? CompressPacket(ms.ToArray()) : ms.ToArray();
- }
- using (var ms = new MemoryStream())
- {
- ms.SetLength(2);
- ms.Seek(2, SeekOrigin.Begin);
- using (var writer = new BinaryWriter(ms))
- {
- writer.Write(Index);
- writer.Write(mem);
- ms.Seek(0, SeekOrigin.Begin);
- writer.Write((ushort)ms.Length);
- data = ms.ToArray();
- }
- }
- return data;
- }
- protected abstract void ReadPacket(BinaryReader reader);
- protected abstract void WritePacket(BinaryWriter writer);
- protected virtual byte[] DecompressPacket(byte[] buffer) => Functions.DecompressBytes(buffer);
- protected virtual byte[] CompressPacket(byte[] buffer) => Functions.CompressBytes(buffer);
- private static Packet GetClientPacket(short index)
- {
- switch (index)
- {
- case (short)ClientPacketIds.ClientVersion:
- return new C.ClientVersion();
- case (short)ClientPacketIds.Disconnect:
- return new C.Disconnect();
- case (short)ClientPacketIds.KeepAlive:
- return new C.KeepAlive();
- case (short)ClientPacketIds.NewAccount:
- return new C.NewAccount();
- case (short)ClientPacketIds.ChangePassword:
- return new C.ChangePassword();
- case (short)ClientPacketIds.UnlockStorage:
- return new C.UnlockStorage();
- case (short)ClientPacketIds.SetStoragePassword:
- return new C.SetStoragePassword();
- case (short)ClientPacketIds.RemoveStoragePassword:
- return new C.RemoveStoragePassword();
- case (short)ClientPacketIds.Login:
- return new C.Login();
- case (short)ClientPacketIds.NewCharacter:
- return new C.NewCharacter();
- case (short)ClientPacketIds.DeleteCharacter:
- return new C.DeleteCharacter();
- case (short)ClientPacketIds.StartGame:
- return new C.StartGame();
- case (short)ClientPacketIds.LogOut:
- return new C.LogOut();
- case (short)ClientPacketIds.Turn:
- return new C.Turn();
- case (short)ClientPacketIds.Walk:
- return new C.Walk();
- case (short)ClientPacketIds.Run:
- return new C.Run();
- case (short)ClientPacketIds.Chat:
- return new C.Chat();
- case (short)ClientPacketIds.MoveItem:
- return new C.MoveItem();
- case (short)ClientPacketIds.StoreItem:
- return new C.StoreItem();
- case (short)ClientPacketIds.TakeBackItem:
- return new C.TakeBackItem();
- case (short)ClientPacketIds.MergeItem:
- return new C.MergeItem();
- case (short)ClientPacketIds.EquipItem:
- return new C.EquipItem();
- case (short)ClientPacketIds.RemoveItem:
- return new C.RemoveItem();
- case (short)ClientPacketIds.RemoveSlotItem:
- return new C.RemoveSlotItem();
- case (short)ClientPacketIds.SplitItem:
- return new C.SplitItem();
- case (short)ClientPacketIds.UseItem:
- return new C.UseItem();
- case (short)ClientPacketIds.DropItem:
- return new C.DropItem();
- case (short)ClientPacketIds.DepositRefineItem:
- return new C.DepositRefineItem();
- case (short)ClientPacketIds.RetrieveRefineItem:
- return new C.RetrieveRefineItem();
- case (short)ClientPacketIds.RefineCancel:
- return new C.RefineCancel();
- case (short)ClientPacketIds.RefineItem:
- return new C.RefineItem();
- case (short)ClientPacketIds.CheckRefine:
- return new C.CheckRefine();
- case (short)ClientPacketIds.ReplaceWedRing:
- return new C.ReplaceWedRing();
- case (short)ClientPacketIds.DepositTradeItem:
- return new C.DepositTradeItem();
- case (short)ClientPacketIds.RetrieveTradeItem:
- return new C.RetrieveTradeItem();
- case (short)ClientPacketIds.TakeBackHeroItem:
- return new C.TakeBackHeroItem();
- case (short)ClientPacketIds.TransferHeroItem:
- return new C.TransferHeroItem();
- case (short)ClientPacketIds.DropGold:
- return new C.DropGold();
- case (short)ClientPacketIds.PickUp:
- return new C.PickUp();
- case (short)ClientPacketIds.RequestMapInfo:
- return new C.RequestMapInfo();
- case (short)ClientPacketIds.RequestMonsterInfo:
- return new C.RequestMonsterInfo();
- case (short)ClientPacketIds.RequestNPCInfo:
- return new C.RequestNPCInfo();
- case (short)ClientPacketIds.RequestItemInfo:
- return new C.RequestItemInfo();
- case (short)ClientPacketIds.TeleportToNPC:
- return new C.TeleportToNPC();
- case (short)ClientPacketIds.SearchMap:
- return new C.SearchMap();
- case (short)ClientPacketIds.Inspect:
- return new C.Inspect();
- case (short)ClientPacketIds.Observe:
- return new C.Observe();
- case (short)ClientPacketIds.ChangeAMode:
- return new C.ChangeAMode();
- case (short)ClientPacketIds.ChangePMode:
- return new C.ChangePMode();
- case (short)ClientPacketIds.ChangeTrade:
- return new C.ChangeTrade();
- case (short)ClientPacketIds.Attack:
- return new C.Attack();
- case (short)ClientPacketIds.RangeAttack:
- return new C.RangeAttack();
- case (short)ClientPacketIds.Harvest:
- return new C.Harvest();
- case (short)ClientPacketIds.CallNPC:
- return new C.CallNPC();
- case (short)ClientPacketIds.BuyItem:
- return new C.BuyItem();
- case (short)ClientPacketIds.SellItem:
- return new C.SellItem();
- case (short)ClientPacketIds.CraftItem:
- return new C.CraftItem();
- case (short)ClientPacketIds.RepairItem:
- return new C.RepairItem();
- case (short)ClientPacketIds.BuyItemBack:
- return new C.BuyItemBack();
- case (short)ClientPacketIds.SRepairItem:
- return new C.SRepairItem();
- case (short)ClientPacketIds.MagicKey:
- return new C.MagicKey();
- case (short)ClientPacketIds.Magic:
- return new C.Magic();
- case (short)ClientPacketIds.SwitchGroup:
- return new C.SwitchGroup();
- case (short)ClientPacketIds.AddMember:
- return new C.AddMember();
- case (short)ClientPacketIds.DellMember:
- return new C.DelMember();
- case (short)ClientPacketIds.GroupInvite:
- return new C.GroupInvite();
- case (short)ClientPacketIds.NewHero:
- return new C.NewHero();
- case (short)ClientPacketIds.SetAutoPotValue:
- return new C.SetAutoPotValue();
- case (short)ClientPacketIds.SetAutoPotItem:
- return new C.SetAutoPotItem();
- case (short)ClientPacketIds.SetHeroBehaviour:
- return new C.SetHeroBehaviour();
- case (short)ClientPacketIds.ChangeHero:
- return new C.ChangeHero();
- case (short)ClientPacketIds.TownRevive:
- return new C.TownRevive();
- case (short)ClientPacketIds.SpellToggle:
- return new C.SpellToggle();
- case (short)ClientPacketIds.ConsignItem:
- return new C.ConsignItem();
- case (short)ClientPacketIds.MarketSearch:
- return new C.MarketSearch();
- case (short)ClientPacketIds.MarketRefresh:
- return new C.MarketRefresh();
- case (short)ClientPacketIds.MarketPage:
- return new C.MarketPage();
- case (short)ClientPacketIds.MarketBuy:
- return new C.MarketBuy();
- case (short)ClientPacketIds.MarketGetBack:
- return new C.MarketGetBack();
- case (short)ClientPacketIds.MarketSellNow:
- return new C.MarketSellNow();
- case (short)ClientPacketIds.RequestUserName:
- return new C.RequestUserName();
- case (short)ClientPacketIds.RequestChatItem:
- return new C.RequestChatItem();
- case (short)ClientPacketIds.EditGuildMember:
- return new C.EditGuildMember();
- case (short)ClientPacketIds.EditGuildNotice:
- return new C.EditGuildNotice();
- case (short)ClientPacketIds.GuildInvite:
- return new C.GuildInvite();
- case (short)ClientPacketIds.GuildNameReturn:
- return new C.GuildNameReturn();
- case (short)ClientPacketIds.RequestGuildInfo:
- return new C.RequestGuildInfo();
- case (short)ClientPacketIds.GuildStorageGoldChange:
- return new C.GuildStorageGoldChange();
- case (short)ClientPacketIds.GuildStorageItemChange:
- return new C.GuildStorageItemChange();
- case (short)ClientPacketIds.GuildWarReturn:
- return new C.GuildWarReturn();
- case (short)ClientPacketIds.MarriageRequest:
- return new C.MarriageRequest();
- case (short)ClientPacketIds.MarriageReply:
- return new C.MarriageReply();
- case (short)ClientPacketIds.ChangeMarriage:
- return new C.ChangeMarriage();
- case (short)ClientPacketIds.DivorceRequest:
- return new C.DivorceRequest();
- case (short)ClientPacketIds.DivorceReply:
- return new C.DivorceReply();
- case (short)ClientPacketIds.AddMentor:
- return new C.AddMentor();
- case (short)ClientPacketIds.MentorReply:
- return new C.MentorReply();
- case (short)ClientPacketIds.AllowMentor:
- return new C.AllowMentor();
- case (short)ClientPacketIds.CancelMentor:
- return new C.CancelMentor();
- case (short)ClientPacketIds.TradeRequest:
- return new C.TradeRequest();
- case (short)ClientPacketIds.TradeReply:
- return new C.TradeReply();
- case (short)ClientPacketIds.TradeGold:
- return new C.TradeGold();
- case (short)ClientPacketIds.TradeConfirm:
- return new C.TradeConfirm();
- case (short)ClientPacketIds.TradeCancel:
- return new C.TradeCancel();
- case (short)ClientPacketIds.EquipSlotItem:
- return new C.EquipSlotItem();
- case (short)ClientPacketIds.FishingCast:
- return new C.FishingCast();
- case (short)ClientPacketIds.FishingChangeAutocast:
- return new C.FishingChangeAutocast();
- case (short)ClientPacketIds.AcceptQuest:
- return new C.AcceptQuest();
- case (short)ClientPacketIds.FinishQuest:
- return new C.FinishQuest();
- case (short)ClientPacketIds.AbandonQuest:
- return new C.AbandonQuest();
- case (short)ClientPacketIds.ShareQuest:
- return new C.ShareQuest();
- case (short)ClientPacketIds.AcceptReincarnation:
- return new C.AcceptReincarnation();
- case (short)ClientPacketIds.CancelReincarnation:
- return new C.CancelReincarnation();
- case (short)ClientPacketIds.CombineItem:
- return new C.CombineItem();
- case (short)ClientPacketIds.AwakeningNeedMaterials:
- return new C.AwakeningNeedMaterials();
- case (short)ClientPacketIds.AwakeningLockedItem:
- return new C.AwakeningLockedItem();
- case (short)ClientPacketIds.Awakening:
- return new C.Awakening();
- case (short)ClientPacketIds.DisassembleItem:
- return new C.DisassembleItem();
- case (short)ClientPacketIds.DowngradeAwakening:
- return new C.DowngradeAwakening();
- case (short)ClientPacketIds.ResetAddedItem:
- return new C.ResetAddedItem();
- case (short)ClientPacketIds.SendMail:
- return new C.SendMail();
- case (short)ClientPacketIds.ReadMail:
- return new C.ReadMail();
- case (short)ClientPacketIds.CollectParcel:
- return new C.CollectParcel();
- case (short)ClientPacketIds.DeleteMail:
- return new C.DeleteMail();
- case (short)ClientPacketIds.LockMail:
- return new C.LockMail();
- case (short)ClientPacketIds.MailLockedItem:
- return new C.MailLockedItem();
- case (short)ClientPacketIds.MailCost:
- return new C.MailCost();
- case (short)ClientPacketIds.RequestIntelligentCreatureUpdates:
- return new C.RequestIntelligentCreatureUpdates();
- case (short)ClientPacketIds.UpdateIntelligentCreature:
- return new C.UpdateIntelligentCreature();
- case (short)ClientPacketIds.IntelligentCreaturePickup:
- return new C.IntelligentCreaturePickup();
- case (short)ClientPacketIds.AddFriend:
- return new C.AddFriend();
- case (short)ClientPacketIds.RemoveFriend:
- return new C.RemoveFriend();
- case (short)ClientPacketIds.RefreshFriends:
- return new C.RefreshFriends();
- case (short)ClientPacketIds.AddMemo:
- return new C.AddMemo();
- case (short)ClientPacketIds.GuildBuffUpdate:
- return new C.GuildBuffUpdate();
- case (short)ClientPacketIds.GameshopBuy:
- return new C.GameshopBuy();
- case (short)ClientPacketIds.NPCConfirmInput:
- return new C.NPCConfirmInput();
- case (short)ClientPacketIds.ReportIssue:
- return new C.ReportIssue();
- case (short)ClientPacketIds.GetRanking:
- return new C.GetRanking();
- case (short)ClientPacketIds.Opendoor:
- return new C.Opendoor();
- case (short)ClientPacketIds.GetRentedItems:
- return new C.GetRentedItems();
- case (short)ClientPacketIds.ItemRentalRequest:
- return new C.ItemRentalRequest();
- case (short)ClientPacketIds.ItemRentalFee:
- return new C.ItemRentalFee();
- case (short)ClientPacketIds.ItemRentalPeriod:
- return new C.ItemRentalPeriod();
- case (short)ClientPacketIds.DepositRentalItem:
- return new C.DepositRentalItem();
- case (short)ClientPacketIds.RetrieveRentalItem:
- return new C.RetrieveRentalItem();
- case (short)ClientPacketIds.CancelItemRental:
- return new C.CancelItemRental();
- case (short)ClientPacketIds.ItemRentalLockFee:
- return new C.ItemRentalLockFee();
- case (short)ClientPacketIds.ItemRentalLockItem:
- return new C.ItemRentalLockItem();
- case (short)ClientPacketIds.ConfirmItemRental:
- return new C.ConfirmItemRental();
- case (short)ClientPacketIds.GuildTerritoryPage:
- return new C.GuildTerritoryPage();
- case (short)ClientPacketIds.DeleteItem:
- return new C.DeleteItem();
- default:
- return null;
- }
- }
- public static Packet GetServerPacket(short index)
- {
- switch (index)
- {
- case (short)ServerPacketIds.Connected:
- return new S.Connected();
- case (short)ServerPacketIds.ClientVersion:
- return new S.ClientVersion();
- case (short)ServerPacketIds.Disconnect:
- return new S.Disconnect();
- case (short)ServerPacketIds.KeepAlive:
- return new S.KeepAlive();
- case (short)ServerPacketIds.NewAccount:
- return new S.NewAccount();
- case (short)ServerPacketIds.ChangePassword:
- return new S.ChangePassword();
- case (short)ServerPacketIds.ChangePasswordBanned:
- return new S.ChangePasswordBanned();
- case (short)ServerPacketIds.StorageUnlockResult:
- return new S.StorageUnlockResult();
- case (short)ServerPacketIds.StoragePasswordResult:
- return new S.StoragePasswordResult();
- case (short)ServerPacketIds.Login:
- return new S.Login();
- case (short)ServerPacketIds.LoginBanned:
- return new S.LoginBanned();
- case (short)ServerPacketIds.LoginSuccess:
- return new S.LoginSuccess();
- case (short)ServerPacketIds.NewCharacter:
- return new S.NewCharacter();
- case (short)ServerPacketIds.NewCharacterSuccess:
- return new S.NewCharacterSuccess();
- case (short)ServerPacketIds.DeleteCharacter:
- return new S.DeleteCharacter();
- case (short)ServerPacketIds.DeleteCharacterSuccess:
- return new S.DeleteCharacterSuccess();
- case (short)ServerPacketIds.StartGame:
- return new S.StartGame();
- case (short)ServerPacketIds.StartGameBanned:
- return new S.StartGameBanned();
- case (short)ServerPacketIds.StartGameDelay:
- return new S.StartGameDelay();
- case (short)ServerPacketIds.MapInformation:
- return new S.MapInformation();
- case (short)ServerPacketIds.NewMapInfo:
- return new S.NewMapInfo();
- case (short)ServerPacketIds.WorldMapSetup:
- return new S.WorldMapSetupInfo();
- case (short)ServerPacketIds.SearchMapResult:
- return new S.SearchMapResult();
- case (short)ServerPacketIds.UserInformation:
- return new S.UserInformation();
- case (short)ServerPacketIds.UserSlotsRefresh:
- return new S.UserSlotsRefresh();
- case (short)ServerPacketIds.UserLocation:
- return new S.UserLocation();
- case (short)ServerPacketIds.ObjectPlayer:
- return new S.ObjectPlayer();
- case (short)ServerPacketIds.ObjectHero:
- return new S.ObjectHero();
- case (short)ServerPacketIds.ObjectRemove:
- return new S.ObjectRemove();
- case (short)ServerPacketIds.ObjectTurn:
- return new S.ObjectTurn();
- case (short)ServerPacketIds.ObjectWalk:
- return new S.ObjectWalk();
- case (short)ServerPacketIds.ObjectRun:
- return new S.ObjectRun();
- case (short)ServerPacketIds.Chat:
- return new S.Chat();
- case (short)ServerPacketIds.ObjectChat:
- return new S.ObjectChat();
- case (short)ServerPacketIds.NewItemInfo:
- return new S.NewItemInfo();
- case (short)ServerPacketIds.NewMonsterInfo:
- return new S.NewMonsterInfo();
- case (short)ServerPacketIds.NewNPCInfo:
- return new S.NewNPCInfo();
- case (short)ServerPacketIds.NewHeroInfo:
- return new S.NewHeroInfo();
- case (short)ServerPacketIds.NewChatItem:
- return new S.NewChatItem();
- case (short)ServerPacketIds.MoveItem:
- return new S.MoveItem();
- case (short)ServerPacketIds.EquipItem:
- return new S.EquipItem();
- case (short)ServerPacketIds.MergeItem:
- return new S.MergeItem();
- case (short)ServerPacketIds.RemoveItem:
- return new S.RemoveItem();
- case (short)ServerPacketIds.RemoveSlotItem:
- return new S.RemoveSlotItem();
- case (short)ServerPacketIds.TakeBackItem:
- return new S.TakeBackItem();
- case (short)ServerPacketIds.TakeBackHeroItem:
- return new S.TakeBackHeroItem();
- case (short)ServerPacketIds.TransferHeroItem:
- return new S.TransferHeroItem();
- case (short)ServerPacketIds.StoreItem:
- return new S.StoreItem();
- case (short)ServerPacketIds.DepositRefineItem:
- return new S.DepositRefineItem();
- case (short)ServerPacketIds.RetrieveRefineItem:
- return new S.RetrieveRefineItem();
- case (short)ServerPacketIds.RefineItem:
- return new S.RefineItem();
- case (short)ServerPacketIds.DepositTradeItem:
- return new S.DepositTradeItem();
- case (short)ServerPacketIds.RetrieveTradeItem:
- return new S.RetrieveTradeItem();
- case (short)ServerPacketIds.SplitItem:
- return new S.SplitItem();
- case (short)ServerPacketIds.SplitItem1:
- return new S.SplitItem1();
- case (short)ServerPacketIds.UseItem:
- return new S.UseItem();
- case (short)ServerPacketIds.DropItem:
- return new S.DropItem();
- case (short)ServerPacketIds.PlayerUpdate:
- return new S.PlayerUpdate();
- case (short)ServerPacketIds.PlayerInspect:
- return new S.PlayerInspect();
- case (short)ServerPacketIds.LogOutSuccess:
- return new S.LogOutSuccess();
- case (short)ServerPacketIds.LogOutFailed:
- return new S.LogOutFailed();
- case (short)ServerPacketIds.ReturnToLogin:
- return new S.ReturnToLogin();
- case (short)ServerPacketIds.TimeOfDay:
- return new S.TimeOfDay();
- case (short)ServerPacketIds.ChangeAMode:
- return new S.ChangeAMode();
- case (short)ServerPacketIds.ChangePMode:
- return new S.ChangePMode();
- case (short)ServerPacketIds.ObjectItem:
- return new S.ObjectItem();
- case (short)ServerPacketIds.ObjectGold:
- return new S.ObjectGold();
- case (short)ServerPacketIds.GainedItem:
- return new S.GainedItem();
- case (short)ServerPacketIds.GainedGold:
- return new S.GainedGold();
- case (short)ServerPacketIds.LoseGold:
- return new S.LoseGold();
- case (short)ServerPacketIds.GainedCredit:
- return new S.GainedCredit();
- case (short)ServerPacketIds.LoseCredit:
- return new S.LoseCredit();
- case (short)ServerPacketIds.ObjectMonster:
- return new S.ObjectMonster();
- case (short)ServerPacketIds.ObjectAttack:
- return new S.ObjectAttack();
- case (short)ServerPacketIds.Struck:
- return new S.Struck();
- case (short)ServerPacketIds.DamageIndicator:
- return new S.DamageIndicator();
- case (short)ServerPacketIds.ObjectStruck:
- return new S.ObjectStruck();
- case (short)ServerPacketIds.DuraChanged:
- return new S.DuraChanged();
- case (short)ServerPacketIds.HealthChanged:
- return new S.HealthChanged();
- case (short)ServerPacketIds.HeroHealthChanged:
- return new S.HeroHealthChanged();
- case (short)ServerPacketIds.DeleteItem:
- return new S.DeleteItem();
- case (short)ServerPacketIds.Death:
- return new S.Death();
- case (short)ServerPacketIds.ObjectDied:
- return new S.ObjectDied();
- case (short)ServerPacketIds.ColourChanged:
- return new S.ColourChanged();
- case (short)ServerPacketIds.ObjectColourChanged:
- return new S.ObjectColourChanged();
- case (short)ServerPacketIds.ObjectGuildNameChanged:
- return new S.ObjectGuildNameChanged();
- case (short)ServerPacketIds.GainExperience:
- return new S.GainExperience();
- case (short)ServerPacketIds.GainHeroExperience:
- return new S.GainHeroExperience();
- case (short)ServerPacketIds.LevelChanged:
- return new S.LevelChanged();
- case (short)ServerPacketIds.HeroLevelChanged:
- return new S.HeroLevelChanged();
- case (short)ServerPacketIds.ObjectLeveled:
- return new S.ObjectLeveled();
- case (short)ServerPacketIds.ObjectHarvest:
- return new S.ObjectHarvest();
- case (short)ServerPacketIds.ObjectHarvested:
- return new S.ObjectHarvested();
- case (short)ServerPacketIds.ObjectNpc:
- return new S.ObjectNPC();
- case (short)ServerPacketIds.NPCResponse:
- return new S.NPCResponse();
- case (short)ServerPacketIds.ObjectHide:
- return new S.ObjectHide();
- case (short)ServerPacketIds.ObjectShow:
- return new S.ObjectShow();
- case (short)ServerPacketIds.Poisoned:
- return new S.Poisoned();
- case (short)ServerPacketIds.ObjectPoisoned:
- return new S.ObjectPoisoned();
- case (short)ServerPacketIds.MapChanged:
- return new S.MapChanged();
- case (short)ServerPacketIds.ObjectTeleportOut:
- return new S.ObjectTeleportOut();
- case (short)ServerPacketIds.ObjectTeleportIn:
- return new S.ObjectTeleportIn();
- case (short)ServerPacketIds.TeleportIn:
- return new S.TeleportIn();
- case (short)ServerPacketIds.NPCGoods:
- return new S.NPCGoods();
- case (short)ServerPacketIds.NPCSell:
- return new S.NPCSell();
- case (short)ServerPacketIds.NPCRepair:
- return new S.NPCRepair();
- case (short)ServerPacketIds.NPCSRepair:
- return new S.NPCSRepair();
- case (short)ServerPacketIds.NPCRefine:
- return new S.NPCRefine();
- case (short)ServerPacketIds.NPCCheckRefine:
- return new S.NPCCheckRefine();
- case (short)ServerPacketIds.NPCCollectRefine:
- return new S.NPCCollectRefine();
- case (short)ServerPacketIds.NPCReplaceWedRing:
- return new S.NPCReplaceWedRing();
- case (short)ServerPacketIds.NPCStorage:
- return new S.NPCStorage();
- case (short)ServerPacketIds.SellItem:
- return new S.SellItem();
- case (short)ServerPacketIds.CraftItem:
- return new S.CraftItem();
- case (short)ServerPacketIds.RepairItem:
- return new S.RepairItem();
- case (short)ServerPacketIds.ItemRepaired:
- return new S.ItemRepaired();
- case (short)ServerPacketIds.ItemSlotSizeChanged:
- return new S.ItemSlotSizeChanged();
- case (short)ServerPacketIds.ItemSealChanged:
- return new S.ItemSealChanged();
- case (short)ServerPacketIds.NewMagic:
- return new S.NewMagic();
- case (short)ServerPacketIds.MagicLeveled:
- return new S.MagicLeveled();
- case (short)ServerPacketIds.Magic:
- return new S.Magic();
- case (short)ServerPacketIds.MagicDelay:
- return new S.MagicDelay();
- case (short)ServerPacketIds.MagicCast:
- return new S.MagicCast();
- case (short)ServerPacketIds.ObjectMagic:
- return new S.ObjectMagic();
- case (short)ServerPacketIds.ObjectProjectile:
- return new S.ObjectProjectile();
- case (short)ServerPacketIds.ObjectEffect:
- return new S.ObjectEffect();
- case (short)ServerPacketIds.RangeAttack:
- return new S.RangeAttack();
- case (short)ServerPacketIds.Pushed:
- return new S.Pushed();
- case (short)ServerPacketIds.ObjectPushed:
- return new S.ObjectPushed();
- case (short)ServerPacketIds.ObjectName:
- return new S.ObjectName();
- case (short)ServerPacketIds.UserStorage:
- return new S.UserStorage();
- case (short)ServerPacketIds.SwitchGroup:
- return new S.SwitchGroup();
- case (short)ServerPacketIds.DeleteGroup:
- return new S.DeleteGroup();
- case (short)ServerPacketIds.DeleteMember:
- return new S.DeleteMember();
- case (short)ServerPacketIds.GroupInvite:
- return new S.GroupInvite();
- case (short)ServerPacketIds.AddMember:
- return new S.AddMember();
- case (short)ServerPacketIds.GroupMembersMap:
- return new S.GroupMembersMap();
- case (short)ServerPacketIds.SendMemberLocation:
- return new S.SendMemberLocation();
- case (short)ServerPacketIds.Revived:
- return new S.Revived();
- case (short)ServerPacketIds.ObjectRevived:
- return new S.ObjectRevived();
- case (short)ServerPacketIds.SpellToggle:
- return new S.SpellToggle();
- case (short)ServerPacketIds.ObjectHealth:
- return new S.ObjectHealth();
- case (short)ServerPacketIds.ObjectMana:
- return new S.ObjectMana();
- case (short)ServerPacketIds.MapEffect:
- return new S.MapEffect();
- case (short)ServerPacketIds.AllowObserve:
- return new S.AllowObserve();
- case (short)ServerPacketIds.ObjectRangeAttack:
- return new S.ObjectRangeAttack();
- case (short)ServerPacketIds.AddBuff:
- return new S.AddBuff();
- case (short)ServerPacketIds.RemoveBuff:
- return new S.RemoveBuff();
- case (short)ServerPacketIds.PauseBuff:
- return new S.PauseBuff();
- case (short)ServerPacketIds.ObjectHidden:
- return new S.ObjectHidden();
- case (short)ServerPacketIds.RefreshItem:
- return new S.RefreshItem();
- case (short)ServerPacketIds.ObjectSpell:
- return new S.ObjectSpell();
- case (short)ServerPacketIds.UserDash:
- return new S.UserDash();
- case (short)ServerPacketIds.ObjectDash:
- return new S.ObjectDash();
- case (short)ServerPacketIds.UserDashFail:
- return new S.UserDashFail();
- case (short)ServerPacketIds.ObjectDashFail:
- return new S.ObjectDashFail();
- case (short)ServerPacketIds.NPCConsign:
- return new S.NPCConsign();
- case (short)ServerPacketIds.NPCMarket:
- return new S.NPCMarket();
- case (short)ServerPacketIds.NPCMarketPage:
- return new S.NPCMarketPage();
- case (short)ServerPacketIds.ConsignItem:
- return new S.ConsignItem();
- case (short)ServerPacketIds.MarketFail:
- return new S.MarketFail();
- case (short)ServerPacketIds.MarketSuccess:
- return new S.MarketSuccess();
- case (short)ServerPacketIds.ObjectSitDown:
- return new S.ObjectSitDown();
- case (short)ServerPacketIds.InTrapRock:
- return new S.InTrapRock();
- case (short)ServerPacketIds.RemoveMagic:
- return new S.RemoveMagic();
- case (short)ServerPacketIds.BaseStatsInfo:
- return new S.BaseStatsInfo();
- case (short)ServerPacketIds.HeroBaseStatsInfo:
- return new S.HeroBaseStatsInfo();
- case (short)ServerPacketIds.UserName:
- return new S.UserName();
- case (short)ServerPacketIds.ChatItemStats:
- return new S.ChatItemStats();
- case (short)ServerPacketIds.GuildMemberChange:
- return new S.GuildMemberChange();
- case (short)ServerPacketIds.GuildNoticeChange:
- return new S.GuildNoticeChange();
- case (short)ServerPacketIds.GuildStatus:
- return new S.GuildStatus();
- case (short)ServerPacketIds.GuildInvite:
- return new S.GuildInvite();
- case (short)ServerPacketIds.GuildExpGain:
- return new S.GuildExpGain();
- case (short)ServerPacketIds.GuildNameRequest:
- return new S.GuildNameRequest();
- case (short)ServerPacketIds.GuildStorageGoldChange:
- return new S.GuildStorageGoldChange();
- case (short)ServerPacketIds.GuildStorageItemChange:
- return new S.GuildStorageItemChange();
- case (short)ServerPacketIds.GuildStorageList:
- return new S.GuildStorageList();
- case (short)ServerPacketIds.GuildRequestWar:
- return new S.GuildRequestWar();
- case (short)ServerPacketIds.HeroCreateRequest:
- return new S.HeroCreateRequest();
- case (short)ServerPacketIds.NewHero:
- return new S.NewHero();
- case (short)ServerPacketIds.HeroInformation:
- return new S.HeroInformation();
- case (short)ServerPacketIds.UpdateHeroSpawnState:
- return new S.UpdateHeroSpawnState();
- case (short)ServerPacketIds.UnlockHeroAutoPot:
- return new S.UnlockHeroAutoPot();
- case (short)ServerPacketIds.SetAutoPotValue:
- return new S.SetAutoPotValue();
- case (short)ServerPacketIds.SetAutoPotItem:
- return new S.SetAutoPotItem();
- case (short)ServerPacketIds.SetHeroBehaviour:
- return new S.SetHeroBehaviour();
- case (short)ServerPacketIds.ManageHeroes:
- return new S.ManageHeroes();
- case (short)ServerPacketIds.ChangeHero:
- return new S.ChangeHero();
- case (short)ServerPacketIds.DefaultNPC:
- return new S.DefaultNPC();
- case (short)ServerPacketIds.NPCUpdate:
- return new S.NPCUpdate();
- case (short)ServerPacketIds.NPCImageUpdate:
- return new S.NPCImageUpdate();
- case (short)ServerPacketIds.MarriageRequest:
- return new S.MarriageRequest();
- case (short)ServerPacketIds.DivorceRequest:
- return new S.DivorceRequest();
- case (short)ServerPacketIds.MentorRequest:
- return new S.MentorRequest();
- case (short)ServerPacketIds.TradeRequest:
- return new S.TradeRequest();
- case (short)ServerPacketIds.TradeAccept:
- return new S.TradeAccept();
- case (short)ServerPacketIds.TradeGold:
- return new S.TradeGold();
- case (short)ServerPacketIds.TradeItem:
- return new S.TradeItem();
- case (short)ServerPacketIds.TradeConfirm:
- return new S.TradeConfirm();
- case (short)ServerPacketIds.TradeCancel:
- return new S.TradeCancel();
- case (short)ServerPacketIds.MountUpdate:
- return new S.MountUpdate();
- case (short)ServerPacketIds.TransformUpdate:
- return new S.TransformUpdate();
- case (short)ServerPacketIds.EquipSlotItem:
- return new S.EquipSlotItem();
- case (short)ServerPacketIds.FishingUpdate:
- return new S.FishingUpdate();
- case (short)ServerPacketIds.ChangeQuest:
- return new S.ChangeQuest();
- case (short)ServerPacketIds.CompleteQuest:
- return new S.CompleteQuest();
- case (short)ServerPacketIds.ShareQuest:
- return new S.ShareQuest();
- case (short)ServerPacketIds.NewQuestInfo:
- return new S.NewQuestInfo();
- case (short)ServerPacketIds.GainedQuestItem:
- return new S.GainedQuestItem();
- case (short)ServerPacketIds.DeleteQuestItem:
- return new S.DeleteQuestItem();
- case (short)ServerPacketIds.CancelReincarnation:
- return new S.CancelReincarnation();
- case (short)ServerPacketIds.RequestReincarnation:
- return new S.RequestReincarnation();
- case (short)ServerPacketIds.UserBackStep:
- return new S.UserBackStep();
- case (short)ServerPacketIds.ObjectBackStep:
- return new S.ObjectBackStep();
- case (short)ServerPacketIds.UserDashAttack:
- return new S.UserDashAttack();
- case (short)ServerPacketIds.ObjectDashAttack:
- return new S.ObjectDashAttack();
- case (short)ServerPacketIds.UserAttackMove://Warrior Skill - SlashingBurst
- return new S.UserAttackMove();
- case (short)ServerPacketIds.CombineItem:
- return new S.CombineItem();
- case (short)ServerPacketIds.ItemUpgraded:
- return new S.ItemUpgraded();
- case (short)ServerPacketIds.SetConcentration:
- return new S.SetConcentration();
- case (short)ServerPacketIds.SetElemental:
- return new S.SetElemental();
- case (short)ServerPacketIds.RemoveDelayedExplosion:
- return new S.RemoveDelayedExplosion();
- case (short)ServerPacketIds.ObjectDeco:
- return new S.ObjectDeco();
- case (short)ServerPacketIds.ObjectSneaking:
- return new S.ObjectSneaking();
- case (short)ServerPacketIds.ObjectLevelEffects:
- return new S.ObjectLevelEffects();
- case (short)ServerPacketIds.SetBindingShot:
- return new S.SetBindingShot();
- case (short)ServerPacketIds.SendOutputMessage:
- return new S.SendOutputMessage();
- case (short)ServerPacketIds.NPCAwakening:
- return new S.NPCAwakening();
- case (short)ServerPacketIds.NPCDisassemble:
- return new S.NPCDisassemble();
- case (short)ServerPacketIds.NPCDowngrade:
- return new S.NPCDowngrade();
- case (short)ServerPacketIds.NPCReset:
- return new S.NPCReset();
- case (short)ServerPacketIds.AwakeningNeedMaterials:
- return new S.AwakeningNeedMaterials();
- case (short)ServerPacketIds.AwakeningLockedItem:
- return new S.AwakeningLockedItem();
- case (short)ServerPacketIds.Awakening:
- return new S.Awakening();
- case (short)ServerPacketIds.ReceiveMail:
- return new S.ReceiveMail();
- case (short)ServerPacketIds.MailLockedItem:
- return new S.MailLockedItem();
- case (short)ServerPacketIds.MailSent:
- return new S.MailSent();
- case (short)ServerPacketIds.MailSendRequest:
- return new S.MailSendRequest();
- case (short)ServerPacketIds.ParcelCollected:
- return new S.ParcelCollected();
- case (short)ServerPacketIds.MailCost:
- return new S.MailCost();
- case (short)ServerPacketIds.ResizeInventory:
- return new S.ResizeInventory();
- case (short)ServerPacketIds.ResizeStorage:
- return new S.ResizeStorage();
- case (short)ServerPacketIds.NewIntelligentCreature:
- return new S.NewIntelligentCreature();
- case (short)ServerPacketIds.UpdateIntelligentCreatureList:
- return new S.UpdateIntelligentCreatureList();
- case (short)ServerPacketIds.IntelligentCreatureEnableRename:
- return new S.IntelligentCreatureEnableRename();
- case (short)ServerPacketIds.IntelligentCreaturePickup:
- return new S.IntelligentCreaturePickup();
- case (short)ServerPacketIds.NPCPearlGoods:
- return new S.NPCPearlGoods();
- case (short)ServerPacketIds.FriendUpdate:
- return new S.FriendUpdate();
- case (short)ServerPacketIds.LoverUpdate:
- return new S.LoverUpdate();
- case (short)ServerPacketIds.MentorUpdate:
- return new S.MentorUpdate();
- case (short)ServerPacketIds.GuildBuffList:
- return new S.GuildBuffList();
- case (short)ServerPacketIds.GameShopInfo:
- return new S.GameShopInfo();
- case (short)ServerPacketIds.GameShopStock:
- return new S.GameShopStock();
- case (short)ServerPacketIds.NPCRequestInput:
- return new S.NPCRequestInput();
- case (short)ServerPacketIds.Rankings:
- return new S.Rankings();
- case (short)ServerPacketIds.Opendoor:
- return new S.Opendoor();
- case (short)ServerPacketIds.GetRentedItems:
- return new S.GetRentedItems();
- case (short)ServerPacketIds.ItemRentalRequest:
- return new S.ItemRentalRequest();
- case (short)ServerPacketIds.ItemRentalFee:
- return new S.ItemRentalFee();
- case (short)ServerPacketIds.ItemRentalPeriod:
- return new S.ItemRentalPeriod();
- case (short)ServerPacketIds.DepositRentalItem:
- return new S.DepositRentalItem();
- case (short)ServerPacketIds.RetrieveRentalItem:
- return new S.RetrieveRentalItem();
- case (short)ServerPacketIds.UpdateRentalItem:
- return new S.UpdateRentalItem();
- case (short)ServerPacketIds.CancelItemRental:
- return new S.CancelItemRental();
- case (short)ServerPacketIds.ItemRentalLock:
- return new S.ItemRentalLock();
- case (short)ServerPacketIds.ItemRentalPartnerLock:
- return new S.ItemRentalPartnerLock();
- case (short)ServerPacketIds.CanConfirmItemRental:
- return new S.CanConfirmItemRental();
- case (short)ServerPacketIds.ConfirmItemRental:
- return new S.ConfirmItemRental();
- case (short)ServerPacketIds.NewRecipeInfo:
- return new S.NewRecipeInfo();
- case (short)ServerPacketIds.OpenBrowser:
- return new S.OpenBrowser();
- case (short)ServerPacketIds.PlaySound:
- return new S.PlaySound();
- case (short)ServerPacketIds.SetTimer:
- return new S.SetTimer();
- case (short)ServerPacketIds.ExpireTimer:
- return new S.ExpireTimer();
- case (short)ServerPacketIds.UpdateNotice:
- return new S.UpdateNotice();
- case (short)ServerPacketIds.Roll:
- return new S.Roll();
- case (short)ServerPacketIds.SetCompass:
- return new S.SetCompass();
- case (short)ServerPacketIds.GuildTerritoryPage:
- return new S.GuildTerritoryPage();
- default:
- return null;
- }
- }
- }
|