Skocz do zawartości
  • 0

Bossbar!


SeIniKs
 Udostępnij

Pytanie

Cześć! chciałbym żeby ktoś zrobił mi skrypt gdzie komenda wygląda tak o  /bossborder [<options>] [<text>] [<max-value>] [<color>]
i teraz wyjaśnię co ma być i jak działać w luce <options> będzie do wyboru żeby na bossbarze pokazywało daną wartość jakiejś czynności w moim przypadku będzie tam na razie jedna opcja "worldborder" czyli jeżeli world border będzie na kratce od jego centrum załóżmy że 1234 to na boss barze będzie wyświetlane "<text> &6 1234" jeżeli 1222 to np "<text> &6 1222" no i tak w nieskończoność tylko żeby ta liczba była na kolor złoty czyli &6

w drugiej luce czyli <text> będzie pojawiało się na bossbarze tekst przed wartością borderu czyli np "Border jest teraz na bloku nr 1234!" i można byłoby zrobić kolorowy text np pogrupiony czerwony

3 luka to chyba jest najtrudniejsza. Na bossbarze pokazywało by się (w tym takim pasku) postep borderu, czyli jeżeli wpisze w <max-value> 10000 a world border będzie na 1000 bloku pasek będzie zapełniony tylko do 10% 

i 4 luka <color> czyli jeżeli da sie tam np &9 to pasek postepu (nie tekst) będzie o kolorze niebieskim czyli &9

 

Z góry SERDECZNIE dziękuje za poświęcony czas!

 

Odnośnik do komentarza
Udostępnij na innych stronach

15 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Godzinę temu, SeIniKs napisał:

Cześć! chciałbym żeby ktoś zrobił mi skrypt gdzie komenda wygląda tak o  /bossborder [<options>] [<text>] [<max-value>] [<color>]
i teraz wyjaśnię co ma być i jak działać w luce <options> będzie do wyboru żeby na bossbarze pokazywało daną wartość jakiejś czynności w moim przypadku będzie tam na razie jedna opcja "worldborder" czyli jeżeli world border będzie na kratce od jego centrum załóżmy że 1234 to na boss barze będzie wyświetlane "<text> &6 1234" jeżeli 1222 to np "<text> &6 1222" no i tak w nieskończoność tylko żeby ta liczba była na kolor złoty czyli &6

w drugiej luce czyli <text> będzie pojawiało się na bossbarze tekst przed wartością borderu czyli np "Border jest teraz na bloku nr 1234!" i można byłoby zrobić kolorowy text np pogrupiony czerwony

3 luka to chyba jest najtrudniejsza. Na bossbarze pokazywało by się (w tym takim pasku) postep borderu, czyli jeżeli wpisze w <max-value> 10000 a world border będzie na 1000 bloku pasek będzie zapełniony tylko do 10% 

i 4 luka <color> czyli jeżeli da sie tam np &9 to pasek postepu (nie tekst) będzie o kolorze niebieskim czyli &9

 

Z góry SERDECZNIE dziękuje za poświęcony czas!

 

Proszę, oto skrypt. Z góry zaznaczam, iż nie był testowany.

Wymagania: Skript 2.2+, skript-reflect 2.1.0 oraz SkRayFall (najlepiej 1.9.21).

Ze względu na to, że bossbary posiadają ograniczoną ilość kolorów (astronomiczne 7), musiałem albo z niektórych zrezygnować, albo niektóre podłączyć pod pewne kolory. Dlatego też nie zdziw się, że chociażby złoty podlega żółtemu.

W linijce nr 5 ustawiasz nazwę świata, w którym jest wspomniany w zleceniu border.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

@Kormic wszystko działa, skrypt nie ma błędów, tylko troche skrypt nie wyszedł tak jak chciałem 

po 1: chciałem żeby liczba zmieniała się na bieżąco

po 2: skrypt troche dziwnie dziala

