Exemplo n.º 1
0
        public void Handle(WorldClient client, TradeRemoveItemPacket packet)
        {
            var ok = _tradeManager.TryRemoveItem(packet.SlotInTradeWindow);

            if (ok)
            {
                _packetFactory.SendRemovedItemFromTrade(client, 1);
                _packetFactory.SendRemovedItemFromTrade(_gameWorld.Players[_tradeManager.PartnerId].GameSession.Client, 2);

                // Decline both.
                _packetFactory.SendTradeDecide(client, 1, false);
                _packetFactory.SendTradeDecide(client, 2, false);
                _packetFactory.SendTradeDecide(_gameWorld.Players[_tradeManager.PartnerId].GameSession.Client, 1, false);
                _packetFactory.SendTradeDecide(_gameWorld.Players[_tradeManager.PartnerId].GameSession.Client, 2, false);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Removes item from trade.
        /// </summary>
        /// <param name="sender">player, that removed item</param>
        private void RemoveItemFromTrade(WorldClient sender, TradeRemoveItemPacket tradeRemoveItemPacket)
        {
            var trader  = _gameWorld.Players[sender.CharID];
            var partner = trader.TradePartner;

            trader.TradeItems.TryRemove(tradeRemoveItemPacket.SlotInTradeWindow, out var removed);
            if (removed is null)
            {
                // Possible cheating?
                return;
            }

            TradeDecideDecline(sender);

            SendRemovedItemFromTrade(trader.Client, 1);
            SendRemovedItemFromTrade(partner.Client, 2);
        }