options: TAG: &c&l► #Nie zmieniaj :) READY: "gotowy" WAITING: "oczekuje" ACCEPT: "zaakceptowal" SETTING: "ustawia" #Code of TradeSK function TRADE_getInventory(t: text = "") :: inventory: set {_x} to chest with 5 rows named "&9&lWYMIANA" set {_i} to 4 loop 5 times: set slot {_i} of {_x} to glass pane named "&l" add 9 to {_i} set slot 36 of {_x} to light green wool named "&8[&2✓&8] &2Akceptuj &8[&2✓&8]" set slot 37 of {_x} to red wool named "&8[&c✗&8] &4Odrzuc &8[&c✗&8]" set slot 41 of {_x} to yellow wool named "&8[&f►&8] &6Ustawia itemy &8[&f◄&8]" set slot 39 of {_x} to yellow wool named "&8[&f►&8] &6Ustawiasz itemy &8[&f◄&8]" return {_x} function TRADE_trade(p: player, p2: player): if distance between {_p} and {_p2} is larger than 5: send "{@TAG} &7Gracz jest za daleko." to {_p} stop if {trade::%{_p}%::status} is not set: if {trade::%{_p2}%::status} is not set: set {trade::%{_p}%::with} to {_p2} set {trade::%{_p}%::status} to {@READY} set {trade::%{_p2}%::with} to {_p} set {trade::%{_p2}%::status} to {@WAITING} send "{@TAG} &7Zaprosiles gracza %{_p2}% do wymiany." to {_p} send "{@TAG} &7Gracz %{_p}% zaprosil Cie do wymiany.%nl%{@TAG} &7Wpisz &6/handel %{_p}%&7, lub kliknij na niego PPM." to {_p2} stop if {trade::%{_p}%::status} is {@WAITING}: if {trade::%{_p}%::with} is {_p2}: set {trade::%{_p}%::status} to {@SETTING} set {trade::%{_p2}%::status} to {@SETTING} open TRADE_getInventory() to {_p} open TRADE_getInventory() to {_p2} function TRADE_saveItems(p: player): if name of {_p}'s current inventory is "&9&lWYMIANA": set {_slots::*} to 0, 1, 2, 3, 9, 10, 11, 12, 18, 19, 20, 21, 27, 28, 29 and 30 loop {_slots::*}: set {_slot} to "%loop-value%" parsed as integer if {_p}'s current inventory's slot {_slot} is not air: add {_p}'s current inventory's slot {_slot} to {deposit::%{_p}%::*} function TRADE_endTrade(p: player): set {_p::*} to {trade::%{_p}%::with} and {_p} set {_i} to 4 set {_przedzialka::*} to 4, 13, 22, 31 and 40 set {_items::*} to red stained glass pane, yellow stained glass pane and lime stained glass pane loop {_items::*}: loop {_p::*}: loop {_przedzialka::*}: if name of loop-value-2's current inventory is "&9&lWYMIANA": set {_nr} to loop-index-1 parsed as integer 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}%" wait 1 second set {_p2} to {trade::%{_p}%::with} TRADE_saveItems({_p}) TRADE_saveItems({_p2}) TRADE_setStatus({_p}, "Odrzuc") give {deposit::%{_p}%::*} to {_p2} give {deposit::%{_p2}%::*} to {_p} clear {deposit::%{_p}%::*} clear {deposit::%{_p2}%::*} function TRADE_setStatus(p: player, t: text): set {_p2} to {trade::%{_p}%::with} if {_t} is "Odrzuc": delete {trade::%{_p}%::*} delete {trade::%{_p2}%::*} delete {trade::%{_p2}%} delete {trade::%{_p}%} close {_p2}'s inventory if {_p} is online: close {_p}'s inventory if {trade::%{_p}%::status} is "Perm": stop if {_t} is {@ACCEPT}: set {trade::%{_p}%::status} to {@ACCEPT} if {trade::%{_p2}%::status} is {@SETTING}: set {_p}'s current inventory's slot 39 to green wool named "&8[&2✓&8] &aZaakceptowales &8[&2✓&8]" set {_p2}'s current inventory's slot 41 to green wool named "&8[&2✓&8] &aZaakceptowal &8[&2✓&8]" stop if {trade::%{_p2}%::status} is {@ACCEPT}: set {_p}'s current inventory's slot 39 to green wool named "&8[&2✓&8] &aZaakceptowales &8[&2✓&8]" set {_p2}'s current inventory's slot 41 to green wool named "&8[&2✓&8] &aZaakceptowal &8[&2✓&8]" set {trade::%{_p}%::status} to "Perm" set {trade::%{_p2}%::status} to "Perm" TRADE_endTrade({_p}) stop if {_t} is {@SETTING}: set {trade::%{_p}%::status} to {@SETTING} set {trade::%{_p2}%::status} to {@SETTING} set {_p}'s current inventory's slot 39 to yellow wool named "&8[&f►&8] &6Ustawiasz itemy &8[&f◄&8]" set {_p2}'s current inventory's slot 39 to yellow wool named "&8[&f►&8] &6Ustawiasz itemy &8[&f◄&8]" set {_p}'s current inventory's slot 41 to yellow wool named "&8[&f►&8] &6Ustawia itemy &8[&f◄&8]" set {_p2}'s current inventory's slot 41 to yellow wool named "&8[&f►&8] &6Ustawia itemy &8[&f◄&8]" function TRADE_refreshGUI(p: player): set {_slots::*} to 0, 1, 2, 3, 9, 10, 11, 12, 18, 19, 20, 21, 27, 28, 29 and 30 set {_slotss::*} to 5, 6, 7, 8, 14, 15, 16, 17, 23, 24, 25, 26, 32, 33, 34 and 35 loop {_slots::*}: set slot {_slotss::%loop-index%} of {trade::%{_p}%::with}'s current inventory to {_p}'s current inventory's slot loop-value on script load: import "org.bukkit.event.inventory.InventoryClickEvent" import "org.bukkit.event.inventory.InventoryCloseEvent" import "org.bukkit.event.player.PlayerInteractEntityEvent" import "org.bukkit.event.inventory.InventoryDragEvent" on join: if size of {deposit::%player%::*} is larger than 0: wait 5 second send "&8[&c?&8] &7Aby odebrac swoje przedmioty z poprzedniej wymiany wpisz: &6/handel odbierz" on quit: if {trade::%player%::status} is set: set {_p2} to {trade::%player%::with} TRADE_saveItems(player) TRADE_saveItems({_p2}) TRADE_setStatus(player, "Odrzuc") wait 3 tick give {deposit::%{_p2}%::*} to {_p2} clear {deposit::%{_p2}%::*} on "org.bukkit.event.inventory.InventoryCloseEvent": set {_p} to event.getPlayer() if {trade::%{_p}%::status} is {@ACCEPT} or {@SETTING}: wait 3 tick open event.getInventory() to event.getPlayer() on "org.bukkit.event.player.PlayerInteractEntityEvent": set {_p} to event.getPlayer() set {_p2} to "%event.getRightClicked()%" parsed as player if {_p2} is player: TRADE_trade({_p}, {_p2}) #Prawdopodobnie to kiedyś działało. on "org.bukkit.event.inventory.InventoryDragEvent": set {_top} to event.getWhoClicked().getOpenInventory().getTopInventory() if inventory name of {_top} is "&9&lWYMIANA": set {_x} to "%event.getRawSlots()%" replace all "[" and "]" with "" in {_x} set {_x::*} to split {_x} by ", " loop {_x::*}: if loop-value parsed as integer is smaller than 44: cancel event stop #Tak to wyżej xD on drop: set {_top} to player.getOpenInventory().getTopInventory() if name of {_top} is "&9&lWYMIANA": cancel event on "org.bukkit.event.inventory.InventoryClickEvent": set {_top} to event.getWhoClicked().getOpenInventory().getTopInventory() if name of {_top} is "&9&lWYMIANA": set {_rawSlot} to event.getRawSlot() if {_rawSlot} is smaller than 0: stop set {_p} to event.getWhoClicked() set {_clickType} to event.getClick() if "%{_clickType}%" is "number key" or "double click using mouse" or "drop key" or "left mouse button with shift": cancel event stop if {_rawSlot} is smaller than 45: if {_rawSlot} is not 0, 1, 2, 3, 9, 10, 11, 12, 18, 19, 20, 21, 27, 28, 29 or 30: cancel event if {_rawSlot} is 36: TRADE_setStatus({_p}, {@ACCEPT}) if {_rawSlot} is 37: if {trade::%{_p}%::status} is not "perm": set {_p2} to {trade::%{_p}%::with} TRADE_saveItems({_p}) TRADE_saveItems({_p2}) TRADE_setStatus({_p}, "Odrzuc") give {deposit::%{_p}%::*} to {_p} give {deposit::%{_p2}%::*} to {_p2} clear {deposit::%{_p}%::*} and {deposit::%{_p2}%::*} if {_rawSlot} is 0, 1, 2, 3, 9, 10, 11, 12, 18, 19, 20, 21, 27, 28, 29 or 30: if {trade::%{_p}%::status} is "Perm": cancel event stop set {_p2} to {trade::%{_p}%::with} wait 1 tick #set {_p2}'s current inventory's slot {_rawSlot} + 5 to event.getCurrentItem() #Tablica na druga strone. TRADE_refreshGUI({_p}) TRADE_setStatus({_p}, {@SETTING}) command /handel []: trigger: if arg 1 is not set: send "&8(◕^^◕)" send "&7/handel &8Doprowadza do wymiany z graczem." send "&7/handel odbierz &8Odbierasz itemy z depozytu." stop if arg 1 is "odbierz": if size of {deposit::%player%::*} is larger than 0: give {deposit::%player%::*} to player clear {deposit::%player%::*} send "{@TAG} &7Otrzymales swoje przedmioty." stop send "{@TAG} &7Nie masz zadnych przedmiotow w depozycie." stop set {_p} to arg parsed as offlineplayer if {_p} is online: TRADE_trade(player, {_p})