Делаем новые миссии. CLEO - скрипты, cutscene, статьи, программы. Игровые новости.
 
27.9.07 17:56 |

Установка и эксплуатация CLEO 3.

Раздел: CLEO 3 | Автор: yelmi | Рейтинг: 6.23 (107) | Хитов 33486


Никогда не делайте возврат на первую метку CLEO – скрипта и не применяйте thread 'NAME'

Как известно, а кому не известно тот узнает, в GTA SA миссии и внешние скрипты не поддерживают переход на первую метку миссии или внешнего скрипта.

Тот, кто исследовал main.scm, а особенно внешние скрипты, наверное, задавался вопросом о целесообразности такой записи:

Код:
:ROULETE
03A4: name_thread 'ROULETE'
0006: 1@ = 0
00D6: if
0039: 1@ == 1
004D: jump_if_false @ROULETE_90
029B: 0@ = init_object #ROULETTE_TBL at 0.0 0.0 0.0
029B: $ROULETE_CHIPS($8549,151i) = init_object #CHIP_STACK07 at $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3
0662: NOP "AAAAAAA"

:ROULETE_90


Ведь все что идет после опкода 004D: никогда не будет отрабатывать. Похоже R* таким образом страховали первую метку внешнего скрипта. Другого объяснения у меня нет, поскольку подобная запись по большому счету бессмысленна. Для примера напишем простенький скрипт:

Код:
:TEST

:TEST_1
00BA: show_text_styled GXT 'STAT321' time 5000 style 4
wait 5000
00BE: text_clear_all
jump @TEST_1
Скомпилируем его. Теперь проведем декомпиляцию скрипта и обнаружим следующую запись:
:NONAME
00BA: show_text_styled GXT 'STAT321' time 5000 style 4
0001: wait 5000 ms
00BE: text_clear_all
0002: jump @NONAME //возвращаемся на первую метку скрипта


У нас получился переход на первую метку скрипта, для внешнего скрипта это 100% вылет.
Дабы оставить первую метку не тронутой можно воспользоваться вариантом R* или написать не обрабатываемый игрой опкод.

Код:
:TEST
0@ = 0
if
0@ == 1
jf @TEST_1

:TEST_1
или
:TEST
0000:

:TEST_1


Поскольку CLEO – скрипт это тот же внешний скрипт то у него тоже не может быть переход на первую метку скрипта.
Напишем наш первый CLEO – скрипт используя директиву {$E}

Код:
{$E}
:TEST
0000:

:TEST_1
wait 2000
00BA: show_text_styled GXT 'STAT321' time 5000 style 4
wait 5000
03D6: remove_styled_text 'STAT321'
jump @TEST_1


Теперь поясню, почему я не использовал в этом скрипте опкод 00BE: text_clear_all. В этом примере CLEO – скрипт представляет собой бесконечный цикл, то есть работает постоянно, поэтому при применении опкода 00BE: текст выводимый в main.scm будет уничтожен.

Сохраняем наш скрипт, например TEST.txt и компилируем его, а именно нажимаем F6 (компилировать). После компиляции мы получим TEST.scm переименовываем его в TEST.cs и помещаем его в папку CLEO ( GTASA/CLEO). Все, наш первый CLEO – скрипт готов, запускаем игру и видим результат его работы.


  «123»

  1 2 3 4 5 6 7 8 9 10  

Родственные ссылки
» Другие статьи раздела CLEO 3
» Эта статья от пользователя yelmi

5 cамых читаемых статей из раздела CLEO 3:
» Установка и эксплуатация CLEO 3.

5 последних статей раздела CLEO 3:
» Установка и эксплуатация CLEO 3.

¤ Перевести статью в страницу для печати
¤ Послать эту cтатью другу

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама
Ибп купить в москве
ИБП. В наличии. Выгодно! С гарантией и доставкой по РФ! Успейте купить
mt-energo.ru

Вверх     Вернуться на главную. Вход в Систему. Статьи. Скачать. Миссии. ФОРУМ Обратная связь.   
   
   
Яндекс.Метрика
   
   
- Генерация страницы: 0.03 секунд -