Skocz do zawartości
  • 0

Skrypt na enchant Wydajnosc VI


Misio12320
 Udostępnij

Pytanie

Witam. Dziś mam prośbę o mały skrypt na enchant.

Potrzebowałbym by można było w kowadle aktualizować narzędzia Wydajność 5 + Wydajność 5 = Wydajność 6 i w górę w cenie 10 poziomów XP.

Poprosiłbym o taki mały skrypt, bym sobie resztę ulepszeń sam napisał.

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

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 1
W dniu 20.11.2020 o 14:59, Misio12320 napisał:

Witam. Dziś mam prośbę o mały skrypt na enchant.

Potrzebowałbym by można było w kowadle aktualizować narzędzia Wydajność 5 + Wydajność 5 = Wydajność 6 i w górę w cenie 10 poziomów XP.

Poprosiłbym o taki mały skrypt, bym sobie resztę ulepszeń sam napisał.

Narzędzia muszą być tego samego typu, tak?

To znaczy czy muszą to być przykładowo dwa diamentowe kilofy.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
31 minut temu, Kormic napisał:

Narzędzia muszą być tego samego typu, tak?

To znaczy czy muszą to być przykładowo dwa diamentowe kilofy.

Tak, oraz żeby to działało na książki itp. Myślę, że jakaś krótka funkcja dałaby radę bym sobie wybrał: Max Poziom, Koszt i koszt za naprawę w poziomie doświadczenia.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1
W dniu 27.01.2021 o 14:50, Misio12320 napisał:

Tak, oraz żeby to działało na książki itp. Myślę, że jakaś krótka funkcja dałaby radę bym sobie wybrał: Max Poziom, Koszt i koszt za naprawę w poziomie doświadczenia.

Dość długo się z tym męczyłem, a i tak niestety działają tylko przedmioty nie wliczając książek.

import:
	org.bukkit.event.inventory.PrepareAnvilEvent
	
on PrepareAnvilEvent:
	event.getResult() is 0 air:
		event.getInventory().getItem(0) is not set
		event.setResult(null)
	set {_i1} to event.getInventory().getItem(0)
	set {_i2} to event.getInventory().getItem(1)
	if level of efficiency of {_i1} >= 5:
		level of efficiency of {_i2} >= 5:
		level of efficiency of {_i1} is level of efficiency of {_i2}
		set {_r} to {_i1}
		add 1 to level of efficiency of {_r}
		event.setResult({_r})
		event.getInventory().setRepairCost(10)

Co do kodu na książki, tyle udało mi się zrobić z dodatkiem SkBee.

import:
	org.bukkit.event.inventory.PrepareAnvilEvent
	org.bukkit.inventory.ItemStack
	org.bukkit.Material
	
function getTagFromNbt(s: strings) :: object:
	set {_t} to tag {_s::2} of {_s::1}
	set {_t} to tag {_s::3} of "%{_t}%"
	return {_t}
	
on PrepareAnvilEvent:
	event.getResult() is 0 air:
		event.getInventory().getItem(0) is not set
		event.setResult(null)
	set {_i1} to event.getInventory().getItem(0)
	set {_i2} to event.getInventory().getItem(1)
	if nbt of {_i1} contains "StoredEnchantments:[{lvl:" and "id:32s":
		nbt of {_i2} contains "StoredEnchantments:[{lvl:" and "id:32s"
		set {_nbt} to nbt of {_i1}
		set {_tag0} to getTagFromNbt(nbt of {_i1}, "StoredEnchantments", "lvl")
		set {_tag1} to getTagFromNbt(nbt of {_i2}, "StoredEnchantments", "lvl")
		{_tag0} is {_tag1}
		{_tag0} >= 5
		{_tag1} >= 5
		set {_tag0} to "%{_tag0}%" parsed as integer
		set {_tag1} to "%{_tag1}%" parsed as integer
		set {_id} to getTagFromNbt(nbt of {_i2}, "StoredEnchantments", "id")
		set {_n} to {_tag0} + 1
		set {_t} to "lvl:%{_tag0}% s,id:32s"
		replace all " " with "" in {_t}
		replace all {_t} with "lvl:%{_n}%s,id:32s" in {_nbt}
		set {_r} to new ItemStack(Material.ENCHANTED_BOOK, 1)
		event.setResult({_r})
		event.getInventory().setRepairCost(10)

