Skocz do zawartości
  • 0

Item w eq gracza wywołuje daną komende.


miimimim
 Udostępnij

Pytanie

Witam!
Mam problem z napisaniem pewnego skryptu, dlatego  postanowiłem, że poproszę tutaj o pomoc w napisaniu owego skryptu.
Gracz po kliknięciu e czyli inventory miał by umieszczony dany item w danym slocie eq lub slocie craftingu,

itemu nie dało by się wyciągnąć, a po kliknięciu na ten item wywoływała by się dana komenda.

 

Wersja skript 2.5 (1.16.1)

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

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
command /inv:
	trigger:
		open chest inventory with 3 rows named "&cKlikanie" to the player
		set slot 4 of player's current inventory to diamond named "dstajesz vipa"
on inventory click:
	name of player's current inventory = "&cKlikanie"
	clicked inventory is not player's inventory
	cancel event
	if clicked slot = 4:
		execute player command "daj vip"

przykład

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
9 minut temu, miimimim napisał:

Witam!
Mam problem z napisaniem pewnego skryptu, dlatego  postanowiłem, że poproszę tutaj o pomoc w napisaniu owego skryptu.
Gracz po kliknięciu e czyli inventory miał by umieszczony dany item w danym slocie eq lub slocie craftingu,

itemu nie dało by się wyciągnąć, a po kliknięciu na ten item wywoływała by się dana komenda.

 

Wersja skript 2.5 (1.16.1)

Niestety nie da się napisać tego skryptu, gdyż event 'on inventory open' jest wywoływany jedynie w przypadku otwarcia inwentarza jakiegoś bloku (skrzynka, kowadło, stół rzemieślniczy, itd.) (lub fałszywej skrzynki, czyli GUI). Nie jest wywoływany przy otwarciu ekwipunku gracza. Jest to niestety prawie całkowicie client-side'owe. Prawie, gdyż jest pakiet przechwytujący to ("PacketPlayInClientCommand"). Myślę, że można by również tutaj pokombinować z osiągnięciami.

Co do ustawiania slotów w craftingu, jest to możliwe. Tak samo jest już możliwe wykrycie zamykania ekwipunku gracza.

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
26 minut temu, Kormic napisał:

Niestety nie da się napisać tego skryptu, gdyż event 'on inventory open' jest wywoływany jedynie w przypadku otwarcia inwentarza jakiegoś bloku (skrzynka, kowadło, stół rzemieślniczy, itd.) (lub fałszywej skrzynki, czyli GUI). Nie jest wywoływany przy otwarciu ekwipunku gracza. Jest to niestety prawie całkowicie client-side'owe. Prawie, gdyż jest pakiet przechwytujący to ("PacketPlayInClientCommand"). Myślę, że można by również tutaj pokombinować z osiągnięciami.

Co do ustawiania slotów w craftingu, jest to możliwe. Tak samo jest już możliwe wykrycie zamykania ekwipunku gracza.

 

A Byłbyś w stanie mi napisać albo chociaż zarysować skrypt z tym klikaniem w sloty craftingu gracza, byłbym bardzo wdzięczny.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1
1 minutę temu, miimimim napisał:

A Byłbyś w stanie mi napisać albo chociaż zarysować skrypt z tym klikaniem w sloty craftingu gracza, byłbym bardzo wdzięczny.

Pewnie.

on inventory click:
	type of clicked inventory is crafting table inventory
	send "To jest slot nr %index of clicked slot%!" to player

Możesz sobie również w zależności od klikniętego slotu wykonywać inną czynność.

on inventory click:
	type of clicked inventory is crafting table inventory
	if clicked slot is 0:
		send "Tekst nr 1" to player
	else if clicked slot is 1:
		send "Tekst nr 2" to player
	else if clicked slot is 2:
		send "Tekst nr 3" to player
	else if clicked slot is 3:
		send "Tekst nr 4" to player

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
22 minuty temu, Kormic napisał:

Pewnie.

on inventory click:
	type of clicked inventory is crafting table inventory
	send "To jest slot nr %index of clicked slot%!" to player

Możesz sobie również w zależności od klikniętego slotu wykonywać inną czynność.

