[Release]Trade

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Release]Trade

      [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]

      Quellcode

      1. using System;
      2. using System.Collections.Generic;
      3. using System.Linq;
      4. using System.Text;
      5. using NewestCOServer.Game;
      6. namespace NewestCOServer.PacketHandling
      7. {
      8. public class Trade
      9. {
      10. static void CancelTrade(Main.GameClient C)
      11. {
      12. if (C.MyChar.Trading)
      13. {
      14. Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
      15. if (Who != null)
      16. {
      17. Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
      18. Who.Trading = false;
      19. Who.TradingWith = 0;
      20. Who.TradeSide.Clear();
      21. Who.TradingCPs = 0;
      22. Who.TradingSilvers = 0;
      23. Who.ClickedOK = false;
      24. Who.Silvers = Who.Silvers;//update the silvers
      25. Who.CPs = Who.CPs;//update the cps
      26. Who.MyClient.AddSend(Packets.ChatMessage(Who.MyClient.MessageID, "SYSTEM", Who.Name, "Trading failed!", 2005, 0));
      27. }
      28. C.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
      29. C.MyChar.Trading = false;
      30. C.MyChar.TradingWith = 0;
      31. C.MyChar.TradeSide = new System.Collections.ArrayList(20);
      32. C.MyChar.TradingCPs = 0;
      33. C.MyChar.TradingSilvers = 0;
      34. C.MyChar.ClickedOK = false;
      35. C.MyChar.CPs = C.MyChar.CPs;//update the cps
      36. C.MyChar.Silvers = C.MyChar.Silvers;//update the silvers
      37. C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "Trading failed!", 2005, 0));
      38. }
      39. }
      40. public static void Handle(Main.GameClient C, byte[] Data)
      41. {
      42. uint UID = BitConverter.ToUInt32(Data, 4);
      43. byte Type = Data[8];
      44. switch (Type)
      45. {
      46. case 1:
      47. {
      48. Character Who = (Character)World.H_Chars[UID];
      49. if (Who != null && !Who.Trading)
      50. {
      51. if (!C.MyChar.Trading)
      52. {
      53. if (Who.EntityID != C.MyChar.TradingWith)
      54. {
      55. C.MyChar.TradingWith = UID;
      56. if (Who.EntityID == C.MyChar.TradingWith && Who.TradingWith == C.MyChar.EntityID)
      57. {
      58. Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 3));
      59. C.AddSend(Packets.TradePacket(Who.EntityID, 3));
      60. C.MyChar.Trading = true;
      61. Who.Trading = true;
      62. break;
      63. }
      64. else
      65. {
      66. C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Request for trading has been sent out.", 2005, 0));
      67. Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 1));
      68. }
      69. }
      70. if (Who.EntityID == C.MyChar.TradingWith && Who.TradingWith == C.MyChar.EntityID)
      71. {
      72. Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 3));
      73. C.AddSend(Packets.TradePacket(Who.EntityID, 3));
      74. C.MyChar.Trading = true;
      75. Who.Trading = true;
      76. }
      77. }
      78. else
      79. C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Close the current trade before you take another one.", 2005, 0));
      80. }
      81. else
      82. C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]The target is trading with someone else.", 2005, 0));
      83. break;
      84. }
      85. case 2:
      86. {
      87. CancelTrade(C);
      88. break;
      89. }
      90. case 6:
      91. {
      92. Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
      93. if (Who != null)
      94. {
      95. if (C.MyChar.TradeSide.Count < 20)
      96. {
      97. if (Who.Inventory.Count + C.MyChar.TradeSide.Count < 40)
      98. {
      99. Game.Item I = C.MyChar.FindInvItem(UID);
      100. if (!I.FreeItem)
      101. {
      102. Who.MyClient.AddSend(Packets.TradeItem(I));
      103. C.MyChar.TradeSide.Add(I.UID);
      104. }
      105. else
      106. {
      107. C.AddSend(Packets.TradePacket(UID, 11));
      108. C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Cannot trade items made with gm commands.", 2005, 0));
      109. }
      110. }
      111. else
      112. {
      113. C.AddSend(Packets.TradePacket(UID, 11));
      114. C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Your trade partner can't hold any more items.", 2005, 0));
      115. 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));
      116. }
      117. }
      118. }
      119. break;
      120. }
      121. case 7:
      122. {
      123. C.MyChar.TradingSilvers = UID;
      124. Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
      125. Who.MyClient.AddSend(Packets.TradePacket(UID, 8));
      126. break;
      127. }
      128. case 13:
      129. {
      130. C.MyChar.TradingCPs = UID;
      131. Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
      132. Who.MyClient.AddSend(Packets.TradePacket(UID, 12));
      133. break;
      134. }
      135. case 10:
      136. {
      137. Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
      138. if (Who != null && Who.ClickedOK)
      139. {
      140. if (C.MyChar.Silvers >= C.MyChar.TradingSilvers && C.MyChar.CPs >= C.MyChar.TradingCPs && Who.Silvers >= Who.TradingSilvers && Who.CPs >= Who.TradingCPs)
      141. {
      142. Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
      143. C.AddSend(Packets.TradePacket(C.MyChar.EntityID, 5));
      144. Who.Silvers += C.MyChar.TradingSilvers;
      145. Who.Silvers -= Who.TradingSilvers;
      146. C.MyChar.Silvers += Who.TradingSilvers;
      147. C.MyChar.Silvers -= C.MyChar.TradingSilvers;
      148. Who.CPs += C.MyChar.TradingCPs;
      149. Who.CPs -= Who.TradingCPs;
      150. C.MyChar.CPs += Who.TradingCPs;
      151. C.MyChar.CPs -= C.MyChar.TradingCPs;
      152. foreach (uint Id in C.MyChar.TradeSide)
      153. {
      154. Game.Item I = C.MyChar.FindInvItem(Id);
      155. Who.AddItem(I);
      156. C.MyChar.RemoveItem(I);
      157. }
      158. foreach (uint Id in Who.TradeSide)
      159. {
      160. Game.Item I = Who.FindInvItem(Id);
      161. C.MyChar.AddItem(I);
      162. Who.RemoveItem(I);
      163. }
      164. Who.Trading = false;
      165. Who.TradingWith = 0;
      166. Who.TradeSide = new System.Collections.ArrayList(20);
      167. Who.TradingCPs = 0;
      168. Who.TradingSilvers = 0;
      169. Who.ClickedOK = false;
      170. Who.MyClient.AddSend(Packets.ChatMessage(Who.MyClient.MessageID, "SYSTEM", Who.Name, "Trading succeeded!", 2005, 0));
      171. C.MyChar.Trading = false;
      172. C.MyChar.TradingWith = 0;
      173. C.MyChar.TradeSide = new System.Collections.ArrayList(20);
      174. C.MyChar.TradingCPs = 0;
      175. C.MyChar.TradingSilvers = 0;
      176. C.MyChar.ClickedOK = false;
      177. C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "Trading succeeded!", 2005, 0));
      178. }
      179. else
      180. CancelTrade(C);
      181. }
      182. else
      183. {
      184. C.MyChar.ClickedOK = true;
      185. Who.MyClient.AddSend(Packets.TradePacket(0, 10));
      186. }
      187. break;
      188. }
      189. }
      190. }
      191. }
      192. }
      Alles anzeigen

      [FONT="Fixedsys"][COLOR="DarkOrchid"]
      Press thanks if it helped.[/COLOR][/FONT]
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )