00032. Делаем простой скрипт (приходим к точке и убиваем нужную цель)
Делаем простой скрипт (приходим к точке и убиваем нужную цель)|В этом уроке мы сделаем простой скрипт, что бы когда Карл приходил в нужную точку появлялся Баллас и он начал его атаковать. За убийство он получим 2000$.|wmysterio|wmysterio||||Давайте очистим поток ":MODEL" и в нём установим маркер. Для такого скрипта подойдёт маркер с иконкой. Вот я определил координаты и добавил в скрипт:
:MODEL
thread 'MODEL'
wait 0
if
056D: actor $PLAYER_ACTOR defined
jf @MODEL
$ICON = marker.CreateIconAndSphere(15, 2287.793, -1667.109, 15.0317)Дальше нам нужно проверить: "Находится ли игрок в этой точке?". Есть много проверок, но чаще всего используют:
00EC: actor $PLAYER_ACTOR 0 near_point 12287.793 -1667.109 radius 3.0 3.0Здесь: $PLAYER_ACTOR - переменная актёра, которого нужно проверить. В нашем случае это CJ 0 - указывает на необходимость игре рисовать ещё и сферу с этой точке. Если 1 - рисовать сферу. 0 - не рисовать 12287.793 -1667.109 - координаты точки по оси X и Y 3.0 3.0 - радиус ширины и высоты
Таким образом проверка должна быть примерно такой:
:MODEL_1
wait 0
if
00EC: actor $PLAYER_ACTOR 0 near_point 2287.793 -1667.109 radius 15.0317 3.0
jf @MODEL_1Дальше, когда проверка сработает, нам нужно будет отключить маркер и создать Балласа. Строим скрипт дальше ( после jf ) :
marker.Disable($ICON)
model.Load(#BALLAS1)
038B: load_requested_models
:MODEL_2
wait 0
if
model.Available(#BALLAS1)
jf @MODEL_2
$BALLAS = actor.Create(7, #BALLAS1, 2285.6228, -1680.5663, 13.1829)
actor.Angle($BALLAS) = 357.4442
actor.Health($BALLAS) = 300
model.Destroy(#BALLAS1)
077A: set_actor $BALLAS acquaintance 4 to_actors_pedtype 0Последний опкод указывает "отношение нашего Балласа к СЖ". В данном случаи он будет ненавидеть его. Но это не значит, что он кинется убивать его. Мы программно заставим его сделать это. Также поставим маркер над ним. Пишем дальше скрипт:
Ниже по скрипту пишем удаление нашего Балласа. Но использовать мы будем это через "gosub". Вот примерный кусок скрипта:
Этот блок сначала проверит на существование маркера. Если тот существует, то отключаем его. Потом проверяем на существование актёра Балласа. Если он существует, то стираем все сведения о нём и удаляем. Дальше идёт слово "return". Это значит, что этот блок будет возвращаться куда то. В нашем случаи такой кусок скрипта отлично подойдёт при убийстве СЖ а так же при убийстве Балласа. Мы будем использовать этот блок в зависимости от того, кто кого победил.
Перейдём выше, вплоть до опкода 05E2. Дальше нам необходимо сделать цикл до тех пор, пока кто то не победит. Напишем такое:
Это будет наш самый простой цикл. В нём напишем два условия. Первый: проверку на убийство СЖ:
Таким образом если СЖ убьют или арестуют ( опкод 0741 проверяет: "арестован ли актёр?" ) мы делаем прыжок на метку "@MODEL_3" с последующим возвратом. Это мы сделали для того, что бы очистить игру от Балласа и от маркера над ним. После этого идёт прыжок на начало скрипта, то есть опять создаётся маркер СЖ и снова будет проверка: "Игрок находится в точке XY". Если мы станим на маркер, опять появится Баллас и так дальше, пока Баллас не будет убит. Но если мы его убьем ничего не произойдёт, так как мы не проверили его на убийство. Создадим метку ":MODEL_5" после цикла. После этого пишем условие, которое будет похожее на предыдущее:
Теперь скрипт должен работать! Всё что нам осталось, это дать денег игроку. Сделаем это:
Эта команда даёт возможность дать денег игроку:
× **Примечание:** Мы может только прибавлять деньги, что бы отнять деньги нужно возле числа 2000 поставить минус, что бы было "-2000". Тогда деньги будут забираться
Команда позволяет проиграть звук, который идентичный тому, что играет после прохождения миссий в оригинальном main.scm:
Давайте сложим всё написанное в одно. У меня получилось такое:
Весь main у меня содержит такой текст:
Скрин:

Единственный минус, что такой скрипт при убийстве СЖ будет местами глючить по объективным причинам. Почему и как это исправить написано с следующем уроке. Таким образом вы создали мини-миссию, а это уже огромный плюс!|987|1|0|57390824png640400400`250``||delaem_prostoj_skript_prikhodim_k_tochke_i_ubivaem_nuzhnuju_cel|1506080800
Last updated
Was this helpful?