Skocz do zawartości
  • 0

W jaki sposób mogę zrobić listę regionów,


jakubgross

Pytanie

Cześć.

 

Robię większy skrypt na zarządzanie serwerami. Oto część kodu:

command /serwerpvpoff [<text&gt] [<text&gt]:	permission: serwery.by.kuba	permission message: Nie masz dostępu do tej komędy.	aliases: poff	trigger:		if {pvp} is false:			send "{@t}Serwer PVP jest juz wylaczony."			stop		set {pvp} to false		set {statuspvp} to "&lSerwer PVP jest teraz:&6&mOFF"		send "{@t}Serwer PVP zostanie wylaczony za:"		wait 1 second 		send "{@t}10..."		wait 1 second		send "{@t}9..."		wait 1 second		send "{@t}8..."		wait 1 second		send "{@t}7..."		wait 1 second		send "{@t}6..."		wait 1 second		send "{@t}5..."		wait 1 second		send "{@t}4..."		wait 1 second		send "{@t}3..."		wait 1 second		send "{@t}2..."		wait 1 second		send "{@t}1..."		wait 1 second		execute player command "/rg select serwerpvp" 		execute player command "//set 35:14"		execute player command "/rg select pvp_vip"		execute player command "//set 35:14"		execute player command "/rg select pvp_gracz"		execute player command "//set 35:14"		execute player command "/hd setline pvp 3 &c&lOFF"		execute player command "/hd setline serwerpvp 1 &u&lPVP (&c&lOFF&u&l)"		execute player command "/hd addline serwerpvp &c&l%arg 1%"		broadcast "{@t1}Serwer PVP zostal {@off} &9&lprzez %player% powód: %arg 1%"		broadcast "{@t}Serwer PVP zostal wylaczony! Teleportacja na serwer glowny!" to "pvp"		create timed bar with text "&c&lZostales TP na spawn." to player for 5 seconds		loop all players in world "pvp":			execute console command "spawn %loop-player%"

Czy da się zastąpić nazwy cuboidów zmienną?

Chciałbym stworzyć listę cuboidów, ale nie stety nie wiem jak to zrobić. 

Aha i jeszcze jedno. Zaznaczanie cuboidów działa tylko na świecie gdzie cuboidy. Więc jeżeli mam te regiony ma świecie pvp to jeżeli jestem na spawnie wywala błąd, że nie może znaleść tego regionu. 

Czy można zrobić to jakoś tak, aby działało na wszystkich światach? Jeżeli potrzebujecie cały kod piszcie. 

 

Z góry dzięki za pomoc i pozdrawiam, :)

jakubgross 

Odnośnik do komentarza
Udostępnij na innych stronach

Rekomendowane odpowiedzi

  • 0

Czy da się zastąpić nazwy cuboidów zmienną?

Chciałbym stworzyć listę cuboidów, ale nie stety nie wiem jak to zrobić.

Da się.

Dodajesz nazwy regionów do listy:

add "nazwa regionu" to {cuby::*}

Zapętlasz ją i wykonujesz np. komendy odwołując się do zapętlonej wartości (loop-value):

loop {cuby::*}:    execute player command "/rg select %loop-value%"    execute player command "//set 35:14"

Aha i jeszcze jedno. Zaznaczanie cuboidów działa tylko na świecie gdzie cuboidy. Więc jeżeli mam te regiony ma świecie pvp to jeżeli jestem na spawnie wywala błąd, że nie może znaleść tego regionu.

Czy można zrobić to jakoś tak, aby działało na wszystkich światach?

Do wypełniania blokiem regionów z wg możesz skorzystać z addonu PirateSK:

set blokcs in wg region "serwerpvp" in "nazwa swiata z cubem" to red woolset blokcs in wg region "pvp_vip" in "nazwa swiata z cubem" to red woolset blokcs in wg region "pvp_gracz" in "nazwa swiata z cubem" to red wool
loop {cuby::*}:    set blocks in wg region "%loop-value%" in "nazwa swiata z cubami" to red wool 
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

 

