Скрипт динамита — как он устроен?
Постараюсь доходчиво и просто, без лишней шелухи, построчно объяснить на примере реального рабочего скрипта из моего мода… С помощью данного туториала можно получиться скрипт довольно мощного динамита, который можно вставить в сцену игры в любой режим или миссию.
dim_flt 10
dim_act 10
dim_frm 10
Это общая шапка скрипта. В шапке содержится количество задействованных в скрипте актёров, фреймов и переменных (но может быть и больше, но не меньше).
findactor 0, "Tommy"
findactor 1, ""
findactor 2, "bomb"
findframe 0, ""
findframe 1, "xbarel 48"
А это наши актёры и фреймы с Томми в главных ролях, разумеется Актёр bomb можно, в принципе, не создавать, но для правдоподобности лучше бы, тем более это совсем несложно. В БСВ создаём даннаго актёра с моделью 2bomb.i3d c нулевыми координатами, например. С бочкой xbarel 48 та же ситуация. Это скрипт взят из мода, но эта бочка есть в любом фрирайде и почти любой городской миссии, так что вставлять отдельно её не нужно. Только пропишите ей такие координаты: X: 73,41076, Y:2,95, Z: 126,8266. Это в лавке Пита. Можете, конечно, прописать какие хотите. Это для того, чтобы Томми не оставлял следы на месте подрыва
human_addweapon 0, 22, 0, 0
human_addweapon 0, 22, 0, 0
human_addweapon 0, 22, 0, 0
human_addweapon 0, 22, 0, 0
human_addweapon 0, 22, 0, 0
На первое время даём главному герою в инвентарь пяток шашек динамита.
label 1 // первая метка
human_isweapon 0, 0, 22
if flt[0] = 1, -1, 1
Проверка, если в инвентаря у Томми динамит, и если да — переход дальше по скрипту.
ctrl_read 1, CROUCH1
if flt[1] = 1, -1, 1
Проверка, нажата ли была клавиша дополнительного приседания (звучит неочень, ну Вы поняли, надеюсь). Если да — идём дальше, если нет — переход в начало, к строке 1.
human_holster 0
Прячем Кольт, Смитти или ножичек…
player_lockcontrols 1
Блокируем управление Томасом для того, чтобы нормально анимацию проигралась.
policemanager_add "Tommy"
policemanager_forcearrest 0, 1
Учтите! Если хоть один увидит сии противоправные действа, то немедленно попытаются арестовать виновника, то бишь Томми. Подчёркиваю, арестовать, а не пристрелить на месте: Томми же не открыл огонь в ответ, а только пытается подготовить фейрверк для какого-то неизвестного мужика Так что прежде, чем устанавлить взрывчатку, потарайтесь оглядеться в начале, вдруг рядом копы.
human_activateweapon 0, 22
Активируем в руках Тома взрывчатку, если она у него есть, конечно, что уже было проверено ранее.
person_playanim 0, "MechKolo.i3d"
playsound "8_anim2.wav", -1, 100, 1
wait 4000 // время ожидания в 4 сек.
Сама анимация + звук из 8-ой миссии.
human_delweapon 0, 22
Убираем из инвентаря один динамит: израсходован ведь.
commandblock 1
findframe 2, "Tommy.r_foot"
actor_duplicate 2, 3, 0
actor_setplacement 1, 2
actor_setplacement 2, 2
actor_setplacement 3, 2
commandblock 0
Постараемся здесь ничего не менять. Просто на этом месте появится установленный динамит.
wait 4000
person_stopanim 0
player_lockcontrols 0
goto 2 // конец анимации и блокировки управления и переход в метку 2
label 2
human_talk 0, 08010530
timeron 0, 0, 0, 10
wait 10000
timeroff // убираем часики с таймером
Коронная фраза + таймер на 10 секунд (за это время постарайтесь отбежать подальше, чтобы наблюдать фейверк со стороны, а не из больницы Лост Хэвэна).
explosion 20, 8000
emitparticle 0, 52, 1
Сам взрыв. Довольно мощный.
actor_setplacement 2, 1
Перемещаем объект 2 (bomb) во фрейм 1 (xbarel 48).
freeride_scoreget 2
let flt[2] = flt[2] + 1000
freeride_scoreset flt[2]
Небольшая денежка для Томми на бутеры и пивко в баре Сальери
emitparticle 0, 21, 1
wait 2000 // ждём пару секунд
Завершающий эффект взрыва.
human_talk 0, 10020010
wait 1000
Последняя фраза.
console_addtext 11990561
И поясняющая фраза, что всё произошло успешно: Томми остался жив, жители Лост Хэвэна в панике, конкуренты напуганы, а дон доволен проделанной работой.
stopparticle 1
Обязательно завершаем эффект, а то некоторые могут происходить довольно долгое время, и это будет весьма особенно заметно на старых ПК.
goto 1
Конец скрипта, и переход в первую метку, в режим "ожидания".