MetalowyNerd Opublikowano 16 Lipca 2020 Udostępnij Opublikowano 16 Lipca 2020 Witam. Wie ktoś, jak obliczyć/pozyskać liczbę nowych linii zrobionych automatycznie w draw_text_ext()? W argumencie "w" ustawia się długość w pikselach, po ilu ma zostać wrzucona nowa linia. Chciałbym wiedzieć, ile razy została ta nowa linia wykonana w tym jednym draw_text_ext(). Manualnie tego zrobić nie mogę przez "\n". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Lipca 2020 Administratorzy Udostępnij Opublikowano 17 Lipca 2020 Generalnie to się nie da. Ale można podejść do tego inaczej. Najpierw złamać tekst, a wtedy policzyć linie. Do tego jest już gotowy customowy skrypt: https://www.gmlscripts.com/script/string_wordwrap string_wordwrap(string,length,break,split) - string to tekst, length to długość, break to znak łamania, a split to true/false czy łamać słowa w połowie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 18 Lipca 2020 Autor Udostępnij Opublikowano 18 Lipca 2020 Ehh, to będę musiał to inaczej ogarnąć :/, myślałem, że to w miarę proste. Chciałem zrobić okno "konsoli" w grze, żeby były widoczne ostatnie komendy wyżej i żeby z każdymi nowymi wprowadzonymi, całość szła ku górze... a nie zrobię przecież nieskończonego stringa :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 18 Lipca 2020 Udostępnij Opublikowano 18 Lipca 2020 Ja okno konsoli zrobiłem na ds_list. Każda lista to osobny string. Wtedy możesz policzyć linie po prostu licząc listy w tablicy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 18 Lipca 2020 Autor Udostępnij Opublikowano 18 Lipca 2020 Tak, opcja super, tylko jeśli tekst w jednej linii będzie za długi? To jak go automatycznie przerwiesz, żeby reszta była w linii poniżej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 18 Lipca 2020 Udostępnij Opublikowano 18 Lipca 2020 draw_text_ext(x, y, lista[| i], 20, 300); Powinno łamać tekst... chociaż? Nie wiem, musiałbym popróbować. Wydaje mi się, że będzie łamać tekst, ale mogą się nachodzić góra/dół :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 18 Lipca 2020 Udostępnij Opublikowano 18 Lipca 2020 Hej, zrobiłem coś takiego. Linie liczy, a żeby pokazywał tylko kilka pierwszych/ostatnich to pewnie wystarczy tylko zmienić pierwszy/drugi argument w forze. Projekt [gm:s2] - https://gmclan.org/up8556_18_Line_counter.html Zrobiłem liste, a w Draw umieściłem kod: var _break = 5; //Przerwa pomiędzy linijkami list_height = 0; //zeruj for(var i = 0; i < ds_list_size(list); i++) { draw_text_ext(5, 5 + (list_height), string(i+1) + ". " + string(list[| i]), 20, 300); list_height += string_height_ext(list[| i], 20, 300)+_break; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 18 Lipca 2020 Autor Udostępnij Opublikowano 18 Lipca 2020 Ooo, czyli się da. Teraz muszę jeszcze rozgryźć, jak ogarnąć usuwanie od góry tylu linii i przesuwanie o tyle do góry, co będzie miało najnowsze wprowadzone zdanie. Dzięki SimianVirus7. Kodzik krótki, to powinienem ogarnąć . A z ciekawości, ile taka tablica może pomieścić takich linii? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 18 Lipca 2020 Udostępnij Opublikowano 18 Lipca 2020 Raczej ogranicza Cię tylko RAM komputera. Przy 16gb nic nie stanęło mi na przeszkodzie, żeby zrobić 45mln elementów w tablicy. Przy pustym pokoju i tylko wypisywaniu każdej linijki, przy 30tyś, fps spadł do 30 klatek. Choć pewnie ktoś z tego forum (choćby Gnysek), może powiedzieć o tym wiele więcej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 19 Lipca 2020 Autor Udostępnij Opublikowano 19 Lipca 2020 To pozostaje mi co ileś tysięcy komend wyczyścić tablicę, bo w tym projekcie utrata klatek będzie wyjątkowo głupia i nieuzasadniona patrząc z perspektywy gracza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 19 Lipca 2020 Udostępnij Opublikowano 19 Lipca 2020 Zawsze możesz zapisywać co jakiś czas linijki do pliku tekstowego i wczytywać je stopniowo. Czyli mieć to jakby podzielone na części, np. Jeśli numer_linijki >= 100 wtedy doczytaj drugie 100 z pliku tekstowego. Jeśli numer_linijki <= 99 wtedy doczytaj pierwsze 100 z pliku tekstowego. No coś w ten deseń (pseudokod jak marzenie) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 20 Lipca 2020 Autor Udostępnij Opublikowano 20 Lipca 2020 Oki dzięx za czas, coś z tym zrobię Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 21 Lipca 2020 Administratorzy Udostępnij Opublikowano 21 Lipca 2020 ja tak teraz jeszcze dodam, ze ogólnie to konsola ma zazwyczaj czcionkę o stałej szerokości, więc dzielenie na kolejne linijki jeśli można tekst łamać w dowolnym miejscu jest dziecinnie proste i łatwo to do tablicy przypisać, bo znasz limit znaków i nie musisz liczyć szerokości/wysokości. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MetalowyNerd Opublikowano 21 Lipca 2020 Autor Udostępnij Opublikowano 21 Lipca 2020 9 godzin temu, gnysek napisał: ja tak teraz jeszcze dodam, ze ogólnie to konsola ma zazwyczaj czcionkę o stałej szerokości, więc dzielenie na kolejne linijki jeśli można tekst łamać w dowolnym miejscu jest dziecinnie proste i łatwo to do tablicy przypisać, bo znasz limit znaków i nie musisz liczyć szerokości/wysokości. O to chodzi, że nie można łamać w dowolnym miejscu, bo tylko przed kolejną przerwą/spacją, bo inaczej gra będzie niezbyt czytelna, a to będzie gra tekstowa. Żeby stworzyć taką czcionkę, w której każdy znak ma identyczną szerokość (jak w konsoli Win'a np), to pewnie trzeba stworzyć czcionkę z bitmapy, prawda? Nie ma opcji stworzenia takiej ze zwykłej czcionki? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 21 Lipca 2020 Administratorzy Udostępnij Opublikowano 21 Lipca 2020 Zadziała każda czcionka monospace, np. Courier New, Lucida Console, Consolas itp. Nie możesz łamać tylko przed kolejną spacją, bo jak słowo jest dłuższe niż maks. szerokość, to nigdy nie złamie, gdzieś musi być na twardo A samo łamanie jest w skrypcie który podałem w moim pierwszym poście. Wystarczy przerobić kod, zeby zamiast łamać przypisywał do kolejnego elementu tablicy. Tu masz moją konsolę: https://marketplace.yoyogames.com/assets/2444/in-game-console 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ę