Пример #1
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++;
        }
Пример #2
0
        public void Do()
        {
            //Console.WriteLine("Output: \"" + client.ToString() + "\" doing...");
            bool found = false;

            foreach (var converter in HelperHandler.clist)
            {
                if (converter.input.ID == outputitem)
                {
                    found = true;
                    int give = (CalcGive(converter, client.CountItem(converter.input.ID))) - 1;
                    if (give > 0)
                    {
                        //Console.WriteLine("\t Converter: \"" + converter.client.ToString() + "\" is succeptible!");
                        //give the maximum amount I can give:
                        PZItem giveitem = new PZItem(converter.input.ID, give);
                        Console.WriteLine("(output)" + client + " give " + giveitem + " to (converter)" + converter.client);
                        HelperHandler.GiveItem(client, converter.client, giveitem);
                    }

                    continue; //since I've given my max
                }
            }

            if (!found)
            {
                // Console.WriteLine("Did not find any succeptible converters, jumping to storage");
                //straight to store
                foreach (var storage in HelperHandler.slist)
                {
                    if (storage.inputitem == outputitem)
                    {
                        int give = (SCalcGive(storage, client.CountItem(storage.inputitem))) - 1;
                        if (give > 0)
                        {
                            PZItem giveitem = new PZItem(storage.inputitem, give);
                            Console.WriteLine("(output)" + client + " give " + giveitem + " to (storage)" + storage.client);
                            //Console.WriteLine("\t Storage: \"" + storage.client.ToString() + "\" is succeptible!");
                            HelperHandler.GiveItem(client, storage.client, giveitem);
                        }
                        continue;
                    }
                }
            }
        }
Пример #3
0
        public static void GiveItem(PZClient giver, PZClient reciever, PZItem item)
        {
            //int tries = 0;
            giver.enabled        = false;
            reciever.enabled     = false;
            reciever.spamenabled = false;
            giver.spamenabled    = false;
            int start = reciever.CountItem(item.ID);

            GiveItemRetry(giver, reciever, item, start, 0);
        }
Пример #4
0
        public void Do()
        {
            // Console.WriteLine("Converter: \"" + client.ToString() + "\" doing...");
            int myinno = client.CountItem(input.ID);

            if (myinno >= input.amount)
            {
                Console.WriteLine("(converter)" + client + " conversion process started");
                //we've got enough input!
                #region SetTrade
                client.tradequeue.Clear();
                client.tradequeue.Add(new PZTrade()
                {
                    selling = new PZItem[] { input }.ToList(),
                    buying  = new PZItem[] { output }.ToList(),
                    name    = client.ToString()
                });
                client.enabled     = true;
                client.spamenabled = true;
                client.index       = 0;
                #endregion
            }

            bool found = false;
            foreach (var converter in HelperHandler.clist)
            {
                if (converter.input.ID == this.output.ID)
                {
                    found = true;
                    int give = (CalcGive(converter, client.CountItem(converter.input.ID)));
                    if (give > 0)
                    {
                        PZItem giveitem = new PZItem(converter.input.ID, give);
                        Console.WriteLine("(converter)" + client.ToString() + " give " + giveitem + " to (converter)" + converter.client);
                        HelperHandler.GiveItem(client, converter.client, giveitem);
                    }

                    continue; //since I've given my max
                }
            }

            if (!found)
            {
                #region Store
                int myoutno = client.CountItem(output.ID);
                if (myoutno >= output.amount)
                {
                    foreach (var storage in HelperHandler.slist)
                    {
                        if (storage.inputitem == output.ID)
                        {
                            int give = SCalcGive(storage, client.CountItem(storage.inputitem));
                            if (give > 0)
                            {
                                PZItem giveitem = new PZItem(storage.inputitem, give);
                                Console.WriteLine("(converter)" + client + " give " + giveitem + " to (storage)" + storage.client);
                                //give max amount I can give
                                HelperHandler.GiveItem(client, storage.client, giveitem);
                            }
                            continue;
                        }
                    }
                }
                #endregion
            }
        }