Misio12320 32 Opublikowano 20 listopada 2020 Udostępnij Opublikowano 20 listopada 2020 (edytowane) 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 26 stycznia 2021 przez Misio12320 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
1 Kormic 1824 Opublikowano 27 stycznia 2021 Udostępnij Opublikowano 27 stycznia 2021 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. Misio12320 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Misio12320 32 Opublikowano 27 stycznia 2021 Autor Udostępnij Opublikowano 27 stycznia 2021 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 Więcej opcji udostępniania...
1 Kormic 1824 Opublikowano 31 stycznia 2021 Udostępnij Opublikowano 31 stycznia 2021 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. Misio12320 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Misio12320 32 Opublikowano 31 stycznia 2021 Autor Udostępnij Opublikowano 31 stycznia 2021 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 Więcej opcji udostępniania...
0 Usunięty#34161 123 Opublikowano 31 stycznia 2021 Udostępnij Opublikowano 31 stycznia 2021 Problem został rozwiązany. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
Misio12320 32
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 Misio12320Odnośnik do komentarza
Udostępnij na innych stronach
5 odpowiedzi na to pytanie
Rekomendowane odpowiedzi