Skocz do zawartości
  • 0

Problem z function (return i wywyoływanie przez GUI)


Pytanie

Tak jak w temacie, mam problem ze stworzeniem działajacej funkcji Z GUI OD TUSKE (*) - tj. Proste działanie - Skript zczytuje wartość i pokazuje Ci return włączone/wyłączone - kiedy klikniesz na dany item w GUI powinien on zmieniać varriables i pokazywać in real time zmianę z wyłączone na wlączone i vicaversa.
Prosciutkie pewnie, chciałbym by ktoś w sensowny sposób wytłumaczył mi o co w tym chodzi. Dziękuję bardzo, mój skript:

 

Odnośnik do komentarza
https://skript.pl/temat/37245-problem-z-function-return-i-wywyo%C5%82ywanie-przez-gui/
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

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})

 

Odnośnik do komentarza
https://skript.pl/temat/37245-problem-z-function-return-i-wywyo%C5%82ywanie-przez-gui/#findComment-237121
Udostępnij na innych stronach

  • 0

Cześć, bardzo dziękuję za odpowiedź, mimo wszystko mam ten sam komunikat jaki miałem wcześniej bawiąc się różnymi rzeczami, generalnie wyskakuje mi to i za bardzo nie wiem czy brakuje mi jakiegoś pluginu, czy coś źle jest napisane, czy TuSke mi nie czyta, czy co.. Proszę o pomoc i raz jeszcze dziekuję!

VvRfIm8.png

Poza tym - co ciekawe - pojawia mi się item w inventory gracza -

hpAmefF.png

Co jest nie tak? - ew. wyskakuje (gdy zrobie double quote) variable cannot be used here
Usunąłem } - bo było na końcu tego, teraz zrobilem z double quote i dalej wyskakuje mi pierwszy komunikat, że ostatni element lore nie moze byc zmieniony
i ostatnie pytanie - jeśli chcę dodać kolejny item z innym lorem i variablesem - co zrobić? ( z innym lorem w zamyśle ta pierwsza linijka zamiast &6wkroczenia na dzialke)

Edytowane przez HeezQ
HeezQ

Wstawiam na obraz bezpośredni

Notatka dodana przez HeezQ

Odnośnik do komentarza
https://skript.pl/temat/37245-problem-z-function-return-i-wywyo%C5%82ywanie-przez-gui/#findComment-237144
Udostępnij na innych stronach

  • 0

hmm

set {_item} to paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %chatStatus({_p}, ""dzialki"")%"

lub

set {_dzialki-status} to chatStatus({_p}, "dzialki")
set {_item} to paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %{_dzialki-status}%"

ogolnie nie musisz zawsze ustawiać do zmiennej itemów (nw czy wiesz) i możesz zrobić tak (tak samo z lore)

format gui slot 12 of player with paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %chatStatus({_p}, ""dzialki"")%" to run player command "ustawieniaczatu 1"
14 godzin temu, kiroxtv napisał:

i ostatnie pytanie - jeśli chcę dodać kolejny item z innym lorem i variablesem - co zrobić? ( z innym lorem w zamyśle ta pierwsza linijka zamiast &6wkroczenia na dzialke)

co do tego to robisz to jako item tak jak wyżej lub tak jak robiłeś tylko inne nazwy zmiennych (chyba że o co innego ci chodzi)

Odnośnik do komentarza
https://skript.pl/temat/37245-problem-z-function-return-i-wywyo%C5%82ywanie-przez-gui/#findComment-237163
Udostępnij na innych stronach

  • 0
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):
	if {alerty::player::%{_p}%::%{_s}%}:
		set {alerty::player::%{_p}%::%{_s}%} to false
	else:
		set {alerty::player::%{_p}%::%{_s}%} to true
	set {_lore::*} to lore of {_item}
	set {_size} to size of {_lore::*}
	set {_lore::%{_size}%} to "&6Status: %chatStatus({_p}, {_s})%"
	set slot {_slot} of current inventory of {_p} to {_item} with lore {_lore::*}
            