Teoretycznie powinno to działać, ale niestety metoda setResult() ustawiająca rezultat w kowadle wymaga typu ItemStack, a jakakolwiek próba przypisania NBT przedmiotowi kończy się zamianą na ItemType, co powoduje, że metoda setResult() nie działa.

Kod jest testowy, pewnie można usunąć te linijki ustawiające {_tag0} i {_tag1} na tekst, a następnie parse'owanie ich na liczby całkowite.

Jeszcze jutro popróbuję z tym kodem i jeżeli coś się uda zrobić, edytuję ten post, uporządkuję kod i spakuję to w jakąś funkcję dla twojej wygody.

Podsumowując:

Pierwszy kod działa, drugi połowicznie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
11 godzin temu, Kormic napisał:

Dość długo się z tym męczyłem, a i tak niestety działają tylko przedmioty nie wliczając książek.


import:
	org.bukkit.event.inventory.PrepareAnvilEvent
	
on PrepareAnvilEvent:
	event.getResult() is 0 air:
		event.getInventory().getItem(0) is not set
		event.setResult(null)
	set {_i1} to event.getInventory().getItem(0)
	set {_i2} to event.getInventory().getItem(1)
	if level of efficiency of {_i1} >= 5:
		level of efficiency of {_i2} >= 5:
		level of efficiency of {_i1} is level of efficiency of {_i2}
		set {_r} to {_i1}
		add 1 to level of efficiency of {_r}
		event.setResult({_r})
		event.getInventory().setRepairCost(10)

Co do kodu na książki, tyle udało mi się zrobić z dodatkiem SkBee.


import:
	org.bukkit.event.inventory.PrepareAnvilEvent
	org.bukkit.inventory.ItemStack
	org.bukkit.Material
	
function getTagFromNbt(s: strings) :: object:
	set {_t} to tag {_s::2} of {_s::1}
	set {_t} to tag {_s::3} of "%{_t}%"
	return {_t}
	
on PrepareAnvilEvent:
	event.getResult() is 0 air:
		event.getInventory().getItem(0) is not set
		event.setResult(null)
	set {_i1} to event.getInventory().getItem(0)
	set {_i2} to event.getInventory().getItem(1)
	if nbt of {_i1} contains "StoredEnchantments:[{lvl:" and "id:32s":
		nbt of {_i2} contains "StoredEnchantments:[{lvl:" and "id:32s"
		set {_nbt} to nbt of {_i1}
		set {_tag0} to getTagFromNbt(nbt of {_i1}, "StoredEnchantments", "lvl")
		set {_tag1} to getTagFromNbt(nbt of {_i2}, "StoredEnchantments", "lvl")
		{_tag0} is {_tag1}
		{_tag0} >= 5
		{_tag1} >= 5
		set {_tag0} to "%{_tag0}%" parsed as integer
		set {_tag1} to "%{_tag1}%" parsed as integer
		set {_id} to getTagFromNbt(nbt of {_i2}, "StoredEnchantments", "id")
		set {_n} to {_tag0} + 1
		set {_t} to "lvl:%{_tag0}% s,id:32s"
		replace all " " with "" in {_t}
		replace all {_t} with "lvl:%{_n}%s,id:32s" in {_nbt}
		set {_r} to new ItemStack(Material.ENCHANTED_BOOK, 1)
		event.setResult({_r})
		event.getInventory().setRepairCost(10)

Teoretycznie powinno to działać, ale niestety metoda setResult() ustawiająca rezultat w kowadle wymaga typu ItemStack, a jakakolwiek próba przypisania NBT przedmiotowi kończy się zamianą na ItemType, co powoduje, że metoda setResult() nie działa.

Kod jest testowy, pewnie można usunąć te linijki ustawiające {_tag0} i {_tag1} na tekst, a następnie parse'owanie ich na liczby całkowite.

Jeszcze jutro popróbuję z tym kodem i jeżeli coś się uda zrobić, edytuję ten post, uporządkuję kod i spakuję to w jakąś funkcję dla twojej wygody.

Podsumowując:

Pierwszy kod działa, drugi połowicznie.

Dziękuję za pomoc, Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! zasugerowałem by dodali taką możliwość.

11 godzin temu, Kormic napisał:

Dość długo się z tym męczyłem, a i tak niestety działają tylko przedmioty nie wliczając książek.


 

 Kurcze, przepraszam za zajęcie Ci sporo czasu. Myślałem, że to 5 minut i gotowe, a to jednak kombinacji wymagało. Myślę, że problem rozwiązany. Postaram się jakoś wynagrodzić. Dziękuję.

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