więc jeżeli możesz skróć skrypt do /bossborder worldborder [<value>] 
a kolory itp będe zmieniał ręcznie w configu
ale bardzo mi zależy na tym żeby skrypt był na bieżąco a postęp sam się zapełniał czyli jeżeli <value> jest wpisane na 1000 a border jest na 500 to żeby połowa paska była zapełniona

 

12 godzin temu, SeIniKs napisał:

@Kormic wszystko działa, skrypt nie ma błędów, tylko troche skrypt nie wyszedł tak jak chciałem 

po 1: chciałem żeby liczba zmieniała się na bieżąco

po 2: skrypt troche dziwnie dziala

więc jeżeli możesz skróć skrypt do /bossborder worldborder [<value>] 
a kolory itp będe zmieniał ręcznie w configu
ale bardzo mi zależy na tym żeby skrypt był na bieżąco a postęp sam się zapełniał czyli jeżeli <value> jest wpisane na 1000 a border jest na 500 to żeby połowa paska była zapełniona

@Kormic To mógłbyś to zrobić?

 

Nieaktywny

Łączę posty.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
3 minuty temu, Kormic napisał:

1. Jeżeli chcesz wynagradzać czyjąś pracę smutnymi kotkami, śmiało.

2. Posiadasz jakąś komendę ustawiającą worldborder, tak?

1. Już zmieniam

2. tak komenda już jest wbudowana w grze czyli /worldborder set 10000 100
no i chcialem żeby jakbym dał np 100 sekund to żeby sie liczba zmieniała na bieżąco
 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Godzinę temu, SeIniKs napisał:

1. Już zmieniam

2. tak komenda już jest wbudowana w grze czyli /worldborder set 10000 100
no i chcialem żeby jakbym dał np 100 sekund to żeby sie liczba zmieniała na bieżąco
 

No dobrze, przerobiłem skrypt.

Nie testowałem go, musisz sprawdzić go sam.

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

@Kormic masz tutaj zapis z konsoli

