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

Запускаем внешний скрипт «PLAYER_PARACHUTE».

Раздел: Скрипты | Автор: yelmi | Рейтинг: 8.47 (15) | Хитов 6140
Многие, наверное, задавали вопрос, почему же внешний скрипт PLAYER_PARACHUTE нормально не работает на очищенном (stripped) майне (main.scm), но он же прекрасно работает в стандартном?

Собственно говоря, ответ напрашивается один. В оригинальном main.scm есть еще что-то, что заставляет его нормально работать. Просмотрев код стартера данного внешнего скрипта мы ничего не обнаружим. А так как больше ни где нет ссылок на данный внешний скрипт, то нам необходимо искать глобальные переменные которые присутствуют в нем, то есть те глобальные переменные, значения которых непосредственно в данном скрипте не обозначены. Где же у нас происходит инициализация основной массы глобальных переменных, еще не догадались? Ладно, гадать не будем, скажу прямо в миссиях INITIAL и INITIL2. Приступим к поиску.
Вот чудо, первые же строки миссии INITIAL содержат все глобальные переменные, которые мы так долго искали. :-P
Теперь займемся написанием стартера.
Для начала возьмем очищенный майн (Sanny Builder 3\data\sa\stripped.txt).

Над строками, или вместо них

Код:
{
use macro (Ctrl+J) "headsa"
to insert a file header
}

добавим заголовок

Код:
DEFINE MISSIONS 0
//DEFINE MISSION {ID} 0 AT {LABEL} @

DEFINE EXTERNAL_SCRIPTS 1 // Use -1 in order not to compile AAA script
DEFINE SCRIPT PLAYER_PARACHUTE AT @PLCHUTE // 0

DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 574

Далее перед строкой
Код:
// put your create_thread commands here

вставляем
Код:
create_thread @STARTER

и после строки
Код:
// put your mods (threads) here

пишем стартер внешнего скрипта

Код:
:STARTER
thread 'STARTER'
0005: $1500 = 5.0 // Вот они наши красавицы :)
0005: $1501 = -5.0 // для тех кто не понял
0005: $1503 = -1.5 // это и есть те глобальные переменные,
0005: $1504 = -30.0 // которые мы так долго искали :)
0005: $1505 = 32.0
0005: $1506 = 0.0
0004: $1512 = 0
0004: $FREEFALL_STAGE = 0
0004: $PARACHUTE_CREATION_STAGE = 0
0213: $3063 = create_pickup #GUN_PARA type 15 at 2057.0 2434.0 166.0
0213: $3094 = create_pickup #GUN_PARA type 15 at 1528.222 -1357.985 330.0371
0213: $3156 = create_pickup #GUN_PARA type 15 at -2350.0 -1586.0 485.0
0213: $3163 = create_pickup #GUN_PARA type 15 at -2679.0 1933.0 217.0
0213: $3172 = create_pickup #GUN_PARA type 15 at -1542.857 698.4825 139.2658
0213: $3174 = create_pickup #GUN_PARA type 15 at -225.6758 1394.256 172.0143
0213: $3175 = create_pickup #GUN_PARA type 15 at -773.0379 2423.499 157.0856
0213: $3187 = create_pickup #GUN_PARA type 15 at -1753.418 885.3446 295.5166

:STARTER_1
0001: wait $DEFAULT_WAIT_TIME ms
00D6: if
0491: actor $PLAYER_ACTOR has_weapon 46
004D: jump_if_false @STARTER_3
0926: $SCRIPT_STATUS = external_script_status 0 (PLAYER_PARACHUTE)
00D6: if
0038: $SCRIPT_STATUS == 0
004D: jump_if_false @STARTER_2
08A9: load_external_script 0 (PLAYER_PARACHUTE)
00D6: if
08AB: external_script 0 (PLAYER_PARACHUTE) loaded
004D: jump_if_false @STARTER_2
0913: run_external_script 0 (PLAYER_PARACHUTE)

:STARTER_2
0002: jump @STARTER_4

:STARTER_3
090F: end_external_script 0 (PLAYER_PARACHUTE)

:STARTER_4
0002: jump @STARTER_1


а после строки
Код:
// put your external scripts here

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

Готовый пример можно скачать здесь.

 

  1 2 3 4 5 6 7 8 9 10  

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

5 cамых читаемых статей из раздела Скрипты:
» Подключаем внешний скрипт «CARMOD» в очищенном main.scm.
» Запускаем внешний скрипт «PLAYER_PARACHUTE».
» Добавляем внешний скрипт в очищенный main.scm. Часть 3
» Добавляем внешний скрипт в очищенный main.scm. Часть 1
» Вертолет, несущий на магните авто.

5 последних статей раздела Скрипты:
» Вертолет, несущий на магните авто.
» Добавляем внешний скрипт в очищенный main.scm. Часть 3
» Добавляем внешний скрипт в очищенный main.scm. Часть 2
» Добавляем внешний скрипт в очищенный main.scm. Часть 1
» Подключаем внешний скрипт «CARMOD» в очищенном main.scm.

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

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама

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