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++; }
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; } } } }
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); }
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 } }