public void HandlePacket(GameClient client, GSPacketIn packet) { byte isok = (byte)packet.ReadByte(); byte repair = (byte)packet.ReadByte(); byte combine = (byte)packet.ReadByte(); packet.ReadByte(); //unknow ITradeWindow trade = client.Player.TradeWindow; if (trade == null) { return; } if (isok == 0) { trade.CloseTrade(); } else if (isok == 1) { if (trade.Repairing != (repair == 1)) { trade.Repairing = (repair == 1); } if (trade.Combine != (combine == 1)) { trade.Combine = (combine == 1); } ArrayList tradeSlots = new ArrayList(10); for (int i = 0; i < 10; i++) { int slotPosition = packet.ReadByte(); InventoryItem item = client.Player.Inventory.GetItem((eInventorySlot)slotPosition); if (item != null && ((item.IsDropable && item.IsTradable) || (client.Player.CanTradeAnyItem || client.Player.TradeWindow.Partner.CanTradeAnyItem))) { tradeSlots.Add(item); } } trade.TradeItems = tradeSlots; packet.ReadShort(); int[] tradeMoney = new int[5]; for (int i = 0; i < 5; i++) { tradeMoney[i] = packet.ReadShort(); } long money = Money.GetMoney(tradeMoney[0], tradeMoney[1], tradeMoney[2], tradeMoney[3], tradeMoney[4]); trade.TradeMoney = money; trade.TradeUpdate(); } else if (isok == 2) { trade.AcceptTrade(); } }
/// <summary> /// 商品とウィンドウを設定します /// </summary> /// <param name="item">商品</param> /// <param name="window">親となるウィンドウ</param> public void setGoods(IItem item, int itemValue, ITradeWindow window) { this.item = item; name.text = this.item.getName(); //かり value.text = "" + itemValue; this.window = window; }