Skocz do zawartości
  • 0

Sprawdzenie slotu


US3R .
 Udostępnij

Pytanie

Witam właśnie tworze pewien skrypt, nawet już wcześniej miałem z tym problem i się poddałem, lecz spróbuję tutaj odszukać pomocy.

Mój skrypt posiada config i w nim znajduje się:
 

Spoiler
1:
  slotInGui: '11'
  itemInSlot: diamond pickaxe
  executeCommand: test

 

 

I chcę, aby w gui po kliknięciu slotu 11 (-1 czyli 10) wykonywał się executeCommand spod 1.

Spoiler
on inventory click:
	inventory name of current inventory of player is "%{config.guiName}%":
		cancel event

 

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
7 godzin temu, US3R . napisał:
on inventory click:
	inventory name of current inventory of player is "%{config.guiName}%":
		cancel event

 

on inventory click:
	inventory name of current inventory of player is "%{config.guiName}%":
		if clicked slot is 10:
			cancel event
			execute player command "/komenda"   #tutaj mogłem błąd popełnić z tabem

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 0

Lepiej byłoby gdyby ta 1 to był twój slot ale tak też można zrobic

on inventory click:
    If name... :
        Cancel event 
        Loop 27 times: #tyle ile masz tych sekcji jak 1
            Set {_x} to yaml value "%loop-number%.SlotInGui" from file "config" 
            If "%{_x}%" is "%clicked slot%":
                Set {_cmd} to yaml value "%loop-number%.command" from file "config" 
                Execute player command "%{_cmd}%" 

Pisane z telefonu 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 0
6 godzin temu, xAxee napisał:

Lepiej byłoby gdyby ta 1 to był twój slot ale tak też można zrobic

on inventory click:
    If name... :
        Cancel event 
        Loop 27 times: #tyle ile masz tych sekcji jak 1
            Set {_x} to yaml value "%loop-number%.SlotInGui" from file "config" 
            If "%{_x}%" is "%clicked slot%":
                Set {_cmd} to yaml value "%loop-number%.command" from file "config" 
                Execute player command "%{_cmd}%" 

Pisane z telefonu 

		loop 27 times:
			set {_x} to yaml value "xxx.%loop-value%.slotInGui" from file "{@loc}"
			set {_x} to {_x} parsed as number
			set {_x} to {_x} -1
			if "%{_x}%" is "%clicked slot%":
				set {_cmd} to yaml value "xxx.%loop-value%.nameInSlot" from file "{@loc}" 
				send "%{_cmd}%"

nie działa nic 0 błędów

Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 0

Pierwsza rzecz - patrz jak zapisujesz yaml - tekst ≠ liczba ≠ boolean

#To jest numer slota (liczba całkowita, integer). Ty zapisałeś go jako tekst (w apostrofach ' '). Błąd, liczby można zapisywać normalnie.
  slotInGui: '11'

#To jest nazwa przedmiotu (tekst, string). A zapisałeś go bez apostrofów - kolejny błąd.
  itemInSlot: diamond pickaxe

#To jest komenda (również tekst) i również zapisana bez apostrofów, pomimo że powinna :__:
  executeCommand: test

 

Skoro yaml jest zapisany poprawnie, można tworzyć GUI, najlepiej korzystając z TuSKe, a nie SkQuery. Trzeba pobrać wartości z yaml.

1:
  slot: 10
  item: 'diamond pickaxe'
  cmd: '/komenda'
		cieżka do pliku yaml
		#
options:
	file: plugins/Skript/test.yml


on rightclick:
	open virtual chest inventory with 2 row to player

			#Gui jest otwarte, trzeba pobrać wartości z yaml:
			#
	set {_slot} to yaml value "1.slot" from file "{@file}"
	set {_item} to yaml value "1.item" from file "{@file}"
	set {_cmd} to yaml value "1.cmd" from file "{@file}"

	send "%{_slot}% %{_item}% %{_cmd}%"

			#potrzebne wartości zapisane do zmiennych, formatowanie GUI:
			#
	format gui slot {_slot} of player with ({_item} parsed as item) to run player command {_cmd}

