CLEO: Урок 2 - Пишем свой скрипт
Сегодня мы попробуем написать первый полноценный CLEO-скрипт, используя знания, полученные на прошлом уроке. Наш скрипт должен будет завершать запущенную миссию, если здоровье игрока станет меньше 50.
И так, пишем две строки с которых начинается любой CLEO-скрипт
{$CLEO} 0000:
Наш скрипт будет повторяться бесконечно, поэтому 0A93: end custom thread в конце писать не нужно.
Теперь добавляем метку START и добавляем задержку wait 0, чтобы игра не зависла
{$CLEO} 0000: :START wait 0
Далее нужно написать условие, при которых скрипт будет завершать миссию. Напишем условие: если миссия запущена и игрок существует, то идем дальше по скрипту, если нет - возвращаемся на метку START.
if and $ONMISSION == 1 0256: player $PLAYER_CHAR defined jf @START
Отлично, условие написано, теперь нужно добавить действия, которые будут выполнены, если условие верно.
0226: 1@ = actor $PLAYER_ACTOR health if 1@ < 50 jf @START 045C: abort_mission wait 5000
И так, что мы делаем в данном куске кода:
1) Записываем текущее здоровье игрока в переменную 1@
К сожалению в CLEO нельзя сразу проверить здоровье актера одним опкодом, например так:
actor $PLAYER_ACTOR health < 50
Поэтому придется сначала записать здоровье в переменную, а уже потом проверять переменная меньше 50 или нет.
2) Добавляем проверку на то, что переменная 1@ (здоровье) меньше 50
3) Если условие не верно и переменная больше 50, то возвращаемся на метку START
4) Если верно - завершаем миссию
5) Добавляем задержку 5 секунд, чтобы скрипт подождал пока миссия завершится
Теперь нам нужно сделать так, чтобы скрипт постоянно повторялся. Чтобы миссия завершалась каждый раз, когда здоровье игрока будет меньше 50.
Для этого в конце добавим опкод возвращения на метку START.
jump @START
Если мы добавим 0A93: end_custom_thread вместо jump @START, то скрипт отключится сразу после того, как будет завершена миссия. Заново он начнет работать только после перезагрузки игры.
Вот что у нас получилось в итоге:
{$CLEO} 0000: :START wait 0 if and $ONMISSION == 1 0256: player $PLAYER_CHAR defined jf @START 0226: 1@ = actor $PLAYER_ACTOR health if 1@ <= 50 jf @START 045C: abort_mission jump @START
Теперь нажимаем вкладку Запуск/Компилировать или жмем клавишу F6. Далее выбираем путь до папки CLEO в GTA SA.
Вот и всё, скрипт создан и установлен в игру. Найти его можно в папке CLEO.
Последний шаг. Запустите игру и проверьте работает ли скрипт. Если он не работает - внимательно сверьте код в статье и тот, что вы написали, наверняка найдете ошибку.
Если скрипт работает - поздравляю! Вы уже на шаг ближе к пониманию устройства CLEO скриптов (Вы же не просто скопировали и вставили весь код, да? МММмм?)
Надеюсь, вам все было понятно. До следующего урока!