Linijka 19 - zmienna {_p} nie istnieje, funkcja dostaje nulla:
(...) and "&6Status: %chatStatus({_p}, "dzialki"})%"
Swoją drogą - jeżeli chcesz zmieniać tylko jedną linijkę lore (czyli tak naprawdę jeden przedmiot) - powinieneś zrobić sobie osobną funkcję do tego, zamiast kolejny raz wykonywać komendę, która tworzy od nowa całe inventory, np.
function chatStatus(p: player, s: string) :: string:
if {alerty::player::%{_p}%::%{_s}%} is not set:
set {alerty::player::%{_p}%::%{_s}%} to true
if {alerty::player::%{_p}%::%{_s}%} is false:
return "&cWylaczone"
return "&aWlaczone"
function changeStatus(p: player, s: string, slot: integer, item: item):
#tutaj zmieniamy status zmiennej
if {alerty::player::%{_p}%::%{_s}%}:
set {alerty::player::%{_p}%::%{_s}%} to false
else:
set {alerty::player::%{_p}%::%{_s}%} to true
#tutaj pobieramy sobie lore z itemu i zmieniamy ostatnią wartość (czyli status) na nowy status pobrany z funkcji
set {_lore::*} to lore of {_item}
set last element of {_lore::*} to "&6Status: %chatStatus({_p}, {_s})%"
#zmieniamy lore w itemie
set lore of {_item} to {_lore}
#ustawiamy dany slot od nowa (z nowym lore) !nie trzeba używać format slota, wystarczy zmienić przedmiot w taki sposób, a TuSKe i tak zachowa dla niego zapisane efekty po kliknięciu.
set slot {_slot} of {_p} to {_item}
command /ustawieniaczatu [<text>]:
trigger:
open virtual chest inventory with 4 rows named "&8[&6✘&8] &fChat &8[&6✘&8]" to player
set {_lore::*} to "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %chatStatus({_p}, "dzialki"})%"
set {_item} to paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore {_lore::*}
#zamiast wykonywać ponownie tą komendę, wywołujemy funkcję, która zmieni status zmiennej i zaaktualizuje przedmiot w slocie.
format gui slot 12 of player with {_item} to run function changeStatus(player, "dzialki", 12, {_item})