Dziękuję za uwagę.

Edytowane przez ZiemniaQ
Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 0

@LuckyPotato zaczekaj

jeżelibyś mógł to wytłumaczysz zapisywanie liczb i stringów? jestem totalnie zielony w yaml dopiero zaczynam :v
do zapisu każdej wartości używałem 

set yaml value "list.1.slotInGui" from file "{@loc}" to "11"

a co do tematu to chodzi mi o sprawdzenie w liście "list" każdego "slotInGui"
nie wiem jak to wytłumaczyć wytłumaczę jakbym to chciał zrobić językiem "skriptowym??
 

Spoiler
loop {list::*}:
    set {_slotInGui.%loop-value%} to {list.%loop-value%.slotInGui}
    if "%clicked slot%" is {_slotInGui.%loop-value%}:

       send "wykonanie komendy z pasujacego sloty ktory zostal klikniety"

 

nie wiem po prostu jak to zdefiniować w skripcie

Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 0

set yaml value "list.1.slotInGui" from file "{@loc}" to 11

 

loop {lista::*}:
	if clicked slot is yaml value "list.%loop-value%.SlotInGui" from file "file"
	
	#### or
	
loop {lista::*}:
	set {_s::%loop-value%} to yaml value "list.%loop-value%.SlotInGui" from file "file"
	if "%clicked slot%" is "%{_s::%loop-value%}%":

 

Edytowane przez xAxee
Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 0

Powiedzmy dla przykładu (yml):

list:
  1:
    slot: 10
    item: 'diamond pickaxe'
    cmd: '/komenda'

  22:
    slot: 11
    item: 'diamond boots'
    cmd: '/komenda'

  dadada:
    slot: 12
    item: 'diamond axe'
    cmd: '/komenda'

  jakis_tekst:
    slot: 13
    item: 'diamond helmet'
    cmd: '/komenda'

Jeżeli chcesz to zrobić w ten sposób to trzeba pobrać listę tych wszystkich indeksów (1, 22, dadada, jakis_tekst), w których powtarzają się potrzebne wartości. SkUtilities masz taką funkcję:

set {_indeksy::*} to yaml nodes "lista" from file "{@file}"

Teraz masz je w powyższej zmiennej, zapętlasz ją i pobierasz potrzebne wartości:

options:
	file: plugins/Skript/test.yml

on rightclick:
	open virtual chest inventory with 2 row to player

			#Pobierasz indeksy z yaml i je zapętlasz:
			#
	set {_indeksy::*} to yaml nodes "lista" from file "{@file}"
	loop {_indeksy::*}:

				#Tu robisz dokładnie to samo, tylko zamiast tej jedynki wstawiasz wynik pętli:
				#
		set {_slot} to yaml value "lista.%loop-value%.slot" from file "{@file}"
		set {_item} to yaml value "lista.%loop-value%.item" from file "{@file}"
		set {_cmd} to yaml value "lista.%loop-value%.cmd" from file "{@file}"

			#formatowanie slotu z wartościami w pętli
			#
		format gui slot {_slot} of player with ({_item} parsed as item) to run player command {_cmd}

 

Edytowane przez ZiemniaQ
Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 0

@LuckyPotato ehh, nie chodzi mi o gui + używanie format slotu, może dam cały kod...

options:
	loc: ../../wsEffects/config.yml
