pankracy Opublikowano 30 Maja 2021 Udostępnij Opublikowano 30 Maja 2021 Może ktoś z was mógłby pomóc rozwiązać ten problem. Mam skrypt który tworzy kontur do czcionki. Problem polega na tym,że kontur tworzy się nie przylegając do czcionki a jest przesunięty od czcionki tworzac brzydki niewyraźny tekst. Jak to naprawić? Powinien przylegać bezpośrednio do czcionki Dziękuję Tu poniżej skrypt /// arg0 - x, arg1 - y, arg2 - text, arg3 - sep, arg4 - w, arg5 - color konturu, arg6 - color textu, arg7 - alpha, arg8 - grubość konturu draw_text_ext_color(argument0-argument8, argument1, string(argument2), argument3, argument4, argument5, argument5, argument5, argument5, argument7) draw_text_ext_color(argument0+argument8, argument1, string(argument2), argument3, argument4, argument5, argument5, argument5, argument5, argument7) draw_text_ext_color(argument0, argument1-argument8, string(argument2), argument3, argument4, argument5, argument5, argument5, argument5, argument7) draw_text_ext_color(argument0, argument1+argument8, string(argument2), argument3, argument4, argument5, argument5, argument5, argument5, argument7) draw_text_ext_color(argument0, argument1+argument7, string(argument2), argument3, argument4, argument6, argument6, argument6, argument6, argument7) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 31 Maja 2021 Udostępnij Opublikowano 31 Maja 2021 Może to być problem tu argument1+argument7, ale sam nie wiem.Musiałbyś pokombinować. Łączysz argument7 który jest alpha z argumentem1 który jest y. Może ktoś bardziej doświadczony będzie Ci wstanie pomóc. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 31 Maja 2021 Udostępnij Opublikowano 31 Maja 2021 Cytat Może to być problem tu argument1+argument7 Tak, tam jest błąd. Ten argument7 przeszkadza. Plus, ten kod działa w miarę ok tylko wtedy, kiedy grubość konturu nie przekracza liczby 2. Po przekroczeniu tej wartości kontur ma braki w rogach, bo rysuje on tylko góra/dół, lewo/prawo. Niemniej plusem jest wydajność, bo zawiera tylko 5 kroków kodu. Najprościej będzie to zrobić for'em, z rysowaniem 360 stopni. Nie wiem jak z wydajnością tego, tutaj starzy wyjadacze mogą się wypowiedzieć. Jakby nie było, jest tutaj 361 kroków do wykonania. Myślę, że jeśli chodzi o optymalizacje, to najlepiej shadery, ale tego jeszcze nie potrafię. for(var i=0; i<360; i++) { draw_set_colour(_coloroutline); draw_text_ext_transformed(_x + lengthdir_x(_strong, i), _y + lengthdir_y(_strong, i), _text, _sep, _w, _xscale, _yscale, _angle); } draw_set_colour(_colortext); draw_text_ext_transformed(_x, _y, _text, _sep, _w, _xscale, _yscale, _angle); pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 31 Maja 2021 Administratorzy Udostępnij Opublikowano 31 Maja 2021 Jeśli chcesz ładny kontur, to zrób z czcionki sprite. Podstawowy sprite możesz zrobić korzystając z mojego generatora: https://gnysek.github.io/gms-font-creator/ . Potem w dowolnym programie dodaj sobie ulubioną ramkę i dodaj font przez font_add_sprite_ext (mój generator daje od razu listę znaków która będzie drugim argumentem). pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 31 Maja 2021 Autor Udostępnij Opublikowano 31 Maja 2021 Fajny ten twój generator.Widzę,że też od razu tworzy kontur twój generator. ? Musiałbym tylko czcionkę dodać którą chce poddać edycji. Mam kilka pytań do tej funkcji 1. Nie chce mi się wyświetlać napis "Przykład" ale za to wyświetla się napis "11111" jeśli wstawię w to miejsce cyfry. Co może być tego powodem? 2.Czy w tej funkcji można sterować rozmiarem czcionki? bo jeśli nie to dla każdego tekstu musiałbym przygotować odrębny sprite czcionki z dobranym rozmiarem font_add_sprite_ext font_main = font_add_sprite_ext(font_test, "!$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^+`abcdefghijklmnopqrstuvwxyz{|}~€ąćęłńóśżźĄĆĘŁŃÓŚŻŹ", true, 0); draw_text(x+400,y,"Przykład") I ostatnie pytanie odnośnie tego posta A powiedz czy powyższy kod będzie wydajny? Simian wspomniał,że nie jest pewien czy będzie te rozwiązanie jego wydajne ze względu na wykonanie 361 kroków. Dziękuję za każda odpowiedź i pomoc ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 31 Maja 2021 Administratorzy Udostępnij Opublikowano 31 Maja 2021 Na pewno zgubiłeś gdzieś spację, prawidłowo funkcja powinna wyglądać tak: font_main = font_add_sprite_ext(font_test, "!\" $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^+`abcdefghijklmnopqrstuvwxyz{|}~€ąćęłńóśżźĄĆĘŁŃÓŚŻŹ", true, 0); (Zwróć uwagę na backslash przed ", a potem na spację po " i przed $ ). Moja strona obsłuży każdy font który masz zainstalowany (jakby coś). Wydajność - to zależy co innego dzieje się w grze. Ja już robiłem takie, gdzie każda literka jest rysowana osobno i jakoś dawało radę. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 1 Czerwca 2021 Udostępnij Opublikowano 1 Czerwca 2021 W dniu 31.05.2021 o 10:32, pankracy napisał: font_add_sprite_ext font_main = font_add_sprite_ext(font_test, "!$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^+`abcdefghijklmnopqrstuvwxyz{|}~€ąćęłńóśżźĄĆĘŁŃÓŚŻŹ", true, 0); draw_text(x+400,y,"Przykład") I ostatnie pytanie odnośnie tego posta A powiedz czy powyższy kod będzie wydajny? Simian wspomniał,że nie jest pewien czy będzie te rozwiązanie jego wydajne ze względu na wykonanie 361 kroków. Dziękuję za każda odpowiedź i pomoc ? Kod będzie wydajny o ile font_add_sprite_ext() użyjesz tylko raz (np w create). Brakuje ci też na pewno tutaj draw_set_font() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się