CLEO: Урок 4 - Работа с текстом
Сегодня затронем тему текстов в CLEO скриптинге.
Тексты в CLEO бывают разных видов: субтитры, текст бокс, стилизованный текст (его можно увидеть при выполнении миссии, смерти игрока, или на гонках).
Рассмотрим опкоды, выводящие различные типы текста на экран:
0ACD: show_text_highpriority "text" time 100
Данный опкод выводит текст-субтитры внизу экрана. Вместо "text" нужно писать свой текст, переведенный через rus2gxtcoder. Time - время отображения текста на экране. Данный опкод имеет высокий приоритет, то есть если на экране будут другие субтитры (например в миссии), то они будут убраны, а текст со скрипта будет выведен на экран.
0ACC: show_text_lowpriority "text" time 100
Точно такой же опкод как и предыдущий, но имеет низкий приоритет. Если на экране будут показаны другие субтитры, то скрипт будет ждать пока они закончатся, и только потом выведет нужный текст.
Для вывода некоторых текстов нужно сначала создать динамическую gxt запись
0ADF: add_dynamic_GXT_entry "NAME" text "Text"
NAME - это имя записи. Оно должно быть не более 5 символов
Text - соответственно текст, который будет храниться в записи
Если текстовая запись вам больше не нужна, чтобы не засорять память игры удалить её можно опкодом 0AE0: remove_dynamic_GXT_entry "NAME"
Данный опкод выводит постоянный текст-бокс с текстом из gxt записи NAME, которую мы создали ранее.
0512: show_permanent_text_box 'NAME'
Чтобы убрать текст бокс, нужно воспользоваться опкодом 03E6: remove_text_box
Этот опкод выведет на экран форматированный текст бокс. Он будет выведен на экран всего на пару секунд, а потом сам исчезнет.
0ACE: show_formatted_text_box "Text %d" 1@
Как вы заметили, в опкоде стоит символ %d и переменная 1@. Так вот, у форматированных текстов есть одна особенность - в них можно выводить данные из переменной. %d - это тип переменной, а 1@ - переменная, число из которой нужно вывести на экран.
Типы переменных для добавления в текст:
%d - целое число
%f - дробное
%s - строка
Если мы напишем такой код:
1@ = 333 0ACE: show_formatted_text_box "Text %d" 1@
В игре на экран будет выведена запись "Text 333"
Если напишем такой:
1@ = 333.333 0ACE: show_formatted_text_box "Text %f" 1@
То будет выведен текст "Text 333.333"
По такому же принципу работают следующие опкоды:
0ACF: show_formatted_styled_text "This is %.4X opcode" time 2000 style 1 0x0ACF 0AD0: show_formatted_text_lowpriority "This is %.4X opcode" time 2000 0x0AD0 0AD1: show_formatted_text_highpriority "This is %.4X opcode" time 2000 0x0AD1
Просто подставляете в конце вместо 0x0AD0 переменную и в тексте указываете тип. Можно добавлять несколько переменных, одну за другой.
Например так:
1@ = 1 2@ = 10 0ACE: show_formatted_text_box "%d Text %d" 1@ 2@
Результат: "1 Text 10"
В данных опкодах не обязательно выводить переменные. Если вам это не нужно, просто удалите символы 0x0ACF в конце.
Аналоги этих же опкодов, но они берут текст из gxt записи.
00BB: show_text_lowpriority GXT 'IE23' time 3000 flag 1 00BC: show_text_highpriority GXT 'MTIME3' time 1000 flag 1
Стилизованный форматированный текст:
0ACF: show_formatted_styled_text "Text" time 2000 style 1 0x0ACF
Значения style:
1 - текст по середине, как при провале миссии
2 - текст выводится, где название миссии
3 - текст как при аресте или смерти игрока
4 - сверху, как в гоночных миссиях
6 - по центру, как в гоночных миссиях
7 - как при провале миссии, но уже вверху
Стилизовнный текст из gxt записи:
00BA: show_text_styled GXT "BEEFY" time 1000 style 2
Если урок был вам непонятен, рекомендую ознакомиться с уроком по текстам от wmysterio. А на этом все!