00052. Пример полноценной миссии "Взрывчатка"

Пример полноценной миссии "Взрывчатка"|Всем привет! Давно не было уроков по скриптингу Санни Билдер, так как все известные моменты мы рассмотрели, я решил писать уже не уроки, а примеры полноценных миссий. Сегодня мы будем "хардкорить" в написании миссии, которую я назвал "Взрывчатка".|wmysterio|wmysterio||||Суть миссии в том, что к CJ обращается Свит и сообщает что его машину заминировали. Допустим, что Свит насколько привязан к этой тачки, что решает разминировать её. Нам необходимо привести сапёра, чтобы тот взялся за это нелёгкое дело. Как оказалось, что для этого дела понадобится неординарное решение - чтобы успешно разминировать её, нужно держать скорость автомобиля примерно на скорости 100 км/час. В противном случаи машину не разминировать. Думаю идея понятна.

Хочу добавить, что данная статья не для новичков, а для тех, что более-менее уже понимает чужой код и может дополнить его.

Давайте приступим к написанию кода. Миссию мы будем делать, используя CLEO. Я сочинил простейший стартер, который запустит нашу миссию.

{$CLEO .cm}
thread 'BOMB'

gosub @BOMB_RUN
if
wasted_or_busted
jf @BOMB_FINISH
gosub @BOMB_FAILED

:BOMB_FINISH
$ONMISSION = 0
mission_cleanup
end_thread

:BOMB_RUN
increment_mission_attempts
$ONMISSION = 1
wait 1000
fade 1 1000

// Код миссии

gosub @BOMB_END
0394: play_music 1
01E3: show_text_1number_styled GXT 'M_PASS' number 5000 time 5000 style 1
Player.Money(0) += 5000
return

:BOMB_FAILED
gosub @BOMB_END
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 
return

:BOMB_END
return

А необходимую конструкцию миссии я привёл к такому виду:

Приступаем к написанию последовательности скрипта. Прежде всего очищаем местность от всего хлама и рендерим местность для камеры, убрав трафик пешеходов и автомобилей. Создаём неподалёку тачку Свита и садовим его в транспорт. Перемещаем СЖ к нему:

Ставим нашим героям иммунитеты и устанавливаем камеру для видеоролика. Дальше пишем код пропуска этого видеоролика:

Используется анимация PED, актёры смотрят друг на друга и шевелят губами. По окончанию диалога, как и при нажатии клавиши Пробел` идёт затемнение экрана, СЖ перемещается в транспорт, за руль. Камера сбрасывается в обычный режим.

Далее, по-сюжету, мы должны приехать к сапёру, и подобрать его. Организуем простой цикл, в котором нельзя ехать больше 100 км/час. В нём же не допустим смерти тачки и Свита:

Дальше нужно организовать цикл, в котором будут условия обезвреживания бомбы. Как сказал в диалогах сапёр, нужно проверить на открытия двери, чтобы взорвать транспорт. Это можно осуществить путём проверки к-ва занятых мест. Если такое число превышает 0, то это значит, что кто-то покинул траспорт, тем самым открыв дверь. Цикл будел разделён на три этапа:

  • Когда игрок не набрал 100 км/час

  • Когда уже набрал такую скорость, включается таймер

  • Ожидание времени. Для полного хардкора включим трафик, чтобы игрок попотел :)

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

Результат нашей миссии:

Вам задание: Дописать миссию до логического завершения - нужно приехать к дому Свита. На этом урок окончен. С Вами был wmysterio, всего доброго!

P.S Исходники вы можете скачать здесь. Улучшайте миссию на свой вкус.|1238|1|0|12857216png800480400240``\|79472534png800480400240``||primer_polnocennoj_missii_vzryvchatka|1504598907

Last updated

Was this helpful?