示例#1
0
        /// <summary>
        /// Start a new trade / accepting the trade
        /// </summary>
        /// <param name="player"></param>
        /// <param name="e"></param>
        private static void Trade(IPlayerEntity player, TradeBeginEventArgs e)
        {
            if (e.TargetId == player.Id)
            {
                throw new RhisisSystemException($"Can't start a Trade with ourselve ({player.Object.Name})");
            }

            if (IsTrading(player))
            {
                throw new RhisisSystemException($"Can't start a Trade when one is already in progress ({player.Object.Name})");
            }

            var target = GetEntityFromContextOf(player, e.TargetId);

            if (IsTrading(target))
            {
                throw new RhisisSystemException($"Can't start a Trade when one is already in progress ({target.Object.Name})");
            }

            player.Trade.TargetId = target.Id;
            target.Trade.TargetId = player.Id;

            WorldPacketFactory.SendTrade(player, target, player.Id);
            WorldPacketFactory.SendTrade(target, player, player.Id);
        }
示例#2
0
        public static void OnTrade(WorldClient client, INetPacketStream packet)
        {
            var tradePacket = new TradeRequestPacket(packet);
            var tradeEvent  = new TradeBeginEventArgs(tradePacket.Target);

            client.Player.NotifySystem <TradeSystem>(tradeEvent);
        }