Game Maker Indonesia

Full Version: Auto Wrapping Text tanpa #
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
mau tanya nih, gimana cara agar text gak lewat dari layar. semisal saya nulis sebuah cerpen 10.000 kata . nah agar kata-katanya bisa auto wrap ke bawah tanpa "#" gimana ya ? trus kalo agar justify type paragraf nya gimana ? makasih
waktu input textnya waktu run atau ditulis seperti text bacaan game rpg?
*kalau input text dan di run ketika program berjalan musti pake coding seberapa besar roomnya, seberapa besar fontnya (sama halnya seperti MSword sendiri sebenarnya tidak bisa di enter sendiri tapi karna ada settingan pada text border seperti kertas A4 atau lainnya maka pada waktu sudah lewat batas dari bordernya pagenya command code untuk enter)

*bacaan seperti text harus manual(cocokan dengan besar room dan font yg dipakai) kalau mao enter yah terpaksa pake # atau jadiin sprite( atau ketik dolo di MSword pastikan sudah rapi dan pas dengan room baru di justify)

sepertinya belom bisa justify hanya ada halign_center /right/ left
semoga bisa menjawab kalaupun ada yg kurang dan salah mohon dimaklumin karna masih belajar Happy
Untuk mengukur lebar teks agar bisa di-autowrap pake fungsi string_width("string"), tapi not recommended karena butuh beban komputasi yang lebih (that's why jangan ditaroh di Draw event). Kalo mau coba script bitmap text yang bisa auto wrap juga: You are not allowed to view links. Register or Login to view.

GameMaker Code
//string_wrap(text, lebar)

var text, sub_str, draw_width, pivot, last_good, chunk_start;
text = argument0;
draw_width = argument1;
pivot = 1;
last_good = 1;
chunk_start = 1;


while( string_width(text) > draw_width and
       pivot <= string_length(text) )
{
    if( string_char_at(text, pivot) ==  or
        pivot == string_length(text) ) 
    {
        sub_str = string_copy( text, chunk_start, pivot - chunk_start );
        if( string_width(sub_str) > draw_width )
        {
            text = string_delete( text, last_good, 1 );
            text = string_insert( , text, last_good );
            chunk_start = last_good + 1;
        }
        else last_good = pivot;
    }
    pivot += 1;
}

return text;


Sumber: gmlscripts.com