Skocz do zawartości
  • 0

Głowy graczy w kowadle


Bartek200219
 Udostępnij

Pytanie

Hej, wpadłem na pomysł skryptu, dzięki któremu można będzie nazwać głowę gracza w kowadle i dzięki temu głowa stanie się głową tego gracza. Jednak po paru podejściach nie mam pojęcia co mogę zrobić, żeby zamienić/zabrać głowę gracza, która wychodzi z kowadła.

 

on anvil rename:
	event-item-result is player head
	set {_t} to event-string parsed as offlineplayer
	send "%event-string%"
	set {_i} to "%event-item%" parsed as item
	remove player head with name "%event-string%" from player's inventory
	give skull of {_t} to player

Wymaga TuSKe

Odnośnik do komentarza
Udostępnij na innych stronach

16 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
16 minut temu, Bartek200219 napisał:

Hej, wpadłem na pomysł skryptu, dzięki któremu można będzie nazwać głowę gracza w kowadle i dzięki temu głowa stanie się głową tego gracza. Jednak po paru podejściach nie mam pojęcia co mogę zrobić, żeby zamienić/zabrać głowę gracza, która wychodzi z kowadła.

Nie możesz ustawić rezultatu?

Może przydałby ci się skript-reflect i event PrepareAnvilEvent? Tam możesz ustawić rezultat.

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

  • 0

 

2 minuty temu, Kormic napisał:

Nie możesz ustawić rezultatu?

Z tego co rozumiem ten dodatek to nie

2 minuty temu, Kormic napisał:

Może przydałby ci się skript-reflect i event PrepareAnvilEvent? Tam możesz ustawić rezultat.

Zobaczę, jednak wolałbym ograniczyć ilość dodatków, jakie wykorzystuje. W przyszłości miałem zamiar wykorzystać TuSKe do gui.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, Bartek200219 napisał:

 

Z tego co rozumiem ten dodatek to nie

Zobaczę, jednak wolałbym ograniczyć ilość dodatków, jakie wykorzystuje. W przyszłości miałem zamiar wykorzystać TuSKe do gui.

E tam, TuSKe nie jest najgorsze do GUI, ale polecam czystego Skripta.

Helios zrobił o tym poradnik na forum. Znajdziesz w dziale "Skript > Poradniki".

Wtedy będziesz miał jeden dodatek mniej i będziesz mógł go zastąpić skript-reflect.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Ok, mogę spróbować. Masz jakieś linki, które przydałyby mi się podczas pisania tego?

 

W dniu 28.02.2021 o 23:08, Kormic napisał:

E tam, TuSKe nie jest najgorsze do GUI, ale polecam czystego Skripta.

Helios zrobił o tym poradnik na forum. Znajdziesz w dziale "Skript > Poradniki".

Wtedy będziesz miał jeden dodatek mniej i będziesz mógł go zastąpić skript-reflect.

Napisałem coś takiego: 

import: 
	org.bukkit.event.inventory.PrepareAnvilEvent

on PrepareAnvilEvent:
	if event.getResult() is player head:
		set {_var} to event.getResult()
		set {_var} to {_var}'s name 
		set {_var} to "%{_var}%" parsed as offlineplayer
		event.setResult(head of {_var})

Jednak to bardzo laguje serwer, ponieważ sprawdza to po każdym znaku wprowadzonym w kowadle. Tak naprawdę wystarczy jedna osoba, żeby wywalić serwer. Jak najlepiej rozwiązać ten problem?

Glicz

Łączę posty.

Notatka dodana przez Glicz

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, Bartek200219 napisał:

Napisałem coś takiego: 

import: 
	org.bukkit.event.inventory.PrepareAnvilEvent

on PrepareAnvilEvent:
	if event.getResult() is player head:
		set {_var} to event.getResult()
		set {_var} to {_var}'s name 
		set {_var} to "%{_var}%" parsed as offlineplayer
		event.setResult(head of {_var})

Jednak to bardzo laguje serwer, ponieważ sprawdza to po każdym znaku wprowadzonym w kowadle. Tak naprawdę wystarczy jedna osoba, żeby wywalić serwer. Jak najlepiej rozwiązać ten problem?

Skoro tak bardzo ci to laguje (może lagować przez ciągłe pobieranie główki gracza offline), użyj eventu 'on inventory click', sprawdź czy typ klikniętego ekwipunku to 'workbench inventory' i jeżeli kliknięty result slot to główka gracza, ustaw 'event-slot' na główkę tego gracza pobierając nazwę klikniętej główki.

Trochę poplątane, ale powinieneś zrozumieć.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

laguje ci przez to:

