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

Добавляем внешний скрипт в очищенный main.scm. Часть 1

Раздел: Скрипты | Автор: yelmi | Рейтинг: 9.00 (1) | Хитов 3866
Очищенный main.scm представляет собой главный поток “MAIN” без потоков, внешних скриптов и миссий. Пример очищенного main.scm можно найти в папке Sanny Builder 3\data\sa\stripped.txt.

Допустим, нам необходимо подключить внешние скрипты Гардероба (WARDROBE) и покупки одежды (CLOTHES).
Нам необходимо в заголовок
Код:
DEFINE MISSIONS 0
//DEFINE MISSION {ID} 0 AT {LABEL} @
DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script
//DEFINE SCRIPT {NAME} AT {LABEL} @
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0

добавить
Код:
DEFINE SCRIPT WARDROBE AT @WARROBE     // 0
DEFINE SCRIPT CLOTHES AT @CLOTH // 1

Заголовок имеет следующий вид
Код:
DEFINE MISSIONS 0
//DEFINE MISSION {ID} 0 AT {LABEL} @

DEFINE EXTERNAL_SCRIPTS 2 // Общее количество внешних скриптов.
DEFINE SCRIPT WARDROBE AT @WARROBE // 0
DEFINE SCRIPT CLOTHES AT @CLOTH // 1

DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0

Под строкой
// put your create_thread commands here
вставляем
Код:
004F: create_thread @ESC_Interior_Manager

Находим строку
// put your mods (threads) here
Ниже пишем код стартера, для запуска внешних скриптов

Код:
:INTMAN
03A4: name_thread 'INTMAN'

:INTMAN_11
00D6: if
0256: player $PLAYER_CHAR defined
004D: jump_if_false @INTMAN_34
0050: gosub @INTMAN_45

:INTMAN_34
0001: wait 0 ms
0002: jump @INTMAN_11


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

Код:
:INTMAN_45
0871: init_jump_table 0@ total_jumps 2 default_jump 0 @INTMAN_136 jumps 0 @INTMAN_108 1 @INTMAN_122 -1 @INTMAN_136 -1 @INTMAN_136 -1 @INTMAN_136 -1 @INTMAN_136 -1 @INTMAN_136

:INTMAN_108
0050: gosub @INTMAN_138
0002: jump @INTMAN_136

:INTMAN_122
0050: gosub @INTMAN_530
0002: jump @INTMAN_136

:INTMAN_136
0051: return

Применение таблицы переходов оправданно простотой и удобством использования.
При старте скрипта локальная переменная 0@ равна нулю, соответственно переход будет осуществлен на метку INTMAN_108.
Переход с возвратом gosub @INTMAN_138 перемещает нас на метку INTMAN_138.
Нам необходимо проверить номер текущего интерьера игрока
Код:
:INTMAN_138
09E8: $1250 = actor $PLAYER_ACTOR active_interior
00D6: if
8038: not $1250 == 0
004D: jump_if_false @INTMAN_528
094B: v$Active_Interior_Name = get_active_interior_name_from_actor $PLAYER_ACTOR // 16-byte string
00D6: if
8846: not string v$Active_Interior_Name empty // same as 0844
004D: jump_if_false @INTMAN_528

Проверяем, не равна ли переменная $1250 нулю, то есть, находится ли игрок в каком либо интерьере (помещении). В переменную v$Active_Interior_Name записываем имя текущего интерьера. Проверяем, не является ли переменная v$Active_Interior_Name пустой.

Продолжение следует…

 

  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.18 секунд -