knugi

kTrade - zaawansowany system wymiany.

May 25th, 2018
896
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.81 KB | None | 0 0
  1. options:
  2.  
  3. TAG: &c&l►
  4.  
  5. #Nie zmieniaj :)
  6. READY: "gotowy"
  7. WAITING: "oczekuje"
  8. ACCEPT: "zaakceptowal"
  9. SETTING: "ustawia"
  10.  
  11. #Code of TradeSK
  12. function TRADE_getInventory(t: text = "") :: inventory:
  13. set {_x} to chest with 5 rows named "&9&lWYMIANA"
  14. set {_i} to 4
  15. loop 5 times:
  16. set slot {_i} of {_x} to 102 named "&l"
  17. add 9 to {_i}
  18. set slot 36 of {_x} to light green wool named "&8[&2✓&8] &2Akceptuj &8[&2✓&8]"
  19. set slot 37 of {_x} to red wool named "&8[&c✗&8] &4Odrzuc &8[&c✗&8]"
  20. set slot 41 of {_x} to yellow wool named "&8[&f►&8] &6Ustawia itemy &8[&f◄&8]"
  21. set slot 39 of {_x} to yellow wool named "&8[&f►&8] &6Ustawiasz itemy &8[&f◄&8]"
  22. return {_x}
  23. function TRADE_trade(p: player, p2: player):
  24. if distance between {_p} and {_p2} is larger than 5:
  25. send "{@TAG} &7Gracz jest za daleko." to {_p}
  26. stop
  27. if {trade::%{_p}%::status} is not set:
  28. if {trade::%{_p2}%::status} is not set:
  29. set {trade::%{_p}%::with} to {_p2}
  30. set {trade::%{_p}%::status} to {@READY}
  31. set {trade::%{_p2}%::with} to {_p}
  32. set {trade::%{_p2}%::status} to {@WAITING}
  33. send "{@TAG} &7Zaprosiles gracza %{_p2}% do wymiany." to {_p}
  34. send "{@TAG} &7Gracz %{_p}% zaprosil Cie do wymiany.%nl%{@TAG} &7Wpisz &6/handel %{_p}%&7, lub kliknij na niego PPM." to {_p2}
  35. stop
  36. if {trade::%{_p}%::status} is {@WAITING}:
  37. if {trade::%{_p}%::with} is {_p2}:
  38. set {trade::%{_p}%::status} to {@SETTING}
  39. set {trade::%{_p2}%::status} to {@SETTING}
  40. open TRADE_getInventory() to {_p}
  41. open TRADE_getInventory() to {_p2}
  42. function TRADE_saveItems(p: player):
  43. if name of {_p}'s current inventory is "&9&lWYMIANA":
  44. set {_slots::*} to 0, 1, 2, 3, 9, 10, 11, 12, 18, 19, 20, 21, 27, 28, 29 and 30
  45. loop {_slots::*}:
  46. set {_slot} to "%loop-value%" parsed as integer
  47. if {_p}'s current inventory's slot {_slot} is not air:
  48. add {_p}'s current inventory's slot {_slot} to {deposit::%{_p}%::*}
  49.  
  50. function TRADE_endTrade(p: player):
  51. set {_p::*} to {trade::%{_p}%::with} and {_p}
  52. set {_i} to 4
  53. set {_przedzialka::*} to 4, 13, 22, 31 and 40
  54. set {_items::*} to 160:14, 160:4 and 160:5
  55. loop {_items::*}:
  56. loop {_p::*}:
  57. loop {_przedzialka::*}:
  58. if name of loop-value-2's current inventory is "&9&lWYMIANA":
  59. set {_nr} to loop-index-1 parsed as integer
  60. set loop-value-2's current inventory's slot loop-value-3 to loop-value-1 named "&8[&2✓&8] &aWymiana zaakceptowana &8[&2✓&8]" with lore "||||&a&l Wymiana konczy sie za:||&c%4 - {_nr}%"
  61.  
  62. wait 1 second
  63. set {_p2} to {trade::%{_p}%::with}
  64. TRADE_saveItems({_p})
  65. TRADE_saveItems({_p2})
  66. TRADE_setStatus({_p}, "Odrzuc")
  67. give {deposit::%{_p}%::*} to {_p2}
  68. give {deposit::%{_p2}%::*} to {_p}
  69. clear {deposit::%{_p}%::*}
  70. clear {deposit::%{_p2}%::*}
  71. function TRADE_setStatus(p: player, t: text):
  72. set {_p2} to {trade::%{_p}%::with}
  73. if {_t} is "Odrzuc":
  74. delete {trade::%{_p}%::*}
  75. delete {trade::%{_p2}%::*}
  76. delete {trade::%{_p2}%}
  77. delete {trade::%{_p}%}
  78. close {_p2}'s inventory
  79. if {_p} is online:
  80. close {_p}'s inventory
  81. if {trade::%{_p}%::status} is "Perm":
  82. stop
  83. if {_t} is {@ACCEPT}:
  84. set {trade::%{_p}%::status} to {@ACCEPT}
  85. if {trade::%{_p2}%::status} is {@SETTING}:
  86. set {_p}'s current inventory's slot 39 to green wool named "&8[&2✓&8] &aZaakceptowales &8[&2✓&8]"
  87. set {_p2}'s current inventory's slot 41 to green wool named "&8[&2✓&8] &aZaakceptowal &8[&2✓&8]"
  88. stop
  89. if {trade::%{_p2}%::status} is {@ACCEPT}:
  90. set {_p}'s current inventory's slot 39 to green wool named "&8[&2✓&8] &aZaakceptowales &8[&2✓&8]"
  91. set {_p2}'s current inventory's slot 41 to green wool named "&8[&2✓&8] &aZaakceptowal &8[&2✓&8]"
  92. set {trade::%{_p}%::status} to "Perm"
  93. set {trade::%{_p2}%::status} to "Perm"
  94. TRADE_endTrade({_p})
  95. stop
  96. if {_t} is {@SETTING}:
  97. set {trade::%{_p}%::status} to {@SETTING}
  98. set {trade::%{_p2}%::status} to {@SETTING}
  99. set {_p}'s current inventory's slot 39 to yellow wool named "&8[&f►&8] &6Ustawiasz itemy &8[&f◄&8]"
  100. set {_p2}'s current inventory's slot 39 to yellow wool named "&8[&f►&8] &6Ustawiasz itemy &8[&f◄&8]"
  101. set {_p}'s current inventory's slot 41 to yellow wool named "&8[&f►&8] &6Ustawia itemy &8[&f◄&8]"
  102. set {_p2}'s current inventory's slot 41 to yellow wool named "&8[&f►&8] &6Ustawia itemy &8[&f◄&8]"
  103. on script load:
  104. import "org.bukkit.event.inventory.InventoryClickEvent"
  105. import "org.bukkit.event.inventory.InventoryCloseEvent"
  106. import "org.bukkit.event.player.PlayerInteractEntityEvent"
  107. import "org.bukkit.event.inventory.InventoryDragEvent"
  108.  
  109. on join:
  110. if size of {deposit::%player%::*} is larger than 0:
  111. wait 5 second
  112. send "&8[&c?&8] &7Aby odebrac swoje przedmioty z poprzedniej wymiany wpisz: &6/handel odbierz"
  113.  
  114. on quit:
  115. if {trade::%player%::status} is set:
  116. set {_p2} to {trade::%player%::with}
  117. TRADE_saveItems(player)
  118. TRADE_saveItems({_p2})
  119. TRADE_setStatus(player, "Odrzuc")
  120. wait 3 tick
  121. give {deposit::%{_p2}%::*} to {_p2}
  122. clear {deposit::%{_p2}%::*}
  123.  
  124. on "org.bukkit.event.inventory.InventoryCloseEvent":
  125. set {_p} to event.getPlayer()
  126. if {trade::%{_p}%::status} is {@ACCEPT} or {@SETTING}:
  127. wait 3 tick
  128. open event.getInventory() to event.getPlayer()
  129. stop
  130. clear {trade::%{_p2}%::*}
  131. clear {trade::%{_p}%::status}
  132. close {trade::%{_p}%::with}'s inventory
  133. clear {trade::%{_p}%::*}
  134.  
  135. on "org.bukkit.event.player.PlayerInteractEntityEvent":
  136. set {_p} to event.getPlayer()
  137. set {_p2} to "%event.getRightClicked()%" parsed as player
  138. if {_p2} is player:
  139. TRADE_trade({_p}, {_p2})
  140.  
  141.  
  142. #Prawdopodobnie to kiedyś działało.
  143. on "org.bukkit.event.inventory.InventoryDragEvent":
  144. set {_top} to event.getWhoClicked().getOpenInventory().getTopInventory()
  145. if inventory name of {_top} is "&9&lWYMIANA":
  146. set {_x} to "%event.getRawSlots()%"
  147. replace all "[" and "]" with "" in {_x}
  148. set {_x::*} to split {_x} by ", "
  149. loop {_x::*}:
  150. if loop-value parsed as integer is smaller than 44:
  151. cancel event
  152. stop
  153. #Tak to wyżej xD
  154.  
  155. on drop:
  156. set {_top} to player.getOpenInventory().getTopInventory()
  157. if name of {_top} is "&9&lWYMIANA":
  158. cancel event
  159.  
  160. on "org.bukkit.event.inventory.InventoryClickEvent":
  161. set {_top} to event.getWhoClicked().getOpenInventory().getTopInventory()
  162. if name of {_top} is "&9&lWYMIANA":
  163. set {_rawSlot} to event.getRawSlot()
  164. if {_rawSlot} is smaller than 0:
  165. stop
  166. set {_p} to event.getWhoClicked()
  167. set {_clickType} to event.getClick()
  168. if "%{_clickType}%" is "number key" or "double click using mouse" or "drop key":
  169. cancel event
  170. stop
  171. if {_rawSlot} is smaller than 45:
  172. if {_rawSlot} is not 0, 1, 2, 3, 9, 10, 11, 12, 18, 19, 20, 21, 27, 28, 29 or 30:
  173. cancel event
  174. if {_rawSlot} is 36:
  175. TRADE_setStatus({_p}, {@ACCEPT})
  176. if {_rawSlot} is 37:
  177. if {trade::%{_p}%::status} is not "perm":
  178. TRADE_setStatus({_p}, "Odrzuc")
  179. if {_rawSlot} is 0, 1, 2, 3, 9, 10, 11, 12, 18, 19, 20, 21, 27, 28, 29 or 30:
  180. if {trade::%{_p}%::status} is "Perm":
  181. cancel event
  182. stop
  183. set {_p2} to {trade::%{_p}%::with}
  184. wait 1 tick
  185. set {_p2}'s current inventory's slot {_rawSlot} + 5 to event.getCurrentItem()
  186. TRADE_setStatus({_p}, {@SETTING})
  187.  
  188. #Crevsers tego nie napisał!
  189. #Knugi też nie :kappa:
  190. #Samo się napisało.
  191.  
  192. command /handel [<text>]:
  193. trigger:
  194. if arg 1 is not set:
  195. send "&8(◕^^◕)"
  196. send "&7/handel <nick> &8Doprowadza do wymiany z graczem."
  197. send "&7/handel odbierz &8Odbierasz itemy z depozytu."
  198. stop
  199. if arg 1 is "odbierz":
  200. if size of {deposit::%player%::*} is larger than 0:
  201. give {deposit::%player%::*} to player
  202. clear {deposit::%player%::*}
  203. send "{@TAG} &7Otrzymales swoje przedmioty."
  204. stop
  205. send "{@TAG} &7Nie masz zadnych przedmiotow w depozycie."
  206. stop
  207. set {_p} to "%arg%" parsed as offlineplayer
  208. if {_p} is online:
  209. TRADE_trade(player, {_p})
Advertisement
Add Comment
Please, Sign In to add comment