![]() |
Text width a length - Printable Version +- Gothic Online Forums (https://archive.gothic-online.com) +-- Forum: Community (https://archive.gothic-online.com/forum-18.html) +--- Forum: Polish (Polski) (https://archive.gothic-online.com/forum-19.html) +---- Forum: Pomoc (https://archive.gothic-online.com/forum-23.html) +---- Thread: Text width a length (/thread-2049.html) Pages:
1
2
|
Text width a length - Son Goku - 20.04.2017 Siema, potrzebuję pomocy ![]() Spoko, opanowałem w jaki sposób dzięki: slice i text.len() urwać długość tekstu i pozostały tekst wykorzystać gdzie indziej. Jak np: Zrobić draw1. Ale jeśli długość tekstu przekroczy pewną wartość to nadać draw1 tekst do pewnego momentu i nadać resztę tekstu dla draw2. Teraz jest jednak problem, mianowicie: Width oraz WidthPx będą różne w zależności od tego jakie znaki są w tekście, oraz wielkości tych znaków, więc przekreśliłem próbę przeliczania wyników uzyskanych z width a len. Ogólnie chodzi mi o to że nie mam pomysłu jak porównując szerokość tekstu z szerokością tekstury urwać ten text w odpowiedniej szerokości i wyjąć resztę tekstu. Gdybym wciąż napisał to wszystko niezrozumiale: Chodzi mi o ucięcie tekstu jeśli przekroczy daną szerokość lub szerokość w pixelach i wyciągniecie reszty tekstu, lub przelicznik długości na szerokość. RE: Text width a length - KimiorV - 20.04.2017 textWidth(string text) textWidthPx(string text) letterWidth(char letter) letterWidthPx(char letter) letterDistance() letterDistancePx() Około 99% tego co napisałeś jest niezrozumiałe więc strzelam, że chodziło Ci o to... RE: Text width a length - Son Goku - 20.04.2017 Nie. Chodzi mi o coś w tym stylu, nie patrz na jakość skryptu bo ja tak testuje a gdy mam wszystko git to usprawniam. Code: local drawTable={}; No i ten prymitywny kawałek kodu działa, sam dobrze wiesz w jaki sposób, że jesli tekst bedzie zawierał wiecej znaków niż 50 to draw[0] zaktualizuję tekst o te 50 znaków a draw[1] zaktualizuje tekst o pozostałe literki A mi chodzi o to samo ale nie jeśli ma ileś znaków, a jeśli przekroczy width. A właściwie o to że pytam jak podać serwerowi że w tej szerokości tekstu ma go uciąć o tyle i tyle znaków. RE: Text width a length - KimiorV - 20.04.2017 Wyciągaj fragment tekstu litera po literze, wrzucaj go do tej funkcji textWidth(string text) i sprawdzaj długość. RE: Text width a length - Bimbol - 20.04.2017 Albo lepiej wrzuć cały i odejmuj jeśli przekracza zakres ![]() RE: Text width a length - Zmorra - 20.04.2017 Ja mam dokładnie takie coś, co chcesz uzyskać zrobione: Code: local name_string = "tekst, który chcesz skrócić"; b_size.w - 10 to szerokość tekstury minus margines chars_nr to wynik w postaci ilości znaków, które się zmieszczą RE: Text width a length - Son Goku - 21.04.2017 Ok, dzięki wszystkim, prosiłbym o albo zamknięcie tematu, albo zmianę jego nazwy na coś w stylu "Prośby o pomoc SonGoku" hehe. RE: Text width a length - Son Goku - 07.05.2017 Hejo. Ok skrypt Zmorry pomógł mi dość solidnie, teraz jednak oczywiście musiał pojawić się kolejny problem. Mianowicie pracuję nad systemem dialogów identycznym jak w G2. osiągnąłem już takie coś: http://imgur.com/a/9PbKC Jednak w orginale w dialogach tekst przechodzi do nowej linii od słowa do słowa. Jak widać na screenie urywa słowo w pewnym momencie i przechodzi do nowej linii. zastanawiam się jak to zniwelować, próbowałem coś kombinować z split i z string.find, ale nie bardzo mi to idzie, nie wiem nawet czy to dobry trop bo tak czy inaczej muszę to jakoś wmieszać w skrypt od Zmorry, macie jakieś pomysły, chce wam się pomóc? RE: Text width a length - Bimbol - 07.05.2017 Jak używasz na sztywno sprawdzania czy linia sie mieści w teksturze to są potem takie niuanse. Powinieneś iterować przez litery i w momencie kiedy znajdziesz spacje, sprawdzasz długość tekstu. Jeśli się mieści w linii to iterujesz dalej, jeśli nie tniesz tekst i masz już jedną linię. Powtarzasz tak do końca. RE: Text width a length - Son Goku - 08.05.2017 Spoko. Zrobiłem coś co teoretycznie działa jak powinno, jednak mam spore obawy co do składni, czy ten kod powinien wyglądać mniej/więcej tak: Code: for(local i = 0; i < text.len(); i++){ oczywiście zmienna _max_width to długość tekstury w pixelach -100 |