on inventory click:
	type of clicked inventory is crafting table inventory
	if clicked slot is 0:
		send "Tekst nr 1" to player
	else if clicked slot is 1:
		send "Tekst nr 2" to player
	else if clicked slot is 2:
		send "Tekst nr 3" to player
	else if clicked slot is 3:
		send "Tekst nr 4" to player

 

Dokładnie oto mi chodziło, bardzo dziękuję za pomoc.
Mam tylko jeszcze jedną sprawę - jeżeli chciałbym wstawić tam dany item, oraz ustawić go tak aby nie dało się go wyciągać to 
jak by to miało wyglądać?
 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, miimimim napisał:

Dokładnie oto mi chodziło, bardzo dziękuję za pomoc.
Mam tylko jeszcze jedną sprawę - jeżeli chciałbym wstawić tam dany item, oraz ustawić go tak aby nie dało się go wyciągać to 
jak by to miało wyglądać?

Można zrobić to z pomocą powyższych kodów. Zaraz po sprawdzaniu 'type of clicked inventory' w linijce pod nią wstawiamy 'cancel event'. W ten sposób nie będzie można robić w tym craftingu.

Co do ustawiania slotu, zrobisz to w następujący sposób:

set slot 0 of player's current inventory to stone

Musisz być tutaj pewien, że gracz ma otwarty swój ekwipunek oraz że nie jest w trybie kreatywnym.

Problem jest tylko jeden - w jakim evencie (przy jakim zdarzeniu) chcesz to ustawić?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
9 minut temu, Kormic napisał:

Można zrobić to z pomocą powyższych kodów. Zaraz po sprawdzaniu 'type of clicked inventory' w linijce pod nią wstawiamy 'cancel event'. W ten sposób nie będzie można robić w tym craftingu.

Co do ustawiania slotu, zrobisz to w następujący sposób:

set slot 0 of player's current inventory to stone

Musisz być tutaj pewien, że gracz ma otwarty swój ekwipunek oraz że nie jest w trybie kreatywnym.

Problem jest tylko jeden - w jakim evencie (przy jakim zdarzeniu) chcesz to ustawić?

Próbowałem zrobić coś sam i wyszło coś takiego, lecz oczywiście nie działa

On Inventory Open:
	gamemode of player is survival
	if current inventory is not player's inventory:
		cancel event
	else:
		set slot 1 of player's current inventory to stone

To jedyne co mi wpadło do głowy

Zaznaczam, że dopiero zaczynam przygodę ze skryptami do minecrafta.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
12 minut temu, miimimim napisał:

Próbowałem zrobić coś sam i wyszło coś takiego, lecz oczywiście nie działa


On Inventory Open:
	gamemode of player is survival
	if current inventory is not player's inventory:
		cancel event
	else:
		set slot 1 of player's current inventory to stone

To jedyne co mi wpadło do głowy

Zaznaczam, że dopiero zaczynam przygodę ze skryptami do minecrafta.

No właśnie nie zadziała to z powodu, o którym napisałem wyżej.

1 godzinę temu, Kormic napisał:

Niestety nie da się napisać tego skryptu, gdyż event 'on inventory open' jest wywoływany jedynie w przypadku otwarcia inwentarza jakiegoś bloku (skrzynka, kowadło, stół rzemieślniczy, itd.) (lub fałszywej skrzynki, czyli GUI). Nie jest wywoływany przy otwarciu ekwipunku gracza. Jest to niestety prawie całkowicie client-side'owe. Prawie, gdyż jest pakiet przechwytujący to ("PacketPlayInClientCommand"). Myślę, że można by również tutaj pokombinować z osiągnięciami.

Już pomijam pewne błędy w twoim skrypcie takie jak:

  • anulowanie eventu 'on inventory open' - jest to event client-side'owy, gracz przesyła jedynie informację do serwera, że zamknął inventory, serwer tutaj nie ma jakiegokolwiek wpływu na te zdarzenie
  • warunek w trzeciej linijce jest dziwny, jak już to to powinno być 'if player's current inventory is not player's inventory', tutaj szczerze powinieneś sprawdzać czy 'type of player's current inventory' to 'crafting table inventory' - w ten sposób wiemy, że gracz ma otwarty swój ekwipunek
Edytowane przez Kormic
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

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

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