public static void TradeSuccessful(InPacket lea, Client c) { var chr = c.Character; TradePacket.TradeSuccessful(c); TradePacket.TradeSuccessful(chr.Trader.Client); }
public static void TradeConfirm(InPacket lea, Client c) { var chr = c.Character; int j = 0; int k = 0; int m = 0; int l = 0; try { // 交易成功 // Item // 個人接收 foreach (Item Item in chr.Trader.Trade.Item) { byte Type = Item.Type; byte Slot = chr.Items.GetNextFreeSlot((InventoryType.ItemType)Type); chr.Items.Add(new Item(Item.ItemID, chr.Trader.Trade.TargetQuantity[m], Item.Spirit, Item.Level1, Item.Level2, Item.Level3, Item.Level4, Item.Level5, Item.Level6, Item.Level7, Item.Level8, Item.Level9, Item.Level10, Item.Fusion, Item.IsLocked, Item.Icon, Item.Term, Type, Slot)); InventoryHandler.UpdateInventory(c, Item.Type); m++; } // 對方接收 foreach (Item Item in chr.Trade.Item) { byte Type = Item.Type; byte Slot = chr.Trader.Items.GetNextFreeSlot((InventoryType.ItemType)Type); chr.Trader.Items.Add(new Item(Item.ItemID, chr.Trade.TargetQuantity[l], Item.Spirit, Item.Level1, Item.Level2, Item.Level3, Item.Level4, Item.Level5, Item.Level6, Item.Level7, Item.Level8, Item.Level9, Item.Level10, Item.Fusion, Item.IsLocked, Item.Icon, Item.Term, Type, Slot)); InventoryHandler.UpdateInventory(chr.Trader.Client, Item.Type); l++; } // Money // 個人 chr.Money += chr.Trader.Trade.Money; // 對方 chr.Trader.Money += chr.Trade.Money; // 個人 if (chr.Trader.Trade.Money > 0) { InventoryPacket.getInvenMoney(c, chr.Money, chr.Trader.Trade.Money); } // 對方 if (chr.Trade.Money > 0) { InventoryPacket.getInvenMoney(chr.Trader.Client, chr.Trader.Money, chr.Trade.Money); } } catch { // 交易失敗 // Item // 個人 foreach (Item Item in chr.Trade.Item) { Item i = chr.Items.getItem(Item.Type, Item.Slot); if (i != null) { // 合併消費物品、其他物品 if (chr.Trade.SourceQuantity[j] + chr.Trade.TargetQuantity[j] <= 100) { chr.Items.Remove(Item.Type, Item.Slot); chr.Items.Add(new Item(Item.ItemID, chr.Trade.SourceQuantity[j], Item.Spirit, Item.Level1, Item.Level2, Item.Level3, Item.Level4, Item.Level5, Item.Level6, Item.Level7, Item.Level8, Item.Level9, Item.Level10, Item.Fusion, Item.IsLocked, Item.Icon, Item.Term, Item.Type, Item.Slot)); } else { chr.Items.Add(Item); } } else { chr.Items.Add(Item); } InventoryHandler.UpdateInventory(c, Item.Type); j++; } // 對方 foreach (Item Item in chr.Trader.Trade.Item) { Item i = chr.Trader.Items.getItem(Item.Type, Item.Slot); if (i != null) { // 合併消費物品、其他物品 if (chr.Trader.Trade.SourceQuantity[k] + chr.Trader.Trade.TargetQuantity[k] <= 100) { chr.Trader.Items.Remove(Item.Type, Item.Slot); chr.Trader.Items.Add(new Item(Item.ItemID, chr.Trader.Trade.SourceQuantity[k], Item.Spirit, Item.Level1, Item.Level2, Item.Level3, Item.Level4, Item.Level5, Item.Level6, Item.Level7, Item.Level8, Item.Level9, Item.Level10, Item.Fusion, Item.IsLocked, Item.Icon, Item.Term, Item.Type, Item.Slot)); } else { chr.Trader.Items.Add(Item); } } else { chr.Trader.Items.Add(Item); } InventoryHandler.UpdateInventory(chr.Trader.Client, Item.Type); k++; } // Money // 個人 chr.Money += chr.Trade.Money; // 對方 chr.Trader.Money += chr.Trader.Trade.Money; // 個人 if (chr.Trade.Money > 0) { InventoryPacket.getInvenMoney(c, chr.Money, chr.Trade.Money); } // 對方 if (chr.Trader.Trade.Money > 0) { InventoryPacket.getInvenMoney(chr.Trader.Client, chr.Trader.Money, chr.Trader.Trade.Money); } TradePacket.TradeFail(c); TradePacket.TradeFail(chr.Trader.Client); return; } TradePacket.TradeSuccessful(c); TradePacket.TradeSuccessful(chr.Trader.Client); }