Skocz do zawartości

[WildSkript] Gildie: Brak możliwości budowania po wybuchu przez 60 sekund. [+WildSkript]


Rekomendowane odpowiedzi

Witajcie, w tym małym ale przejrzystym tutku dotyczących głównie gildii w skrypcie

dowiecie się jak blokować budowanie po wybuchu tnt lub creepera przez np. 60 sekund.

Sam owego kodu używam w nowych gildiach które piszę a w tych aktualnych jest bug który

powoduje, że większa ilość wybuchów przyśpiesza licznik.

 

Przed zaczęciem poradnika przypomnę jeszcze, że do poprawnego

działania kodu potrzebny jest dodatek: WildSkript.

 

No więc.. od czego zaczynamy:

 

Tworzymy event "on explode" oraz pobieramy region przypisując mu lokalizacje wybuchu:

on explode:	set {_gildia} to Region.at{location of event-location};

Jeśli się da to można jeszcze tak (nie sprawdzałem):

on explode:	set {_gildia} to Region.at{event-location};

Teraz sprawdzamy czy istnieje region w tej lokalizacji wybuchu "{_gildia}", jeśli tak to

sprawdzamy czy nazwa tego regionu zawiera "gildia-" (moje nazwy cuboidów to "gildia-%tag gildii%"):

	if {_gildia} is not set:		stop	if {_gildia} contain "gildia-":

Jeśli się okaże, że zawiera to usuwamy sobie to "gildia-" żeby uzyskać tag gildii:

		replace all "gildia-" with "" in {_gildia}

  Dla dodatku ja posiadam środek gildii czyli w tym przypadku "sponge" który

jest mi do czegoś potrzebny i nie chce aby on też wybuchł:
 

		loop all blocks in radius 5 around event-location:			if loop-block is sponge:				wait 0.1 second				set loop-block to sponge

Do poprawnego użycia będą nam potrzebne 2 zmienne:

{gildie.gildia.%{_gildia}%.explode-enabled}

Która zapobiega zbugowaniu licznika oraz:

{gildie.gildia.%{_gildia}%.explode}

Która przetrzymuje liczbę sekund przez które nie możemy budować.

 

1 zmienną nigdzie nie setujemy czyli jest "not set", na początek ją zsetujemy na "false":

		if {gildie.gildia.%{_gildia}%.explode-enabled} is not set:			set {gildie.gildia.%{_gildia}%.explode-enabled} to false

A następnie tworzymy cały licznik. Ja wkleję cały kod na ten licznik a następnie

go omówimy:
 

		if {gildie.gildia.%{_gildia}%.explode-enabled} is false:			set {gildie.gildia.%{_gildia}%.explode-enabled} to true			set {gildie.gildia.%{_gildia}%.explode} to 60			loop {gildie.gildia.%{_gildia}%.czlonkowie::*}:				send " &8{@p} &cNa terenie twojej gildii wybuchlo TNT. Nie mozesz od teraz na nim budowac przez &760 sekund&c." to loop-value parsed as player			while {gildie.gildia.%{_gildia}%.explode} is greater than 0:				wait 1 second				subtract 1 from {gildie.gildia.%{_gildia}%.explode}			set {gildie.gildia.%{_gildia}%.explode-enabled} to false			stop

Tłumaczenia będą linijka po linijce:

 

- jeśli {gildie.gildia.%{_gildia}%.explode-enabled} jest ustawiona na false;

- ustaw {gildie.gildia.%{_gildia}%.explode-enabled} na true (żeby nie można było zbugować licznika);

- ustaw {gildie.gildia.%{_gildia}%.explode} (licznik) na 60;

- zloopuj członków gildii na której wybuchło;

- wyślij do nich wiadomość z informacją;

- pętla while będzie wykonywana dopóki {gildie.gildia.%{_gildia}%.explode} (licznik) jest większy niż 0;

- czeka 1 sekunde;

-  zabiera 1 z {gildie.gildia.%{_gildia}%.explode} (licznika);

