00036. Катсцены и всё, что необходимо для примитивного видеоролика

Катсцены и всё, что необходимо для примитивного видеоролика|Как вы уже догадались, в этом уроке речь пойдет об катсценах. Думаю в игре вы наблюдали такие катсцены, видеоролики в начале или конце миссии. Сегодня мы сделаем примитивную мини-цену.|wmysterio|wmysterio||||В первую очередь, рассмотрим опкоды для затемнения ( осветления ) экрана. Когда мы начинаем миссию, то экран станет чёрным, и когда ролик заканчивается - возвращается к обычному режиму. Что-же, вот этот опкод:

016A: fade 0 time 5000

Здесь: 0 — экран будет затемнятся ( ставать черным ), если поставить 1 - то экран будет осветляться 5000 — время, за которое экран полностью будет затемнённым ( чем дольше время, тем дольше будет затемнятся. Если поставить ноль, то экран будет затемнятся мгновенно )

Обычно после этого опкода ставят задержку, равную времени затемнения ( осветления ):

Код затемнения:Код осветления:

```

016A: fade 0 time 5000 wait 5000

</td><td>

016A: fade 1 time 5000 wait 5000

</td></tr>
</tbody></table>

Так же мы можем указывать цвет затемнения ( осветления ). Делается это опкодом:

0169: set_fade_color_RGB 0 0 0



<div class="panel panel-default">
 <div class="panel-body">
Здесь:<br>
0 0 0 - цвет, который задаётся в RGB канале ( 1-й параметр - количество красного, 2-й - количество зелёного, 3-й - количество синего ). Если Вы уже владели графическим редакторами, типа Фотошопа, то это для вас не должно быть новостью.
 </div>
</div>

<div class="alert alert-danger alert-dismissible" role="alert">
 <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
**ВАЖНО:** Все цвета имеют своё ограничения: число должно быть от 0 до 255! Если не указывать этот параметр, то затемнение ( осветление ) будет по-умолчанию чёрным.
</div>

Давайте сделаем мини-скрипт осветления и затемнения. Сделаем, что бы цвет экрана был красным:

<table class="table table-bordered"><tbody>
<tr><th>Код затемнения:</th><th>Код осветления:</th></tr>
<tr><td>

0169: set_fade_color_RGB 255 0 0 016A: fade 0 time 2000 wait 2000

</td><td>

0169: set_fade_color_RGB 255 0 0 016A: fade 1 time 2000 wait 2000

</td></tr>
</tbody></table>

Чтобы во время катсцены не было ЧП, то есть что бы в кадр не попадали лишние актёры или транспорт, нужно очищать местность. Делается это опкодом:

0395: clear_area 0 at 681.8004 -474.1063 15.5363 radius 3.0



<div class="panel panel-default">
 <div class="panel-body">
Здесь:<br>
0 - очищает местность от объектов. Если поставить 1, то очищены будут так-же и эффекты<br>
681.8004 -474.1063 15.5363- координаты, где нужно очистить местность, будет стёрты актёры, транспорт и всё, что попало в радиус действия<br>
3.0 - указываем радиус действия, обычно я ставлю около 300.0
 </div>
</div>

Так же очень полезными оподами для создания катсцен являются:

01EB: set_traffic_density_multiplier_to 0.0 03DE: set_pedestrians_density_multiplier_to 0.0



Первый указывает ( регулирует ) частоту появления автомобилей на дорогах. Если поставить "0.0", то машины не будут появляться на дорогах. Аналогично действует и второй опкод, только действует он на пешеходов. Если поставить "1.0", то люди и транспорт будут появляться как обычно. Думаю, правильно будет сначала задать частоту появления авто и людей а затем очищать местность:

03DE: set_pedestrians_density_multiplier_to 0.0 01EB: set_traffic_density_multiplier_to 0.0 0395: clear_area 0 at 681.8004 -474.1063 15.5363 radius 3.0



Рассмотрим некоторые режимы интерфейса. В первую очередь обратим внимания на радар. Мы его можем убрать, что бы он нам не мешал во время просмотра ролика. Убрать радар можно опкодом:

0581: enable_radar 0



Так же можно убрать основной интерфейс: иконки оружия, денег, здоровья и т.п. Так же этим опкодом можно убрать и радар. Рассмотрим его:

0826: enable_hud 0



Для возврата в предыдущий режим смените 0 на 1.

Есть очень полезный для видеороликов опкод, который делает широкоформатный режим ( вверху и внизу появляются маленькие черные полоски ). Делается это опкодом:

02A3: enable_widescreen 1



Для возврата в предыдущий режим смените 1 на 0.

Рассмотрим основные опкоды для работы с камерой. Чтобы поставить камеру в нужное место, нужно воспользоваться опкодом:

Camera.SetPosition(987.4759, -2149.3523, 13.0937, 0.0, 0.0, 0.0)



<div class="panel panel-default">
 <div class="panel-body">
Здесь:<br>
987.4759, -2149.3523, 13.0937 - координаты точки, где должна стоять камера<br>
0.0, 0.0, 0.0 - эти параметры так и оставляйте. Они позволяют дополнительно настроить углы разворота камеры.
 </div>
</div>

Следом за этой командой пишут:

Camera.PointAt(987.256, -2150.7703, 13.0937, 2)



Этот опкод указывает место, куда будет смотреть камера. Если не поставить эту команду, то камера будет смотреть вверх. Здесь:

<div class="panel panel-default">
 <div class="panel-body">
Здесь:<br>
987.256, -2150.7703, 13.0937 - координаты, куда будет смотреть камера<br>
2 - режим камеры: 2 - будет перемещена мгновенно, если поставить 0 - то камера будет плавно переходить к этой точке.
 </div>
</div>

Чтобы во время просмотра ролика не было не прорисованных текстур, то нужно освежить местность, то есть быстро прорисовать их. Полезно, когда ролик будет далеко от СЖ. Я рекомендую использовать всегда эти опкоды перед использованием катсцен:

04E4: unknown_refresh_game_renderer_at 987.4759 -2149.3523 Camera.SetAtPos(987.4759, -2149.3523, 13.0937)



Второй опкод так же делает прорисовку, но для камеры.

<div class="panel panel-default">
 <div class="panel-body">
Здесь:<br>
987.4759, -2149.3523, 13.0937 - координаты прорисовки. В опкоде 04E4 ось Z указывать не нужно
 </div>
</div>

Раз можно поставить камеру, то значит её можно убрать ( точнее восстановить её в обычный режим )! Рассмотрим пару опкодов:

Camera.Restore_WithJumpCut Camera.SetBehindPlayer



Первая команда убирает камеру. Второй - заставляет камеру двигать камеру за игроком, то есть делает камеру как обычно. Советую использовать эту пару вместе.

Так-же, как и актёра или объекта, камеру можно перемещать во время ролика! Рассмотрим два опкода:

0936: set_camera -338.3795 -2146.4304 43.9853 position_to -273.8923 -2192.0386 28.7383 time 5000 drop_mode 1 0920: point_camera -337.1891 -2147.2615 44.0234 transverse_to -137.0 1257.0 6.0 time 5000 mode 1



1-й опкод указывает куда будет перемещаться камера. 2-й - куда будет перемещаться фокус камера. Мы можем назвать место, куда смотрит камера - поинтом. Теперь будет легче объяснить 2-й опкод: перемещает поинт с одной позиции в другую. 

<div class="panel panel-default">
 <div class="panel-body">
Здесь:<br>
-338.3795 -2146.4304 43.9853 - место, где раньше была позиция камеры<br>
-273.8923 -2192.0386 28.7383 - место, куда будет перемещена камера<br>
-337.1891 -2147.2615 44.0234 - место, где раньше была позиция поинта<br>
-137.0 1257.0 6.0 - место, куда будет перемещен поинт<br>
5000 - время, за которое будет перемещены камера и поинт. Как правило, время ставят одинаковое<br>
1 - режим перемещения: 1 будет перемещена плавно, если поставить 0 - то будет перемещена мгновенно
 </div>
</div>

После этого нужно снова указывать место камеры и её поинт. Здесь важно не запутаться, на простом примере думаю будет легче вам разобраться:

Camera.SetPosition(2358.656, -1246.348, 28.7884, 0.0, 0.0, 0.0) Camera.PointAt(2359.521, -1246.843, 28.7047, 2) // ставим камеру и её поинт

0936: set_camera 2358.656 -1246.348 28.7884 position_to 2358.656 -1246.348 28.7884 time 7000 drop_mode 1 0920: point_camera 2359.521 -1246.843 28.7047 transverse_to 2359.276 -1247.129 28.7047 time 7000 mode 1 // перемещаем камеру и поинт wait 7000 // ждём такое же время, как время перемещения камер

Camera.SetPosition(2358.656, -1246.348, 28.7884, 0.0, 0.0, 0.0) Camera.PointAt(2359.276, -1247.129, 28.7047, 2) // ставим новую камеру и поинт



Думаю основные команды для роботы с камерами мы рассмотрели. Давайте сделаем новую миссию, в которой мы будем использовать камеру. Так же напишем новый стартер для этой миссии:

// WMYSTERIO, ru-script.3dn.ru

DEFINE OBJECTS 1 DEFINE OBJECT SANNY BUILDER 3.04

DEFINE MISSIONS 2 // добавим новую миссию DEFINE MISSION 0 AT @MISSION_0 DEFINE MISSION 1 AT @MISSION_1 // добавим номер и метку миссии

DEFINE EXTERNAL_SCRIPTS 0

DEFINE UNKNOWN_EMPTY_SEGMENT 0

DEFINE UNKNOWN_THREADS_MEMORY 3072

{$VERSION 3.1.0027}

//-------------MAIN--------------- thread 'MAIN' set_wb_check_to 0 set_weather 0 select_interior 0 fade 0 0 0180: set_on_mission_flag_to $ONMISSION 00C0: set_current_time_hours_to 8 minutes_to 0 04E4: unknown_refresh_game_renderer_at 2491.1572 -1670.3434 Camera.SetAtPos(2491.1572, -1670.3434, 12.3359) $PLAYER_CHAR = Player.Create(#NULL, 2491.1572, -1670.3434, 12.3359) $PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR) Actor.Angle($PLAYER_ACTOR) = 66.3548 07AF: $PLAYER_GROUP = player $PLAYER_CHAR group Camera.SetBehindPlayer Player.SetClothes($PLAYER_CHAR, "WORKTRCAMOGRN", "WORKTR", 2) Player.SetClothes($PLAYER_CHAR, "SNEAKERBINCGANG", "SNEAKER", 3) Player.SetClothes($PLAYER_CHAR, "TSHIRTERISORN", "TSHIRT", 0) Player.Build($PLAYER_CHAR) Player.CanMove($PLAYER_CHAR) = True $TRAMPLIN = object.Create(#AD_JUMP, 2480.5842, -1721.8175, 12.5488) object.Angle($TRAMPLIN) = 180.0 object.SetImmunities($TRAMPLIN, 1, 1, 1, 1, 1) Object.Indestructibility($TRAMPLIN) = False Object.RemoveFromMissionCleanupList($TRAMPLIN) 0879: enable_gang_wars 1 076C: set_zone 'GAN1' gang 1 density_to 40 076C: set_zone 'GAN2' gang 1 density_to 80 076C: set_zone 'IWD1' gang 0 density_to 40 076C: set_zone 'IWD2' gang 0 density_to 80 076C: set_zone 'IWD3A' gang 2 density_to 40 076C: set_zone 'IWD3B' gang 2 density_to 80 0237: set_gang 0 weapons_to 22 31 14 0237: set_gang 1 weapons_to 30 28 17 0237: set_gang 2 weapons_to 36 15 27 0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 6 0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 6 0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 6 0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 7 0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 8 0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 9 0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 8 0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 9 0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 7 0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 9 0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 7 0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 8 0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 0 0746: set_acquaintance 0 of_actors_pedtype 8 to_actors_pedtype 0 0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 0 0767: set_zone 'MARKST' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'UNITY' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'LAIR1' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'LAIR2A' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'LAIR2B' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'LBAG1' popcycle_group_for_peds_and_cars_to 19 0767: set_zone 'LBAG2' popcycle_group_for_peds_and_cars_to 19 0767: set_zone 'LBAG3' popcycle_group_for_peds_and_cars_to 19 0767: set_zone 'BLUF1A' popcycle_group_for_peds_and_cars_to 10 0767: set_zone 'BLUF2' popcycle_group_for_peds_and_cars_to 10 0767: set_zone 'SUN1' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'SUN1' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'SUN3A' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'SUN3B' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'SUN3C' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'SUN4' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'COM1A' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'COM1B' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'COM2' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'COM3' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'COM4' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'PER1' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'CHC1A' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'CHC1B' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'CHC2A' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'CHC2B' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'CHC3' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'CHC4A' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'CHC4B' popcycle_group_for_peds_and_cars_to 7 0874: set_zone 'CHC1A' popcycle_group_for_peds_to 9 0874: set_zone 'CHC1B' popcycle_group_for_peds_to 9 0874: set_zone 'CHC2A' popcycle_group_for_peds_to 9 0874: set_zone 'CHC2B' popcycle_group_for_peds_to 9 0874: set_zone 'CHC3' popcycle_group_for_peds_to 9 0874: set_zone 'CHC4A' popcycle_group_for_peds_to 9 0874: set_zone 'CHC4B' popcycle_group_for_peds_to 9 0767: set_zone 'CONF1A' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'CONF1B' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'THALL1' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'LDOC1A' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LDOC1B' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LDOC2' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LDOC3A' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LDOC3B' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LDOC3C' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LDOC4' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LDT1A' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'LDT1B' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'LDT1C' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'LDT3' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'LDT4' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'LDT5' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'LDT6' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'LDT7' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'EBE1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'EBE2A' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'EBE2B' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'EBE3C' popcycle_group_for_peds_and_cars_to 8 0767: set_zone 'ELCO1' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'ELCO2' popcycle_group_for_peds_and_cars_to 7 0874: set_zone 'ELCO1' popcycle_group_for_peds_to 9 0874: set_zone 'ELCO2' popcycle_group_for_peds_to 9 0767: set_zone 'GAN1' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'GAN2' popcycle_group_for_peds_and_cars_to 7 0874: set_zone 'GAN1' popcycle_group_for_peds_to 1 0874: set_zone 'GAN2' popcycle_group_for_peds_to 1 0767: set_zone 'GLN1' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'GLN2A' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'LIND1A' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'LIND1B' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LIND2A' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LIND2B' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LIND3' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'IWD1' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'IWD2' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'IWD3A' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'IWD3B' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'IWD4' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'IWD5' popcycle_group_for_peds_and_cars_to 7 0874: set_zone 'IWD1' popcycle_group_for_peds_to 1 0874: set_zone 'IWD2' popcycle_group_for_peds_to 1 0874: set_zone 'IWD3A' popcycle_group_for_peds_to 1 0874: set_zone 'IWD3B' popcycle_group_for_peds_to 1 0874: set_zone 'IWD4' popcycle_group_for_peds_to 1 0874: set_zone 'IWD5' popcycle_group_for_peds_to 1 0767: set_zone 'JEF1A' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JEF1B' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JEF2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JEF3A' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JEF3B' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JEF3C' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'LFL1A' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'LFL1B' popcycle_group_for_peds_and_cars_to 7 0874: set_zone 'LFL1A' popcycle_group_for_peds_to 9 0874: set_zone 'LFL1B' popcycle_group_for_peds_to 9 0767: set_zone 'LMEX1A' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'LMEX1B' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'ELS1A' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'ELS1B' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'ELS2' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'ELS3A' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'ELS3B' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'ELS4' popcycle_group_for_peds_and_cars_to 7 0874: set_zone 'ELS1A' popcycle_group_for_peds_to 10 0874: set_zone 'ELS1B' popcycle_group_for_peds_to 10 0874: set_zone 'ELS2' popcycle_group_for_peds_to 10 0874: set_zone 'ELS3A' popcycle_group_for_peds_to 10 0874: set_zone 'ELS3B' popcycle_group_for_peds_to 10 0874: set_zone 'ELS4' popcycle_group_for_peds_to 10 0767: set_zone 'MAR1' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'MAR2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'MAR3' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'MKT1' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'MKT2' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'MKT3' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'MKT4' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'MUL1A' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL1B' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL1C' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL2A' popcycle_group_for_peds_and_cars_to 10 0767: set_zone 'MUL2B' popcycle_group_for_peds_and_cars_to 10 0767: set_zone 'MUL3' popcycle_group_for_peds_and_cars_to 10 0767: set_zone 'MUL4' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL5A' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL5B' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL5C' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL6' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL7A' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'MUL7B' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'PLS' popcycle_group_for_peds_and_cars_to 8 0767: set_zone 'RIH1A' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'RIH1B' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'RIH2' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'RIH3A' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'RIH3B' popcycle_group_for_peds_and_cars_to 15 0767: set_zone 'RIH4' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'RIH5A' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'RIH6B' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'RIH5A' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'RIH6B' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'ROD1A' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD1B' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD1C' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD2A' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD2B' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD3A' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD3B' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD4A' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD4B' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD4C' popcycle_group_for_peds_and_cars_to 14 0767: set_zone 'ROD5A' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'ROD5B' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'SMB1' popcycle_group_for_peds_and_cars_to 8 0767: set_zone 'SMB2' popcycle_group_for_peds_and_cars_to 8 0767: set_zone 'VIN2' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'VIN3' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'VIN1A' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'VIN1B' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'VERO1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'VERO2' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'VERO3' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'VERO4A' popcycle_group_for_peds_and_cars_to 8 0767: set_zone 'VERO4B' popcycle_group_for_peds_and_cars_to 8 0767: set_zone 'CRANB' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'CALT' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'SUNMA' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'SUNNN' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'BATTP' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'ESPN1' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'ESPN2' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'ESPN3' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'BAYV' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'PARA' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'JUNIHO' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JUNIHI' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'CIVI' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'CHINA' popcycle_group_for_peds_and_cars_to 9 0874: set_zone 'CHINA' popcycle_group_for_peds_to 6 0767: set_zone 'SFDWT1' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'SFDWT2' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'SFDWT3' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'SFDWT4' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'SFDWT5' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'SFDWT6' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'FINA' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'CITYS' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'WESTP1' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'WESTP2' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'WESTP3' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'THEA1' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'THEA2' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'THEA3' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'GARC' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'HASH' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'OCEAF1' popcycle_group_for_peds_and_cars_to 8 0767: set_zone 'OCEAF2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'OCEAF3' popcycle_group_for_peds_and_cars_to 8 0767: set_zone 'DOH1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'DOH2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'CUNTC1' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'CUNTC2' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'CUNTC3' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'SFGLF1' popcycle_group_for_peds_and_cars_to 17 0767: set_zone 'SFGLF2' popcycle_group_for_peds_and_cars_to 17 0767: set_zone 'SFGLF3' popcycle_group_for_peds_and_cars_to 17 0767: set_zone 'SFGLF4' popcycle_group_for_peds_and_cars_to 17 0767: set_zone 'HILLP' popcycle_group_for_peds_and_cars_to 10 0767: set_zone 'SILLY1' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'SILLY2' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'SILLY3' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'SILLY4' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'SFAIR1' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'SFAIR2' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'SFAIR3' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'SFAIR4' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'SFAIR5' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'SFBAG1' popcycle_group_for_peds_and_cars_to 19 0767: set_zone 'SFBAG2' popcycle_group_for_peds_and_cars_to 19 0767: set_zone 'SFBAG3' popcycle_group_for_peds_and_cars_to 19 0767: set_zone 'EASB1' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'EASB2' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'ESPE1' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'ESPE2' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'ESPE3' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'LINDEN' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'YELLOW' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'BFC1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'BFC2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'RIE' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'LDM' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'RSW1' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'RSW2' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'RSE' popcycle_group_for_peds_and_cars_to 6 0767: set_zone 'LDS' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'SRY' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTS1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTS2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'LVA1' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LVA2' popcycle_group_for_peds_and_cars_to 18 0767: set_zone 'LVA3' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'LVA4' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'VAIR1' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'VAIR2' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'VAIR3' popcycle_group_for_peds_and_cars_to 16 0767: set_zone 'LVBAG' popcycle_group_for_peds_and_cars_to 19 0767: set_zone 'GGC1' popcycle_group_for_peds_and_cars_to 10 0767: set_zone 'GGC2' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'BFLD1' popcycle_group_for_peds_and_cars_to 10 0767: set_zone 'BFLD2' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'WWE' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'WWE1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'PINT' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'YBELL2' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'YBELL1' popcycle_group_for_peds_and_cars_to 17 0767: set_zone 'JTW1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTW2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTN1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTN2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTN3' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTN4' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTN5' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTN6' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTN7' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTN8' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTE1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTE2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTE3' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'JTE4' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'HGP' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'SPIN' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'BINT1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'BINT2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'BINT3' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'BINT4' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'PRP1' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'PRP2' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'PRP3' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'PRP4' popcycle_group_for_peds_and_cars_to 4 0767: set_zone 'REDE1' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'REDE2' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'REDE3' popcycle_group_for_peds_and_cars_to 2 0767: set_zone 'REDW1' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'REDW2' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'REDW3' popcycle_group_for_peds_and_cars_to 11 0767: set_zone 'REDW4' popcycle_group_for_peds_and_cars_to 5 0767: set_zone 'ROCE1' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'ROCE2' popcycle_group_for_peds_and_cars_to 0 0767: set_zone 'OVS' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'CREE' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'STRIP1' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'STRIP2' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'STRIP3' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'STRIP4' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'PILL1' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'PILL2' popcycle_group_for_peds_and_cars_to 9 0767: set_zone 'RING' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'ISLE' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'STAR1' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'STAR2' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'ROY' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'CAM' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'LOT' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'PIRA' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'VISA1' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'VISA2' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'CALI1' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'CALI2' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'DRAG' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'PINK' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'HIGH' popcycle_group_for_peds_and_cars_to 12 0767: set_zone 'CONST1' popcycle_group_for_peds_and_cars_to 18 0767: set_zone 'ANGPI' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'SHACA' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'BACKO' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'BEACO' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'FARM' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'PALO' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'MONT' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'MONT1' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'MTCHI1' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'MTCHI2' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'MTCHI3' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'MTCHI4' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'HBARNS' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'DILLI' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'TOPFA' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'BLUEB' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'BLUEB1' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'PANOP' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'BLUAC' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'CREEK' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'CREEK1' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'MAKO' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'TOPFA' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'FERN' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'NROCK' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'HANKY' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'LEAFY' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'RED' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'FLINTC' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'WHET' popcycle_group_for_peds_and_cars_to 3 0767: set_zone 'BIGE' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'ELQUE' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'BARRA' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'CARSO' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'PAYAS' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'PROBE' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'ELCA' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'FLINTR' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'ARCO' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'VALLE' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'FLINTI' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'MONINT' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'ROBINT' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'TOM' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'ALDEA' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'BRUJA' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'ROBAD' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'BONE' popcycle_group_for_peds_and_cars_to 1 0767: set_zone 'HAUL' popcycle_group_for_peds_and_cars_to 18 0767: set_zone 'QUARY' popcycle_group_for_peds_and_cars_to 18 0767: set_zone 'OCTAN' popcycle_group_for_peds_and_cars_to 18 0767: set_zone 'PALMS' popcycle_group_for_peds_and_cars_to 18 0767: set_zone 'EBAY' popcycle_group_for_peds_and_cars_to 18 0767: set_zone 'EBAY2' popcycle_group_for_peds_and_cars_to 18 0767: set_zone 'DAM' popcycle_group_for_peds_and_cars_to 18 014B: $MY_CAR = init_parked_car_generator #BULLET color -1 -1 0 alarm 0 door_lock 0 1 10000 at 2474.2131 -1690.8783 12.1239 angle 180.0 014C: set_parked_car_generator $MY_CAR cars_to_generate_to 101 0213: $PICKUP_0001 = create_pickup #BODYARMOUR type 15 at 2491.0 -1685.8561 13.5107 032B: $PICKUP_0002 = create_weapon_pickup #MINIGUN group 15 ammo 60 at 2493.0 -1685.8561 13.5107 02E1: $PICKUP_0003 = create_cash_pickup 500 at 2495.0 -1685.8561 13.5107 permanence_flag 1 04A6: $PICKUP_0004 = create_asset_money_pickup_at 2497.0 -1685.8561 13.5107 money 10000 10000 016C: restart_if_wasted_at 2027.77 -1420.52 15.99 angle 137.0 town_number 0 016C: restart_if_wasted_at 1180.85 -1325.57 12.58 angle 271.4 town_number 0 016D: restart_if_busted_at 1550.68 -1675.49 14.51 angle 90.0 town_number 0 016C: restart_if_wasted_at 1244.437 331.2261 18.5547 angle 7.5465 town_number 1 016D: restart_if_busted_at 632.2344 -571.7104 15.3515 angle 267.2 town_number 1 016C: restart_if_wasted_at -2199.719 -2308.075 29.6181 angle 322.8928 town_number 1 016D: restart_if_busted_at -2163.829 -2387.817 29.625 angle 134.2066 town_number 1 016C: restart_if_wasted_at -2670.285 616.4364 13.4531 angle 183.1042 town_number 1 016D: restart_if_busted_at -1605.792 716.8598 11.0241 angle 355.2978 town_number 1 016C: restart_if_wasted_at -316.3832 1056.045 18.7344 angle 1.6017 town_number 2 016D: restart_if_busted_at -212.1889 979.4168 18.3219 angle 278.0478 town_number 2 016C: restart_if_wasted_at -1514.823 2527.119 54.7443 angle 2.3546 town_number 2 016D: restart_if_busted_at -1393.072 2633.116 54.9491 angle 86.0424 town_number 2 016C: restart_if_wasted_at 1578.446 1770.682 9.8358 angle 99.7567 town_number 2 016D: restart_if_busted_at 2337.083 2453.802 13.9765 angle 90.7643 town_number 2 fade 1 0 create_thread @SAVE create_thread @STARTER create_thread @STARTER_NEW // создаём новый поток со стартером end_thread

:SAVE thread 'SAVE' wait 0 if AND $ONMISSION == 0 0AB0: key_pressed 115 then 03D8: show_save_screen wait 250 end jump @SAVE

:STARTER thread 'STARTER' wait 0 $ICON = marker.CreateIconAndSphere(15, 2287.793, -1667.109, 15.0317)

:STARTER_1 wait 0 if AND $ONMISSION == 0 00EC: actor $PLAYER_ACTOR 0 near_point 2287.793 -1667.109 radius 15.0317 3.0 jf @STARTER_1 marker.Disable($ICON) 00BA: show_text_styled GXT 'MIS_01' time 1000 style 2 start_mission 0 end_thread

:STARTER_NEW // наш новый стартер thread 'STARTER_NEW' wait 0 $ICON_NEW = marker.CreateIconAndSphere(38, 2510.8367, -1672.7837, 12.442)

:STARTER_NEW_1 wait 0 if AND $ONMISSION == 0 0102: actor $PLAYER_ACTOR in_sphere 2510.8367 -1672.7837 12.442 radius 2.0 2.0 2.0 sphere 0 stopped_on_foot jf @STARTER_NEW_1 if AND 8741: not actor $PLAYER_ACTOR busted not actor.Dead($PLAYER_ACTOR) jf @STARTER_NEW_1 if not actor.Driving($PLAYER_ACTOR) jf @STARTER_NEW_1 marker.Disable($ICON_NEW) 00BA: show_text_styled GXT 'MIS_02' time 1000 style 2 start_mission 1 end_thread

//-------------Mission 0--------------- // Originally: MISSION_0

:MISSION_0 thread 'MISSION_0' gosub @MISSION_0_29_57 if wasted_or_busted jf @MISSION_0_29_46 gosub @MISSION_0_29_144

:MISSION_0_29_46 $ONMISSION = 0 mission_cleanup end_thread

:MISSION_0_29_57 increment_mission_attempts $ONMISSION = 1 018A: 1@ = create_checkpoint_at 2184.3604 -1774.8608 12.3665 03BC: 2@ = create_sphere_at 2184.3604 -1774.8608 12.3665 radius 2.0 00BB: show_text_lowpriority GXT 'MS_0101' time 3000 flag 1

:MISSION_0_A wait 0 if 00EC: actor $PLAYER_ACTOR 0 near_point 2184.3604 -1774.8608 radius 12.3665 3.0 jf @MISSION_0_A marker.Disable(1@) 03BD: destroy_sphere 2@ model.Load(#BARREL4) 038B: load_requested_models

:MISSION_0_B wait 0 if model.Available(#BARREL4) jf @MISSION_0_B 0@ = object.Create(#BARREL4, 2153.9919, -1796.8591, 12.5507) object.Angle(0@) = 277.5201 model.Destroy(#BARREL4) 3@ = marker.CreateAboveObject(0@) 00BB: show_text_lowpriority GXT 'MS_0102' time 3000 flag 1

:MISSION_0_C wait 0 if 0366: object 0@ damaged jf @MISSION_0_C 0318: set_latest_mission_passed 'MIS_01' 01E3: show_text_1number_styled GXT 'M_PASS' number 5000 time 4000 style 1 Player.Money($PLAYER_CHAR) += 5000 play_music 1 gosub @MISSION_0_END create_thread @STARTER return

:MISSION_0_29_144 wait 0 gosub @MISSION_0_END 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 create_thread @STARTER return

:MISSION_0_END wait 0 if 03CA: object 0@ exists then object.RemoveReferences(0@) object.Destroy(0@) end marker.Disable(1@) marker.Disable(3@) 03BD: destroy_sphere 2@ return

// наша новая миссия!!! //-------------Mission 1--------------- // Originally: MISSION_1

:MISSION_1 thread 'MISSION_1' gosub @MISSION_1_29_57 if wasted_or_busted jf @MISSION_1_29_46 gosub @MISSION_1_29_144

:MISSION_1_29_46 $ONMISSION = 0 mission_cleanup end_thread

:MISSION_1_29_57 increment_mission_attempts $ONMISSION = 1 actor.SetImmunities($PLAYER_ACTOR, 1, 1, 1, 1, 1) player.CanMove($PLAYER_CHAR) = false 0169: set_fade_color_RGB 0 128 128 016A: fade 0 time 1000 wait 3000 03DE: set_pedestrians_density_multiplier_to 0.0 01EB: set_traffic_density_multiplier_to 0.0 0395: clear_area 0 at 2506.3228 -1666.5116 12.3863 radius 300.0 0826: enable_hud 0 02A3: enable_widescreen 1 model.Load(#GREENWOO) 038B: load_requested_models

:MISSION_1_A wait 0 if model.Available(#GREENWOO) jf @MISSION_1_A 0@ = car.Create(#GREENWOO, 2506.3228, -1666.5116, 12.3863) car.Angle(0@) = 90.795 car.SetImmunities(0@, 1, 1, 1, 1, 1) model.Destroy(#GREENWOO) 05CB: AS_actor $PLAYER_ACTOR enter_car 0@ as_driver 0 ms

:MISSION_1_B wait 0 if actor.InCar($PLAYER_ACTOR, 0@) jf @MISSION_1_B 04E4: unknown_refresh_game_renderer_at 2501.5085 -1669.8973 Camera.SetAtPos(2501.5085, -1669.8973, 13.3562) Camera.SetPosition(2501.5085, -1669.8973, 13.3562, 0.0, 0.0, 0.0) Camera.PointAt(2506.3228, -1666.5116, 12.3863, 2) wait 2000 03E6: remove_text_box 00BE: text_clear_all 016A: fade 1 time 1000 wait 1000 00BC: show_text_highpriority GXT 'MS01_01' time 4000 flag 1 // Я oбычный гaнгcтep, кoтopый дoлжeн yбивaть вpaгoв! wait 4000 0936: set_camera 2501.5085 -1669.8973 13.3562 position_to 2501.0186 -1665.4775 13.3554 time 7000 drop_mode 1 0920: point_camera 2506.3228 -1666.5116 12.3863 transverse_to 2506.3228 -1666.5116 12.3863 time 7000 mode 1 wait 6990 Camera.SetPosition(2501.0186, -1665.4775, 13.3554, 0.0, 0.0, 0.0) Camera.PointAt(2506.3228, -1666.5116, 12.3863, 2) 00BC: show_text_highpriority GXT 'MS01_02' time 5000 flag 1 // Хорошо, я знаю место, где их можно найти! Одного легче убить... wait 5000 0169: set_fade_color_RGB 0 128 128 016A: fade 0 time 1000 wait 1000 car.RemoveReferences(0@) 03DE: set_pedestrians_density_multiplier_to 1.0 01EB: set_traffic_density_multiplier_to 1.0 0826: enable_hud 1 02A3: enable_widescreen 0 Camera.Restore_WithJumpCut Camera.SetBehindPlayer 03E6: remove_text_box 00BE: text_clear_all wait 2000 0169: set_fade_color_RGB 0 128 128 016A: fade 1 time 1000 actor.SetImmunities($PLAYER_ACTOR, 0, 0, 0, 0, 0) player.CanMove($PLAYER_CHAR) = true 0318: set_latest_mission_passed 'MIS_02' 01E3: show_text_1number_styled GXT 'M_PASS' number 5000 time 4000 style 1 Player.Money($PLAYER_CHAR) += 5000 play_music 1 gosub @MISSION_1_END create_thread @STARTER_NEW return

:MISSION_1_29_144 wait 0 gosub @MISSION_1_END 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 create_thread @STARTER_NEW return

:MISSION_1_END wait 0 return



Сюжет миссии: Карл сидит в машине и говорит сам с собой о том, как он не любит врагов. Тем временем камера снимает его.

<!--IMG1--><img src="https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/0/68320138.png" /><!--IMG1--><br><br><!--IMG2--><img src="https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/0/94318394.png" /><!--IMG2-->

Рассмотрим наш новый стартер. Как вы уже, наверное заметили, он немного усложнён. Теперь что бы начать миссию, СЖ не должен быть в машине. Так же он не должен быть арестован или убит. И главное - мы изменили условие, когда СЖ в точке на:

0102: actor $PLAYER_ACTOR in_sphere 2510.8367 -1672.7837 12.442 radius 2.0 2.0 2.0 sphere 0 stopped_on_foot



Этот опкод проверяет: "Находится ли СЖ в точке 2510.8367 -1672.7837 12.442 радиусами 2.0 2.0 2.0", при этом он должен быть пешим. Это более универсальный вариант, чем опкод 00EC.

Думаю основные команды для работы с камерой вы усвоили. Но если есть вопросы - обращайтесь на форум! :)

<div class="alert alert-warning alert-dismissible" role="alert">
 <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
**Примечание:** в некоторых широкоформатных экранах полоски могут не появляться.
</div>|1713|1|0|68320138`png`640`400`400`250``\|94318394`png`640`400`400`250``\||katsceny_i_chto_neobkhodimo_dlja_primitivnogo_videorolika|1498863917

Last updated