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

External Script – что это такое и как с ним работать?

Раздел: Основы скриптинга | Автор: yelmi | Рейтинг: 7.11 (9) | Хитов 6402


Подходим к барышне в светлой кепке и темной футболке с номером 31. Наносим ей удар в челюсть (хук справа :) ) и наблюдаем ее реакцию. Заметили, что ее реакция изменилась. Итак, наш внешний скрипт запущен и работает. Убедится в этом можно также и по наличию у данной барышни оружия (model #COLT45). Но стоит получить оду звезду розыска, как барышня будет атаковать игрока. А если игрок начнет стрелять (при наличии звез), то барышня будет атаковать игрока с применением оружия.
Немного поясню принцип работы опкода 0928.
Игра генерирует случайных актеров, опкодом 0928 мы указываем игре привязать к модели актера #BFYST наш внешний скрипт. Теперь при каждом создании случайного актера с моделью #BFYST игра применит к этому актеру внешний скрипт.
При таком запуске внешний скрипт будет работать всегда, вне зависимости от того на миссии игрок или нет. Для нашего случая это не смертельно, поскольку он у нас один. Но для оригинального майна существует лимит количества одновременно запущенных внешних скриптов, и превышать его не рекомендуется. Смотрите пример

Теперь пришло время рассмотреть вариант запуска внешнего скрипта при выполнении условия (условий). Для этого напишем стартер внешнего скрипта:

Код:
:STARTEX
03A4: name_thread 'STARTEX'
00D6: if and
0038: $ONMISSION == 0 // не на миссии
0256: player $PLAYER_CHAR defined
004D: jump_if_false @STARTEX_120
0226: 0@ = actor $PLAYER_ACTOR health
00D6: if
8039: not 0@ == 0
// если здоровье игрока равно 0 то идем на метку завершения внешнего скрипта
004D: jump_if_false @STARTEX_131
0926: $Script_Status = external_script_status 0 (MILITIA)
//определяем запущен внешний скрипт или нет
00D6: if
0038: $Script_Status == 0// при 0 запускаем внешний скрипт
004D: jump_if_false @STARTEX_120
// если $Script_Status = 1,
// то соответственно второй раз запускать скрипт не нужно
08A9: load_external_script 0 (MILITIA) // загружаем внешний скрипт
00D6: if
08AB: external_script 0 (MILITIA) loaded //проверяем загружен ли скрипт
004D: jump_if_false @STARTEX_120
0913: run_external_script 0 (MILITIA) // запускаем внешний скрипт

:STARTEX_120
0001: wait 0 ms
0002: jump @STARTEX

:STARTEX_131
090F: end_external_script 0 (MILITIA) // останавливаем работу скрипта
0001: wait 0 ms
0002: jump @STARTEX


ну что же стартер внешнего скрипта работает, но он не подходит нам, поскольку в нашем скрипте нет создания актера, а стало быть, наш внешний скрипт не работает полностью. Смотрите пример

Добавим в стартер создание актера актера

Код:
:STARTEX
03A4: name_thread 'STARTEX'
00D6: if and
0038: $ONMISSION == 0
0256: player $PLAYER_CHAR defined
004D: jump_if_false @STARTEX_120
0226: 0@ = actor $PLAYER_ACTOR health
00D6: if
8039: not 0@ == 0
004D: jump_if_false @STARTEX_131
0926: $Script_Status = external_script_status 0 (MILITIA)
00D6: if
0038: $Script_Status == 0
004D: jump_if_false @STARTEX_120
08A9: load_external_script 0 (MILITIA)
00D6: if
08AB: external_script 0 (MILITIA) loaded
004D: jump_if_false @STARTEX_120
04C4: store_coords_to 2@ 3@ 4@ from_actor $PLAYER_ACTOR with_offset 1.0 3.0 -0.9
009A: 1@ = create_actor_pedtype 4 model #MALE01 at 2@ 3@ 4@
0913: run_external_script 0 (MILITIA) 1@

:STARTEX_120
0001: wait 0 ms
0002: jump @STARTEX

:STARTEX_131
090F: end_external_script 0 (MILITIA)
0002: jump @STARTEX


Опкодом 04C4: - записываем в переменные 2@ 3@ 4@ координаты относительно актера $PLAYER_ACTOR со смещением 1.0 3.0 -0.9.
Опкодом 009A: - создаем актера с в координатах 2@ 3@ 4@,
модели #MALE01 и #NULL не требуют предварительной загрузки.
0913: run_external_script 0 (MILITIA) 1@ - запускаем внешний скрипт с созданным нами актером. Это запуск внешнего скрипта с параметрами. Смотрите пример


  «123456»

  1 2 3 4 5 6 7 8 9 10  

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

5 cамых читаемых статей из раздела Основы скриптинга:
» Работа со звуками в GTA San Andreas
» Директивы
» Контроль клавиатуры
» External Script – что это такое и как с ним работать?
» Панель, или список товаров. Часть II.

5 последних статей раздела Основы скриптинга:
» Директивы
» Дополнительные команды
» Ключевые слова
» Классы
» Циклы

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

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама

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