Skocz do zawartości
  • 0

Sprawdzanie bloku w GUI


Thedestroyer

Pytanie

Witam, 

Problem polega na tym, że zamyka "minigre" po kliknięciu w jeden blok, pomimo że są jeszcze inne "przeszkody", które trzeba kliknąć i nie wiem dlaczego, próbowałem wielu rozwiązań, ale jakoś nie idzie, więc proszę o pomoc.

 

Generalny zamysł jest taki, że gracz musi usunąć wszytskie przeszkody ze swojej trasy i wtedy zamyka mu gui (dalszy ciąg kody z zamykaniem gui i odpowiednia wiadomością mam, chodzi mi tylko o to klikanie w "przeszkody"). Przykładowy wygląd gui w liknu niżej, bloki ustawiane są losowo.

if name of player's current inventory is "&4Usun Przeszkody":
		cancel event
		type of clicked item is oak log or cobblestone or oak wood plank or stone:
			if {_accept::*} is false:
				set {_cl} to clicked slot
				set player's current inventory's slot {_cl} to rail named "&6Tor"
				set {_i} to 0
				loop 45 times:
					set {_itemnaslot} to slot "%{_i}%" parsed as integer of player's current inventory
					if {_itemnaslot} is orange glass pane or rail:
						set {_accept::%{_i}%} to true
					else:
						set {_accept::%{_i}%} to false
					add 1 to {_i}

 

https://imgur.com/a/xaEB6IJ <--- link do wyglądu GUI

Odnośnik do komentarza
Udostępnij na innych stronach

7 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
4 minuty temu, Thedestroyer napisał:

Witam, 

Problem polega na tym, że zamyka "minigre" po kliknięciu w jeden blok, pomimo że są jeszcze inne "przeszkody", które trzeba kliknąć i nie wiem dlaczego, próbowałem wielu rozwiązań, ale jakoś nie idzie, więc proszę o pomoc.

 

Generalny zamysł jest taki, że gracz musi usunąć wszytskie przeszkody ze swojej trasy i wtedy zamyka mu gui (dalszy ciąg kody z zamykaniem gui i odpowiednia wiadomością mam, chodzi mi tylko o to klikanie w "przeszkody"). Przykładowy wygląd gui w liknu niżej, bloki ustawiane są losowo.

if name of player's current inventory is "&4Usun Przeszkody":
		cancel event
		type of clicked item is oak log or cobblestone or oak wood plank or stone:
			if {_accept::*} is false:
				set {_cl} to clicked slot
				set player's current inventory's slot {_cl} to rail named "&6Tor"
				set {_i} to 0
				loop 45 times:
					set {_itemnaslot} to slot "%{_i}%" parsed as integer of player's current inventory
					if {_itemnaslot} is orange glass pane or rail:
						set {_accept::%{_i}%} to true
					else:
						set {_accept::%{_i}%} to false
					add 1 to {_i}

 

https://imgur.com/a/xaEB6IJ <--- link do wyglądu GUI

Możesz to dodać jeżeli o ten fragment kodu chodzi:

if type of clicked item is cobblestone:
	set slot clicked slot of player's current inventory to rail named "&6Tor"

+ gdybyś podał cały kod a nie tylko event do kliknięcia to łatwiej by mi było to przetestować aby nie dać ci czegoś z błędami.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
function minigraMaszynista(p: player):
	close {_p}'s inventory
	wait 1 tick
	open chest inventory with 5 rows named "&4Usun Przeszkody" to {_p}
	set {_l} to 0
	loop 45 times:
		if {_l} is 2 or 3 or 4 or 5 or 6 or 11 or 12 or 13 or 14 or 15 or 20 or 21 or 22 or 23 or 24 or 29 or 30 or 31 or 32 or 33 or 38 or 39 or 40 or 41 or 42:
			set {_p}'s current inventory's slot {_l} to rail named "&6Tor"
			chance of 10%:
				set {_p}'s current inventory's slot {_l} to oak wood plank named "&6Kawalek deski"
			else if chance of 10%:
				set {_p}'s current inventory's slot {_l} to oak log named "&6Kawalek belki"
			else if chance of 10%:
				set {_p}'s current inventory's slot {_l} to stone named "&7Glaz"
			else if chance of 10%:
				set {_p}'s current inventory's slot {_l} to cobblestone named "&7Kawalki kamieni"
		if {_l} is 0 or 1 or 7 or 8 or 9 or 10 or 16 or 17 or 18 or 19 or 25 or 26 or 27 or 28 or 34 or 35 or 36 or 37 or 43 or 44:
			set {_p}'s current inventory's slot {_l} to orange glass pane named " "
		add 1 to {_l}
	
	
	
	
	#loop 7 times:
		#set {_k.%loop-number%} to random integer between 0 and 26
		#set {_p}'s current inventory's slot {_k.%loop-number%} to 

on rightclick on entity:
	if entity's name is "&3&lMaszynista":
		close player's inventory
		wait 1 tick
		open chest inventory with 1 rows named "&3&lMaszynista" to player
		loop 9 times:
			set player's current inventory's slot loop-number -1 to gray glass pane named " "
		set player's current inventory's slot 4 to paper named "&7Podroz do &8Kopalni" with lore " " and "&8&m----------------------" and "&7> &8Przepusta do Kopalni" and "&7> &6Czek &7o &cWartosci&7: &e100 000 &a$" and "&8&m----------------------"

