public static void SendFaceOrHairChangedResponse(IRealmClient client, bool isHair, bool success = false, Asda2Item usedItem = null) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.FaceOrHairChanged)) { packet.WriteByte(success ? 1 : 0); packet.WriteByte(isHair ? 1 : 2); packet.WriteByte(client.ActiveCharacter.HairStyle); packet.WriteByte(client.ActiveCharacter.HairColor); packet.WriteByte(client.ActiveCharacter.Record.Face); packet.WriteInt32(client.ActiveCharacter.Asda2Inventory.Weight); packet.WriteInt32(client.ActiveCharacter.Money); Asda2InventoryHandler.WriteItemInfoToPacket(packet, usedItem, false); client.Send(packet, true); if (!success) { return; } AchievementProgressRecord progressRecord = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(9U); switch (++progressRecord.Counter) { case 50: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Beautiful47); break; case 100: client.ActiveCharacter.GetTitle(Asda2TitleId.Beautiful47); break; } progressRecord.SaveAndFlush(); } }
public static void SendItemBuyedFromPrivateShopResponse(Character chr, PrivateShopBuyResult status, List <Asda2Item> buyedItems) { Asda2Item[] asda2ItemArray = new Asda2Item[6]; if (buyedItems != null) { for (int index = 0; index < buyedItems.Count; ++index) { asda2ItemArray[index] = buyedItems[index]; } } using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ItemBuyedFromPrivateShop)) { packet.WriteByte((byte)status); if (status == PrivateShopBuyResult.Ok) { packet.WriteInt16(chr.Asda2Inventory.Weight); packet.WriteInt32(chr.Money); packet.WriteByte(buyedItems.Count <Asda2Item>((Func <Asda2Item, bool>)(i => i != null))); for (int index = 0; index < 6; ++index) { Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2ItemArray[index], false); } } chr.Send(packet, false); } }
public static void SendFactionResetedResponse(IRealmClient client, bool ok, Asda2Item item) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.FactionReseted)) { packet.WriteByte(ok ? 1 : 0); Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, true); client.Send(packet, false); } }
public static void SendFactionResetedResponse(IRealmClient client, bool ok, Asda2Item item) { using (var packet = new RealmPacketOut(RealmServerOpCode.FactionReseted)) //6705 { packet.WriteByte(ok ? 1 : 0); //{status}default value : 1 Len : 1 Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, true); client.Send(packet); } }
public static void SendMailItemTakedResponse(IRealmClient client, Asda2MailItemTakedStatus status, Asda2Item item) { using (var packet = new RealmPacketOut(RealmServerOpCode.MailItemTaked)) //6625 { packet.WriteByte((byte)status); //{status}default value : 1 Len : 1 packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); //{weight}default value : 10565 Len : 2 packet.WriteInt32(client.ActiveCharacter.Money); //{money}default value : 5538958 Len : 4 Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); client.Send(packet, addEnd: true); } }
public static void SendMailItemTakedResponse(IRealmClient client, Asda2MailItemTakedStatus status, Asda2Item item) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.MailItemTaked)) { packet.WriteByte((byte)status); packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); packet.WriteInt32(client.ActiveCharacter.Money); Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); client.Send(packet, true); } }
public static void SendPetNameChangedResponse(IRealmClient client, Asda2PetNamehangeResult status, Asda2PetRecord pet, Asda2Item changeNameItem) { using (var packet = new RealmPacketOut(RealmServerOpCode.PetNameChanged)) //6119 { packet.WriteByte((byte)status); //{status}default value : 1 Len : 1 packet.WriteInt32(client.ActiveCharacter.AccId); //{accId}default value : 355335 Len : 4 packet.WriteInt32(pet == null ? 0 : pet.Guid); //{petId}default value : 54857 Len : 4 packet.WriteFixedAsciiString(pet == null ? "" : pet.Name, 16); //{petName}default value : Len : 21 Asda2InventoryHandler.WriteItemInfoToPacket(packet, changeNameItem, false); client.Send(packet, addEnd: true); } }
public static void SendMailMessageInfoResponse(IRealmClient client, ShowMailMessageStatus status, Asda2MailMessage msg) { using (var packet = new RealmPacketOut(RealmServerOpCode.MailMessageInfo)) //6623 { packet.WriteByte((byte)status); //{status}default value : 1 Len : 1 packet.WriteInt32((int)(msg == null?0:msg.Guid)); //{msgGuid}default value : 379808 Len : 4 packet.WriteInt32(msg == null ? 0 : msg.Gold); //{goldAmount}default value : 5600 Len : 4 Asda2InventoryHandler.WriteItemInfoToPacket(packet, msg == null ? null:msg.Item, true); packet.WriteFixedAsciiString(msg == null ?"":msg.Body, 128); //{message}default value : Len : 128 client.Send(packet, addEnd: true); } }
public static void SendInventoryInfoResponse(IRealmClient client) { var inventory = client.ActiveCharacter.Asda2Inventory; var inventoryPacks = new List <List <Asda2Item> >(); var itemIndex = 0; var allItems = inventory.RegularItems.Where(it => it != null).ToArray(); while (itemIndex < allItems.Length) { inventoryPacks.Add(new List <Asda2Item>(allItems.Skip(itemIndex).Take(9))); itemIndex += 9; } foreach (var inventoryPack in inventoryPacks) { using (var packet = new RealmPacketOut(RealmServerOpCode.RegularInventoryInfo))//4048 { for (int i = 0; i < inventoryPack.Count; i += 1) { var item = inventoryPack[i]; if (item != null) { Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); } //WriteItemDataToPacket(item, packet, 2); } client.Send(packet, addEnd: false); } } inventoryPacks.Clear(); itemIndex = 0; allItems = inventory.ShopItems.Where(it => it != null).ToArray(); while (itemIndex < allItems.Length) { inventoryPacks.Add(new List <Asda2Item>(allItems.Skip(itemIndex).Take(9))); itemIndex += 9; } foreach (var inventoryPack in inventoryPacks) { using (var packet = new RealmPacketOut(RealmServerOpCode.ShopInventoryInfo))//4045 { for (int i = 0; i < inventoryPack.Count; i += 1) { var item = inventoryPack[i]; if (item != null) { Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); } //WriteItemDataToPacket(item, packet, 1); } client.Send(packet, addEnd: false); } } }
public static void SendVeicheRegisteredResponse(Character chr, Asda2Item veicheItem, RegisterMountStatus status, int veicheId = -1) { using (var packet = new RealmPacketOut(RealmServerOpCode.VeicheRegistered)) //6769 { packet.WriteByte((byte)status); //{status}default value : 1 Len : 1 packet.WriteInt32(chr.AccId); //{accId}default value : 361343 Len : 4 Asda2InventoryHandler.WriteItemInfoToPacket(packet, veicheItem); packet.WriteInt16(chr.Asda2Inventory.Weight); //{invWeight}default value : 11847 Len : 2 packet.WriteInt32(veicheId); //value name : unk4 default value : 56Len : 4 chr.Send(packet); } }
public static void SendMailMessageInfoResponse(IRealmClient client, ShowMailMessageStatus status, Asda2MailMessage msg) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.MailMessageInfo)) { packet.WriteByte((byte)status); packet.WriteInt32(msg == null ? 0 : (int)msg.Guid); packet.WriteInt32(msg == null ? 0U : msg.Gold); Asda2InventoryHandler.WriteItemInfoToPacket(packet, msg == null ? (Asda2Item)null : msg.Item, true); packet.WriteFixedAsciiString(msg == null ? "" : msg.Body, 128, Locale.Start); client.Send(packet, true); } }
public static void SendUpdateShopItemInfoResponse(IRealmClient client, UseFunctionalItemError status, Asda2Item funcItem = null) { using (var packet = new RealmPacketOut(RealmServerOpCode.UpdateShopItemInfo)) //5451 { packet.WriteByte((byte)status); //{status}default value : 1 Len : 1 packet.WriteInt16(client.ActiveCharacter.SessionId); //{sessId}default value : 57 Len : 2 Asda2InventoryHandler.WriteItemInfoToPacket(packet, funcItem, false); packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); //{invWeight}default value : 10364 Len : 2 packet.WriteInt32((int)(funcItem == null ? 0 : funcItem.Record == null ? -1 : (funcItem.Record.AuctionEndTime - DateTime.Now).TotalHours)); //value name : unk4 default value : 0Len : 4 packet.WriteInt16(15000); client.Send(packet, addEnd: true); } }
public static void SendPetNameChangedResponse(IRealmClient client, Asda2PetNamehangeResult status, Asda2PetRecord pet, Asda2Item changeNameItem) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.PetNameChanged)) { packet.WriteByte((byte)status); packet.WriteInt32(client.ActiveCharacter.AccId); packet.WriteInt32(pet == null ? 0 : pet.Guid); packet.WriteFixedAsciiString(pet == null ? "" : pet.Name, 16, Locale.Start); Asda2InventoryHandler.WriteItemInfoToPacket(packet, changeNameItem, false); client.Send(packet, true); } }
public static void SendVeicheRegisteredResponse(Character chr, Asda2Item veicheItem, Asda2MountHandler.RegisterMountStatus status, int veicheId = -1) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.VeicheRegistered)) { packet.WriteByte((byte)status); packet.WriteInt32(chr.AccId); Asda2InventoryHandler.WriteItemInfoToPacket(packet, veicheItem, false); packet.WriteInt16(chr.Asda2Inventory.Weight); packet.WriteInt32(veicheId); chr.Send(packet, false); } }
public static void SendCharacterRegularEquipmentInfoResponse(IRealmClient client, Character target) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.CharacterRegularEquipmentInfo)) { packet.WriteInt32(target.AccId); for (int index = 0; index < 11; ++index) { Asda2Item asda2Item = target.Asda2Inventory.Equipment[index]; Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false); } client.Send(packet, true); } }
public static void SendDigEndedResponse(IRealmClient client, bool success, Asda2Item item = null) { if (client == null || client.ActiveCharacter == null) { return; } using (var packet = new RealmPacketOut(RealmServerOpCode.DigEnded)) //5431 { packet.WriteByte(success ? 1 : 0); //{status}default value : 1 Len : 1 packet.WriteInt16(client.ActiveCharacter.SessionId); //{sessId}default value : 32 Len : 2 Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); client.ActiveCharacter.SendPacketToArea(packet); } }
public static void SendFaceOrHairChangedResponse(IRealmClient client, bool isHair, bool success = false, Asda2Item usedItem = null) { using (var packet = new RealmPacketOut(RealmServerOpCode.FaceOrHairChanged)) //5471 { packet.WriteByte(success?1:0); //{status}default value : 1 Len : 1 packet.WriteByte(isHair?1:2); //{hair1face2}default value : 2 Len : 1 packet.WriteByte(client.ActiveCharacter.HairStyle); //{hairId}default value : 3 Len : 1 packet.WriteByte(client.ActiveCharacter.HairColor); //{hairColor}default value : 3 Len : 1 packet.WriteByte(client.ActiveCharacter.Record.Face); //{faceId}default value : 105 Len : 1 packet.WriteInt32(client.ActiveCharacter.Asda2Inventory.Weight); //{invWeight}default value : 10202 Len : 4 packet.WriteInt32(client.ActiveCharacter.Money); //{money}default value : 41512584 Len : 4 Asda2InventoryHandler.WriteItemInfoToPacket(packet, usedItem, false); client.Send(packet, addEnd: true); } }
public static void SendUpdateShopItemInfoResponse(IRealmClient client, UseFunctionalItemError status, Asda2Item funcItem = null) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.UpdateShopItemInfo)) { packet.WriteByte((byte)status); packet.WriteInt16(client.ActiveCharacter.SessionId); Asda2InventoryHandler.WriteItemInfoToPacket(packet, funcItem, false); packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); packet.WriteInt32(funcItem == null ? 0 : (funcItem.Record == null ? -1 : (int)(funcItem.Record.AuctionEndTime - DateTime.Now).TotalHours)); packet.WriteInt16(15000); client.Send(packet, true); client.ActiveCharacter.SendPacketToArea(packet, true, true, Locale.Any, new float?()); } }
public static void DismissPlayerFromWarRequest(IRealmClient client, RealmPacketIn packet) { short num = packet.ReadInt16(); if (!client.ActiveCharacter.IsAsda2BattlegroundInProgress) { client.ActiveCharacter.YouAreFuckingCheater("Trying to dissmis someone while not on war.", 50); } else { Character character = client.ActiveCharacter.CurrentBattleGround.GetCharacter(client.ActiveCharacter.Asda2FactionId, (byte)num); if (character == null) { client.ActiveCharacter.SendWarMsg("Target character not found."); } using (RealmPacketOut packet1 = new RealmPacketOut(RealmServerOpCode.DismissPlayerFromWarRequestResult)) { if (character == null || !client.ActiveCharacter.CurrentBattleGround.TryStartDissmisProgress(client.ActiveCharacter, character) || client.ActiveCharacter.Money < 10000U) { packet1.WriteByte(0); packet1.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); Asda2InventoryHandler.WriteItemInfoToPacket(packet1, (Asda2Item)null, false); } else { packet1.WriteByte(1); packet1.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); Asda2InventoryHandler.WriteItemInfoToPacket(packet1, client.ActiveCharacter.Asda2Inventory.GetRegularItem((short)0), false); client.ActiveCharacter.SubtractMoney(10000U); } client.Send(packet1, true); } } }
public static void SendWarEndedOneResponse(IRealmClient client, IEnumerable <Asda2Item> prizeItems) { var items = new Asda2Item[4]; var ind = 0; foreach (var asda2Item in prizeItems) { items[ind++] = asda2Item; } using (var packet = new RealmPacketOut(RealmServerOpCode.WarEndedOne)) //6733 { packet.WriteByte(1); //value name : unk5 default value : 1Len : 1 packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); //{weight}default value : 10945 Len : 2 packet.WriteInt32(client.ActiveCharacter.Money); //{money}default value : 5514558 Len : 4 for (int i = 0; i < 4; i += 1) { var item = items[i]; Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); } client.Send(packet, addEnd: true); } }
public static void SendWarEndedOneResponse(IRealmClient client, IEnumerable <Asda2Item> prizeItems) { Asda2Item[] asda2ItemArray = new Asda2Item[4]; int num = 0; foreach (Asda2Item prizeItem in prizeItems) { asda2ItemArray[num++] = prizeItem; } using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.WarEndedOne)) { packet.WriteByte(1); packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); packet.WriteInt32(client.ActiveCharacter.Money); for (int index = 0; index < 4; ++index) { Asda2Item asda2Item = asda2ItemArray[index]; Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false); } client.Send(packet, true); } }
public static void SendItemDisplayedResponse(Character displayer, Asda2Item item, Character reciever) { if (reciever == null) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ItemDisplayed)) { packet.WriteInt32(displayer.AccId); packet.WriteFixedAsciiString(displayer.Name, 20, Locale.Start); Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); displayer.SendPacketToArea(packet, true, true, Locale.Any, new float?()); } } else { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ItemDisplayed)) { packet.WriteInt32(displayer.AccId); packet.WriteFixedAsciiString(displayer.Name, 20, Locale.Start); Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); reciever.Send(packet, false); } } }
public static void SendCharacterFullInfoResponse(IRealmClient client, Character target) { AchievementProgressRecord progressRecord = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(8U); switch (++progressRecord.Counter) { case 500: client.ActiveCharacter.Map.CallDelayed(500, () => client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Curious46)); break; case 1000: client.ActiveCharacter.Map.CallDelayed(500, () => client.ActiveCharacter.GetTitle(Asda2TitleId.Curious46)); break; } progressRecord.SaveAndFlush(); using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.CharacterFullInfo)) { packet.WriteByte(target.Level); packet.WriteByte(target.ProfessionLevel); packet.WriteByte((byte)target.Archetype.ClassId); packet.WriteFixedAsciiString(target.Guild == null ? "" : target.Guild.Name, 17, Locale.Start); packet.WriteSkip(unk9); packet.WriteInt32(target.AccId); packet.WriteByte(3); for (int index = 0; index < 9; ++index) { Asda2Item asda2Item = target.Asda2Inventory.Equipment[index + 11]; Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false); } client.Send(packet, true); } }
public static void SendCraftedResponse(IRealmClient client, bool sucess, byte craftTimes, Asda2Item craftedItem, List <Asda2Item> craftMaterials) { using (var packet = new RealmPacketOut(RealmServerOpCode.Crafted)) //6603 { packet.WriteByte(sucess ? 1 : 0); //{status}default value : 1 Len : 1 packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); //{weight}default value : 11558 Len : 2 packet.WriteByte(client.ActiveCharacter.Record.CraftingLevel); //{lvl}default value : 1 Len : 1 packet.WriteInt32(0); //value name : unk4 default value : 0Len : 4 packet.WriteInt16((short)client.ActiveCharacter.Record.CraftingExp); //{expPrc}default value : 0 Len : 2 packet.WriteInt16(craftTimes); //{craftTimes}default value : 1 Len : 2 Asda2InventoryHandler.WriteItemInfoToPacket(packet, craftedItem, false); for (int i = 0; i < craftMaterials.Count; i++) { var item = craftMaterials.Count <= i ? null : craftMaterials[i]; Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); } // for (int i = 0; i < 7; i += 1) //{ // var item = craftMaterials.Count <= i ? null : craftMaterials[i]; // Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); //} client.Send(packet); } }
[PacketHandler(RealmServerOpCode.DismissPlayerFromWar)]//6186 public static void DismissPlayerFromWarRequest(IRealmClient client, RealmPacketIn packet) { var warID = packet.ReadInt16();//default : 6Len : 2 // var charACCiD = packet.ReadInt32();//default : 357812Len : 4 if (!client.ActiveCharacter.IsAsda2BattlegroundInProgress) { client.ActiveCharacter.YouAreFuckingCheater("Trying to dissmis someone while not on war.", 50); return; } var target = client.ActiveCharacter.CurrentBattleGround.GetCharacter(client.ActiveCharacter.Asda2FactionId, (byte)warID); if (target == null) { client.ActiveCharacter.SendWarMsg("Target character not found."); } using (var p = new RealmPacketOut(RealmServerOpCode.DismissPlayerFromWarRequestResult))//6187 { if (target == null || !client.ActiveCharacter.CurrentBattleGround.TryStartDissmisProgress(client.ActiveCharacter, target) || client.ActiveCharacter.Money < 10000) { p.WriteByte(0); //{status}default value : 1 Len : 1 p.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); //{invWeight}default value : 10665 Len : 2 Asda2InventoryHandler.WriteItemInfoToPacket(p, null, false); } else { p.WriteByte(1); //{status}default value : 1 Len : 1 p.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); //{invWeight}default value : 10665 Len : 2 Asda2InventoryHandler.WriteItemInfoToPacket(p, client.ActiveCharacter.Asda2Inventory.GetRegularItem(0), false); client.ActiveCharacter.SubtractMoney(10000); } client.Send(p, addEnd: true); } }
public static void SendDigEndedResponse(IRealmClient client, bool success, Asda2Item item = null) { if (client == null || client.ActiveCharacter == null) { return; } AchievementProgressRecord progressRecord1 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(116U); switch (++progressRecord1.Counter) { case 50: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Shovel285); break; case 100: client.ActiveCharacter.GetTitle(Asda2TitleId.Shovel285); break; case 2500: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Excavator286); break; case 5000: client.ActiveCharacter.GetTitle(Asda2TitleId.Excavator286); break; } progressRecord1.SaveAndFlush(); Map nonInstancedMap1 = World.GetNonInstancedMap(MapId.Alpia); Map nonInstancedMap2 = World.GetNonInstancedMap(MapId.Silaris); Map nonInstancedMap3 = World.GetNonInstancedMap(MapId.SunnyCoast); Map nonInstancedMap4 = World.GetNonInstancedMap(MapId.Flabis); Vector3 point1 = new Vector3(131f + nonInstancedMap1.Offset, 265f + nonInstancedMap1.Offset, 0.0f); Vector3 point2 = new Vector3(110f + nonInstancedMap2.Offset, 144f + nonInstancedMap2.Offset, 0.0f); Vector3 point3 = new Vector3(226f + nonInstancedMap3.Offset, 353f + nonInstancedMap3.Offset, 0.0f); Vector3 point4 = new Vector3(270f + nonInstancedMap4.Offset, 263f + nonInstancedMap4.Offset, 0.0f); if (client.ActiveCharacter.Position.GetDistance(point1) < 10.0) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(117U); switch (++progressRecord2.Counter) { case 500: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Burial287); break; case 1000: client.ActiveCharacter.GetTitle(Asda2TitleId.Burial287); break; } progressRecord2.SaveAndFlush(); } if (client.ActiveCharacter.Position.GetDistance(point2) < 50.0) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(118U); switch (++progressRecord2.Counter) { case 500: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Archaeologist288); break; case 1000: client.ActiveCharacter.GetTitle(Asda2TitleId.Archaeologist288); break; } progressRecord2.SaveAndFlush(); } if (client.ActiveCharacter.Position.GetDistance(point3) < 25.0) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(119U); switch (++progressRecord2.Counter) { case 500: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Shipwreck289); break; case 1000: client.ActiveCharacter.GetTitle(Asda2TitleId.Shipwreck289); break; } progressRecord2.SaveAndFlush(); } if (client.ActiveCharacter.Position.GetDistance(point4) < 50.0) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(120U); switch (++progressRecord2.Counter) { case 500: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Oasis290); break; case 1000: client.ActiveCharacter.GetTitle(Asda2TitleId.Oasis290); break; } progressRecord2.SaveAndFlush(); } AchievementProgressRecord progressRecord3 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(121U); AchievementProgressRecord progressRecord4 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(122U); AchievementProgressRecord progressRecord5 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(123U); AchievementProgressRecord progressRecord6 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(124U); switch (client.ActiveCharacter.MapId) { case MapId.Silaris: ++progressRecord4.Counter; progressRecord4.SaveAndFlush(); break; case MapId.Alpia: ++progressRecord3.Counter; progressRecord3.SaveAndFlush(); break; case MapId.Aquaton: ++progressRecord6.Counter; progressRecord6.SaveAndFlush(); break; case MapId.Flamio: ++progressRecord5.Counter; progressRecord5.SaveAndFlush(); break; } if (progressRecord3.Counter >= 1000U && progressRecord4.Counter >= 1000U && (progressRecord5.Counter >= 1000U && progressRecord6.Counter >= 1000U)) { client.ActiveCharacter.GetTitle(Asda2TitleId.Explorer291); } if (client.ActiveCharacter.isTitleGetted(Asda2TitleId.Shovel285) && client.ActiveCharacter.isTitleGetted(Asda2TitleId.Excavator286) && (client.ActiveCharacter.isTitleGetted(Asda2TitleId.Burial287) && client.ActiveCharacter.isTitleGetted(Asda2TitleId.Archaeologist288)) && (client.ActiveCharacter.isTitleGetted(Asda2TitleId.Shipwreck289) && client.ActiveCharacter.isTitleGetted(Asda2TitleId.Oasis290) && (client.ActiveCharacter.isTitleGetted(Asda2TitleId.Explorer291) && client.ActiveCharacter.isTitleGetted(Asda2TitleId.Astrological292))) && client.ActiveCharacter.isTitleGetted(Asda2TitleId.Treasure293)) { client.ActiveCharacter.GetTitle(Asda2TitleId.Geologist294); } using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.DigEnded)) { packet.WriteByte(success ? 1 : 0); packet.WriteInt16(client.ActiveCharacter.SessionId); Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); client.ActiveCharacter.SendPacketToArea(packet, true, true, Locale.Any, new float?()); } }
public static void SendEnterGameResposeResponse(IRealmClient client) { if (client.Account == null) { return; } using (var packet = new RealmPacketOut(RealmServerOpCode.EnterGameRespose))//1017 { var acc = client.Account; var ch = acc.ActiveCharacter; if (ch == null) { return; } packet.WriteInt32(acc.AccountId); //{accId}default value : 6256236 packet.WriteFixedAsciiString(ch.Name, 20); //{name}default value : packet.WriteInt16(ch.Record.CharNum); //{charNum}default value : 11 packet.WriteByte(ch.Record.Zodiac); //{zodiac}default value : 0 packet.WriteByte((byte)ch.Gender); //{gender}default value : 1 packet.WriteByte(ch.ProfessionLevel); //value name : unk9 default value : 0 packet.WriteByte((byte)ch.Archetype.ClassId); //value name : unk10 default value : 0 packet.WriteByte(ch.Level); //{level}default value : 1 packet.WriteUInt32(ch.Experience); //{expCount}default value : 0 packet.WriteInt32(0); //value name : unk13 default value : 0 packet.WriteInt16(ch.Spells.AvalibleSkillPoints); //value name : unk14 default value : 0 packet.WriteInt16(0); //value name : unk15 default value : 0 packet.WriteByte(0); //value name : unk16 default value : 0 packet.WriteInt16(15000); //{weightMax}default value : 15000 packet.WriteInt16(1000); //{weightMin}default value : 2011 packet.WriteInt64(0); //value name : unk19 default value : 0Len : 8 packet.WriteByte(0); //value name : unk20 default value : 0Len : 1 packet.WriteByte(3); //value name : unk21 default value : 3Len : 1 packet.WriteInt16((client.ActiveCharacter.Record.PremiumWarehouseBagsCount + 1) * 30); //value name : unk22 default value : 30Len : 1 packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.WarehouseItems.Count(i => i != null)); //value name : wh zanyato default value : 4Len : 2 packet.WriteInt16((client.ActiveCharacter.Record.PremiumAvatarWarehouseBagsCount + 1) * 30); //value name : unk26 default value : 30Len : 1 packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.AvatarWarehouseItems.Count(i => i != null)); //value name : wh zanyato default value : 4Len : 2 packet.WriteByte(0); //value name : unk240 default value : 1Len : 1 packet.WriteByte(1); //value name : unk240 default value : 1Len : 1 packet.WriteInt16(-1); //value name : unk250 default value : -1Len : 2 packet.WriteInt16(0); //value name : unk260 default value : 0Len : 2 packet.WriteByte(ch.Record.Zodiac); //{zodiac0}default value : 11 packet.WriteByte(ch.HairStyle); //{hairStyle}default value : 4 packet.WriteByte(ch.HairColor); //{hairColor}default value : 5 packet.WriteByte(ch.Facial); //{face0}default value : 27 packet.WriteInt32(ch.Health); //{maxHp}default value : 100 packet.WriteInt16(ch.Power); //{maxMp}default value : 100 packet.WriteInt32(ch.MaxHealth); //{curHp}default value : 100 packet.WriteInt16(ch.MaxPower); //{curMp}default value : 100 packet.WriteInt16((short)ch.MinDamage); //{minAtk}default value : 4 packet.WriteInt16((short)ch.MaxDamage); //{maxAtk}default value : 5 packet.WriteInt16((short)ch.RangedAttackPower); //{minMAtk}default value : 1 packet.WriteInt16((short)ch.RangedAttackPower); //{maxMAtk}default value : 1 packet.WriteInt16(ch.ArcaneResist); //{mDef}default value : 0 packet.WriteInt16(ch.Defense); //{minDef}default value : 17 packet.WriteInt16(ch.Defense); //{maxDef}default value : 28 packet.WriteInt32(ch.BlockValue); //{minBlock}default value : 0 packet.WriteInt32(ch.BlockValue); //{maxBlock}default value : 0 packet.WriteInt16(15); //value name : unk44 default value : 15Len : 2 packet.WriteInt16(7); //value name : unk45 default value : 7Len : 2 packet.WriteInt16(4); //value name : unk46 default value : 4Len : 2 packet.WriteSkip(unk51); //value name : unk51 default value : unk51Len : 28 packet.WriteSkip(ch.SettingsFlags); //{settingsBytes}default value : settingsBytes Len : 16 packet.WriteInt32(ch.AvatarMask); //{avatarMask}default value : 47 Len : 4 for (int i = 11; i < 20; i += 1) { var item = client.ActiveCharacter.Asda2Inventory.Equipment[i]; Asda2InventoryHandler.WriteItemInfoToPacket(packet, item, false); /*packet.WriteInt32(item == null ? 0 : item.ItemId);//{itemId}default value : 0 * packet.WriteByte(item == null ? 0 : 3);//{invNum}default value : 0 * packet.WriteInt32(item == null ? -1 : i);//{cellNum}default value : -1 * packet.WriteInt32(0);//value name : unk51 default value : 0 * packet.WriteInt16(0);//{weight}default value : 0 * packet.WriteSkip(Stab180);//value name : stab180 default value : stab180 * packet.WriteInt16(item == null ? -1 : 0);//{eqiped}default value : -1 * packet.WriteSkip(Stab198);//value name : stab198 default value : stab198 * packet.WriteInt16(item == null ? -1 : 0);//{equiped}default value : -1 * packet.WriteSkip(Stab202);//value name : stab202 default value : stab202 * packet.WriteByte(item == null ? 0 : 2);//{eq}default value : 0 if not, 2 if yes * packet.WriteInt32(0);//value name : unk59 default value : 0 * packet.WriteInt16(0);//value name : _ default value : 0*/ } client.Send(packet, addEnd: false); } }
public static void SendInventoryInfoResponse(IRealmClient client) { Asda2PlayerInventory asda2Inventory = client.ActiveCharacter.Asda2Inventory; List <List <Asda2Item> > asda2ItemListList = new List <List <Asda2Item> >(); int count1 = 0; Asda2Item[] array1 = asda2Inventory.RegularItems .Where(it => it != null).ToArray(); while (count1 < array1.Length) { asda2ItemListList.Add(new List <Asda2Item>(array1.Skip(count1) .Take(9))); count1 += 9; } foreach (List <Asda2Item> asda2ItemList in asda2ItemListList) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.RegularInventoryInfo)) { for (int index = 0; index < asda2ItemList.Count; ++index) { Asda2Item asda2Item = asda2ItemList[index]; if (asda2Item != null) { Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false); } } client.Send(packet, false); } } asda2ItemListList.Clear(); int count2 = 0; Asda2Item[] array2 = asda2Inventory.ShopItems .Where(it => it != null).ToArray(); while (count2 < array2.Length) { asda2ItemListList.Add(new List <Asda2Item>(array2.Skip(count2) .Take(9))); count2 += 9; } foreach (List <Asda2Item> asda2ItemList in asda2ItemListList) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.ShopInventoryInfo)) { for (int index = 0; index < asda2ItemList.Count; ++index) { Asda2Item asda2Item = asda2ItemList[index]; if (asda2Item != null) { Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false); } } client.Send(packet, false); } } }
public static void SendEnterGameResposeResponse(IRealmClient client) { if (client.Account == null) { return; } using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.EnterGameRespose)) { RealmAccount account = client.Account; Character activeCharacter = account.ActiveCharacter; if (activeCharacter == null) { return; } packet.WriteInt32(account.AccountId); packet.WriteFixedAsciiString(activeCharacter.Name, 20, Locale.Start); packet.WriteInt16(activeCharacter.Record.CharNum); packet.WriteByte(activeCharacter.Record.Zodiac); packet.WriteByte((byte)activeCharacter.Gender); packet.WriteByte(activeCharacter.ProfessionLevel); packet.WriteByte((byte)activeCharacter.Archetype.ClassId); packet.WriteByte(activeCharacter.Level); packet.WriteUInt32(activeCharacter.Experience); packet.WriteInt32(0); packet.WriteInt16(activeCharacter.Spells.AvalibleSkillPoints); packet.WriteInt16(0); packet.WriteByte(0); packet.WriteInt16(15000); packet.WriteInt16(1000); packet.WriteInt64(0L); packet.WriteByte(0); packet.WriteByte(3); packet.WriteInt16((client.ActiveCharacter.Record.PremiumWarehouseBagsCount + 1) * 30); packet.WriteInt16( client.ActiveCharacter.Asda2Inventory.WarehouseItems.Count( i => i != null)); packet.WriteInt16((client.ActiveCharacter.Record.PremiumAvatarWarehouseBagsCount + 1) * 30); packet.WriteInt16( client.ActiveCharacter.Asda2Inventory.AvatarWarehouseItems .Count(i => i != null)); packet.WriteByte(0); packet.WriteByte(1); packet.WriteInt16(-1); packet.WriteInt16(0); packet.WriteByte(activeCharacter.Record.Zodiac); packet.WriteByte(activeCharacter.HairStyle); packet.WriteByte(activeCharacter.HairColor); packet.WriteByte(activeCharacter.Facial); packet.WriteInt32(activeCharacter.Health); packet.WriteInt16(activeCharacter.Power); packet.WriteInt32(activeCharacter.MaxHealth); packet.WriteInt16(activeCharacter.MaxPower); packet.WriteInt16((short)activeCharacter.MinDamage); packet.WriteInt16((short)activeCharacter.MaxDamage); packet.WriteInt16((short)activeCharacter.RangedAttackPower); packet.WriteInt16((short)activeCharacter.RangedAttackPower); packet.WriteInt16(activeCharacter.ArcaneResist); packet.WriteInt16(activeCharacter.Defense); packet.WriteInt16(activeCharacter.Defense); packet.WriteInt32(activeCharacter.BlockValue); packet.WriteInt32(activeCharacter.BlockValue); packet.WriteInt16(15); packet.WriteInt16(7); packet.WriteInt16(4); packet.WriteSkip(unk51); packet.WriteSkip(activeCharacter.SettingsFlags); packet.WriteInt32(activeCharacter.AvatarMask); for (int index = 11; index < 20; ++index) { Asda2Item asda2Item = client.ActiveCharacter.Asda2Inventory.Equipment[index]; Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false); } client.Send(packet, false); } }
public static void SendCraftedResponse(IRealmClient client, bool sucess, byte craftTimes, Asda2Item craftedItem, List <Asda2Item> craftMaterials) { if (craftedItem != null) { AchievementProgressRecord progressRecord1 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(108U); switch (++progressRecord1.Counter) { case 500: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Crafty267); break; case 1000: client.ActiveCharacter.GetTitle(Asda2TitleId.Crafty267); break; } progressRecord1.SaveAndFlush(); if (craftedItem.Template.Quality == Asda2ItemQuality.Purple) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(111U); switch (++progressRecord2.Counter) { case 5: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Rare270); break; case 10: client.ActiveCharacter.GetTitle(Asda2TitleId.Rare270); break; } progressRecord2.SaveAndFlush(); } if (craftedItem.Template.Quality == Asda2ItemQuality.Green) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(112U); switch (++progressRecord2.Counter) { case 1: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Hero271); break; case 3: client.ActiveCharacter.GetTitle(Asda2TitleId.Hero271); break; } progressRecord2.SaveAndFlush(); } if (craftedItem.IsWeapon) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(113U); switch (++progressRecord2.Counter) { case 25: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Weapon272); break; case 50: client.ActiveCharacter.GetTitle(Asda2TitleId.Weapon272); break; } progressRecord2.SaveAndFlush(); } if (craftedItem.IsArmor) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(114U); switch (++progressRecord2.Counter) { case 25: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Armor273); break; case 50: client.ActiveCharacter.GetTitle(Asda2TitleId.Armor273); break; } progressRecord2.SaveAndFlush(); } if (craftedItem.Template.EquipmentSlot == Asda2EquipmentSlots.LeftRing || craftedItem.Template.EquipmentSlot == Asda2EquipmentSlots.RightRing || craftedItem.Template.EquipmentSlot == Asda2EquipmentSlots.Nackles) { AchievementProgressRecord progressRecord2 = client.ActiveCharacter.Achievements.GetOrCreateProgressRecord(115U); switch (++progressRecord2.Counter) { case 25: client.ActiveCharacter.DiscoverTitle(Asda2TitleId.Jewel274); break; case 50: client.ActiveCharacter.GetTitle(Asda2TitleId.Jewel274); break; } progressRecord2.SaveAndFlush(); } } using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.Crafted)) { packet.WriteByte(sucess ? 1 : 0); packet.WriteInt16(client.ActiveCharacter.Asda2Inventory.Weight); packet.WriteByte(client.ActiveCharacter.Record.CraftingLevel); packet.WriteInt32(0); packet.WriteInt16((short)client.ActiveCharacter.Record.CraftingExp); packet.WriteInt16(craftTimes); Asda2InventoryHandler.WriteItemInfoToPacket(packet, craftedItem, false); for (int index = 0; index < 7; ++index) { Asda2Item asda2Item = craftMaterials.Count <= index ? (Asda2Item)null : craftMaterials[index]; Asda2InventoryHandler.WriteItemInfoToPacket(packet, asda2Item, false); } client.Send(packet, false); } }