public void TR(Client client, Packet packet) { TradeRequestedPacket p = (TradeRequestedPacket)packet; if (clientlist[IndexOfClient(client)].enabled) { Console.Write("Trade Req from \"" + p.Name + "\""); if (Settings.Default.UseRegex) { foreach (Regex rgx in blacklist) { if (rgx.IsMatch(p.Name)) { Console.WriteLine(" ignored!"); return; } } } else { if (Settings.Default.Blacklist.Contains(p.Name)) { Console.WriteLine(" ignored!"); return; } } RequestTradePacket rt = (RequestTradePacket)Packet.Create(PacketType.REQUESTTRADE); rt.Name = p.Name; client.SendToServer(rt); Console.WriteLine("accepted!"); } }
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 OnTradeRequested(Client client, Packet packet) { TradeRequestedPacket request = (TradeRequestedPacket)packet; if (_Enabled[client] && _Started[client]) { if (!CurrentTrades[client].isTrading) { Console.WriteLine("Trade Request from \"" + request.Name + "\""); RequestTradePacket req = (RequestTradePacket)Packet.Create(PacketType.REQUESTTRADE); req.Name = request.Name; client.SendToServer(req); } } }
} //End of unknown code public void RequestTrade(RealmTime time, RequestTradePacket pkt) { if (!NameChosen) { SendInfo("Unique name is required to trade with others!"); return; } if (tradeTarget != null) { SendError("You're already trading!"); tradeTarget = null; return; } Player target = Owner.GetUniqueNamedPlayer(pkt.Name); if (target == null) { SendError("Player not found or is offline!"); return; } if (target.tradeTarget != null && target.tradeTarget != this) { SendError(target.Name + " is already trading!"); return; } if (this.potentialTrader.ContainsKey(target)) { this.tradeTarget = target; this.trade = new bool[12]; this.tradeAccepted = false; target.tradeTarget = this; target.trade = new bool[12]; target.tradeAccepted = false; this.potentialTrader.Clear(); target.potentialTrader.Clear(); TradeItem[] my = new TradeItem[Inventory.Length]; for (int i = 0; i < Inventory.Length; i++) { my[i] = new TradeItem() { Item = this.Inventory[i] == null ? -1 : Inventory[i].ObjectType, SlotType = this.SlotTypes[i], Included = false, Tradeable = (Inventory[i] == null || i < 4) ? false : (!Inventory[i].Soulbound && !Inventory[i].Undead && !Inventory[i].SUndead) } } ; TradeItem[] your = new TradeItem[target.Inventory.Length]; for (int i = 0; i < target.Inventory.Length; i++) { your[i] = new TradeItem() { Item = target.Inventory[i] == null ? -1 : target.Inventory[i].ObjectType, SlotType = target.SlotTypes[i], Included = false, Tradeable = (target.Inventory[i] == null || i < 4) ? false : (!target.Inventory[i].Soulbound && !target.Inventory[i].Undead && !target.Inventory[i].SUndead) } } ; psr.SendPacket(new TradeStartPacket() { MyItems = my, YourName = target.Name, YourItems = your }); target.psr.SendPacket(new TradeStartPacket() { MyItems = your, YourName = this.Name, YourItems = my }); } else { target.potentialTrader[this] = 1000 * 20; target.psr.SendPacket(new TradeRequestedPacket() { Name = Name }); SendInfo("You have requested to trade with " + target.Name); return; } }
public void RequestTrade(RealmTime time, RequestTradePacket pkt) { if (!NameChosen) { SendInfo("Unique name is required to trade with others!"); return; } Player target = Owner.GetUniqueNamedPlayer(pkt.Name); //if (intake) //{ // SendError(target.Name + " is already trading!"); // return; //} if (tradeTarget != null) { SendError("You're already trading!"); tradeTarget = null; return; } if (client.Player == target) { SendError("Trading with yourself would be pointless."); tradeTarget = null; return; } if (target == null) { SendError("Player not found!"); return; } if (target.tradeTarget != null && target.tradeTarget != this) { SendError(target.Name + " is already trading!"); return; } if (potentialTrader.ContainsKey(target)) { tradeTarget = target; trade = new bool[12]; tradeAccepted = false; target.tradeTarget = this; target.trade = new bool[12]; target.tradeAccepted = false; potentialTrader.Clear(); target.potentialTrader.Clear(); taking = false; TradeItem[] my = new TradeItem[Inventory.Length]; for (int i = 0; i < Inventory.Length; i++) { my[i] = new TradeItem { Item = Inventory[i] == null ? -1 : Inventory[i].ObjectType, Data = Inventory.Data[i] ?? new ItemData(), SlotType = SlotTypes[i], Included = false, Tradeable = (Inventory[i] != null && i >= 4) && (!Inventory[i].Soulbound) && (!Inventory[i].AdminOnly) && (Inventory.Data[i] == null || !Inventory.Data[i].Soulbound) } } ; TradeItem[] your = new TradeItem[target.Inventory.Length]; for (int i = 0; i < target.Inventory.Length; i++) { your[i] = new TradeItem { Item = target.Inventory[i] == null ? -1 : target.Inventory[i].ObjectType, Data = target.Inventory.Data[i] ?? new ItemData(), SlotType = target.SlotTypes[i], Included = false, Tradeable = (target.Inventory[i] != null && i >= 4) && (!target.Inventory[i].Soulbound) && (!target.Inventory[i].AdminOnly) && (target.Inventory.Data[i] == null || !target.Inventory.Data[i].Soulbound) } } ; client.SendPacket(new TradeStartPacket { MyItems = my, YourName = target.Name, YourItems = your }); target.client.SendPacket(new TradeStartPacket { MyItems = your, YourName = Name, YourItems = my }); } else { target.potentialTrader[this] = 1000 * 20; target.client.SendPacket(new TradeRequestedPacket { Name = Name }); SendInfo("Sent trade request to " + target.Name); } }
public void RequestTrade(RealmTime time, RequestTradePacket pkt) { var target = Owner.GetPlayerByName(pkt.Name); if (target == null) { SendInfo("{\"key\":\"server.player_not_found\",\"tokens\":{\"player\":\"" + pkt.Name + "\"}}"); return; } if (!NameChosen || !target.NameChosen) { SendInfo("{\"key\":\"server.trade_needs_their_name\"}"); return; } if (Client.Player == target) { SendInfo("{\"key\":\"server.self_trade\"}"); return; } if (TradeManager.TradingPlayers.Count(_ => _.AccountId == target.AccountId) > 0) { SendInfo("{\"key\":\"server.they_already_trading\",\"tokens\":{\"player\":\"" + target.Name + "\"}}"); return; } if (TradeManager.CurrentRequests.Count(_ => _.Value.AccountId == AccountId && _.Key.AccountId == target.AccountId) > 0) { var myItems = new TradeItem[12]; var yourItems = new TradeItem[12]; for (var i = 0; i < myItems.Length; i++) { myItems[i] = new TradeItem { Item = Inventory[i] == null ? -1 : Inventory[i].ObjectType, SlotType = SlotTypes[i], Tradeable = (Inventory[i] != null && i >= 4) && (!Inventory[i].Soulbound), Included = false }; } for (var i = 0; i < yourItems.Length; i++) { yourItems[i] = new TradeItem { Item = target.Inventory[i] == null ? -1 : target.Inventory[i].ObjectType, SlotType = SlotTypes[i], Tradeable = (target.Inventory[i] != null && i >= 4) && (!target.Inventory[i].Soulbound), Included = false }; } Client.SendPacket(new TradeStartPacket { MyItems = myItems, YourItems = yourItems, YourName = target.Name }); target.Client.SendPacket(new TradeStartPacket { MyItems = yourItems, YourItems = myItems, YourName = Name }); var t = new TradeManager(this, target); target.TradeHandler = t; TradeHandler = t; } else { SendInfo("{\"key\":\"server.trade_requested\",\"tokens\":{\"player\":\"" + target.Name + "\"}}"); if (target.Ignored.Contains(Client.Account.AccountId)) { return; } target.Client.SendPacket(new TradeRequestedPacket { Name = Name }); var format = new KeyValuePair <Player, Player>(this, target); TradeManager.CurrentRequests.Add(format); Owner.Timers.Add(new WorldTimer(60 * 1000, (w, t) => { if (!TradeManager.CurrentRequests.Contains(format)) { return; } TradeManager.CurrentRequests.Remove(format); SendInfo("{\"key\":\"server.trade_timeout\"}"); })); } }
public void RequestTrade(RealmTime time, RequestTradePacket pkt) { if (!NameChosen) { psr.SendPacket(new TextPacket() { BubbleTime = 0, Stars = -1, Name = "", Text = "Unique name is required to trade with others!" }); return; } if (tradeTarget != null) { psr.SendPacket(new TextPacket() { BubbleTime = 0, Stars = -1, Name = "*Error*", Text = "You're already trading!" }); return; } Player target = Owner.GetUniqueNamedPlayer(pkt.Name); if (target == null) { psr.SendPacket(new TextPacket() { BubbleTime = 0, Stars = -1, Name = "*Error*", Text = "Player not found!" }); return; } if (target.tradeTarget != null && target.tradeTarget != this) { psr.SendPacket(new TextPacket() { BubbleTime = 0, Stars = -1, Name = "*Error*", Text = target.Name + " is already trading!" }); return; } if (this.potentialTrader.ContainsKey(target)) { this.tradeTarget = target; this.trade = new bool[12]; this.tradeAccepted = false; target.tradeTarget = this; target.trade = new bool[12]; target.tradeAccepted = false; this.potentialTrader.Clear(); target.potentialTrader.Clear(); TradeItem[] my = new TradeItem[this.Inventory.Length]; for (int i = 0; i < this.Inventory.Length; i++) { my[i] = new TradeItem() { Item = this.Inventory[i] == null ? -1 : this.Inventory[i].ObjectType, SlotType = this.SlotTypes[i], Included = false, Tradeable = (this.Inventory[i] == null || i < 4) ? false : !this.Inventory[i].Soulbound } } ; TradeItem[] your = new TradeItem[target.Inventory.Length]; for (int i = 0; i < target.Inventory.Length; i++) { your[i] = new TradeItem() { Item = target.Inventory[i] == null ? -1 : target.Inventory[i].ObjectType, SlotType = target.SlotTypes[i], Included = false, Tradeable = (target.Inventory[i] == null || i < 4) ? false : !target.Inventory[i].Soulbound } } ; this.psr.SendPacket(new TradeStartPacket() { MyItems = my, YourName = target.Name, YourItems = your }); target.psr.SendPacket(new TradeStartPacket() { MyItems = your, YourName = this.Name, YourItems = my }); } else { target.potentialTrader[this] = 1000 * 20; target.psr.SendPacket(new TradeRequestedPacket() { Name = Name }); psr.SendPacket(new TextPacket() { BubbleTime = 0, Stars = -1, Name = "", Text = "Sent trade request to " + target.Name }); return; } }
public void RequestForge(RealmTime time, RequestTradePacket pkt) { if (tradeTarget != null) { SendError("You're already trading!"); tradeTarget = null; return; } trade = new bool[12]; tradeAccepted = false; forging = true; ForgeList f = new ForgeList(); foreach (var i in f.combos) { for (var x = 0; x < i.Key.Length; x++) { requestedItems.Add(i.Key[x]); } for (var x = 0; x < Inventory.Length; x++) { if (Inventory[x] != null) { playerItems.Add(Inventory[x].ObjectId); } } for (var x = 0; x < playerItems.Count; x++) { for (var y = 0; y < requestedItems.Count; y++) { if (requestedItems[y] == playerItems[x]) { requestedItems.RemoveAt(y); break; } } } if (requestedItems.Count == 0) { var icdatas = new Dictionary <string, short>(db.data.XmlDatas.IdToType, StringComparer.OrdinalIgnoreCase); short objType; icdatas.TryGetValue(i.Value, out objType); forgableItems.Add(objType); } } if (forgableItems.Count < Inventory.Length) { for (var i = forgableItems.Count; i < Inventory.Length; i++) { forgableItems.Add(-1); } } var my = new TradeItem[Inventory.Length]; for (var i = 0; i < Inventory.Length; i++) { my[i] = new TradeItem { Item = forgableItems[i], SlotType = SlotTypes[0], Included = false, Tradeable = forgableItems[i] != -1 }; } var your = new TradeItem[12]; for (var i = 0; i < Inventory.Length; i++) { your[i] = new TradeItem { Item = Inventory[i] == null ? -1 : Inventory[i].ObjectType, SlotType = SlotTypes[i], Included = false, Tradeable = false } } ; psr.SendPacket(new TradeStartPacket { MyItems = my, YourName = "Items", YourItems = your }); }
public void RequestTake(RealmTime time, RequestTradePacket pkt) { if (tradeTarget != null) { SendError("You're already trading!"); tradeTarget = null; return; } Player target = Owner.GetUniqueNamedPlayer(pkt.Name); if (target == null) { SendError("Player not found!"); return; } if (target.tradeTarget != null && target.tradeTarget != this) { SendError(target.Name + " is already trading!"); return; } tradeTarget = target; trade = new bool[12]; tradeAccepted = false; target.tradeTarget = this; target.trade = new bool[12]; taking = true; tradeTarget.intake = true; var my = new TradeItem[Inventory.Length]; for (int i = 0; i < Inventory.Length; i++) { my[i] = new TradeItem { Item = target.Inventory[i] == null ? -1 : target.Inventory[i].ObjectType, SlotType = target.SlotTypes[i], Included = false, Tradeable = (target.Inventory[i] != null) } } ; var your = new TradeItem[target.Inventory.Length]; for (int i = 0; i < target.Inventory.Length; i++) { your[i] = new TradeItem { Item = -1, SlotType = target.SlotTypes[i], Included = false, Tradeable = false } } ; psr.SendPacket(new TradeStartPacket { MyItems = my, YourName = target.Name, YourItems = your }); }
public void RequestTrade(RealmTime time, RequestTradePacket pkt) { if (!NameChosen) { SendInfo("Unique name is required to trade with others!"); return; } var target = Owner.GetUniqueNamedPlayer(pkt.Name); if (intake) { SendError(target.Name + " is already trading!"); return; } if (tradeTarget != null) { SendError("You're already trading!"); tradeTarget = null; return; } //if (psr.Player == target) //{ // SendError("Trading with yourself would be pointless."); // tradeTarget = null; // return; //} if (target == null) { SendError("Player not found!"); return; } if (target.tradeTarget != null && target.tradeTarget != this) { SendError(target.Name + " is already trading!"); return; } if ((Owner.Name == "Oryx's Castle") || (Owner.Name == "Battle Arena") || (Owner.Name == "Free Battle Arena") || (Owner.Name == "Guild Hall") || (Owner.Name == "Tournament Arena")) { SendError("Devwarlt disabled to trade in this place, about too many dupeing reports by community!"); return; } else { if (potentialTrader.ContainsKey(target)) { tradeTarget = target; trade = new bool[12]; tradeAccepted = false; target.tradeTarget = this; target.trade = new bool[12]; target.tradeAccepted = false; potentialTrader.Clear(); target.potentialTrader.Clear(); taking = false; var my = new TradeItem[Inventory.Length]; for (var i = 0; i < Inventory.Length; i++) { my[i] = new TradeItem { Item = Inventory[i] == null ? -1 : Inventory[i].ObjectType, SlotType = SlotTypes[i], Included = false, Tradeable = (Inventory[i] != null && i >= 4) && (!Inventory[i].Soulbound && !Inventory[i].Undead && !Inventory[i].SUndead) } } ; var your = new TradeItem[target.Inventory.Length]; for (var i = 0; i < target.Inventory.Length; i++) { your[i] = new TradeItem { Item = target.Inventory[i] == null ? -1 : target.Inventory[i].ObjectType, SlotType = target.SlotTypes[i], Included = false, Tradeable = (target.Inventory[i] != null && i >= 4) && (!target.Inventory[i].Soulbound && !target.Inventory[i].Undead && !target.Inventory[i].SUndead) } } ; psr.SendPacket(new TradeStartPacket { MyItems = my, YourName = target.Name, YourItems = your }); target.psr.SendPacket(new TradeStartPacket { MyItems = your, YourName = Name, YourItems = my }); } else { target.potentialTrader[this] = 1000 * 20; target.psr.SendPacket(new TradeRequestedPacket { Name = Name }); SendInfo("Sent trade request to " + target.Name); } } }