Skocz do zawartości

Parsed - czy takie ważne?


Rekomendowane odpowiedzi

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
Odnośnik do komentarza
https://skript.pl/temat/19197-parsed-czy-takie-wa%C5%BCne/
Udostępnij na innych stronach

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
Odnośnik do komentarza
https://skript.pl/temat/19197-parsed-czy-takie-wa%C5%BCne/#findComment-130719
Udostępnij na innych stronach

5 godzin temu, Kraftowy napisał:

@knugi

Chodzi mi o coś takiego mniej więcej, taką listę.

 

Parsed as text - siłą na hama na text xD

Parsed as item - na item

I tak dalej

W sensie, że masz wypisać wszystkie parsedy.

Odnośnik do komentarza
https://skript.pl/temat/19197-parsed-czy-takie-wa%C5%BCne/#findComment-130818
Udostępnij na innych stronach

  • 2 tygodnie później...
  • 11 miesięcy temu...

@knugi

set {_num} to "%random number between 0.1 and 0.9%" parsed as number #nie znalazłem zapotrzebowania, chyba że chodzi o dzielenie :P

to ma zastosowanie.

Bo jak chcesz

konkretnie przy załadowaniu czegoś z pliku YML

załóżmy że {s1} i {s2} załadowane z YML

set {_min} to "%{s1}%"
set {_max} to "%{s2}%"
set {_x} to random integer between {_min} and {_max}

to nie zadziała.

Musi być

set {_min} to "%{s1}%" parsed as number
set {_max} to "%{s2}%" parsed as number
set {_x} to random integer between {_min} and {_max}

 

Odnośnik do komentarza
https://skript.pl/temat/19197-parsed-czy-takie-wa%C5%BCne/#findComment-182538
Udostępnij na innych stronach

  • 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ę...