on inventory click:
	if name of player's current inventory is "&3&lMaszynista":
		cancel event
		if clicked slot is 4:
			if player has paper named "&8Przepusta do Kopalni" with lore "&7Z tego co slyszalem, to &3Maszynista &7je zbiera":
				if player has paper of unbreaking 10 named "&6Czek" with lore "&cWartosc: &e100 000&a$":
					remove 1 paper named "&8Przepusta do Kopalni" with lore "&7Z tego co slyszalem, to &3Maszynista &7je zbiera" from player
					remove 1 paper of unbreaking 10 named "&6Czek" with lore "&cWartosc: &e100 000&a$" from player
					close player's inventory
					send "&3&lMaszynista &7%{arrow}% &3No to w droge..." to player
					#remove blindness from player
					#remove slowness from player
					#remove nausea from player
					#apply blindness 5 to player for 5 seconds
					#apply slowness 5 to player for 5 seconds
					#apply nausea 3 to player for 5 seconds
					#set {_k} to random integer between 1 and 10
					#loop {_k} times:
						#chance of 75%:
					minigraMaszynista(player)
				
				
				else:
					send "&3&lMaszynista &7%{arrow}% &3Ekhem... za darmo to ja tu nie pracuje" to player
					close player's inventory
			else:
				send "&3&lMaszynista &7%{arrow}% &3Pracuje w tej kopalni od 40 lat, wiec nie ze mna te numery" to player
				close player's inventory
	
	
	if name of player's current inventory is "&4Usun Przeszkody":
		cancel event
		type of clicked item is oak log or cobblestone or oak wood plank or stone:
			if {_accept::*} is false:
				set {_cl} to clicked slot
				set player's current inventory's slot {_cl} to rail named "&6Tor"
				set {_i} to 0
				loop 45 times:
					set {_itemnaslot} to slot "%{_i}%" parsed as integer of player's current inventory
					if {_itemnaslot} is orange glass pane or rail:
						set {_accept::%{_i}%} to true
					else:
						set {_accept::%{_i}%} to false
					add 1 to {_i}
			else:
				close player's inventory
				send "&3&lMaszynista &7%{arrow}% &3Na szczescie zdarzyles usunac wszytskie przeszkody... bylo blisko" to player
		
					
					
					
					
					
					
					
					
					
					
					
					
					

command /przepustka:
	permission: *
	trigger:
		give player 1 paper named "&8Przepusta do Kopalni" with lore "&7Z tego co slyszalem, to &3Maszynista &7je zbiera"

prosze bardzo

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Cytat
16 godzin temu, CoFFeIN04 napisał:

wytłumacz jak ta gra ma w ogóle działać 

 

Po kliknięciu w gui zamyka inventory gracza daje mu 3 efekty i ma 25% szans na to ze wyświetli mu się minigra. Minigra polega na tym, że losowo w miejscu torów są wstawiane różne bloki, gracz ma 10 sekund na usunięcie wszystkich bloków, jeżeli nie zrobi tego w tym czasie to npc wysyła mu wiadomość, że podróż się nie udała. Chodzi o to, że muszą zniknąć wszystkie przeszkody z tego gui tak żeby zostały same tory i to pomarańczowe szkło obok.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Generalnie popełniłeś ogromny błąd.

Po sprawdzaniu klikniętego bloku i jeżeli jest nim przeszkoda sprawdza dziwną zmienną która nie istnieje i powraca Ci do Else, że gra jest zakończona.

Cytat

if {_accept::*} is false:

Tak powinno to wyglądać:

	if name of player's current inventory is "&4Usun Przeszkody":
		cancel event
		type of clicked slot is oak log or cobblestone or oak wood plank or stone block:
			set player's current inventory's slot index of clicked slot to rail named "&6Tor"
			loop all items in player's current inventory:
				if type of loop-item is not orange glass pane or rail:
					stop
			close player's inventory
			send "&3&lMaszynista &7%{arrow}% &3Na szczescie zdarzyles usunac wszytskie przeszkody... bylo blisko" to player
			stop

 

Edytowane przez knugi
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
W dniu 27.08.2021 o 19:08, knugi napisał:

Generalnie popełniłeś ogromny błąd.

Po sprawdzaniu klikniętego bloku i jeżeli jest nim przeszkoda sprawdza dziwną zmienną która nie istnieje i powraca Ci do Else, że gra jest zakończona.

Tak powinno to wyglądać:

	if name of player's current inventory is "&4Usun Przeszkody":
		cancel event
		type of clicked slot is oak log or cobblestone or oak wood plank or stone block:
			set player's current inventory's slot index of clicked slot to rail named "&6Tor"
			loop all items in player's current inventory:
				if type of loop-item is not orange glass pane or rail:
					stop
			close player's inventory
			send "&3&lMaszynista &7%{arrow}% &3Na szczescie zdarzyles usunac wszytskie przeszkody... bylo blisko" to player
			stop

 

Dzięki wielkie działa.

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