on load:
	if folder "../../wsEffects" doesn't exists:
		create folder "../../wsEffects"
		send "[wsEffects] Stworzono folder" to console
	if file "../../wsEffects/config.yml" doesn't exists:
		create folder "../../wsEffects/config.yml"
		send "[wsEffects] Stworzono plik konfiguracyjny" to console
	if {wsEffects.loaded} is not set:
		set yaml value "Config" from file "{@loc}" to ""
		set yaml value "Config.guiName" from file "{@loc}" to "&8» &2Efekty"
		set yaml value "Effects" from file "{@loc}" to ""
		set yaml value "Effects.1.slotInGui" from file "{@loc}" to "11"
		set yaml value "Effects.1.itemInSlot" from file "{@loc}" to "diamond pickaxe"
		set yaml value "Effects.1.nameInSlot" from file "{@loc}" to "&8» &6Haste 2"
		set {wsEffects.guiName} to yaml value "Config.guiName" from file "{@loc}"
		set {wsEffects::effects::*} to yaml nodes "Effects" from file "{@loc}"
		loop {wsEffects::effects::*}:
			set {wsEffects.%loop-value%.slotInGui} to yaml value "Effects.%loop-value%.slotInGui" from file "{@loc}"
			set {wsEffects.%loop-value%.itemInSlot} to yaml value "Effects.%loop-value%.itemInSlot" from file "{@loc}"
			set {wsEffects.%loop-value%.nameInSlot} to yaml value "Effects.%loop-value%.nameInSlot" from file "{@loc}"
		set {wsEffects.loaded} to true
command /efekty [<text>]:
	trigger:
		open chest with 3 rows named "%{wsEffects.guiName}%" to player
		wait 1 ticks
		loop 27 times:
			set slot loop-number -1 of player's current inventory to black glass named " "
		loop {wsEffects::effects::*}:
			set {_item} to {wsEffects.%loop-value%.itemInSlot} parsed as item type
			set {_slot} to {wsEffects.%loop-value%.slotInGui} parsed as number
			set {_slot} to {_slot} - 1
			set slot {_slot} of player's current inventory to {_item} named "%{wsEffects.%loop-value%.nameInSlot}%"
		stop
command /wsEffects [<text>]:
	permission: *
	permission message: &8» &cBrak dostepu!
	trigger:
		if arg-1 is not set:
			send "&8» &cUzycie: /wsEffects create/reload"
			stop
		if arg-1 is not "create" or "reload":
			send "&8» &cUzycie: /wsEffects create/reload"
			stop
		if arg-1 is "create":
			clear {wsEffects.loaded}
			send "&8» &aTworzenie pliku konfiguracyjnego!"
			execute console command "sk reload %script%"
			send "&8» &aStworzono!"
			stop
		if arg-1 is "reload":
			send "&8» &aPrzeladowanie skryptu!"
			set {wsEffects.guiName} to yaml value "Config.guiName" from file "{@loc}"
			set {wsEffects::effects::*} to yaml nodes "Effects" from file "{@loc}"
			loop {wsEffects::effects::*}:
				set {wsEffects.%loop-value%.slotInGui} to yaml value "Effects.%loop-value%.slotInGui" from file "{@loc}"
			send "&8» &aPrzeladowano!"
			stop
on inventory click:
	inventory name of current inventory of player is "%{wsEffects.guiName}%":
		cancel event

chcę aby przy dowolnym kliknięciu w gui z zmiennej "{wsEffects.guiName}" sprawdzało (kliknięty slot, każdy "slotInGui" z listy która jest w configu, po znalezieniu tej samej wartości "slotInGui" i clicked slot, aby wykonywało resztę effectów które sobie podam).

Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 0
1 minutę temu, US3R . napisał:

chcę aby przy dowolnym kliknięciu w gui z zmiennej "{wsEffects.guiName}" sprawdzało (kliknięty slot, każdy "slotInGui" z listy która jest w configu, po znalezieniu tej samej wartości "slotInGui" i clicked slot, aby wykonywało resztę effectów które sobie podam).

loop (yaml nodes "lista" from file "config.yml"):
	set {_slot} to yaml value "lista.%loop-value%.SlotInGui" from file "config.yml"
	if (clicked slot parsed as number) is ({_slot} parsed as number):
		...

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

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