Skocz do zawartości
  • 0

Problem z gradientami [1.16]


Talarek
 Udostępnij

Pytanie

Cześć, w jaki sposób mogę użyć gradientu do kolorów w skrypcie? Szukałem w dokumentacji Skripta i jedyne co znalazłem to używanie kolorów hex. 

Przykładowo:

send "<##kod koloru> Tekst" 

A o gradientach nic nie znalazłem, a jest to możliwe w wersji 1.16. Znalazłem również skrypt z funkcjami do kolorów (np zamiana hex na rgb), lecz nie działały mi tam gradienty. 

https://forums.skunity.com/threads/colorutils-1-16.12134/

Wersja Skripta: 2.5.3

Wersja silnika: PaperSpigot 1.16.4 

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

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
23 minuty temu, PanMaruda napisał:

Jakie znowu gradienty, wyjaśnij o co ci chodzi (nie wiem opisz dokładnie co chcesz uzyskać, pokaż zdjęcie, film czy coś).

Chodzi tu o połączenie 2 kolorów w tekście. A tu jakiś przykład ze spigota:

0b3f8476cce2bfb8bd75cce396a1e38265c366b8

Edytowane przez Talarek
Nieaktywny

Zamieniam link w obraz.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

okej,

czyli chodzi po prostu o kolory na chacie - ja od razu powiem że nie wiem czy do klocków jest jakiś plugin na to albo skrypt - ale ogólnie:
najłatwiej byłoby napisać własną funkcję, która będzie zadany tekst kolorowała:

  • myślę że jak poszukasz, to na necie znajdziesz pełno list z kolorami (gradientami) w formacie RGB albo heksadecymalnym - bierzesz więc taką listę do funkcji
  • wiadomo - jak kolor jest w RGB to go przerabiasz na HEX
  • musisz pobraną wiadomość podzielić na pojedyncze znaki (string split at "")
  • zapętlasz tą podzieloną wiadomość i do każdego znaku ustawiasz odpowiadający mu kolor HEX - tak jak pokazałeś na początku '<#RRGGBB>SYMBOL' - możesz to wrzucić do listy albo ewentualnie od razu dopisywać do zmiennej tekstowej
Edytowane przez xNightPower_
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
9 minut temu, PanMaruda napisał:

okej,

czyli chodzi po prostu o kolory na chacie - ja od razu powiem że nie wiem czy do klocków jest jakiś plugin na to albo skrypt - ale ogólnie:
najłatwiej byłoby napisać własną funkcję, która będzie zadany tekst kolorowała:

  • myślę że jak poszukasz, to na necie znajdziesz pełno list z kolorami (gradientami) w formacie RGB albo heksadecymalnym - bierzesz więc taką listę do funkcji
  • wiadomo - jak kolor jest w RGB to go przerabiasz na HEX
  • musisz pobraną wiadomość podzielić na pojedyncze znaki (string split at "")
  • zapętlasz tą podzieloną wiadomość i do każdego znaku ustawiasz odpowiadający mu kolor HEX - tak jak pokazałeś na początku '<#RRGGBB>SYMBOL' - możesz to wrzucić do listy albo ewentualnie od razu dopisywać do zmiennej tekstowej

Znalazłem taki skrypt w na skunity (podlinkowałem w temacie) i robi dokładnie to co opisałeś, ale zamiast robić te nowe kolory to uzupełnia je tymi starymi, tak jakby wystąpił jakiś błąd (i tak jest faktycznie bo nie działają). 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, Talarek napisał:

Znalazłem taki skrypt w na skunity (podlinkowałem w temacie) i robi dokładnie to co opisałeś, ale zamiast robić te nowe kolory to uzupełnia je tymi starymi, tak jakby wystąpił jakiś błąd (i tak jest faktycznie bo nie działają). 

Pokaż ten skrypt to zobaczymy co w nim nie trybi.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
41 minut temu, Kormic napisał:

Pokaż ten skrypt to zobaczymy co w nim nie trybi.

on load:
    set {hex::*} to split "0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|k|l|m|n|o|r" at "|"
 
function rgbToHex(values: numbers) :: string:
    loop {_values::*}:
        set {_r} to "%{_r} ? ""<##""%%{hex::%(( (round(loop-value)) - mod((round(loop-value)), 16)) / 16 + 1)%} ? """"%%{hex::%mod((round(loop-value)), 16) + 1%} ? """"%"
    return colored "%{_r}%>"
 
