US3R . 25 Opublikowano 11 sierpnia 2019 Udostępnij Opublikowano 11 sierpnia 2019 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 Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 neQYT 63 Opublikowano 11 sierpnia 2019 Udostępnij Opublikowano 11 sierpnia 2019 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 US3R . 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221292 Udostępnij na innych stronach Więcej opcji udostępniania...
0 xAxee 1968 Opublikowano 11 sierpnia 2019 Udostępnij Opublikowano 11 sierpnia 2019 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 Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221297 Udostępnij na innych stronach Więcej opcji udostępniania...
0 US3R . 25 Opublikowano 11 sierpnia 2019 Autor Udostępnij Opublikowano 11 sierpnia 2019 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 Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221345 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Gość ZiemniaQ Opublikowano 11 sierpnia 2019 Udostępnij Opublikowano 11 sierpnia 2019 (edytowane) 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 11 sierpnia 2019 przez ZiemniaQ Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221350 Udostępnij na innych stronach Więcej opcji udostępniania...
0 US3R . 25 Opublikowano 11 sierpnia 2019 Autor Udostępnij Opublikowano 11 sierpnia 2019 @LuckyPotato zaczekaj jeżelibyś mógł to wytłumaczysz zapisywanie liczb i stringów? jestem totalnie zielony w yaml dopiero zaczynam 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 Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221352 Udostępnij na innych stronach Więcej opcji udostępniania...
0 xAxee 1968 Opublikowano 11 sierpnia 2019 Udostępnij Opublikowano 11 sierpnia 2019 (edytowane) 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 11 sierpnia 2019 przez xAxee Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221354 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Gość ZiemniaQ Opublikowano 11 sierpnia 2019 Udostępnij Opublikowano 11 sierpnia 2019 (edytowane) 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 11 sierpnia 2019 przez ZiemniaQ Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221355 Udostępnij na innych stronach Więcej opcji udostępniania...
0 US3R . 25 Opublikowano 11 sierpnia 2019 Autor Udostępnij Opublikowano 11 sierpnia 2019 @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). Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221357 Udostępnij na innych stronach Więcej opcji udostępniania...
0 xAxee 1968 Opublikowano 11 sierpnia 2019 Udostępnij Opublikowano 11 sierpnia 2019 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): ... Cytuj Odnośnik do komentarza https://skript.pl/temat/34392-sprawdzenie-slotu/#findComment-221361 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
US3R . 25
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ę:
I chcę, aby w gui po kliknięciu slotu 11 (-1 czyli 10) wykonywał się executeCommand spod 1.
on inventory click: inventory name of current inventory of player is "%{config.guiName}%": cancel eventOdnośnik do komentarza
https://skript.pl/temat/34392-sprawdzenie-slotu/Udostępnij na innych stronach
9 odpowiedzi na to pytanie
Rekomendowane odpowiedzi
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ą.