Po pierwsze, skygen to taki tryb na serwerach minecraft, gdzie jest się na wyspach i trzeba zbierać z generatorów itemy, utwardzać je, ulepszać ekwipunek i walczyć z innymi graczami. Skrypt ma polegać na czymś takim, że gracz trzymający jakiś wyznaczony item w ręce wyświetlą mu się różne itemy w gui pod komendą /ulepszgui. W tym gui będzie mógł to ulepszyć na kolejny item w kolejności którą ustawiłem za koszt który będzie się zwiększał. Koszt, item ulepszenia i nagroda miała być wyświetlana w gui.
Po drugie, wiem że kod nie jest dobrze zrobiony ani nic, i to miała być taka wersja testowa by sprawdzić czy w ogóle działa i potem pobawić się z nbt. Dziękuje, już nie będę się raczej pytał chatgpt o skript
Kod:
command /ulepszgui [<offlineplayer>]:
trigger:
if arg is not set:
send "&cPoprawne użycie: /ulepszgui <gracz>"
stop
set {_player} to arg
set {_uuid} to uuid of {_player]
if {poziom.%{_uuid}%} is not set:
set {poziom.%{_uuid}%} to 0
set {_heldItem} to slot 0 of inventory of {_player}
set {_world} to world of {_player}
set {_baseLoc} to location at 15, 1, 28 in {_world}
set {_costLoc} to location at 16, 1, 30 in {_world}
set {_baseLoc2} to location at 15, 1, 27 in {_world}
set {_costLoc2} to location at 16, 1, 29 in {_world}
set {_baseLoc3} to location at 15, 1, 26 in {_world}
set {_costLoc3} to location at 16, 1, 28 in {_world}
set {_poziom} to 0
loop 27 times:
if {_heldItem} is slot loop-number - 1 of block at {_baseLoc}:
set {_poziom} to loop-number - 1
loop 27 times:
if {_heldItem} is slot loop-number - 1 of block at {_baseLoc2}:
set {_poziom} to 26 + (loop-number - 1)
loop 3 times:
if {_heldItem} is slot loop-number - 1 of block at {_baseLoc3}:
set {_poziom} to 53 + (loop-number - 1)
if {_poziom} > 56:
set {_poziom} to 56
if {_poziom} < 26:
set {_requiredItem} to slot {_poziom} of block at {_baseLoc}
set {_costItem} to slot {_poziom} of block at {_costLoc}
set {_rewardItem} to slot {_poziom} + 1 of block at {_baseLoc}
else if {_poziom} = 26:
set {_requiredItem} to slot {_poziom} of block at {_baseLoc}
set {_costItem} to slot 26 of block at {_costLoc}
set {_rewardItem} to slot 0 of block at {_baseLoc2}
else if {_poziom} < 54:
set {_requiredItem} to slot {_poziom} - 27 of block at {_baseLoc2}
set {_costItem} to slot {_poziom} - 27 of block at {_costLoc2}
set {_rewardItem} to slot {_poziom} - 26 of block at {_baseLoc2}
else if {_poziom} = 54:
set {_requiredItem} to slot {_poziom} - 27 of block at {_baseLoc2}
set {_costItem} to slot {_poziom} - 27 of block at {_costLoc2}
set {_rewardItem} to slot 0 of block at {_baseLoc3}
else:
set {_requiredItem} to slot {_poziom} - 27 of block at {_baseLoc3}
set {_costItem} to slot {_poziom} - 27 of block at {_costLoc3}
set {_rewardItem} to slot {_poziom} - 54 of block at {_baseLoc3}
# Sprawdzenie czy można ulepszyć
set {_canUpgrade} to false
if {_heldItem} is {_requiredItem}:
if {_player} has {_costItem}:
set {_canUpgrade} to true
if {_canUpgrade}:
send "&aMożesz ulepszyć!" to {_player}
set {_arrowItem} to slot 1 of block at location 15, 2, 28 in {_world}
else:
send "&cNie możesz ulepszyć!" to {_player}
set {_arrowItem} to slot 0 of block at location 15, 2, 28 in {_world}
set {_inv} to chest inventory with 5 rows named "Ulepszanie"
if {_requiredItem} is not air:
set slot 39 of {_inv} to {_requiredItem}
if {_costItem} is not air:
set slot 38 of {_inv} to {_costItem}
if {_rewardItem} is not air:
set slot 41 of {_inv} to {_rewardItem}
if {_arrowItem} is not air:
set slot 40 of {_inv} to {_arrowItem}
set slot 16 of {_inv} to emerald block named "&aUlepsz (Poziom %{_poziom}%)"
set slot 17 of {_inv} to redstone block named "&cResetuj poziom"
open {_inv} to {_player}
on inventory click:
if name of event-inventory is "Ulepszanie":
cancel event
set {_player} to event-player
set {_uuid} to uuid of {_player}
set {_poziom} to {poziom.%{_uuid}%}
if {_poziom} > 56:
set {_poziom} to 56
set {_world} to world of {_player}
set {_baseLoc} to location at 15, 1, 28 in {_world}
set {_costLoc} to location at 16, 1, 30 in {_world}
set {_baseLoc2} to location at 15, 1, 27 in {_world}
set {_costLoc2} to location at 16, 1, 29 in {_world}
set {_baseLoc3} to location at 15, 1, 26 in {_world}
set {_costLoc3} to location at 16, 1, 28 in {_world}
if {_poziom} < 26:
set {_requiredItem} to slot {_poziom} of block at {_baseLoc}
set {_costItem} to slot {_poziom} of block at {_costLoc}
set {_rewardItem} to slot {_poziom} + 1 of block at {_baseLoc}
else if {_poziom} = 26:
set {_requiredItem} to slot {_poziom} of block at {_baseLoc}
set {_costItem} to slot 26 of block at {_costLoc}
set {_rewardItem} to slot 0 of block at {_baseLoc2}
else if {_poziom} < 54:
set {_requiredItem} to slot {_poziom} - 27 of block at {_baseLoc2}
set {_costItem} to slot {_poziom} - 27 of block at {_costLoc2}
set {_rewardItem} to slot {_poziom} - 26 of block at {_baseLoc2}
else if {_poziom} = 54:
set {_requiredItem} to slot {_poziom} - 27 of block at {_baseLoc2}
set {_costItem} to slot {_poziom} - 27 of block at {_costLoc2}
set {_rewardItem} to slot 0 of block at {_baseLoc3}
else:
set {_requiredItem} to slot {_poziom} - 27 of block at {_baseLoc3}
set {_costItem} to slot {_poziom} - 27 of block at {_costLoc3}
set {_rewardItem} to slot {_poziom} - 54 of block at {_baseLoc3}
set {_heldItem} to tool in player's main hand
if index of event-slot is 16:
if {_poziom} >= 56:
send "&cOsiągnąłeś maksymalny poziom ulepszenia!" to {_player}
stop
if {_requiredItem} is air:
send "&cBrakuje wymaganego przedmiotu w skrzynce!" to {_player}
stop
if {_costItem} is air:
send "&cBrakuje kosztu ulepszenia w skrzynce!" to {_player}
stop
if {_rewardItem} is air:
send "&cBrakuje nagrody w skrzynce!" to {_player}
stop
if {_heldItem} is not {_requiredItem}:
send "&cMusisz mieć odpowiedni miecz w ręce!" to {_player}
stop
if {_player} does not have {_costItem}:
send "&cNie masz potrzebnego przedmiotu (kosztu) do ulepszenia!" to {_player}
stop
remove 1 of {_costItem} from {_player}
remove 1 of {_requiredItem} from {_player}
give {_rewardItem} to {_player}
add 1 to {poziom.%{_uuid}%}
send "&aPomyślnie ulepszono miecz do poziomu %{_poziom + 1}%" to {_player}
close inventory of {_player}
else if index of event-slot is 17:
set {poziom.%{_uuid}%} to 0
send "&aPoziom ulepszenia został zresetowany." to {_player}
close inventory of {_player}
Po trzecie, wcześniej tak myślałem że chatgpt może mi to wygenerować, ale teraz już wiem ogólnie, że przy jakim kolwiek bardziej zaawansowanym kodzie chatgpt nie pomaga. Już spędziłem nad tym 2 dni siedzenia i nic nie dało, dlatego napisałem o tym tutaj.