Da się.

Dodajesz nazwy regionów do listy:

add "nazwa regionu" to {cuby::*}

Zapętlasz ją i wykonujesz np. komendy odwołując się do zapętlonej wartości (loop-value):

loop {cuby::*}:    execute player command "/rg select %loop-value%"    execute player command "//set 35:14"

Do wypełniania blokiem regionów z wg możesz skorzystać z addonu PirateSK:

set blokcs in wg region "serwerpvp" in "nazwa swiata z cubem" to red woolset blokcs in wg region "pvp_vip" in "nazwa swiata z cubem" to red woolset blokcs in wg region "pvp_gracz" in "nazwa swiata z cubem" to red wool
loop {cuby::*}:    set blocks in wg region "%loop-value%" in "nazwa swiata z cubami" to red wool 

OK. Dzięki wypróbuje to. :) 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Jest jeden problem:

Wszystko działa zrobiłem to tak:

on load:    set {pref} to "&6&m-----&9 SERWER PVP &6&m-----"    add "serwerpvp" to {cuby::*}    add "pvp_vip" to {cuby::*}    add "pvp_gracz" to {cuby::*}

I potem:

		loop {cuby::*}:			execute player command "/rg select %loop-value%"			execute player command "//set 35:14"

I jest ok. Region zaznacza ALE nie wiem czemu jest w dziwnej pętli:

post-717-0-33128400-1410081199_thumb.png

Oczywiście teren zaznacza i wypełnia go czerwoną wełną, tylko nie wiem czemu ta pętla. 

Jeżeli wpisze stop to nie wykonuje dalszej części kodu. Jest na to jakaś rada?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Przy każdym przeładowaniu skryptu ponownie dodajesz nazwy do listy więc w zależności ile reloadów tego skryptu zrobiłeś tyle razy wykonuje komendę dla każdego z tych regionów.

Żeby temu zapobiec możesz skorzystać z takiego kodu:

on load:	{cuby::*} is not set:		add "serwerpvp" to {cuby::*}		add "pvp_vip" to {cuby::*}		add "pvp_gracz" to {cuby::*}	# dalsza czesc nie jest konieczna ale moze sie przydac	{cuby::*} do not contain "serwerpvp":		add "serwerpvp" to {cuby::*}	{cuby::*} do not contain "pvp_vip":		add "pvp_vip" to {cuby::*}	{cuby::*} do not contain "pvp_gracz":		add "pvp_gracz" to {cuby::*}

Oczywiście najpierw musisz usunąć listę którą już utworzyłeś:

delete {cuby::*}
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

 

Przy każdym przeładowaniu skryptu ponownie dodajesz nazwy do listy więc w zależności ile reloadów tego skryptu zrobiłeś tyle razy wykonuje komendę dla każdego z tych regionów.

Żeby temu zapobiec możesz skorzystać z takiego kodu:

on load:	{cuby::*} is not set:		add "serwerpvp" to {cuby::*}		add "pvp_vip" to {cuby::*}		add "pvp_gracz" to {cuby::*}	# dalsza czesc nie jest konieczna ale moze sie przydac	{cuby::*} do not contain "serwerpvp":		add "serwerpvp" to {cuby::*}	{cuby::*} do not contain "pvp_vip":		add "pvp_vip" to {cuby::*}	{cuby::*} do not contain "pvp_gracz":		add "pvp_gracz" to {cuby::*}

Oczywiście najpierw musisz usunąć listę którą już utworzyłeś:

delete {cuby::*}

Zaraz to sprawdzę i ci powiem czy działa. :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

spróbuj loop-index

Z loop-index też nie działa...

 

Podaj treść błędu i kod skryptu to coś poradzimy.

Proszę:

post-717-0-96108400-1410276839_thumb.png

post-717-0-87732500-1410276840_thumb.png

 

KOD:

command /serwerpvpoff [<text&gt] [<text&gt]:	permission: serwery.by.kuba	permission message: Nie masz dostępu do tej komędy.	aliases: poff	trigger:		if {pvp} is false:			send "{@t}Serwer PVP jest juz wylaczony."			stop		set {pvp} to false		set {statuspvp} to "&lSerwer PVP jest teraz:&6&mOFF"		send "{@t}Serwer PVP zostanie wylaczony za:"		wait 1 second 		send "{@t}10..."		wait 1 second		send "{@t}9..."		wait 1 second		send "{@t}8..."		wait 1 second		send "{@t}7..."		wait 1 second		send "{@t}6..."		wait 1 second		send "{@t}5..."		wait 1 second		send "{@t}4..."		wait 1 second		send "{@t}3..."		wait 1 second		send "{@t}2..."		wait 1 second		send "{@t}1..."		wait 1 second		loop {cuby::*}:			set blocks in wg region "%loop-index%" in "pvp" to red wool		execute player command "/hd setline pvp 3 &c&lOFF"		execute player command "/hd setline serwerpvp 1 &u&lPVP (&c&lOFF&u&l)"		execute player command "/hd addline serwerpvp &c&l%arg 1%"		broadcast "{@t1}Serwer PVP zostal {@off} &9&lprzez %player% powód: %arg 1%"		broadcast "{@t}Serwer PVP zostal wylaczony! Teleportacja na serwer glowny!" to "pvp"		create timed bar with text "&c&lZostales TP na spawn." to player for 5 seconds		loop all players in world "pvp":			execute console command "spawn %loop-player%"		stop
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Kod wygląda na poprawny. Przyczyną jest mój błąd, literówka, którą popełniłem pisząc PirateSK: zamiast blocks napisałem blokcs dzisiaj to poprawię. (jak wpiszesz to z tymi przestawionymi literkami to powinno działać)

Ok jak będę na kompie to zobacze.

Jeszcze jedno pytanie do Was jeżeli mam takie argumenty:

If arg 1 is "hologram" of "holo

.................

If arg 2 is "add" or "dodaj"

Jak mogę zrobić, jeżeli w tym nie ma nic wpisane to wyskakuje błąd?

If arg 2 is not set???

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Jeśli nie ma nic wpisane:

if arg 2 is not set:

Lepszym wyjściem będzie chyba jednak kod w takim stylu:

(przy bardziej skomplikowanych rozbudowanych komendach niekoniecznie będzie dobrym wyjściem)

command /komenda:	trigger:		if arg 1 is not "hologram" or "holo":			send "uzycie: /komenda <hologram/holo> <add/dodaj>"			stop		if arg 2 is not "add" or "dodaj":			send "uzycie: /komenda %arg 1% <add/dodaj>"			stop		send "ok"		# dalszy kod

Czyli najpierw sprawdzamy czy argumenty są odpowiednie jeśli nie to wyświetlamy np. poprawne użycie komendy, jeśli argumenty są ok to wykonujemy dalszy kod.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Kod wygląda na poprawny. Przyczyną jest mój błąd, literówka, którą popełniłem pisząc PirateSK: zamiast blocks napisałem blokcs dzisiaj to poprawię. (jak wpiszesz to z tymi przestawionymi literkami to powinno działać)

Nie stety nadal tak samo, ale jeżeli jest tak:
set blokcs in wg region "serwerpvp" in "pvp" to air		set blokcs in wg region "pvp_vip" in "pvp" to air		set blokcs in wg region "pvp_gracz" in "pvp" to air
To wszystko działa. Nie wiem czemu nie działa z loop....

Edit:

DZIAŁA! To był mój błąd.

Mam jeszcze jeden problem dotyczący PirateSK.

Gdy piszę, aby wypełniło czerwoną wełną czyli:

to red wool

I teraz nie wiem czy to mój błąd czy PirateSK, ale powinno wypełniać czerwoną wełną, a wypełnia białą.

Edytowane przez jakubgross
Odnośnik do komentarza
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ę...