예제 #1
0
        public void AcceptTrade(RealmTime time, AcceptTradePacket pkt)
        {
            this.trade = pkt.MyOffers;
            if (tradeTarget.trade.SequenceEqual(pkt.YourOffers))
            {
                tradeTarget.trade  = pkt.YourOffers;
                this.tradeAccepted = true;
                tradeTarget.psr.SendPacket(new TradeAcceptedPacket()
                {
                    MyOffers   = tradeTarget.trade,
                    YourOffers = this.trade
                });
                //Console.Out.WriteLine("Player {0} accepted trade with {1}", nName, tradeTarget.nName); //this line is duplicated in line 132
                var dir = @"logs"; //start of logging code
                if (!System.IO.Directory.Exists(dir))
                {
                    System.IO.Directory.CreateDirectory(dir);
                }
                //Console.WriteLine("[3]0 has fully traded with 1", nName, tradeTarget.nName, DateTime.Now);
                using (System.IO.StreamWriter writer = new System.IO.StreamWriter(@"logs\TradeLog.txt", true))
                {
                    writer.WriteLine("[" + DateTime.Now + "]" + nName + "has finalized the trade with " + tradeTarget.nName);
                } //end of logging code

                /*if (this.tradeAccepted && tradeTarget.tradeAccepted)
                 * {
                 *  DoTrade();
                 *  Console.Out.WriteLine("Did trade!");
                 * }*/
            }
        }
예제 #2
0
        public void Accept()
        {
            bool[] yo = new bool[12];
            bool[] mo = new bool[12];

            for (int i = 0; i < 12; i++)
            {
                if (MyItems[i].selected)
                {
                    mo[i] = true;
                }
                else
                {
                    mo[i] = false;
                }

                if (YourItems[i].selected)
                {
                    yo[i] = true;
                }
                else
                {
                    yo[i] = false;
                }
            }

            //Console.WriteLine(_c.PlayerData.Name + " Sending AcceptTrade");
            AcceptTradePacket atp = (AcceptTradePacket)Packet.Create(PacketType.ACCEPTTRADE);

            atp.YourOffers = yo;
            atp.MyOffers   = mo;
            _c.SendToServer(atp);
        }
예제 #3
0
        public void AcceptTrade(Player sender, AcceptTradePacket pkt)
        {
            if (sender == player1)
            {
                if (pkt.MyOffers.SequenceEqual(player1Trades) && pkt.YourOffers.SequenceEqual(player2Trades))
                {
                    player2.Client.SendPacket(new TradeAcceptedPacket
                    {
                        MyOffers   = player2Trades,
                        YourOffers = player1Trades
                    });
                    player1Accept = true;
                }
            }
            else
            {
                if (pkt.MyOffers.SequenceEqual(player2Trades) && pkt.YourOffers.SequenceEqual(player1Trades))
                {
                    player1.Client.SendPacket(new TradeAcceptedPacket
                    {
                        MyOffers   = player1Trades,
                        YourOffers = player2Trades
                    });
                    player2Accept = true;
                }
            }

            if (player1Accept && player2Accept)
            {
                Trade();
            }
        }
