Maverick Guard
----------------------------
MAVERICK GUARD v1.3
----------------------------
Автор: Axel
----------------------------
=================================================================================
Этот скрипт добавляет в игру обычного (на первый взгляд) телохранителя. Но я немного модифицировал
стандартного охранника в Vice City на свой лад. Вот что из этого получилось:
1. Начальные характеристики телохранителя.
В роли телохранителя в моём скрипте выступает всем нам знакомый Фил Кессиди. Его можно найти у себя
на свалке. Поначалу он тренируется в стрельбе около старого ангара, и я не советую вам без дела мешать ему,
так как это может стать серьёзной для вас ошибкой. Если вы подойдёте к нему на близкое расстояние, то
появится табличка найма (рекомендую отредактировать GXT-ключи). Для найма Фила вам понадобится $8750.
2. После найма...
После найма у Фила появится приличное количество здоровья и брони. Так же я добавил ему иммунитет к
стрельбе в голову. Если Фил отстанет от вас, то над ним появится маркер. Здесь выявляется ещё одна
особенность - телохранитель не исчезнет, пока не убьют его или вас.
3. Maverick Guard.
Maverick Guard - основная особенность, которая отличает моего телохранителя от других. Если вы сядете в
вертолёт "Maverick", то Фил (будучи прикреплённым к правому боку вертолёта) будет стрелять по всем машинам
и пешеходам, которые находятся в радиусе его обзора. К нему можно присоединиться - просто нажимаем
кнопку "ПОД-МИССИЯ", когда находимся в вертолёте. В этом случае вертолёт вводится в режим автопилота,
а Томми переносится на левый бок вертолёта. Чтобы вернуться обратно в кабину, нужно нажать кнопку "ДЕЙСТВИЕ".
Вот GXT-ключи, которые используются в скрипте:
[CAR_C] Нажми кнопку ~h~~k~~PED_ANSWER_PHONE~~w~, чтобы нанять Фила в качестве телохранителя за ~h~$8750
[CAR_L] У тебя не хватает денег!
=================================================================================
:Bodyguard
0001: wait 0 ms
00D6: if 0
00FE: actor $PLAYER_ACTOR 0 ()near point -1106.548 352.4246 11.63643 radius 100.0 100.0 100.0
004D: jump_if_false ??Bodyguard
023C: load_special_actor 2 "IGPHIL"
0247: request_model #M4
038B: load_requested_models
:Bodyguard2
0001: wait 0 ms
00D6: if 1
023D: special actor 2 loaded
0248: model #M4 available
004D: jump_if_false ??Bodyguard2
009A: $BODYGUARD = create_actor 5 #SPECIAL02 at -1111.883 320.6253 11.26304
02A9: set_actor $BODYGUARD immune_to_nonplayer 1
01B2: give_actor $BODYGUARD weapon 26 ammo 9999 ;; Load the weapon model before using this
0107: $TARGET = create_object #BARREL2 at -1109.542 334.9405 12.86103
035D: make object $TARGET targetable
01D8: unknown_actor $BODYGUARD unknown_fire_at_target $TARGET
:Bodyguard3
0001: wait 0 ms
00D6: if 1
8118: NOT actor $BODYGUARD dead
00FE: actor $PLAYER_ACTOR 0 ()near point -1106.548 352.4246 11.63643 radius 100.0 100.0 100.0
004D: jump_if_false ??BodyguardEnd
0050: gosub ??Bodyguard17
00D6: if 0
00F3: actor $PLAYER_ACTOR near_actor_on_foot $BODYGUARD radius 3.0 3.0 0
004D: jump_if_false ??Bodyguard3
0512: permanent text box "CAR_C"
:Bodyguard11
0001: wait 0 ms
00D6: if 1
8118: NOT actor $BODYGUARD dead
00F3: actor $PLAYER_ACTOR near_actor_on_foot $BODYGUARD radius 3.0 3.0 0
004D: jump_if_false ??Bodyguard12
00D6: if 0
00E1: key_pressed 0 4
004D: jump_if_false ??Bodyguard11
00D6: if 0
010A: player $PLAYER_CHAR money > 8750
004D: jump_if_false ??Bodyguard16
03E6: remove_text_box
0109: player $PLAYER_CHAR money += -8750
018C: play_sound 1 at 0.0 0.0 0.0
0446: set actor $BODYGUARD immune to headshots 0 (on)
0223: set actor $BODYGUARD health to 500
035F: set actor $BODYGUARD armour to 500
01DF: tie actor $BODYGUARD to player $PLAYER_CHAR
011A: set_actor $BODYGUARD flags 64
0243: set_actor $BODYGUARD ped_stats_to 16
01C4: remove_references_to_object $TARGET ;; This object will now disappear when the player looks away
:Bodyguard4
0001: wait 0 ms
00D6: if 0
8118: NOT actor $PLAYER_ACTOR dead
004D: jump_if_false ??BodyguardEnd
00D6: if 0
8118: NOT actor $BODYGUARD dead
004D: jump_if_false ??BodyguardEnd
00D6: if 0
8320: NOT actor $BODYGUARD in range of player $PLAYER_CHAR
004D: jump_if_false ??Bodyguard7
0187: $BMARKER = create_marker_above_actor $BODYGUARD
:Bodyguard5
0001: wait 0 ms
00D6: if 0
8118: NOT actor $BODYGUARD dead
004D: jump_if_false ??BodyguardEnd
00D6: if 0
0320: actor $BODYGUARD in range of player $PLAYER_CHAR
004D: jump_if_false ??Bodyguard5
0164: disable_marker $BMARKER
0002: jump ??Bodyguard4
:Bodyguard7
0001: wait 0 ms
00D6: if 0
00DE: player $PLAYER_CHAR driving vehicle type #MAVERICK
004D: jump_if_false ??Bodyguard4
011C: actor $BODYGUARD clear_objective
03C1: $MAVERICK = player $PLAYER_CHAR car
0464: put_actor $BODYGUARD into_turret_on_car $MAVERICK at_car_offset 1.16 1.0 0.2 unknown 3 angle 270.0 with_weapon 26
:Bodyguard8
0001: wait 0 ms
00D6: if 0
80DB: NOT actor $PLAYER_ACTOR in_car $MAVERICK
004D: jump_if_false ??Bodyguard9
011C: actor $BODYGUARD clear_objective
0465: remove actor $BODYGUARD from turret mode
0002: jump ??Bodyguard7
:Bodyguard9
0001: wait 0 ms
00D6: if 0
80E1: NOT key_pressed 0 19
004D: jump_if_false ??Bodyguard13
0050: gosub ??Bodyguard18
0002: jump ??Bodyguard8
:BodyguardEnd
0001: wait 0 ms
00D6: if 0
80FE: actor $PLAYER_ACTOR 0 ()near point -1106.548 352.4246 11.63643 radius 100.0 100.0 100.0
004D: jump_if_false ??BodyguardEnd
0164: disable_marker $BMARKER
0108: destroy_object $TARGET
0296: unload special actor 2
0249: release_model #M4
01C2: remove_references_to_actor $BODYGUARD ;; Like turning an actor into a random pedestrian
0002: jump ??Bodyguard
:Bodyguard17
0001: wait 0 ms
00D6: if 0
051A: unknown actor $BODYGUARD hit by actor $PLAYER_ACTOR
004D: jump_if_false ??Bodyguard20
011C: actor $BODYGUARD clear_objective
0446: set_actor $BODYGUARD immune_to_headshots 0 (on)
0223: set actor $BODYGUARD health to 2500
01CA: actor $BODYGUARD kill player $PLAYER_CHAR
0051: return
:Bodyguard18
0407: create coordinate $XC $YC $ZC from car $MAVERICK offset 10.0 -10.0 0.0
0407: create coordinate $XC2 $YC2 $ZC2 from car $MAVERICK offset -10.0 10.0 0.0
053E: $R_CAR = get_random_car_with_actors -1 in_area $XC $YC $XC2 $YC2
00D6: if 0
8038: NOT $R_CAR == -1 ;; integer values
004D: jump_if_false ??Bodyguard19
011C: actor $BODYGUARD clear_objective
01D9: actor $BODYGUARD run_away_from_car $R_CAR
0001: wait 1000 ms
0051: return
:Bodyguard19
02DD: set actor $R_ACTOR creation zone "VICE_C" 1 1 1
00D6: if 0
8038: NOT $R_ACTOR == -1 ;; integer values
004D: jump_if_false ??Bodyguard20
011C: actor $BODYGUARD clear_objective
01C9: actor $BODYGUARD kill actor $R_ACTOR