using System; using System.Data; using System.Linq; using FilterAPI.Networking; using FilterZone.ZoneNetworking; namespace FilterZone.ZoneHandlers { internal class Zone19Handle { [ZonePacketHandler(NETCMD.ZONE_TRADE_SEND)] public static void HandleSendTrade(ZoneClient ClientSocket, Packet ClientPacket) { ClientSocket.TradeWaitAccept = true; ClientSocket.SendPacketServer(ClientPacket); //UInt16 MapObjectID = UInt16.MaxValue; //if (ClientSocket.MapObjects == null) //{ // //ClientSocket.Dispose(); // //return; //} //else //{ // ZoneClient TradeReceiver; // if ((TradeReceiver = Program.ZoneClients.Where(MOID => MOID.Value.MapObjectID == MapObjectID).FirstOrDefault().Value) != null) // { // ClientSocket.TradeWaitAccept = true // ClientSocket.SendPacketServer(ClientPacket); // } // else { ClientSocket.Dispose(); } //} } [ZonePacketHandler(NETCMD.ZONE_TRADE_RECEIVE)] public static void HandleReceiveTrade(ZoneClient ClientSocket, Packet ServerPacket) { ClientSocket.SendPacketClient(ServerPacket); ClientSocket.TradeMapObjectID = ServerPacket.PacketReader.ReadUInt16(); ClientSocket.TradeWaitAccept = true; } [ZonePacketHandler(NETCMD.ZONE_TRADE_REJECT)] public static void HandleRejectTrade(ZoneClient ClientSocket, Packet ClientPacket) { ClientSocket.SendPacketServer(ClientPacket); ClientSocket.TradeMapObjectID = UInt16.MaxValue; ClientSocket.TradeWaitAccept = false; } [ZonePacketHandler(NETCMD.ZONE_TRADE_REJECTED)] public static void HandleTradeRejected(ZoneClient ClientSocket, Packet ServerPacket) { ClientSocket.SendPacketClient(ServerPacket); ClientSocket.TradeMapObjectID = UInt16.MaxValue; ClientSocket.TradeWaitAccept = false; } [ZonePacketHandler(NETCMD.ZONE_TRADE_OPENED)] public static void HandleTradeOpened(ZoneClient ClientSocket, Packet ServerPacket) { ClientSocket.SendPacketClient(ServerPacket); ClientSocket.TradeWaitAccept = false; ClientSocket.InTrade = true; ClientSocket.TradeMapObjectID = ServerPacket.PacketReader.ReadUInt16(); } [ZonePacketHandler(NETCMD.ZONE_TRADE_CLOSED_SND)] public static void HandleTradeClosedSender(ZoneClient ClientSocket, Packet ServerPacket) { ClientSocket.SendPacketClient(ServerPacket); ClientSocket.InTrade = false; ClientSocket.TradeMapObjectID = UInt16.MaxValue; } [ZonePacketHandler(NETCMD.ZONE_TRADE_CLOSED_REC)] public static void HandleTradeClosedReceiver(ZoneClient ClientSocket, Packet ServerPacket) { ClientSocket.SendPacketClient(ServerPacket); ClientSocket.InTrade = false; ClientSocket.TradeMapObjectID = UInt16.MaxValue; } [ZonePacketHandler(NETCMD.ZONE_TRADE_IPITS)] public static void HandleItemPutInTradeServer(ZoneClient ClientSocket, Packet ServerPacket) { Byte SlotID = ServerPacket.PacketReader.ReadByte(); Boolean HasItem = Program.SQL.HasItemInSlot(ClientSocket.nCharNo, SlotID); if (!HasItem) { ClientSocket.Dispose(); } else { ClientSocket.SendPacketClient(ServerPacket); } } [ZonePacketHandler(NETCMD.ZONE_TRADE_COMPLETE)] public static void HandleTradeComplete(ZoneClient ClientSocket, Packet ServerPacket) { ClientSocket.SendPacketClient(ServerPacket); ClientSocket.InTrade = false; ClientSocket.TradeMapObjectID = UInt16.MaxValue; } } }