Простенький Ролик
Статью в вордпад > Правка-заменить > ££ менять на JJ
Чтобы всё, что мы с вами напишем ниже работало, нужно объявить паток “MyRol”. Делаеться это так:
Где-то в начале ищите строчку “004F: create_thread JJXXXX”. Копируете её и вставляйте ниже, заменив XXXX на “My Rol”
Для начала нам надо загрузить в память игры необходимые нам модели, а также установить ряд параметров.
Делается это так:
:MyRol ;Создаём поток
0001: wait 250 ms
03A4: name thread 'MyGR' ;Имя потока
016A: fade 0 () 0 ms ;Спецэффект: Затемнение экрана (0 ms – немедленно)
01B4: set_player $PLAYER_CHAR frozen_state 0 (frozen) ;Ставим игрока в положение: управление только скрипом.
02A3: toggle_widescreen 1 (on) ;Спецэффект: Экран как в кино(рамка)
00C0: set_current_time 00 00 ;Устанавливаем время в игре (00:00)
01F0: set_max_wanted_level_to 0 ;Ставим максимальный уровень полиции (0 – отключить, 6 – максимум(армия))
:MCLoadModel
0247: request model 470 ;машина “Patriot”
0247: request model 287 ;модель военного
0247: request model 356 ;модель M4
038B: load requested models ;Загрузить установленные модели (те, что выше)
:MStestLoad ;Проверяем загрузились ли модели, если нет, то ждём.
0001:wait 0 ms
00D6: if 2
0248: model 470 available
0248: model 287 available
0248: model 356 available
004D: jump if false ££MsTestLoad
;И так. Начало у нас уже есть. Пора заняться созданием машины, установкой камеры…
:MCCreate
041E: set_radio_station 1 ;Устанавливаем радио станцию.
00A5: $CAR1 = create_car 470 at -138.4554 2058.46 17.3821 ;Создаём машину в указанном месте.
036A: put_actor $PLAYER_ACTOR in_car $CAR1 ;Садим нашего CJ`я в машину.
02AA: set_car $CAR1 immune_to_nonplayer 1
02AC: set_car $CAR1 immunities 1 1 1 1 1 ;Устанавливаем иммунитет для машины.
00AD: set_car $CAR1 max_speed_to 40.0 ;Максимальная скорость машины.
00AE: unknown_set_car $CAR1 to_ignore_traffic_lights 2 ;Ставим флаг: не реагировать на светофоры и перегонять других.
00A7: car $CAR1 drive_to 108.9653 2068.8 17.38715 ;Заставляем машину ехать к указанному месту.
016A: fade 1 (back) 1000 ms ;Спецэффект: убрать затемнение
0001: wait 1000 ms
015F: set_camera_position -108.8587 2054.135 17.66545 0.0 0.0 0.0 ;Устанавливаем камеру на указанное место.
0160: point_camera -0.8348568 2067.328 17.44786 2 ;Направляем камеру на указанное место.
;Выше мы заставили машину ехать к указанному нами месту. Теперь надо отловить событие, когда наша машина будет приближаться к этому месту, сменить положение камеры и перенаправить машину к другому месту.
:MSDR2 ;Если машина около места, радиусам в 10.0 10.0 10.0, то действие, иначе повторить.
0001: wait 10 ms
00D6: if 0
01AF: car $CAR1 0 (in-sphere)near_point 108.9653 2068.8 17.38715 radius 10.0 10.0 10.0
004D: jump_if_false ££MSDR2
00AD: set_car $CAR1 max_speed_to 30.0 ;Максимальная скорость машины.
00A7: car $CAR1 drive_to 132.786 1949.039 19.37956 ;Заставляем машину ехать к указанному месту.
015F: set_camera_position 143.8299 1941.172 26.75375 0.0 0.0 0.0 ;Устанавливаем камеру на указанное место.
0160: point_camera 108.9653 2068.8 17.38715 2 ;Направляем камеру на указанное место.
;Ниже нам надо отловить событие, когда машина подъедет к месту, сделать затемнение экрана, перенести машину в другое место, установить камеру, убрать затемнение экрана и перенаправить машину.
:MSDR3 ;Если машина около места, радиусам в 7.0 7.0 5.0, то действие, иначе повторить.
0001: wait 10 ms
00D6: if 0
01AF: car $CAR1 0 (in-sphere)near_point 135.3486 1955.805 19.43376 radius 7.0 7.0 5.0
004D: jump_if_false ££MSDR3
016A: fade 0 (back) 300 ms ;Спецэффект: Затемнение экрана
0001: wait 300 ms
00AD: set_car $CAR1 max_speed_to 10.0 ;Максимальная скорость машины.
00AB: put_car $CAR1 at 166.6896 1916.743 18.41691 ;Перенести машину в указанное место.
0175: set_car $CAR1 z_angle_to 90.0 ;Развернуть машину на 90.0 градусов.
00A7: car $CAR1 drive_to 211.3096 1915.62 17.64063 ;Заставляем машину ехать к указанному месту.
015F: set_camera_position 179.4502 1890.836 20.25034 0.0 0.0 0.0 ;Устанавливаем камеру на указанное место.
0160: point_camera 224.1718 1920.22 17.64063 2 ;Направляем камеру на указанное место.
016A: fade 1 (back) 300 ms ;Спецэффект: убрать затемнение
;Теперь, когда машина подъедет к указанному нами месту. Мы создадим 3 актёров и заставим их сесть в машину.
:MSDR4 ;Если машина около места, радиусам в 2.0 2.0 2.0, то действие, иначе повторить.
0001: wait 10 ms
00D6: if 0
01AF: car $CAR1 0 (in-sphere)near_point 211.3096 1915.62 17.64063 radius 2.0 2.0 2.0
004D: jump_if_false ££MSDR4
009A: $army1 = create_actor 4 287 at 210.496 1878.336 13.14063 ;Создать актёра под именем $army1, по типу 4, по модели 287 в указанном месте.
009A: $army2 = create_actor 4 287 at 212.1014 1878.164 13.14063 ;Создать актёра под именем $army2, по типу 4, по модели 287 в указанном месте.
009A: $army3 = create_actor 4 287 at 214.1745 1879.182 13.14063 ;Создать актёра под именем $army3, по типу 4, по модели 287 в указанном месте.
01B2: give_actor $ARMY1 weapon 31 ammo 5000 ;Дать актёру оружие N31, с 5000 патронами
01B2: give_actor $ARMY2 weapon 31 ammo 5000 ;Дать актёру оружие N31, с 5000 патронами
01B2: give_actor $ARMY3 weapon 31 ammo 5000 ;Дать актёру оружие N31, с 5000 патронами
05CA: unknown_action_sequence $ARMY1 $CAR1 15000 0 ;Заставить актёра сесть в машину на 1(0) пассажирское место(за время 15000 ms).
05CA: unknown_action_sequence $ARMY2 $CAR1 15000 1 ;Заставить актёра сесть в машину на 2(1) пассажирское место(за время 15000 ms).
05CA: unknown_action_sequence $ARMY3 $CAR1 15000 2 ;Заставить актёра сесть в машину на 3(2) пассажирское место(за время 15000 ms).
;Когда все усядутся нам надо сделать затемнение экрана, перенести машину, установить камеру,
;перенаправить машину, убрать затемнение.
:MSDR5 ;Если все в машине, то едем дальше, иначе повторить.
0001: wait 1 ms
00D6: if 2
00DB: actor $ARMY1 in_car $CAR1
00DB: actor $ARMY2 in_car $CAR1
00DB: actor $ARMY3 in_car $CAR1
004D: jump_if_false ££MSDR5
016A: fade 0 () 300 ms ;Спецэффект: Затемнение экрана
0001: wait 300 ms
00AB: put_car $CAR1 at 138.0173 2022.636 18.47592 ;Перенести машину в указанное место.
00A7: car $CAR1 drive_to -13.23016 2065.508 17.49219 ;Заставляем машину ехать к указанному месту.
00AD: set_car $CAR1 max_speed_to 50.0 ;Максимальная скорость машины.
015F: set_camera_position 107.4778 2080.062 17.61765 0.0 0.0 0.0 ;Устанавливаем камеру на указанное место.
0160: point_camera -21.85333 2061.007 17.44531 2 ;Направляем камеру на указанное место.
016A: fade 1 (back) 300 ms ;Спецэффект: убрать затемнение
;Стандартная для нас операция: меняем каеру и перенаправляем машину.
:MSDR6 ;Если машина около места, радиусам в 7.0 7.0 5.0, то действие, иначе повторить.
0001: wait 10 ms
00D6: if 0
01AF: car $CAR1 0 (in-sphere)near_point -13.23016 2065.508 17.49219 radius 7.0 7.0 5.0
004D: jump_if_false ££MSDR6
016A: fade 0 () 1000 ms ;Спецэффект: Затемнение экрана
0001: wait 1000 ms
00AD: set_car $CAR1 max_speed_to 15.0 ;Максимальная скорость машины.
00AB: put_car $CAR1 at -309.4537 1395.249 72.2532 ;Перенести машину в указанное место.
00A7: car $CAR1 drive_to -303.776 1509.209 75.35938 ;Заставляем машину ехать к указанному месту.
015F: set_camera_position -278.2863 1438.719 74.57912 0.0 0.0 0.0 ;Устанавливаем камеру на указанное место.
0160: point_camera -334.3577 1572.733 105.0926 2 ;Направляем камеру на указанное место.
016A: fade 1 (back) 1000 ms ;Спецэффект: убрать затемнение
:MSDR7 ;Если машина около места, радиусам в 1.0 1.0 1.0, то действие, иначе повторить.
0001: wait 10 ms
00D6: if 0
01AF: car $CAR1 0 (in-sphere)near_point -303.776 1509.209 75.35938 radius 1.0 1.0 1.0
004D: jump_if_false ££MSDR7
;Немного поменяем условия: если машина остановилась, то актёры пойдут или побегут в указанное место.
:MSDR8 ;Если машина остановилась, то идём дальше, иначе повторить.
0001: wait 10 ms
00D6: if 0
01C1: car $CAR1 stopped
004D: jump_if_false ££MSDR8
015F: set_camera_position -291.0801 1506.405 75.6479 0.0 0.0 0.0 ;Устанавливаем камеру на указанное место.
0160: point_camera -307.5966 1521.142 75.35938 2 ;Направляем камеру на указанное место.
05D3: unknown_action_sequence $PLAYER_ACTOR -305.5272 1517.002 75.35938 4 -1 ;CJ ИДЁТ(4) в указанное место.
05D3: unknown_action_sequence $ARMY1 -303.1898 1518.235 75.35938 6 -1 ;Актёр $army1 БЕЖИТ(6) в указанное место.
05D3: unknown_action_sequence $ARMY2 -307.7064 1515.859 75.35938 6 -1 ; Актёр $army2 БЕЖИТ(6) в указанное место.
05D3: unknown_action_sequence $ARMY3 -304.4346 1516.837 75.35938 6 -1 ; Актёр $army3 БЕЖИТ(6) в указанное место.
;Если наш CJ пришел на место, то создадим случайного актёра и заставим его бежать в указанное место.
:MSDR9 ;Если CJ около места, радиусам в 1.4 1.4 1.0, то действие, иначе повторить.
0001: wait 10 ms
00D6: if 0
0101: actor $PLAYER_ACTOR stopped_near_point -305.5272 1517.002 75.35938 radius 1.4 1.4 1.0 sphere 0
004D: jump_if_false ££MSDR9
0376: $terror1 = create_random_actor -319.1111 1545.745 75.5625 ;Создать случайного актёра под именем $terror1 в указанном месте.
05D3: unknown_action_sequence $terror1 -305.9093 1517.815 75.35938 6 -1 ;Актёр $terror1 БЕЖИТ(6) в указанное место.
;Дальше уже интереснее: как только актёр подбежал в указанное место, начинаеться разовор, а потом актёр взрывает себя.
;Все умирают. Вот такой-то конец прогулки и нашему ролику.
:MSDR10 ;Если Актёр $terror1 около места, радиусам в 1.4 1.4 1.0, то действие, иначе повторить.
0001: wait 10 ms
00D6: if 0
0101: actor $terror1 stopped_near_point -305.9093 1517.815 75.35938 radius 1.4 1.4 1.0 sphere 0
004D: jump_if_false ££MSDR10
0639: unknown_action_sequence $ARMY1 $terror1 ;Актёр $army1 смотрит на Актёра $terror1
0639: unknown_action_sequence $ARMY2 $terror1 ;Актёр $army2 смотрит на Актёра $terror1
0639: unknown_action_sequence $ARMY3 $terror1 ;Актёр $army3 смотрит на Актёра $terror1
0677: unknown_action_sequence $terror1 $PLAYER_ACTOR 1 1 ;Актёр $terror1 подходит(1) к CJ`ю и начинает разговор(1)
0677: unknown_action_sequence $PLAYER_ACTOR $terror1 0 1 ;CJ подходит(1) к актёру $terror1 и слушает его(0)
015F: set_camera_position -312.6891 1519.038 75.35938 0.0 0.0 0.0 ;Устанавливаем камеру на указанное место.
04C4: create_coordinate $tX $tY $tZ from_actor $terror1 offset 0.0 0.0 0.0 ;Записываем координаты актёра $terro1 в tX , tY, tZ
0160: point_camera $tX $tY $tZ 2 ;Направляем камеру на указанное место.
0001: wait 5000 ms
020C: create_explosion_with_radius 10 at $tX $tY $tZ ;Создаём взрыв в указанном месте, радиусом в 10.
0003: shake_camera 700 ;Спецэффект: тряска камеры (700 – мощность)
0001: wait 100 ms
05BE: unknown_action_sequence $PLAYER_ACTOR ;Убиваем CJ`я
;Выключаем всё, что мы повключали с самого начала и восстанавливаем камеру.
:msend
02A3: toggle_widescreen 0 (on) ;Убираем Рамку
015A: restore_camera ;Востонавливаем нормальный вид
01B4: set_player $PLAYER_CHAR frozen_state 1 (frozen) ;Ставим игрока в положение: управление скриптом + ручное.
004e: end thread ;Завершаем поток.
Теперь я надеюсь, что вы сможете создавать своих собственных актёров(машин) и управлять ими.