Ok, przerobiłem swój kod żeby łamał słowa jak i linie, traktując ciąg spacji również jak słowo:
/// scr_wrap_string(string,w)
var text = argument0, len = argument1;
var strlen = string_length(text);
var i = 1, c = '', w = '', word = '', line = '', result = '';
while (i <= strlen) {
c = string_char_at(text, i++);
w = string_char_at(word, 1);
// lamanie tekstu
if (c == '#') {
result += line + word + '#';
line = '';
word = '';
w = '';
continue;
}
// przelamujemy linie
if (line != '' && string_width(line + word) > len) {
result += line + '#';
line = '';
}
// przelamujemy slowo
if (string_width(word + c) > len) {
line += word + '#';
word = '';
w = '';
}
// budujemy slowo
// ciag spacji traktujemy jako slowo
if ((c == ' ' && (w == '' || w == ' ')) || (c != ' ' && w != ' ')) {
word += c;
}
else {
line += word;
word = c;
// linii nie zaczynamy spacja
if (string_char_at(line, 1) == ' ') {
line = '';
}
}
}
result += line;
result += word;
return result;
Jako, że teraz skrypt ten łamie tekst również w linii, nie potrzebujemy używać draw_text_ext a wystarczy draw_text:
var text = scr_wrap_string("Lorem ipsum dolor sit amet, andverylongwordthatmustbesplitted", 100);
draw_set_color(c_black);
draw_rectangle(10, 10, 110, 210, false);
draw_set_color(c_white);
draw_text(10, 10, text);