public static Asda2FastItemSlotRecord CreateRecord(byte panel, byte panelSlot, Asda2InventoryType invType, byte invSlot, short itemOrSkillId, int amount, uint ownerId, byte srcInfo) { var item = CreateRecord(); item.PanelNum = panel; item.PanelSlot = panelSlot; item.InventoryType = (byte)invType; item.InventorySlot = invSlot; item.ItemOrSkillId = itemOrSkillId; item.Amount = amount; item.OwnerId = ownerId; item.SrcInfo = srcInfo; return(item); }
public static void SendMailMessageRequest(IRealmClient client, RealmPacketIn packet) { packet.ReadInt32(); short slotInq = packet.ReadInt16(); Asda2InventoryType asda2InventoryType = (Asda2InventoryType)packet.ReadByte(); ushort num = packet.ReadUInt16(); uint sendedGold = packet.ReadUInt32(); string str = packet.ReadAsdaString(20, Locale.Start); string subject = packet.ReadAsdaString(32, Locale.Start); string message = packet.ReadAsdaString(126, Locale.Start); if (!Asda2EncodingHelper.IsPrueEnglish(message)) { client.ActiveCharacter.SendOnlyEnglishCharactersAllowed("message"); Asda2MailHandler.SendMailMessageSendedResponse(client, MailMessageSendedStatus.WrongInformation, (Asda2Item)null); } else if (!Asda2EncodingHelper.IsPrueEnglish(subject)) { client.ActiveCharacter.SendOnlyEnglishCharactersAllowed("subject"); Asda2MailHandler.SendMailMessageSendedResponse(client, MailMessageSendedStatus.WrongInformation, (Asda2Item)null); } else { Asda2Item asda2Item = asda2InventoryType == Asda2InventoryType.Shop ? client.ActiveCharacter.Asda2Inventory.GetShopShopItem(slotInq) : client.ActiveCharacter.Asda2Inventory.GetRegularItem(slotInq); if (client.ActiveCharacter.Money < 1001U || client.ActiveCharacter.Money - 1000U < sendedGold) { Asda2MailHandler.SendMailMessageSendedResponse(client, MailMessageSendedStatus.IncifitientGold, (Asda2Item)null); } else { Character chr = World.GetCharacter(str, false); CharacterRecord chrRec = chr == null?CharacterRecord.GetRecordByName(str) : chr.Record; if (chrRec == null) { Asda2MailHandler.SendMailMessageSendedResponse(client, MailMessageSendedStatus.RecipentNotFounded, (Asda2Item)null); } else { Asda2Item sendItem = (Asda2Item)null; if (asda2Item != null) { if (asda2Item.IsSoulbound) { Asda2MailHandler.SendMailMessageSendedResponse(client, MailMessageSendedStatus.YouCantSendThisItem, (Asda2Item)null); return; } if (asda2Item.Amount < (int)num) { client.ActiveCharacter.YouAreFuckingCheater("Tying to mail wrong item amount", 50); Asda2MailHandler.SendMailMessageSendedResponse(client, MailMessageSendedStatus.WrongInformation, (Asda2Item)null); return; } asda2Item.ModAmount(-(num == (ushort)0 ? 1 : (int)num)); sendItem = Asda2Item.CreateItem(asda2Item.Template, (Character)null, num == (ushort)0 ? 1 : (int)num); sendItem.Record.SaveLater(); } client.ActiveCharacter.SubtractMoney(sendedGold + 1000U); Log.Create(Log.Types.ItemOperations, LogSourceType.Character, client.ActiveCharacter.EntryId) .AddAttribute("source", 0.0, "send_mail").AddItemAttributes(sendItem, "sent") .AddItemAttributes(asda2Item, "source").AddAttribute("gold", (double)sendedGold, "") .AddAttribute("receiver", (double)chrRec.EntityLowId, str).Write(); ServerApp <WCell.RealmServer.RealmServer> .IOQueue.AddMessage((Action)(() => { Asda2MailMessage record = new Asda2MailMessage(subject, message, sendItem, sendedGold, chrRec.EntityLowId, client.ActiveCharacter.Name); record.CreateLater(); if (chr == null) { return; } chr.MailMessages.Add(record.Guid, record); chr.SendMailMsg(string.Format("You recieve new message from {0}. Subject {1}.", (object)client.ActiveCharacter.Name, (object)record.Subject)); Asda2MailHandler.SendYouHaveNewMailResponse(chr.Client, 1); })); Asda2MailHandler.SendMailMessageSendedResponse(client, MailMessageSendedStatus.Ok, asda2Item); } } } }
public static Asda2FastItemSlotRecord CreateRecord(byte panel, byte panelSlot, Asda2InventoryType invType, byte invSlot, short itemOrSkillId, int amount, uint ownerId, byte srcInfo) { Asda2FastItemSlotRecord record = Asda2FastItemSlotRecord.CreateRecord(); record.PanelNum = panel; record.PanelSlot = panelSlot; record.InventoryType = (byte)invType; record.InventorySlot = (short)invSlot; record.ItemOrSkillId = (int)itemOrSkillId; record.Amount = amount; record.OwnerId = ownerId; record.SrcInfo = (short)srcInfo; return(record); }
public static void OpenPrivateShopRequest(IRealmClient client, RealmPacketIn packet) { if (client.ActiveCharacter.PrivateShop == null) { Asda2PrivateShopHandler.SendPrivateShopOpenedResponse(client, PrivateShopOpenedResult.Error, (Asda2ItemTradeRef[])null); client.ActiveCharacter.YouAreFuckingCheater("Trying to open not existing private shop", 2); } else { ++packet.Position; List <Asda2ItemTradeRef> asda2ItemTradeRefList = new List <Asda2ItemTradeRef>(); for (int index = 0; index < 10; ++index) { bool flag = false; if (packet.ReadInt32() == 0) { flag = true; } Asda2InventoryType asda2InventoryType = (Asda2InventoryType)packet.ReadByte(); short num1 = packet.ReadInt16(); short num2 = packet.ReadInt16(); packet.Position += 4; if (num1 < (short)0 || (int)num1 >= client.ActiveCharacter.Asda2Inventory.ShopItems.Length || num2 < (short)0) { flag = true; } int num3 = packet.ReadInt32(); if (!flag) { Asda2Item asda2Item = asda2InventoryType == Asda2InventoryType.Regular ? client.ActiveCharacter.Asda2Inventory.RegularItems[(int)num1] : client.ActiveCharacter.Asda2Inventory.ShopItems[(int)num1]; if (asda2Item == null) { Asda2PrivateShopHandler.SendPrivateShopOpenedResponse(client, PrivateShopOpenedResult.ThereIsNoItemInfo, (Asda2ItemTradeRef[])null); return; } if (asda2Item.Amount < (int)num2) { num2 = (short)asda2Item.Amount; } foreach (Asda2ItemTradeRef asda2ItemTradeRef in asda2ItemTradeRefList) { if (asda2ItemTradeRef.Item.InventoryType == asda2Item.InventoryType && (int)asda2ItemTradeRef.Item.Slot == (int)asda2Item.Slot) { flag = true; break; } } if (!flag) { asda2ItemTradeRefList.Add(new Asda2ItemTradeRef() { Item = asda2Item, Amount = (int)num2, Price = num3, TradeSlot = (byte)asda2ItemTradeRefList.Count <Asda2ItemTradeRef>() }); } } packet.Position += 28; } string str = packet.ReadAsdaString(50, Locale.Start); if (!Asda2EncodingHelper.IsPrueEnglish(str)) { client.ActiveCharacter.SendOnlyEnglishCharactersAllowed("Shop title"); Asda2PrivateShopHandler.SendPrivateShopOpenedResponse(client, PrivateShopOpenedResult.Error, (Asda2ItemTradeRef[])null); } else { int num = (int)client.ActiveCharacter.PrivateShop.StartTrade(asda2ItemTradeRefList, str); } } }