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

Устройство кода миссии

Раздел: Миссии | Автор: yelmi | Рейтинг: 10.00 (2) | Хитов 8575


Итак, мы выяснили, что при любом варианте (провал или успешное прохождение) все равно возвращаемся на следующую после gosub @MissionStart строку. Где собственно проверяется, убит или арестован игрок

Код:
gosub @MissionStart
if
wasted_or_busted // убит или арестован
jf @MissionCleanup // если нет, то переходим на блок завершения миссии
gosub @MissionFailed
// если убит или арестован, то переходим на блок провала с возвратом на
// следующую после gosub @MissionFailed строку
Блок завершения миссии

:MissionCleanup
$ONMISSION = 0 // integer values
mission_cleanup
end_thread


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

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

Код:
:MissionStart
Model.Load(#BFINJECT)
038B: load_requested_models

:MissionStart_27
wait 0
if
Model.Available(#BFINJECT)
jf @MissionStart_27
01EB: set_traffic_density_multiplier_to 0.0
// отключаем трафик
03DE: set_pedestrians_density_multiplier_to 0.0
// убираем появление случайных актеров
Player.CanMove($PLAYER_CHAR) = False
// делаем игрока неподвижным
02A3: toggle_widescreen 1 // включаем широкий экран
$car = Car.Create(#BFINJECT, 2636.431, -1730.885, 10.7281)
Car.Angle($car) = 89.3845
Actor.PutAt($PLAYER_ACTOR, 2634.789, -1722.628, 10.8984)
Actor.Angle($PLAYER_ACTOR) = 179.9178
04E4: unknown_refresh_game_renderer_at 2634.789 -1722.628
//делаем прорисовку местности в указанных координатах
Camera.SetAtPos(2634.789, -1722.628, 11.8984)
// и устанавливаем камеру
Camera.SetBehindPlayer
wait 500
fade 1 500


Поскольку это миссия, то нам необходимо объяснить играющему цель миссии, то есть, то что нужно сделать чтобы ее пройти. Для этого выводим текст на экран, а чтобы во время показа текста нам не мешали ни случайный транспорт ни актеры, мы и отключаем их появление. Нужные нам тексты находятся в разных GXT таблицах поэтому приходится для того чтобы текст отображался на экране загружать разные таблицы для каждого предложения.

Код:
:MissionStart_37
wait 0
054C: use_GXT_table 'GARAGE1'
//загружаем таблицу 'GARAGE1'
00BC: show_text_highpriority GXT 'GAR1_22' time 3000 flag 1
wait 3000
03D5: remove_text 'GAR1_22'
054C: use_GXT_table 'BLOOD'
00BC: show_text_highpriority GXT 'BLOD_01' time 5000 flag 1
wait 5000
03D5: remove_text 'BLOD_01'
00BC: show_text_highpriority GXT 'BLOD_02' time 5000 flag 1
wait 5000
03D5: remove_text 'BLOD_02'
Player.CanMove($PLAYER_CHAR) = True
// игроком можно управлять
02A3: toggle_widescreen 0 //отключаем широкий экран



  «123»

  1 2 3 4 5 6 7 8 9 10  

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

5 cамых читаемых статей из раздела Миссии:
» Устройство кода миссии
» Запуск миссии
» Создание миссии. Часть 1

5 последних статей раздела Миссии:
» Создание миссии. Часть 1
» Устройство кода миссии
» Запуск миссии

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

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама

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