- po pętli while ustawia {gildie.gildia.%{_gildia}%.explode-enabled} na false;

- stop;

 

GOTOWE, licznik gotowy, cały kod wygląda następująco:

on explode:	set {_gildia} to Region.at{location of event-location};	if {_gildia} is not set:		stop	if {_gildia} contain "gildia-":		replace all "gildia-" with "" in {_gildia}		loop all blocks in radius 5 around event-location:			if loop-block is sponge:				wait 0.1 second				set loop-block to sponge		if {gildie.gildia.%{_gildia}%.explode-enabled} is not set:			set {gildie.gildia.%{_gildia}%.explode-enabled} to false		if {gildie.gildia.%{_gildia}%.explode-enabled} is false:			set {gildie.gildia.%{_gildia}%.explode-enabled} to true			set {gildie.gildia.%{_gildia}%.explode} to 60			loop {gildie.gildia.%{_gildia}%.czlonkowie::*}:				send " &8{@p} &cNa terenie twojej gildii wybuchlo TNT. Nie mozesz od teraz na nim budowac przez &760 sekund&c." to loop-value parsed as player			while {gildie.gildia.%{_gildia}%.explode} is greater than 0:				wait 1 second				subtract 1 from {gildie.gildia.%{_gildia}%.explode}			set {gildie.gildia.%{_gildia}%.explode-enabled} to false			stop

Ale poczekaj... to przecież tylko licznik. Teraz czas na blokowanie budowania:

on place:	set {_gildia} to Region.at{location of player};	if {_gildia} is not set:		stop	if {_gildia} contain "gildia-":		replace all "gildia-" with "" in {_gildia}		if {gildie.%player%.tag} isn't "%{_gildia}%":			cancel event			send " &8{@p} &cNie mozesz klasc blokow na terenie innej gildii!"			stop		else:			if {gildie.gildia.%{gildie.%player%.tag}%.explode} is greater than 0:				cancel event				send " &8{@p} &cNa terenie gildii wybuchlo TNT. Nie mozesz na nim budowac jeszcze przez &7%{gildie.gildia.%{gildie.%player%.tag}%.explode}% sekund&c."				stop

Pierwsze 6 linijek (nie licząc eventu) są takie same, nie będę ich omawiał.

 

Teraz czas na omawianie reszty:

 

- Jesli tag gildii gracza nie będzie taki sam jak tag gildii cuboidu;

- anuluje event;

- wysyła wiadomość informacyjną;

- stop;

 

- jeśli tag gildii gracza będzie jednak taki sam jak tag gildii cuboidu;

- jeśli {gildie.gildia.%{gildie.%player%.tag}%.explode} (licznik) będzie większy niż 0;

- anuluje event;

- wysyła wiadomość informacyjną;

- stop;

 

I tak o to napisaliśmy wybuchanie tnt na terenie gildii.

 

Zmienne wykorzystane w tutorialu:

 

- {gildie.%player%.tag} = tag gildii gracza;

- {gildie.gildia.%{gildie.%player%.tag}%.explode} = licznik;

- {gildie.gildia.%{_gildia}%.explode-enabled} = zapobiega zbugowaniu licznika

 

{_gildia}  = tag gildii.

 

 

Pozdrawiam ~.fxy_

Edytowane przez .fxy_
Odnośnik do komentarza
https://skript.pl/temat/1971-wildskript-gildie-brak-mo%C5%BCliwo%C5%9Bci-budowania-po-wybuchu-przez-60-sekund-wildskript/
Udostępnij na innych stronach

Dzięki za opinie. ;)

 

@offtopic:
 

Chcielibyście poradnik dot. wchodzenia i wychodzenia z cuboidów gildyjnych (chodzi o wiadomosci: "Wszedłeś na teren gildii x", "Opuściłeś teren gildii x", "Na terenie twojej gildii pojawił się intruz (<gracz>)", "Intruz opuścił teren twojej gildii")?

  • Szifter zablokował(a) ten temat
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ę...