Skocz do zawartości

knugi

Użytkownik
  • Ilość zawartości

    1686
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    106

Treść opublikowana przez knugi

  1. Jasne, z góry zakładam że posiadasz warpy z jakiegoś pluginu, essentials lub innego i chcesz założyć cooldown na daną komendę. Możesz to zrobić w dwojaki sposób. 1. Ustawić to w configu essentialsa, lub innego pluginu jeżeli wspiera. 2. Jeżeli koniecznie chcesz to zrobić w skrypcie to nie możesz nadpisać komendy. Żeby nie nadpisywać komend, tylko operować na nich to najlepiej skorzystać z eventu on command on wywołuje się wtedy gdy gracz wpisze komendę. Później skrypt musi wiedzieć jaką komendą chcesz operować, w tym przypadku warp, więc piszesz warunek if command is "warp": gdy już to mamy, to trzeba przemyśleć jedną kwestię, gracz wpisze warp bez żadnego argumentu to bez sensu żeby miał cooldown, ale jak to zrobić. Trzeba sprawdzić czy gracz wprowadził jakiś argument: if arguments is set: Teraz już mamy pewność że chciał do jakiegoś warpu się teleportować. Teraz możemy zabrać się za robienie cooldownu, Najpierw trzeba anulować event, aby nie nastąpiła teleportacja cancel event Teraz robimy kodzik na cooldown i sprawdzanie pozycji: cancel event send "Nie ruszaj sie przez 3 sekundy!" set {_loc::*} to x-location of player, y-location of player and z-location of player loop 3 times: if {_stop} is set: send "Ruszyles sie!" stop if difference between x-location of player and {_loc::1} is larger than 0.5: set {_stop} to true if difference between y-location of player and {_loc::2} is larger than 0.5: set {_stop} to true if difference between z-location of player and {_loc::3} is larger than 0.5: set {_stop} to true wait 1 seconds I dobrze by było doprowadzić do teleportacji i anulować event, lecz gdy wpiszemy uncancel event to wywali Skript błąd, że nie można po użyciu delay. Wtedy trzeba zrobić taki myk, zapisać zmienną, wykonać jeszcze raz komendę, sprawdzić czy zmienna jest ustawiona, zmienną usunąć i zatrzymać kod. Całość by wyglądała w ten sposób: on command: if command is "warp": if arguments is set: if {ctpwarp::%player%} is true: clear {ctpwarp::%player%} stop cancel event send "Nie ruszaj sie przez 3 sekundy!" set {_loc::*} to x-location of player, y-location of player and z-location of player loop 3 times: if {_stop} is set: send "Ruszyles sie!" stop if difference between x-location of player and {_loc::1} is larger than 0.5: set {_stop} to true if difference between y-location of player and {_loc::2} is larger than 0.5: set {_stop} to true if difference between z-location of player and {_loc::3} is larger than 0.5: set {_stop} to true wait 1 seconds set {ctpwarp::%player%} to true execute player command "warp %arguments%"
  2. Gdyż zrobiłeś nieskończoną pętlę Zrobiłeś komendę /warp poczekalnia to nadpisało essentialską komendę, a później wykonujesz z poziomu gracza znowu komendę /warp poczekalnia dlatego występuje tylko napis, ponieważ skrypt wykonuje za gracza komendę którą wpisał
  3. Dobra, jestem chyba zmęczony, bo nie potrzebnie dałem plural po usunięciu jego błąd znikł i wszystko działa prawidłowo I jeszcze znalazłem dodatkowo w zwykłym Skript. https://docs.skriptlang.org/docs.html?search=#ExprTernary Za szybko temat założyłem. Do zamknięcia.
  4. Hejka, znów nadszedł czas by ktoś mi pomógł Kiedyś SkQuerry posiadało fajną funkcję która przy sprawdzaniu boolean mogła nam dać jakiś obiekt bądź tekst. https://docs.skunity.com/syntax/search/id:1351 %boolean%[ ]?[ ]%object%[ ]:[ ]%object% broadcast (player is op ? "&cImportant" : "not that important...") Na 1.12 to działało, lecz zrobiłem maszynę na 1.16.4 i to nie pracuje. Sprawdziłem pliki mojego SkQuery 4.1.8 i posiada dany expression, lecz niestety pluje błędami: [21:46:56] [Server thread/INFO]: Line 13: (evo.sk) [21:46:56] [Server thread/INFO]: Can't understand this expression: 'true ? "Tak" : "Nie"' [21:46:56] [Server thread/INFO]: Line: set {_1} to true ? "Tak" : "Nie" Myślę jak to ominąć, i wiem! Przecież i tak korzystam z skript-reflect, patrzę do xAxee jak się robi własne expressiony i zrobiłem coś takiego: plural expression [knugi] condexpr %boolean% where %object% lub %object%: return type: object get: if expr-1 is true: return expr-2 stop if expr-1 is false: return expr-3 stop Lecz nie może być tak kolorowo i prosto. Ehh znowóż błędy: [21:49:40] [Server thread/INFO]: Line 13: (evo.sk) [21:49:40] [Server thread/INFO]: {_1} can only be set to one object, not more [21:49:40] [Server thread/INFO]: Line: set {_1} to condexpr true where "tak" lub "nie" Brakuje mi pomysłów, to jest według mnie wygodne rozwiązanie zamiast pisać 6 linijek czy bóg wie ile linijek Pozdrawiam #Knugi i z góry dziękuje za każde trafne bądź mniej propozycje
  5. Ogólnie to nie zrobisz tak. Skript musi wiedzieć co chcesz założyć i trzeba w kodzie napisać player's helmet tak jak wcześniej napisałem. W zmiennej {_b} masz ustawiony item type więc przedmiot może być w zmiennej. Ale żeby ustawić player's helmet to musi być to sztywno napisane w kodzie. Ewentualnie, mówisz o założeniu przedmiotu, jeżeli nie chcesz ustawiać 4 różnych warunków, jest taki effect jak equip - on powoduje, że zakłada dany przedmiot od razu na gracza: https://docs.skriptlang.org/effects.html?search=#EffEquip wtedy kod będzie wyglądał tak: set {_1} to "iron helmet" parsed as item type set {_2} to "diamond chestplate" parsed as item type set {_3} to "leather leggings" parsed as item type set {_4} to "gold boots" parsed as item type loop 4 times: equip player with {_%loop-number%} //Ps. jeżeli dalej nie wierzysz, że nie można użyc player's helmet jako zmiennej by z tej zmiennej można było ustawić hełm gracza zajrzyj do dokumentacji: https://docs.skriptlang.org/expressions.html?search=#ExprArmorSlot Jest tam na sztywno napisane %living entity%'s helmet To tylko taka mała informacja dla potomnych
  6. Ale co z tego chcesz osiągnąć? Ustawiasz tylko zmienne, nic to w sumie nie robi. Chyba, że chcesz ustawić hełm gracza z zmiennej b to wtedy: set player's helmet to {_b}
  7. Coś takiego u mnie działa: on script load: set {kozak::replace::1} to "leather" set {kozak::replace::2} to "iron" set {kozak::replace::3} to "diamond" set {kozak::replace::4} to "gold" set {kozak::replace::5} to "netherite" on inventory click: set {_cb} to index of clicked slot set {_i} to clicked slot lepsze(player, {_cb}, {_i}) function lepsze(p:player, nr:number, i:item): if {_i} is any helmet or any chestplate or any leggings or any boots: loop {kozak::replace::*}: if "%{_i}%" contains loop-value: set {_add} to (loop-index parsed as integer) + 1 if {kozak::replace::%{_add}%} is not set: stop exit loop if {_add} is not set: stop set {_type} to "%type of {_i}%" replace all {kozak::replace::%{_add}-1%} with {kozak::replace::%{_add}%} in {_type} set {_type} to {_type} parsed as item type set {_ench::*} to {_i}'s enchantments broadcast "%{_ench::*}%" set {_name} to {_i}'s name set {_lore::*} to {_i}'s lore if {_name} is set: set name of {_type} to {_name} if {_ench::*} is set: enchant {_type} with {_ench::*} if {_lore::*} is set: add {_lore::*} to lore of {_type} set slot {_nr} of {_p}'s inventory to {_type}
  8. Mi się zdaje, że expression fall distance działa tylko w evencie on damage. Event on damage jest aktywowany gdy otrzymamy obrażenia, wpadając do wody którą przed chwilą postawiliśmy obrażeń nie otrzymujemy. Lecz nie koniecznie. Dokumentacja Skript mówi, że nie powinno wyrzucić błędu (albo wyrzucić inny). Powiedz nam jaką masz wersję Skripta i wersję serwera, gdyż te wyrażenie jest od Skript 2.5. /ver i /ver sk Lecz jak @Saanjuktestował to być może coś na rzeczy i nie będzie działać. Nic nie przychodzi mi do głowy na ten moment jak by można było to ominąć i do czego się doczepić by to sprawnie działało.
  9. knugi

    GUI zjada itemki?

    Zostałem wywołany do tablicy przez autora tematu. Wcześniej czytałem ten temat, lecz dostałem laga mózgu, gdyż myślałem że jest równoznaczne z tym co ja piszę w swoich skryptach. Lecz niestety, te dwa frazy różnią się całkowicie. Pierwszy sprawdza tylko nazwę klikniętego inventory (w przypadku otwartej skrzynki, gdy klikniemy w skrzynkę zwróci nam prawidłową wartość, lecz gdy klikniemy niżej w nasz ekwipunek zwróci nam już nie to co chcemy) Jak już wiesz rozwiązaniem jest: if inventory name of player's current inventory contains "xxx": Przykład powyżej, nie ważne w które inventory klikniemy, zawsze uzyskamy nazwę wyżej otwartego inventory (skrzynki). Taka mała różnica, a potrafi namieszać w głowie.
  10. V 1.3: Nie myślałeś o tym, by wsadzić to w pętle? Cały czas powtarzający się kod, razi trochę w oczy. 2. on inventory click: if name of event-inventory is {@gui_name}: cancel event if event-inventory is player's inventory: cancel event Można zastąpić: on inventory click: if inventory name of player's current inventory is {@gui_name}: cancel event Te same działanie. 3. on rightclick on {@chest_type}: if event-block is {@chest_type}: nie potrzebny warunek. if name of event-block is {@gui_name}: Nie jestem pewny czy zostało to poprawione, ale po restarcie serwera blok utrzymuje swoją nazwę? A i jeszcze jedna ważna sprawa. Napisałeś, że skrypt nie wymaga dodatków, być możliwe, ale wymaga Skript w wersji co najmniej 2.2 gdyż korzysta z funkcji. Warto by było to dopisać Po za tym wszystkich nie mam zastrzeżeń. Skryptu na serwerze nie testowałem, jedynie sprawdziłem jak jest napisany. Jest w porządku, nie bierz krytyki do siebie, tylko postaraj się to poprawić (ewentualnie mnie poprawić jeżeli się mylę). Życzę dalszych sukcesów Pozdrawiam #Knugi P.S Twój post wyżej, tekst jest w czarnym tle i brzydko to wygląda.
  11. knugi

    darmowa ranga

    Pewnie zmieniłeś zmienne, a jeżeli nie to wklej do tego skryptu taką notkę: command /s: trigger: clear {freebogacz::*} użyj raz komendy /s następnie usuń ją z skryptu i powinno działać
  12. knugi

    darmowa ranga

    options: time: 2137 days command /freebogacz: trigger: if {freebogacz::%player%} is not set: set {freebogacz::%player%} to now add {@time} to {freebogacz::%player%} if difference between now and {freebogacz::%player%} is larger than or equal to {@time}: execute console command "lp user %player% parent addtemp bogacz 3d" set {freebogacz::%player%} to now stop send "&aOdebrales juz bonus. Ten bonus mozna odebrac jednorazowo."
  13. Tak jak Coffein napisał. Oraz bym wprowadził opcję link do konfigurowania strony sklepu w wygodnym miejscu. options: http: hhtp://szalonamasakra/sklep #link do strony httpName: www.szalonamasakra.pl/sklep #Wyswietlana nazwa przekierowywujaca na strone Chyba wiesz jak używać, a jak nie to się doszkolisz Dodatkowo, mógłbyś zrobić również na inne pozycje nie tylko rangę. Np gracz zakupi jakiś przedmiot, to brzydko będzie wyglądało: "Gracz knugi zakupil Range Diamentowy kilof 10/10/10" Pozdrawiam #Knugi
  14. Brakuje dwukropków w "if" oraz była źle zmienna wprowadzona. Procentów się używa tylko w tekście jako wywołanie. Prawidłowy kod: (tak na marginesie już się nie używa format slot...) command /drop: trigger: open chest with 4 rows named "DROP z KAMIENIA" to player wait 5 ticks if {drop::tnt::%player%} is "TAK": format slot 0 of player with 1 of 46 named "TNT" with lore "Wypadanie TAK" to run [make player execute command "dropek tnt"] if {drop::tnt::%player%} is "NIE": format slot 0 of player with 1 of 46 named "TNT" with lore "Wypadanie NIE" to run [make player execute command "dropek tnt"]
  15. Całkiem fajny skrypt, przemyślany i napisany z głową. Dobra robota
  16. knugi

    Problem z gui

    Z tego co widzę to masz źle napisany skrypt Inventory click powinien być w ten sposób zrobiony: on inventory click: SPRWADŹ nazwę GUI 1: cancel event clicked slot is 20: WYKONAJ KOD stop clicked slot is 21: WYKONAJ KOD stop SPRAWDŹ nazwę GUI 2: cancel event clicked slot is 44: WYKONAJ KOD Teraz to otworzy Tobie Gui, nawet gdy w zwykłej skrzynce naciśniesz na którykolwiek slot, nie koniecznie w tym inventory co otwiera komenda GUI. Jedynie możesz zrobić debuga, czemu otwiera Tobie drugie GUI, bo według kodu nie powinno być tak, że: Naciskasz 1 slot a wykonuje kod z 21. on inventory click: send "%clicked slot%"
  17. knugi

    Skript - pętle

    mylisz się, Załóżmy, że zmienna wygląda tak: {zmienna::*} loop-index to jest to co znajduje się w * - nie zawsze jest to 1,2,3,4 itd... Ja często używam loop-index jako nazwa gracza i zapisuję sobie w niej jakieś wartości np: set {zmienna::knugi} to random integer between 0 and 10 wtedy loop-index będzie knugi, a loop-value losowa liczba. Pozdrawiam #Knugi
  18. zatem jest lipa. Jakaś spacja musiała się wkraść. możesz jeszcze spróbować replace all " " with "" in {_godz} if "%{_godz}%" is "20":
  19. możesz spróbować if "%{_godz}%" is "20": wtedy musi przejść warunek. Jeżeli dalej nie przejdzie to sprawdź debuga send "%length of {_godz}%" jeżeli wyświetli 2 to wszystko jest w porządku, jeżeli 3 to jest problem.
  20. A może by dodać jakąś małą prowizję za utrzymanie banku i robienie przelewów?
  21. knugi

    Asystent Google

    Jak to nawet koło Google nie stało. fajnie, tylko funkcja ta nie jest wykorzystywana kilkukrotnie tylko raz to mija się z celem robienia funkcji, oraz jest słabe zapotrzebowanie na taką funkcję w innym skrypcie. Według mnie Skript - Nauka Może jedna na 100 tyś osób to wykorzysta. Pozdrawiam #Knugi
  22. @Saanjuk ale ty na pewno testowałeś ten skrypt? Bo gdy się zmieni nazwę rang w options to nie ma prawa przydzielić odpowiedniej wartości gdyż w evencie inventory click ustawiasz zmienną tymczasową {_vip} na {VIP} Nie ma odniesienia do options. set {_vip} to {VIP} na set {_vip} to {@VIP} Druga sprawa to nie jest jakiś błąd, lecz wygodniej by było zrobić funkcję na GUI i wyświetlać ją przez open GUI(player) to player i wtedy nie potrzeba wywoływać komendy if clicked slot is 4: close player's inventory execute player command "/sklep" Kolejna rzecz to ustawiasz zmienną {_name} tylko aby wykonać jeden warunek bądź ustawić nazwę GUI. Można od razu ją wykorzystać w effect: set {_shopgui} to chest inventory with 5 rows named {@sklep} if name of event-inventory is {@sklep}: przecież i tak w options masz cudzysłowia sklep: "&6Sklep za Czas" To chyba tylko tyle, ogólnie dobry skrypt Pozdrawiam Knugi
  23. bym prosił o wszystko co wyświetla /ver sk
  24. @Asteliks89YTbardzo bym prosił o informacje na temat serwera. /ver i /ver sk Pozdrawiam #Knugi
×
×
  • Dodaj nową pozycję...