Skocz do zawartości
knugi

Parsed - czy takie ważne?

Recommended Posts

Użytkownik

Hejka!

 

    Miło mi, że czytasz mój pierwszy poradnik dotyczący pięknego pluginu Skript. Zatem usiądź wygodnie i miłego czytania.

 

Co to "parsed"?

  Słowo parsed według mojego rozumowania to jest użycie siły brutalnej w skrypcie by tekst zaimplementować np na liczbę. To jest tylko mały przykład.

  Kiedy używamy?

  Używamy tego, gdy musimy przekonwertować zmienną (tekst) do jakiegoś typu. Przykład? Mamy listę graczy w GUI, którą otwieramy komendą /gracze.

  

command /gracze:
	trigger:
		open chest with 6 rows named "Gracze Online" to players
		wait 2 tick
		set {_i} to 0
		loop all players:
			if {_i} is smaller than 53:
				set player's current inventory's slot {_i} to paper named "%player%"
				add 1 to {_i}
			else:
				exit
		stop

Załóżmy, że chcemy danego gracza wyrzucić z serwera, jeżeli mamy do tego uprawnienia.

on inventory click:
	if "%inventory name of player's current inventory%" is "Gracze Online":
		if slot is smaller than 0:
			stop
		cancel event
		if player's current inventory's slot slot is paper:
			if player has permission "wyrzuc.gracza":
				set {_player} to name of player's current inventory's slot slot
				kick {_player} due to "&6Zostales wyrzucony z serwera"
				send "&6Wyrzuciles gracza %{_player}% z serwera."
				stop
			stop

Kod jak kod. Lecz danego gracza nie wyrzuci z serwera, bo w dokumentacji skript jest coś takiego:

kick %players% [(by reason of|because [of]|on account of|due to) %text%]

mamy "kick PLAYER" a nasza zmienna {_player} jest aktualnie text'em. więc musimy nasz tekst przekonwertować na playera. A jak to zrobić? Prosta sprawdza zmieniamy daną linijkę na taką:

set {_player} to name of player's current inventory's slot slot parsed as player

I nasz kod zaczął działać.

Kolejny przykład? Nie ma sprawy!

Chcemy zenchantować nasz item w ręce na wydajność z losową liczbą.

Pewnie większość z was by tak zrobiła:

 

command /test:
	trigger:
		enchant player's tool with efficiency random integer between 1 and 5

I reload wywala błąd. I teraz główkowanie co zrobiłem źle?

Otóż w skript jest takie coś:

enchant %~item stack% with %enchantment types%

podaliśmy item stack jako player's tool lecz skript nie uznał naszego enchantment types i dlatego musimy jakoś przekonwertować dany kod.

Kolejna prosta sprawa która wygląda mniej więcej tak:

command /test:
	trigger:
		set {_ench} to "efficiency %random integer between 1 and 5%" parsed as enchantment type
		enchant player's tool with {_ench}

Zrobiliśmy zmienną tymczasową która posiada w sobie tekst, który jest następnie konwertowany na enchantment type, który już effect enchant przyjmie jako prawidłowy :)

 

Lista parsedów:

W dokumentacji skryptu jasno jest napisane:

text% parsed as (%*type%|"<.*>")

Czyli text możemy zaimplementować na dowolny typ. Wszystkie typy można znaleźć również w dokumentacji, ale jak już o to prosicie to proszę:

Spoiler
set {_biom} to "river" parsed as biome
set {_tak} to "true" parsed as boolean
set {_red} to "red" parsed as color
set {_from} to "attack" parsed as damage cause
set {_direction} to "north" parsed as direction
set {_ench} to "efficiency" parsed as enchantment
set {_ench5} to "protection 5" parsed as enchantment type
set {_entity} to "item frame" parsed as entity
set {_exp} to "%random integer between 1 and 5% experience" parsed as experience
set {_adv} to "adventure" parsed as gamemode
set {_item} to "%random integer between 1 and 64% torch" parsed as item #lub material
set {_num} to "%random number between 0.1 and 0.9%" parsed as number #nie znalazłem zapotrzebowania, chyba że chodzi o dzielenie :P
set {_player} to "knugi" parsed as offlineplayer
set {_gracz} to "knugi" parsed as player #Zalecam używanie offlineplayer
set {_potion} to "slowness %{rpg::%player%.resisSlowLv}%" parsed as potion type
set {_proj} to "fireball" parsed as projectile
set {_eff} to "ender signal" parsed as particle effect
set {_pogoda} to "clear" parsed as weather

Podałem większość z samego Skripta. Myślę, że jak jakiś dodatek dodaje jakiś typ, to na niego też można użyć parsedu.

 

 

 

Życzę udanych skryptów i pozytywnych opinii !

Pozdrawiam #Knugi

 

Edytowane przez knugi
Literówki i dogodnienia użytkowników

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
Użytkownik

Ja miałem dosyć podobny problem męczyłem się chyba z miesiąc, a [CIACH] leciały co pare sekund "czemu to nie działa?????!!" Błąd właśnie leżał w tym, że zapisywałem liczbe jako text i nie mogłem jej dodać do zmiennej i dopiero parsed as integer pomogło :P

Edytowane przez PoweredDragon

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach

Żeby dodać komentarz, musisz założyć konto lub zalogować się

Tylko zarejestrowani użytkownicy mogą dodawać komentarze

Dodaj konto

Załóż nowe konto. To bardzo proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się teraz


  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×