Exemplo n.º 1
0
        public static void TradeRequestRequest(IRealmClient client, RealmPacketIn packet)
        {
            if (client.ActiveCharacter.Asda2TradeWindow != null)
            {
                if (client.ActiveCharacter.Asda2TradeWindow.Expired)
                {
                    client.ActiveCharacter.Asda2TradeWindow.CancelTrade();
                }
                else
                {
                    client.ActiveCharacter.SendSystemMessage("You already trading.");
                    SendTradeRejectedResponse(client);
                    return;
                }
            }

            ushort         sessId               = packet.ReadUInt16();
            Asda2TradeType tradeType            = (Asda2TradeType)packet.ReadByte();
            Character      characterBySessionId = World.GetCharacterBySessionId(sessId);

            if (characterBySessionId == null)
            {
                client.ActiveCharacter.SendSystemMessage("Sorry, but i can't find character you want trade.");
                SendTradeRejectedResponse(client);
            }
            else if (characterBySessionId.Map != client.ActiveCharacter.Map)
            {
                characterBySessionId.YouAreFuckingCheater("Trying to buy items from character with another map.", 50);
                SendTradeRejectedResponse(client);
            }
            else if (!characterBySessionId.EnableGeneralTradeRequest && tradeType == Asda2TradeType.RedularTrade)
            {
                client.ActiveCharacter.SendSystemMessage(string.Format("{0} rejected all general trade requests.",
                                                                       characterBySessionId.Name));
                SendTradeRejectedResponse(client);
            }
            else if (!characterBySessionId.EnableGearTradeRequest && tradeType == Asda2TradeType.ShopItemsTrade)
            {
                client.ActiveCharacter.SendSystemMessage(string.Format("{0} rejected all gear trade requests.",
                                                                       characterBySessionId.Name));
                SendTradeRejectedResponse(client);
            }
            else if (client.ActiveCharacter.PrivateShop != null)
            {
                client.ActiveCharacter.YouAreFuckingCheater(
                    "Target character is in private shop and can't accept trade.", 20);
                SendTradeRejectedResponse(client);
            }
            else if (client.ActiveCharacter.IsAsda2BattlegroundInProgress)
            {
                client.ActiveCharacter.SendInfoMsg("Can't trade on war.");
                SendTradeRejectedResponse(client);
            }
            else if (characterBySessionId.PrivateShop != null)
            {
                SendTradeRejectedResponse(client);
            }
            else
            {
                Asda2TradeWindow asda2TradeWindow = new Asda2TradeWindow
                {
                    FisrtChar  = client.ActiveCharacter,
                    SecondChar = characterBySessionId
                };
                asda2TradeWindow.Init();
                client.ActiveCharacter.Asda2TradeWindow = asda2TradeWindow;
                characterBySessionId.Asda2TradeWindow   = asda2TradeWindow;
                asda2TradeWindow.TradeType = tradeType;
                SendTradeRequestResponse(characterBySessionId.Client, client.ActiveCharacter,
                                         tradeType);
            }
        }
Exemplo n.º 2
0
 public static void SendTradeRequestResponse(IRealmClient client, Character sender, Asda2TradeType tradeType)
 {
     using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.TradeRequestResponse))
     {
         packet.WriteByte(1);
         packet.WriteInt16(sender.SessionId);
         packet.WriteFixedAsciiString(sender.Name, 20, Locale.Start);
         packet.WriteByte((byte)tradeType);
         client.Send(packet, false);
     }
 }
Exemplo n.º 3
0
 public static void SendTradeRequestResponse(IRealmClient client, Character sender, Asda2TradeType tradeType)
 {
     using (var packet = new RealmPacketOut(RealmServerOpCode.TradeRequestResponse)) //5283
     {
         packet.WriteByte(1);                                                        //value name : unk4 default value : 1Len : 1
         packet.WriteInt16(sender.SessionId);                                        //{sessId}default value : 3 Len : 2
         packet.WriteFixedAsciiString(sender.Name, 20);                              //{fromName}default value :  Len : 20
         packet.WriteByte((byte)tradeType);                                          //{tradeType}default value : 0 Len : 1
         client.Send(packet, addEnd: false);
     }
 }