Skocz do zawartości
  • 0

Brakująca część kodu


Pytanie

Od wczoraj bawiłem się troche CobbleX i mianowicie doszedłem prawie do rozwiązania dopóki nie znalazłem błędu. Mianowicie jak stawiam byle jaki blok skrypt traktuje go jako CobbleX. Prosiłbym o pomoc gdzie mam dopisać kawałek kodu tak, żeby tylko i wyłącznie CobbleX był czytany jako CobbleX i tylko z niego wylatywały przedmioty przedstawione w skrypcie 

 

options:
	item: mossy cobblestone named "&4&l>>> &6&lCobbleX &4&l<<<"

on load:
	set {cx::*} to ender pearl, string, apple, golden apple, golden apple:1 and emerald
	

on place: 
	chance of 8%:
		send "&4&l>>> &6Trafiles pustego CobbleX &4&l<<<"
		set event-block to air
		stop
	loop {cx::*}:
		if loop-value is ender pearl:
			chance of 1%:
				give player ender pearl
				send "&4&l>>> Wydropiles Ender Perle!&4&l <<<"
		else if loop-value is string:
			chance of 30%:
				give player string
				send "&4&l>>> Wydropiles Siec!&4&l <<<"
		else if loop-value is apple:
			chance of 25%:
				give player apple
				send "&4&l>>> Wydropiles Czerwone Jablko!&4&l <<<"
		else if loop-value is golden apple:
			chance of 1%:
				give player golden apple
				send "&4&l>>> Wydropiles Zlote Jablko!&4&l <<<"
		else if loop-value is golden apple:1:
			chance of 0.09%:
				give player golden apple:1
				send "&4&l>>> Wydropiles KOXA!&4&l <<<"
		else if loop-value is emerald:
			chance of 3%:
				give player emerald
				send "&4&l>>> Wydropiles Szmaragd!&4&l <<<"
	if player's tool is {@item}:
		set event-block to air

 

Edytowane przez Nau
gramatyka
Odnośnik do komentarza
https://skript.pl/temat/44328-brakuj%C4%85ca-cz%C4%99%C5%9B%C4%87-kodu/
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
6 godzin temu, bludis napisał:

Musisz dopisać warunek sprawdzający czy narzędzie gracza (player's tool) jest cobblexem pod wydarzeniem on place.

Robiłem coś takiego i nie działa mi to chyba, że coś źle wpisywałem ale robiłem to tak

on place:
	if player`s tool is {@item}:
		chance of 8%:
			send "&4&l>>> &6Trafiles pustego CobbleX &4&l<<<"
			set event-block to air
			stop
	loop {cx::*}:
		if loop-value is ender pearl:
			chance of 1%:
				give player ender pearl
				send "&4&l>>> Wydropiles Ender Perle!&4&l <<<"
		else if loop-value is string:
			chance of 30%:
				give player string
				send "&4&l>>> Wydropiles Siec!&4&l <<<"
		else if loop-value is apple:
			chance of 25%:
				give player apple
				send "&4&l>>> Wydropiles Czerwone Jablko!&4&l <<<"
		else if loop-value is golden apple:
			chance of 1%:
				give player golden apple
				send "&4&l>>> Wydropiles Zlote Jablko!&4&l <<<"
		else if loop-value is golden apple:1:
			chance of 0.09%:
				give player golden apple:1
				send "&4&l>>> Wydropiles KOXA!&4&l <<<"
		else if loop-value is emerald:
			chance of 3%:
				give player emerald
				send "&4&l>>> Wydropiles Szmaragd!&4&l <<<"
	if player's tool is {@item}:
		set event-block to air


 

Odnośnik do komentarza
https://skript.pl/temat/44328-brakuj%C4%85ca-cz%C4%99%C5%9B%C4%87-kodu/#findComment-278022
Udostępnij na innych stronach

  • 0
Godzinę temu, Nau napisał:

obiłem coś takiego i nie działa mi to chyba, że coś źle wpisywałem ale robiłem to tak

Przesuń cały kod poza warunkiem sprawdzającym narzędzie gracza o 1 znak tabulacji w prawo. Bez tego przy postawieniu jakiegokolwiek bloku będziesz otrzymywał przedmioty z CobbleXa.

Dodatkowo nie ma sensu na końcu sprawdzać narzędzia gracza.

Odnośnik do komentarza
https://skript.pl/temat/44328-brakuj%C4%85ca-cz%C4%99%C5%9B%C4%87-kodu/#findComment-278029
Udostępnij na innych stronach

  • 0
7 godzin temu, Kormic napisał:

Przesuń cały kod poza warunkiem sprawdzającym narzędzie gracza o 1 znak tabulacji w prawo. Bez tego przy postawieniu jakiegokolwiek bloku będziesz otrzymywał przedmioty z CobbleXa.

Dodatkowo nie ma sensu na końcu sprawdzać narzędzia gracza.

Dobra chwile się pomęczyłem wszystko można powiedzieć działa cacy. Jednak może wiecie co jest przyczyną, że czasami bloki są po prostu puste i nie ma żadnej wiadomości zwrotnej w tym kierunku?

I jeszcze pytanie czy da się dodać jakoś opis pod nazwą CobbleX?

Tak wygląda finalnie mój kod i filmik jak wyglądają ,,puste bloki"

https://www.youtube.com/watch?v=s_2hrQe0F8M

 

on place:
	if player's tool is {@item}:
		set event-block to air
		remove 1 {@item} from player 
		chance of 8%:
			send "&4&l>>> &6Trafiles pustego CobbleX &4&l<<<"
			set event-block to air
			stop
		loop {cx::*}:
			if loop-value is ender pearl:
				chance of 5%:
					give player ender pearl
					send "&4&l>>> Wydropiles Ender Perle!&4&l <<<"
			else if loop-value is string:
				chance of 30%:
					give player string
					send "&4&l>>> Wydropiles Siec!&4&l <<<"
			else if loop-value is apple:
				chance of 25%:
					give player apple
					send "&4&l>>> Wydropiles Czerwone Jablko!&4&l <<<"
			else if loop-value is golden apple:
				chance of 2%:
					give player golden apple
					send "&4&l>>> Wydropiles Zlote Jablko!&4&l <<<"
			else if loop-value is golden apple:1:
				chance of 0.5%:
					give player golden apple:1
					send "&4&l>>> Wydropiles KOXA!&4&l <<<"
			else if loop-value is emerald:
				chance of 25%:
					give player 3 emerald
					send "&4&l>>> Wydropiles Szmaragd!&4&l <<<"

 

Edytowane przez Nau
Odnośnik do komentarza
https://skript.pl/temat/44328-brakuj%C4%85ca-cz%C4%99%C5%9B%C4%87-kodu/#findComment-278154
Udostępnij na innych stronach

  • 0
6 minut temu, Nau napisał:

może wiecie co jest przyczyną, że czasami bloki są po prostu puste i nie ma żadnej wiadomości zwrotnej w tym kierunku?

Dlatego że używasz 'chance of' przy dropie i zawsze jest niewielka szansa na to, że ani jedna szansa procentowa nie zostanie spełniona. Możesz to rozwiązać na dwa sposoby:

  1. Użyj 'random integer between x and x' i porównuj do danej liczby.
  2. Przy spełnieniu szansy procentowej od któregokolwiek dropu ustawiaj zmienną lokalną (tymczasową) i poza pętlą sprawdzaj czy zmienna nie jest ustawiona. Jeżeli nie jest, to znaczy, że nic nie wypadło z CobbleXa i wtedy możesz wysłać graczowi wiadomość, że nic nie znalazł.

Co do twojego kodu, skoro usuwasz graczowi przedmiot, lepiej jest to zrobić w ten sposób:

set player's tool to (item amount of player's tool - 1) of player's tool

Dzięki temu będziesz miał pewność, że usunie poprawny przedmiot (Skript ma problemy z usuwaniem przedmiotów posiadających konkretną nazwę, lore i NBT). Wymagany Skript 2.2-dev24 lub nowszy.

Tutaj jeszcze do usuwania przedmiotu dodam, że zamiast ustawiać blok jako powietrze, lepiej jest po prostu anulować event. Usuń oba 'set event-block to air' i nad linijką usuwająca przedmiot graczowi dodaj 'cancel event'.

Edytowane przez Kormic
Odnośnik do komentarza
https://skript.pl/temat/44328-brakuj%C4%85ca-cz%C4%99%C5%9B%C4%87-kodu/#findComment-278155
Udostępnij na innych stronach

  • 0

Okej rozumiem, jeżeli chodzi o punkt 1 zrobiłem to w ten sposób :
 

on place:
	if player's tool is {@item}:
		cancel event
		set player's tool to (item amount of player's tool - 1) of player's tool 
		random integer between 1 and 10:
			send "&4&l>>> &6Trafiles pustego CobbleX &4&l<<<"
			stop

Jeżeli chodzi o punkt drugi szczerze nie zrozumiałem za wiele.

 

 

17 minut temu, Kormic napisał:

set player's tool to (item amount of player's tool - 1) of player's tool

 

Dostałem taki error zwrotny po dodaniu tej linijki zamiast remove :

'player' is not an item stack (cx.sk, line 11: set player's tool to (item amount of player's tool - 1) of player's tool')

Odnośnik do komentarza
https://skript.pl/temat/44328-brakuj%C4%85ca-cz%C4%99%C5%9B%C4%87-kodu/#findComment-278157
Udostępnij na innych stronach

  • 0
25 minut temu, Nau napisał:

Okej rozumiem, jeżeli chodzi o punkt 1 zrobiłem to w ten sposób :

Nie, nie. Miałem coś takiego na myśli:

set {_random} to random integer between 1 and 10
if {_random} is between 1 and 4:
	# Dalszy kod
else if {_random} is between 5 and 7:
	# Dalszy kod
else if {_random} is between 8 and 10:
	# Dalszy kod

 

25 minut temu, Nau napisał:

Jeżeli chodzi o punkt drugi szczerze nie zrozumiałem za wiele.

Najprościej będzie pokazać na przykładzie twojego kodu.

if loop-value is ender pearl:
	chance of 5%:
		give player ender pearl
		send "&4&l>>> Wydropiles Ender Perle!&4&l <<<"
		set {_drop} to true
else if loop-value is string:
	chance of 30%:
		give player string
		send "&4&l>>> Wydropiles Siec!&4&l <<<"
		set {_drop} to true
# Dalszy kod...
if {_drop} is not set:
	send "&cNic nie znalazłeś!" to player

 

25 minut temu, Nau napisał:

Dostałem taki error zwrotny po dodaniu tej linijki zamiast remove :

'player' is not an item stack (cx.sk, line 11: set player's tool to (item amount of player's tool - 1) of player's tool')

Napisałem, że jest wymagana wersja 2.2-dev24 lub wyższa.

EDIT:

W twoim przypadku wygodniejszym sposobem będzie ustawianie zmiennej.

Edytowane przez Kormic
Odnośnik do komentarza
https://skript.pl/temat/44328-brakuj%C4%85ca-cz%C4%99%C5%9B%C4%87-kodu/#findComment-278158
Udostępnij na innych stronach

  • 0

Okej dobra a jeżeli chciałbym wszystko połączyć w całość musiałbym  ustwić to w sekcji 'on load' zgadza sie?

set {_random} to random integer between 1 and 10

Jeżeli chciałbym połączyć wszystko w całość na przykładzie tego kodu to musiało by wyglądać tak? Trochę się pogubiłem bo nie wiem jak teraz zmienić warunek 'chance of' 

 

on load:
	set {cx::*} to ender pearl, string, apple, golden apple, golden apple:1 and emerald
	set {_random} to random integer between 1 and 10

on place:
	if player's tool is {@item}:
		cancel event
		remove 1 {@item} from player 
		if random is between 1 and 3:
			send "&4&l>>> &6Trafiles pustego CobbleX &4&l<<<"
			stop
		loop {cx::*}:
			if loop-value is ender pearl:
				chance of 5%:
					give player ender pearl
					send "&4&l>>> Wydropiles Ender Perle!&4&l <<<"
					set {_drop} to true
			else if loop-value is string:
				chance of 30%:
					give player string
					send "&4&l>>> Wydropiles Siec!&4&l <<<"
					set {_drop} to true
                    
### Dalszy kod
if {_drop} is not set:
	send "Nic nie znalazles" to player

 

Odnośnik do komentarza
https://skript.pl/temat/44328-brakuj%C4%85ca-cz%C4%99%C5%9B%C4%87-kodu/#findComment-278162
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...