function hslToRgb(h: number, s: number, l: number) :: integers: #
    set {_h} to {_h}/360
    if {_s} = 0:
        set {_r}, {_g} and {_b} to {_l}
    else:
        set {_q} to (({_l} * ({_s} + 1)) if {_l} < 0.5, else ({_l} + {_s} - {_l} * {_s}))
        set {_p} to (2 * {_l}) - {_q}
        set {_r} to hueToRgb({_p}, {_q}, {_h} + 1 / 3)
        set {_g} to hueToRgb({_p}, {_q}, {_h})
        set {_b} to hueToRgb({_p}, {_q}, {_h} - 1 / 3)
    return round(min(255, (255 * {_r}))), round(min(255, (255 * {_g}))) and round(min(255, (255 * {_b})))
 
function hueToRgb(p: number, q: number, t: number) :: number:
    add 1 to {_t} if {_t} < 0
    remove 1 from {_t} if {_t} > 1
    return {_p} + ({_q} - {_p}) * 6 * {_t} if {_t} < 1 / 6
    return {_q} if {_t} < 1/2
    return {_p} + ({_q} - {_p}) * (2 / 3 - {_t}) * 6 if {_t} < 2 / 3
    return {_p}
 
function gradient(input: string, color-from: integers, color-to: integers) :: string:
    loop {_color-from::*}:
        set {_i::%loop-index%} to ({_color-to::%loop-index%} - loop-value) / length of {_input}
    loop length of {_input} times:
        if subtext of {_input} from indices loop-number - 1 to loop-number - 1 = "§":
            set {_format} to "%{_format} ? """"%&%subtext of {_input} from indices loop-number to loop-number%" if {hex::*} contains subtext of {_input} from indices loop-number to loop-number
            clear {_format} if subtext of {_input} from indices loop-number to loop-number = "r"
            continue loop
        set {_r} to "%{_r} ? """"%%rgbToHex({_color-from::*})%%{_format} ? """"%%subtext of {_input} from indices loop-number to loop-number%"
        set {_color-from::*} to ({_color-from::1} + {_i::1}), ({_color-from::2} + {_i::2}) and ({_color-from::3} + {_i::3})
    return colored {_r}
 
function rainbow(input: string, saturation: number = 1, lightness: number = 0.5) :: string:
    loop (length of {_input}) times:
        if subtext of {_input} from indices loop-number - 1 to loop-number - 1 = "§":
            set {_format} to "%{_format} ? """"%&%subtext of {_input} from indices loop-number to loop-number%" if {hex::*} contains subtext of {_input} from indices loop-number to loop-number
            clear {_format} if subtext of {_input} from indices loop-number to loop-number = "r"
            continue loop
        set {_l} to 360 / (length of {_input})
        set {_r} to "%{_r} ? """"%%rgbToHex(hslToRgb((loop-number * ({_l} if loop-number != 1, else 1)), {_saturation}, {_lightness}))%%{_format} ? """"%%subtext of {_input} from indices loop-number to loop-number%"
    return colored {_r}
function rainbow2(input: string, saturation: number = 1, lightness: number = 0.5, stretch: number = 5, offset: number = 0) :: string:
    loop (length of {_input}) times:
        # ---- Remove the part below to remove color formatting
        if subtext of {_input} from indices loop-number - 1 to loop-number - 1 = "§":
            set {_format} to "%{_format} ? """"%&%subtext of {_input} from indices loop-number to loop-number%" if {hex::*} contains subtext of {_input} from indices loop-number to loop-number
            clear {_format} if subtext of {_input} from indices loop-number to loop-number = "r"
            continue loop
        # ---- Remove the part above to remove color formatting
        set {_l} to loop-number * {_stretch}+{_offset} if loop-number*{_stretch}+{_offset} <= 360, else mod(loop-number*{_stretch}+{_offset}, 360)
        set {_r} to "%{_r} ? """"%%rgbToHex(hslToRgb({_l}, {_saturation}, {_lightness}))%%{_format} ? """"%%subtext of {_input} from indices loop-number to loop-number%"
    return colored {_r}

No i spróbuj np zrobić 

send gradient("This is an Example Text",(250,250,110),(10,110,120))

i zamiast gradientu zrobi tekst z kolorów poniżej 1.16 (rainbow też nie dziala)

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

  • 0
3 minuty temu, Talarek napisał:

Problem już rozwiązałem. Proszę o zamknięcie tematu. 

Więc może wyjaśnij wszystkim w jaki sposób? Skoro jest to jakiś błąd, to pewnie ktoś będzie szukał na niego odpowiedzi, nie bądź samolubny i pochwal się tym rozwiązaniem.

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