head of {_var}

nie wiem jak działa ten kod nie wiem co to robi - ale jeżeli ten kod wykonuje się kilka razy to powinieneś to ograniczyć tylko do jednego - i najlepiej byłoby pobrać to asynchronicznie - np. poprzez asynchroniczną sekcję z reflecta wtedy nie będzie laga

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
6 godzin temu, PanMaruda napisał:

laguje ci przez to:

head of {_var}

nie wiem jak działa ten kod nie wiem co to robi - ale jeżeli ten kod wykonuje się kilka razy to powinieneś to ograniczyć tylko do jednego - i najlepiej byłoby pobrać to asynchronicznie - np. poprzez asynchroniczną sekcję z reflecta wtedy nie będzie laga

Wydłubałem coś takiego: 

import: 
	org.bukkit.event.inventory.PrepareAnvilEvent

	

on PrepareAnvilEvent:
	if event.getResult() is player head:
		create new section with {_x} stored in {_glowka}:
			set {_t} to "%{_x}%" parsed as offlineplayer
			return head of {_t}
		set {_var} to event.getResult()
		set {_var} to {_var}'s name 
		#set {_var} to "%{_var}%" parsed as offlineplayer
		run section {_glowka} async with 3 and store result in {_result} and wait
		event.setResult({_result})

Jednak gdy próbuję nazwać głowę w kowadle, dostaję w konsoli coś takiego:

[17:59:12 ERROR]: [Skript] 1 log handler was not stopped properly! (at ch.njol.skript.expressions.ExprParse.get(ExprParse.java:181)) [if you're a server admin and you see this message please file a bug report at https://github.com/bensku/skript/issues if there is not already one]

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

nie mam pojęcia, nie korzystałem z tego nigdy, ale spróbuj dać to w taki sposób (możliwe że return nie może mieć skomplikowanych obliczeń i błąd wali - tak jak funkcje czasami)
 

set {_t} to head of ("%{_x}%" parsed as offlineplayer)
return {_t}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
10 minut temu, PanMaruda napisał:

nie mam pojęcia, nie korzystałem z tego nigdy, ale spróbuj dać to w taki sposób (możliwe że return nie może mieć skomplikowanych obliczeń i błąd wali - tak jak funkcje czasami)
 

set {_t} to head of ("%{_x}%" parsed as offlineplayer)
return {_t}

 

Nadal nie działa :c Nadal nie wiem co mogę z tym zrobić.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
W dniu 1.03.2021 o 19:24, PanMaruda napisał:

a poczekaj... to nie jest tak że w miejscu liczby 3 powinien być nick gracza? (w sensie {_var})
 


run section {_glowka} async with 3 <----

 

No tak mój błąd skopiowałem z tutoriala i nie spojrzałem dokładnie, mimo to nadal nie działa xd.

import: 
	org.bukkit.event.inventory.PrepareAnvilEvent

on PrepareAnvilEvent:
	if event.getResult() is player head:
		create new section with {_x} stored in {_glowka}:
			set {_t} to "head of %{_x}%" parsed as item
			return {_t}
		set {_var} to event.getResult()
		set {_var} to {_var}'s name 
		set {_var} to "%{_var}%" parsed as offlineplayer
		run section {_glowka} async with {_var} and store result in {_result} and wait
		broadcast "%{_result}%"
		event.setResult({_result})

 

 

Dobra to nie wina kodu tylko tego śmiesznego dodatku, który nie działa. Skopiowałem kod z ich strony i te sekcje zawsze zwracają <none> :) 

Glicz

Łączę posty.

Notatka dodana przez Glicz

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
20 godzin temu, Bartek200219 napisał:

Dobra to nie wina kodu tylko tego śmiesznego dodatku, który nie działa. Skopiowałem kod z ich strony i te sekcje zawsze zwracają <none> :) 

Spróbuj jeszcze z moim sposobem (czyli 'on inventory click'), czyli ustawiasz przy kliknięciu na 'result slot' kowadła 'event-slot' jako główkę tego gracza.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
19 godzin temu, Kormic napisał:

Spróbuj jeszcze z moim sposobem (czyli 'on inventory click'), czyli ustawiasz przy kliknięciu na 'result slot' kowadła 'event-slot' jako główkę tego gracza.

Mam coś takiego:

on inventory click:
	if event-inventory is anvil's inventory:
		broadcast "%event-inventory%"
		broadcast "%event-itemtype%"
		broadcast "%event-clicktype%"

I dostaje błąd:

Y0YSgPm.png

Nie rozumiem, w jaki sposób mam sprawdzić, jakie inventory ten event wywołuje.

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