Admin Мастер Программного Форума
Сообщения : 35 Ваши Заработанные Очки : 10086 Репутация : 0 Дата регистрации : 2012-12-15 Возраст : 28 Откуда : Muravlenko
| Тема: [Cleo] FAQ Сб Дек 15, 2012 2:22 pm | |
| Чем отличается CLEO скрипт, от скриптов main.scm? По большому счету отличий практически нет. CLEO – скрипты с расширением .cs не нуждаются в запуске, то есть они стартуют при запуске игры самостоятельно. В CLEO – скриптах не рекомендуется использовать глобальные переменные, спокойно можно использовать только $ONMISSION, $PLAYER_ACTOR, $PLAYER_CHAR, а также локальные от 0@ до 31@. Так же нельзя использовать опкод 004E: end_thread. Если Вам необходимо остановить Ваш CLEO – скрипт используйте опкод 0A93: end_custom_thread.
Есть ли шаблон для CLEO - скрипта? Шаблоном для любого CLEO-скрипта может быть только одна строка {$CLEO} все остальное зависит от самого скрипта и его назначения. {$CLEO} - директива компилятора, она сообщает компилятору о том, что скрипт нужно компилировать без заголовка.
Как написать простой CLEO-скрипт? Для начала нужно определиться, что желаем увидеть в результате.
Допустим нам необходимо организовать парковку транспорта в определенном месте. Для этого нет необходимости проверять существует ли игрок или нет, а так же нет необходимости организовывать бесконечный цикл. Почему пишем скрипт: Код: - Код:
-
{$CLEO} wait 0 014B: 0@ = init_parked_car_generator #MTBIKE color -1 -1 0 alarm 0 door_lock 0 0 10000 at 2470.5559 -1670.0945 12.1164 angle 196.6768 0A17: set_parked_car_generator 0@ flag 1 014C: set_parked_car_generator 0@ cars_to_generate_to 101
014B: 1@ = init_parked_car_generator #ADMIRAL color -1 -1 0 alarm 0 door_lock 0 0 10000 at 2476.3293 -1678.3358 13.338 angle 247.8133 0A17: set_parked_car_generator 1@ flag 1 014C: set_parked_car_generator 1@ cars_to_generate_to 101 // Таким образом можно организовать парковку до 32 авто 0A93: end_custom_thread Если же есть необходимость, чтобы скрипт работал постоянно, то есть организовать бесконечный цикл, поступаем следующим образом: - Код:
-
{$CLEO} 0000:
:HEALTH 0001: wait 0 ms 00D6: if 0256: player $PLAYER_CHAR defined 004D: jump_if_false @HEALTH 0226: 0@ = actor $PLAYER_ACTOR health if 0019: 0@ > 25 jf @HEALTH_1 jump @HEALTH
:HEALTH_1 00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@ 018C: play_sound 1053 at 1@ 2@ 3@ wait 300 jump @HEALTH
0000: - опкод не обрабатываемый игрой, он нам нужен здесь лишь для того, чтобы не допустить возврат на первую метку скрипта. Для чего это нужно делать читайте в Sanny Builder Help: CLEO 3 Code Library/FAQ по CLEO 3
Как запустить нужный мне CLEO – скрипт из другого CLEO – скрипта? Для начала необходимо усвоить одно условие: все скрипты с расширением .cs запускаются при старте игры. Если есть необходимость не запускать скрипт при старте игры, а запустить его при выполнении определенного условия в другом скрипте. Для этого нужный нам скрипт необходимо компилировать с расширением отличным от .cs. Например с расширением .my. Просто пропишите в директиве {$CLEO .my}. Для примера напишем скрипт где будем проверять нажатие определенной клавиши, и если клавиша будет нажата запускаем другой скрипт. - Код:
-
{$CLEO} 0000:
:START 0001: wait 0 ms 00D6: if and 0256: player $PLAYER_CHAR defined 0AB0: key_pressed 53 // клавиша «5» 004D: jump_if_false @START 0A92: create_custom_thread "text.my" 0A93: end_custom_thread Теперь пишем скрипт text.my, для наглядности выводим текст бокс - Код:
-
{$CLEO .my} wait 0 03E5: show_text_box 'HELP101' // Respect can be earned be passing certain missions, killing rival gangs members, gaining territory and tagging. 0A93: end_custom_thread сохраняем как text.txt а затем компилируем. У нас получилось два CLEO – скрипта START.cs и text.my. Все запускаем игру и при нажатии клавиши «5» наблюдаем работу скрипта text.my.
| |
|