[FONT="Fixedsys"][COLOR="DarkOrchid"]Okay well in the 5165 source, GM's and PM's cannot trade.
Well yeah the fix for it is small but since alot of people were asking me about it I am going to release my trading code.
Replace your entire Trade.cs with this code.
[/color][/font]
Alles anzeigen
[FONT="Fixedsys"][COLOR="DarkOrchid"]
Press thanks if it helped.[/COLOR][/FONT]
Well yeah the fix for it is small but since alot of people were asking me about it I am going to release my trading code.
Replace your entire Trade.cs with this code.
[/color][/font]
Quellcode
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using NewestCOServer.Game;
- namespace NewestCOServer.PacketHandling
- {
- public class Trade
- {
- static void CancelTrade(Main.GameClient C)
- {
- if (C.MyChar.Trading)
- {
- Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
- if (Who != null)
- {
- Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
- Who.Trading = false;
- Who.TradingWith = 0;
- Who.TradeSide.Clear();
- Who.TradingCPs = 0;
- Who.TradingSilvers = 0;
- Who.ClickedOK = false;
- Who.Silvers = Who.Silvers;//update the silvers
- Who.CPs = Who.CPs;//update the cps
- Who.MyClient.AddSend(Packets.ChatMessage(Who.MyClient.MessageID, "SYSTEM", Who.Name, "Trading failed!", 2005, 0));
- }
- C.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
- C.MyChar.Trading = false;
- C.MyChar.TradingWith = 0;
- C.MyChar.TradeSide = new System.Collections.ArrayList(20);
- C.MyChar.TradingCPs = 0;
- C.MyChar.TradingSilvers = 0;
- C.MyChar.ClickedOK = false;
- C.MyChar.CPs = C.MyChar.CPs;//update the cps
- C.MyChar.Silvers = C.MyChar.Silvers;//update the silvers
- C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "Trading failed!", 2005, 0));
- }
- }
- public static void Handle(Main.GameClient C, byte[] Data)
- {
- uint UID = BitConverter.ToUInt32(Data, 4);
- byte Type = Data[8];
- switch (Type)
- {
- case 1:
- {
- Character Who = (Character)World.H_Chars[UID];
- if (Who != null && !Who.Trading)
- {
- if (!C.MyChar.Trading)
- {
- if (Who.EntityID != C.MyChar.TradingWith)
- {
- C.MyChar.TradingWith = UID;
- if (Who.EntityID == C.MyChar.TradingWith && Who.TradingWith == C.MyChar.EntityID)
- {
- Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 3));
- C.AddSend(Packets.TradePacket(Who.EntityID, 3));
- C.MyChar.Trading = true;
- Who.Trading = true;
- break;
- }
- else
- {
- C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Request for trading has been sent out.", 2005, 0));
- Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 1));
- }
- }
- if (Who.EntityID == C.MyChar.TradingWith && Who.TradingWith == C.MyChar.EntityID)
- {
- Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 3));
- C.AddSend(Packets.TradePacket(Who.EntityID, 3));
- C.MyChar.Trading = true;
- Who.Trading = true;
- }
- }
- else
- C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Close the current trade before you take another one.", 2005, 0));
- }
- else
- C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]The target is trading with someone else.", 2005, 0));
- break;
- }
- case 2:
- {
- CancelTrade(C);
- break;
- }
- case 6:
- {
- Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
- if (Who != null)
- {
- if (C.MyChar.TradeSide.Count < 20)
- {
- if (Who.Inventory.Count + C.MyChar.TradeSide.Count < 40)
- {
- Game.Item I = C.MyChar.FindInvItem(UID);
- if (!I.FreeItem)
- {
- Who.MyClient.AddSend(Packets.TradeItem(I));
- C.MyChar.TradeSide.Add(I.UID);
- }
- else
- {
- C.AddSend(Packets.TradePacket(UID, 11));
- C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Cannot trade items made with gm commands.", 2005, 0));
- }
- }
- else
- {
- C.AddSend(Packets.TradePacket(UID, 11));
- C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Your trade partner can't hold any more items.", 2005, 0));
- Who.MyClient.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]The one your trading with cant add anymore items on the table because you have no room in your inventory.", 2005, 0));
- }
- }
- }
- break;
- }
- case 7:
- {
- C.MyChar.TradingSilvers = UID;
- Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
- Who.MyClient.AddSend(Packets.TradePacket(UID, 8));
- break;
- }
- case 13:
- {
- C.MyChar.TradingCPs = UID;
- Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
- Who.MyClient.AddSend(Packets.TradePacket(UID, 12));
- break;
- }
- case 10:
- {
- Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
- if (Who != null && Who.ClickedOK)
- {
- if (C.MyChar.Silvers >= C.MyChar.TradingSilvers && C.MyChar.CPs >= C.MyChar.TradingCPs && Who.Silvers >= Who.TradingSilvers && Who.CPs >= Who.TradingCPs)
- {
- Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
- C.AddSend(Packets.TradePacket(C.MyChar.EntityID, 5));
- Who.Silvers += C.MyChar.TradingSilvers;
- Who.Silvers -= Who.TradingSilvers;
- C.MyChar.Silvers += Who.TradingSilvers;
- C.MyChar.Silvers -= C.MyChar.TradingSilvers;
- Who.CPs += C.MyChar.TradingCPs;
- Who.CPs -= Who.TradingCPs;
- C.MyChar.CPs += Who.TradingCPs;
- C.MyChar.CPs -= C.MyChar.TradingCPs;
- foreach (uint Id in C.MyChar.TradeSide)
- {
- Game.Item I = C.MyChar.FindInvItem(Id);
- Who.AddItem(I);
- C.MyChar.RemoveItem(I);
- }
- foreach (uint Id in Who.TradeSide)
- {
- Game.Item I = Who.FindInvItem(Id);
- C.MyChar.AddItem(I);
- Who.RemoveItem(I);
- }
- Who.Trading = false;
- Who.TradingWith = 0;
- Who.TradeSide = new System.Collections.ArrayList(20);
- Who.TradingCPs = 0;
- Who.TradingSilvers = 0;
- Who.ClickedOK = false;
- Who.MyClient.AddSend(Packets.ChatMessage(Who.MyClient.MessageID, "SYSTEM", Who.Name, "Trading succeeded!", 2005, 0));
- C.MyChar.Trading = false;
- C.MyChar.TradingWith = 0;
- C.MyChar.TradeSide = new System.Collections.ArrayList(20);
- C.MyChar.TradingCPs = 0;
- C.MyChar.TradingSilvers = 0;
- C.MyChar.ClickedOK = false;
- C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "Trading succeeded!", 2005, 0));
- }
- else
- CancelTrade(C);
- }
- else
- {
- C.MyChar.ClickedOK = true;
- Who.MyClient.AddSend(Packets.TradePacket(0, 10));
- }
- break;
- }
- }
- }
- }
- }
[FONT="Fixedsys"][COLOR="DarkOrchid"]
Press thanks if it helped.[/COLOR][/FONT]