예제 #4
0
        private static void GiveItemRetry(PZClient giver, PZClient reciever, PZItem item, int start, int no)
        {
            int na = no + 1;

            bool[]             sel = PZClient.GetToSel(giver.client, item);
            RequestTradePacket req = (RequestTradePacket)Packet.Create(PacketType.REQUESTTRADE);

            req.Name = reciever.ToString();
            giver.client.SendToServer(req);

            req.Name = giver.ToString();
            reciever.client.SendToServer(req);

            ChangeTradePacket cht = (ChangeTradePacket)Packet.Create(PacketType.CHANGETRADE);

            cht.Offers = sel;
            giver.client.SendToServer(cht);

            AcceptTradePacket atpkt = (AcceptTradePacket)Packet.Create(PacketType.ACCEPTTRADE);

            atpkt.MyOffers   = sel;
            atpkt.YourOffers = new bool[12];
            giver.client.SendToServer(atpkt);

            atpkt.MyOffers   = new bool[12];
            atpkt.YourOffers = sel;
            reciever.client.SendToServer(atpkt);
            Console.WriteLine(giver.ToString() + " gave " + item + " to " + reciever);
            PluginUtils.Delay(2000, new Action(() =>
            {
                int now      = reciever.CountItem(item.ID);
                int addition = now - start;
                if (addition < item.amount)
                {
                    Console.WriteLine("[ERROR]" + (item.amount - addition) + " " + item.ActualName() + " failed to be recieved so trying again");
                    if (na <= 7)
                    {
                        PluginUtils.Delay(500, new Action(() => GiveItemRetry(giver, reciever, item, start, na)));
                    }
                    else
                    {
                        Console.WriteLine("Tried over 7 times, give up!");
                    }
                }
                else
                {
                    Console.WriteLine("Recieve success!");
                    PluginUtils.Delay(500, new Action(() =>
                    {
                        giver.enabled        = true;
                        reciever.enabled     = true;
                        reciever.spamenabled = true;
                        giver.spamenabled    = true;
                    }));
                }
            }));
            na++;
        }
예제 #5
0
 public void AcceptTrade(RealmTime time, AcceptTradePacket pkt)
 {
     trade = pkt.MyOffers;
     if (tradeTarget.trade.SequenceEqual(pkt.YourOffers))
     {
         tradeTarget.trade = pkt.YourOffers;
         tradeAccepted     = true;
         tradeTarget.client.SendPacket(new TradeAcceptedPacket
         {
             MyOffers   = tradeTarget.trade,
             YourOffers = trade
         });
     }
 }
예제 #6
0
 public void AcceptTrade(RealmTime time, AcceptTradePacket pkt)
 {
     this.trade = pkt.MyOffers;
     if (tradeTarget.trade.SequenceEqual(pkt.YourOffers))
     {
         tradeTarget.trade  = pkt.YourOffers;
         this.tradeAccepted = true;
         tradeTarget.client.SendPacket(new TradeAcceptedPacket()
         {
             MyOffers   = tradeTarget.trade,
             YourOffers = this.trade
         });
         logger.InfoFormat("Player {0} accepted trade with {1}", nName, tradeTarget.nName);
     }
 }
예제 #7
0
        public void AcceptTrade(RealmTime time, AcceptTradePacket pkt)
        {
            this.trade = pkt.MyOffers;
            if (tradeTarget.trade.SequenceEqual(pkt.YourOffers))
            {
                tradeTarget.trade  = pkt.YourOffers;
                this.tradeAccepted = true;
                tradeTarget.psr.SendPacket(new TradeAcceptedPacket()
                {
                    MyOffers   = tradeTarget.trade,
                    YourOffers = this.trade
                });

                if (this.tradeAccepted && tradeTarget.tradeAccepted)
                {
                    DoTrade();
                }
            }
        }
예제 #8
0
        public void AcceptTrade(RealmTime time, AcceptTradePacket pkt)
        {
            this.trade = pkt.MyOffers;
            if (tradeTarget.trade.SequenceEqual(pkt.YourOffers))
            {
                tradeTarget.trade  = pkt.YourOffers;
                this.tradeAccepted = true;
                tradeTarget.psr.SendPacket(new TradeAcceptedPacket()
                {
                    MyOffers   = tradeTarget.trade,
                    YourOffers = this.trade
                });
                Console.Out.WriteLine("Player {0} accepted trade with {1}", nName, tradeTarget.nName);

                /*if (this.tradeAccepted && tradeTarget.tradeAccepted)
                 * {
                 *  DoTrade();
                 *  Console.Out.WriteLine("Did trade!");
                 * }*/
            }
        }
        public void AcceptTrade(RealmTime time, AcceptTradePacket pkt)
        {
            trade = pkt.MyOffers;
            if (tradeTarget.trade.SequenceEqual(pkt.YourOffers))
            {
                tradeTarget.trade = pkt.YourOffers;
                tradeAccepted     = true;
                tradeTarget.client.SendPacket(new TradeAcceptedPacket
                {
                    MyOffers   = tradeTarget.trade,
                    YourOffers = trade
                });
                log.InfoFormat("Player {0} accepted trade with {1}", Name, tradeTarget.Name);

                /*if (this.tradeAccepted && tradeTarget.tradeAccepted)
                 * {
                 *  DoTrade();
                 *  log.InfoFormat("Did trade!");
                 * }*/
            }
        }
예제 #10
0
        public void TC(Client client, Packet packet)
        {
            TradeChangedPacket p  = (TradeChangedPacket)packet;
            PZClient           cl = clientlist[IndexOfClient(client)];

            cl.customer.UpdateItems(p.Offers);
            if (cl.enabled)
            {
                Console.WriteLine("--------------------------");
                int    totlefts = 0;
                string msg      = "";
                foreach (var item in cl.CheckCustomer(true))
                {
                    Console.WriteLine(item.ToString() + " - " + item.amount);
                    totlefts += item.amount;
                    if (item.amount > 0)
                    {
                        msg += item.amount + " " + item.ToString() + ";";
                    }
                }
                Console.WriteLine("Verdict: " + (totlefts <= 0));
                if (totlefts <= 0)
                {
                    cl.SelectSelling();
                    AcceptTradePacket ac = (AcceptTradePacket)Packet.Create(PacketType.ACCEPTTRADE);
                    ac.YourOffers = p.Offers;
                    ac.MyOffers   = cl.GetToSel();
                    cl.client.SendToServer(ac);
                }
                else
                {
                    PlayerTextPacket ptpkt = (PlayerTextPacket)Packet.Create(PacketType.PLAYERTEXT);
                    ptpkt.Text = "/t " + cl.customer.name + " An extra: " + msg + " plz!";
                    cl.client.SendToServer(ptpkt);
                }
            }
        }
예제 #11
0
        public void AcceptTrade(RealmTime time, AcceptTradePacket pkt)
        {
            trade = pkt.MyOffers;
            if (
                (Inventory[0].ObjectType == -1) || (Inventory[1].ObjectType == -1) ||
                (Inventory[2].ObjectType == -1) || (Inventory[3].ObjectType == -1) ||
                (tradeTarget.Inventory[0].ObjectType == -1) || (tradeTarget.Inventory[1].ObjectType == -1) ||
                (tradeTarget.Inventory[2].ObjectType == -1) || (tradeTarget.Inventory[3].ObjectType == -1)
                )
            {
                SendError("Devwarlt disable to trade without any stuffs in equipment slots, about too many dupe reports! Equip all your slots to trade.");
                return;
            }
            else if (tradeTarget.trade.SequenceEqual(pkt.YourOffers) &&
                     (Inventory[0].ObjectType != -1) || (Inventory[1].ObjectType != -1) ||
                     (Inventory[2].ObjectType != -1) || (Inventory[3].ObjectType != -1) ||
                     (tradeTarget.Inventory[0].ObjectType != -1) || (tradeTarget.Inventory[1].ObjectType != -1) ||
                     (tradeTarget.Inventory[2].ObjectType != -1) || (tradeTarget.Inventory[3].ObjectType != -1)
                     )
            {
                tradeTarget.trade = pkt.YourOffers;
                tradeAccepted     = true;
                tradeTarget.psr.SendPacket(new TradeAcceptedPacket
                {
                    MyOffers   = tradeTarget.trade,
                    YourOffers = trade
                });
                Console.Out.WriteLine("Player {0} accepted trade with {1}", nName, tradeTarget.nName);

                /*if (this.tradeAccepted && tradeTarget.tradeAccepted)
                 * {
                 *  DoTrade();
                 *  Console.Out.WriteLine("Did trade!");
                 * }*/
            }
        }
예제 #12
0
 public void AcceptTrade(RealmTime time, AcceptTradePacket pkt)
 {
     TradeHandler?.AcceptTrade(this, pkt);
 }