private bool IsSelectValid(int playerId, string itemname, int amount, TradeChangedPacket pkt) { bool[] yourSelectedItems = pkt.Offers; int ret = 0; for (int i = 4; i < 12; i++) { if (yourSelectedItems[i] && targetInventory[i - 4] == RotMGData.NameToId[itemname]) { ret++; } } return(ret >= amount); }
public void OnTradeChanged(Client client, Packet packet) { TradeChangedPacket change = (TradeChangedPacket)packet; if (_Enabled[client] && _Started[client]) { CurrentTrades[client].UpdateTrade(change.Offers); CurrentTrades[client].SelectItems(); if (CurrentTrades[client].Good()) { CurrentTrades[client].Accept(); } } }
private void OnTradeChanged(TradeChangedPacket tradeChanged) { // WTF? if (_trade == null) { return; } List <int> offer = new List <int>(); for (byte i = 4; i < tradeChanged.Offer.Length; i++) { if (tradeChanged.Offer[i]) { offer.Add(_trade.PartnerItems[i].Item); } } _trade.PartnerOffer = tradeChanged.Offer; _trade.OnOffered?.Invoke(offer); }
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); } } }