[12:17:12] [Server thread/ERROR]: The expression 'argument' can only be used within a command (BossBorder Skript.sk, line 10: if {_borderLength} >= arg-2:')

[12:17:12] [Server thread/ERROR]: 'else' has to be placed just after an 'if' or 'else if' section (BossBorder Skript.sk, line 12: else:')

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
54 minuty temu, SeIniKs napisał:

@Kormic masz tutaj zapis z konsoli

[12:17:12] [Server thread/ERROR]: The expression 'argument' can only be used within a command (BossBorder Skript.sk, line 10: if {_borderLength} >= arg-2:')

[12:17:12] [Server thread/ERROR]: 'else' has to be placed just after an 'if' or 'else if' section (BossBorder Skript.sk, line 12: else:')

No tak, omyłkowo skopiowałem 'arg-2' do funkcji...

import:
    org.bukkit.Bukkit

options:
    swiat: "world"
    tekst: &aBorder znajduje się na kratce
	
on load:
	{bossBar::worldBorder} is not set
	set {bossBar::worldBorder} to 1000
    
function worldBorder_updateBossbar():
    set {_borderLength} to (Bukkit.getsyf({@swiat}).getsyfBorder().getSize()) / 2
    if {_borderLength} >= {bossBar::worldBorder}:
        set bossbar "worldBorder" title to "%title of bossbar ""worldBorder""% &6%floor({_borderLength})%"
    else:
        set bossbar "worldBorder" value to floor({_borderLength})

command /bossborder [<text="worldborder">] [<number=1000>]:
    trigger:
        if arg-1 is not "worldborder":
            send "&cJedyna dostępna opcja to &6""worldborder""&c!" to sender
            stop
        create bossbar titled "{@tekst}" and id "worldBorder" for all players with progress arg-2 with colors red
		set {bossBar::worldBorder} to arg-2
        hide bossbar "worldBorder"
        worldBorder_updateBossbar()
        show bossbar "worldBorder"
        
every 1 second:
    worldBorder_updateBossbar()

 

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

  • 0
3 minuty temu, Kormic napisał:

No tak, omyłkowo skopiowałem 'arg-2' do funkcji...


import:
    org.bukkit.Bukkit

options:
    swiat: "world"
    tekst: &aBorder znajduje się na kratce
	
on load:
	{bossBar::worldBorder} is not set
	set {bossBar::worldBorder} to 1000
    
function worldBorder_updateBossbar():
    set {_borderLength} to (Bukkit.getsyf({@swiat}).getsyfBorder().getSize()) / 2
    if {_borderLength} >= {bossBar::worldBorder}:
        set bossbar "worldBorder" title to "%title of bossbar ""worldBorder""% &6%floor({_borderLength})%"
    else:
        set bossbar "worldBorder" value to floor({_borderLength})

command /bossborder [<text="worldborder">] [<number=1000>]:
    trigger:
        if arg-1 is not "worldborder":
            send "&cJedyna dostępna opcja to &6""worldborder""&c!" to sender
            stop
        create bossbar titled "{@tekst}" and id "worldBorder" for all players with progress arg-2 with colors red
		set {bossBar::worldBorder} to arg-2
        hide bossbar "worldBorder"
        worldBorder_updateBossbar()
        show bossbar "worldBorder"
        
every 1 second:
    worldBorder_updateBossbar()

 

Teraz jest 1 błąd 
 

[12:24:03] [Server thread/WARN]: [Skript] No matching method: Bukkit.getsyf called with (world (String))

[12:24:03] [Server thread/WARN]: [Skript] Did you misspell the method? You may have meant to type one of the following:

[12:24:03] [Server thread/WARN]: [Skript] * getIp

[12:24:03] [Server thread/WARN]: [Skript] * getTag

[12:24:03] [Server thread/WARN]: [Skript] * getMap

na konsoli spami mi takim czymś

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

@Kormic jest identcznie ten sam błąd + pokazuje pusty pasek postepu i nie pokazuje liczby na której jest border

 

2 godziny temu, SeIniKs napisał:

@Kormic jest identcznie ten sam błąd + pokazuje pusty pasek postepu i nie pokazuje liczby na której jest border

@Kormic możesz naprawić błąd?

 

Edytowane przez SeIniKs
Nieaktywny

Łączę posty.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
34 minuty temu, SeIniKs napisał:

@Kormic jest identcznie ten sam błąd + pokazuje pusty pasek postepu i nie pokazuje liczby na której jest border

Cholera, nie wiem co się dzieje z tym forum... poprawiam getsyf() na getsyf(), klikam "Zapisz" i ponownie zamienia się na getsyf().

Chyba tymczasowo zrezygnuję z wbudowanego znacznika "Kod", gdyż nie jestem w stanie edytować kodu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

@Kormic skrypt nie ma błędów ale zamiast pojawiać się raz informacji że jest na 5000 kratce co jedną sekunde pojawia sie kolejne 5000 czyli coś takiego " Border jest teraz na kratce 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000" itak w nieskończoność a i jeszcze coś że jeżeli daje border na 1000 kratke lub jaką kolwiek, liczba na bossbarze wyświetla się podzielona na pol czyli że 1000 ustawiam wyświtla się 5000

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Godzinę temu, SeIniKs napisał:

@Kormic skrypt nie ma błędów ale zamiast pojawiać się raz informacji że jest na 5000 kratce co jedną sekunde pojawia sie kolejne 5000 czyli coś takiego " Border jest teraz na kratce 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000" itak w nieskończoność a i jeszcze coś że jeżeli daje border na 1000 kratke lub jaką kolwiek, liczba na bossbarze wyświetla się podzielona na pol czyli że 1000 ustawiam wyświtla się 5000

Zamień linijkę nr 15 na to:

set bossbar "worldBorder" title to "{@tekst} &6%floor({_borderLength})%"

W końcu wszystko powinno działać...

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

 Udostępnij

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

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