/// <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); }
public static void OnTrade(WorldClient client, INetPacketStream packet) { var tradePacket = new TradeRequestPacket(packet); var tradeEvent = new TradeBeginEventArgs(tradePacket.Target); client.Player.NotifySystem <TradeSystem>(tradeEvent); }