CLEO
September 1, 2020

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. А на этом все!

Урок "Работа с текстом" от wmysterio