command /ustawieniaczatu [<text>]:
	trigger:
		open virtual chest inventory with 4 rows named "&8[&6✘&8] &fChat &8[&6✘&8]" to player
		set {_status} to chatStatus(player, "dzialki")
		set {_item} to paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %{_status}%"
		format gui slot 12 of player with {_item} to run function changeStatus(player, "dzialki", 12, {_item})

Błąd pierwszy odnosi się do ostatniej wartości ze zmiennej - liczyłem na to że da się ją zmienić - otóż nie, trzeba zapisać rozmiar zmiennej ręcznie i ustawić zmienną (zakładając że status danego ustawienia będziesz miał zawsze w ostatniej linijce).

Drugi błąd dotyczy funkcji w tekście. Nie wiem dlaczego, ale Skript czasem dostaje pierdolca w takich przypadkach - wtedy jedyne co nam pozostaje to funkcję najpierw zapisać do zmiennej, a dopiero potem tą zmienną wstawić do tekstu (w tym przypadku lore)

 

 

1 godzinę temu, xAxee napisał:

ogolnie nie musisz zawsze ustawiać do zmiennej itemów (nw czy wiesz) i możesz zrobić tak (tak samo z lore)


format gui slot 12 of player with paper of unbreaking 10 named "&8[&6✘&8] &fDzialki &8[&6✘&8]" with lore "&fWylacz wiadomosci &6wkroczenia na dzialke" and "&6Status: %chatStatus({_p}, ""dzialki"")%" to run player command "ustawieniaczatu 1"

Owszem, nie musi. Ale ja poradziłem mu, żeby tak robił, bo podobnie jak Skript przy funkcjach - tak TuSKe przy itemach dostaje pierdolca. Jeżeli wstawimy gotowy przedmiot w zmiennej to wszystko jest okej, ale gdy tylko dodamy to tak jak w twoim przykładzie (powiedzmy w ilości trzech linijek) to skrypt będzie ładował się nawet kilkanaście sekund.

 

 

Odnośnik do komentarza
https://skript.pl/temat/37245-problem-z-function-return-i-wywyo%C5%82ywanie-przez-gui/#findComment-237172
Udostępnij na innych stronach

  • 0
Godzinę temu, PanMaruda napisał:

Owszem, nie musi. Ale ja poradziłem mu, żeby tak robił, bo podobnie jak Skript przy funkcjach - tak TuSKe przy itemach dostaje pierdolca. Jeżeli wstawimy gotowy przedmiot w zmiennej to wszystko jest okej, ale gdy tylko dodamy to tak jak w twoim przykładzie (powiedzmy w ilości trzech linijek) to skrypt będzie ładował się nawet kilkanaście sekund.

A no chyba że tak. Dlatego #skQuery 

Odnośnik do komentarza
https://skript.pl/temat/37245-problem-z-function-return-i-wywyo%C5%82ywanie-przez-gui/#findComment-237179
Udostępnij na innych stronach

  • 0
1 godzinę temu, xAxee napisał:

A no chyba że tak. Dlatego #skQuery 

Wiesz, jeżeli potrzebujesz zrobić tylko zwykłe klikalne GUI bez żadnych udziwnień (jak w temacie) to TuSKe > wszystko inne - jeden efekt, jedna linijka i masz wszystko gotowe - a set slota trzeba konfigurować od zera.
Jedyny minus to taki że TuSKe jest stare i drobne błędy występują, tylko że one nie są żadnym problemem, a nawet pomagają bo kod jest bardziej przejrzysty jak masz długą linijkę rozbitą na dwie części.

Odnośnik do komentarza
https://skript.pl/temat/37245-problem-z-function-return-i-wywyo%C5%82ywanie-przez-gui/#findComment-237198
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...