Rampage (Kill frenzy)

Итак, спустя долгое время я решил опубликовать здесь ещё одну статью. На сей раз речь пойдёт о заданиях Rampage (которые ещё называются Kill Frenzy). Это задание состоит в убийстве определённых или всех подряд людей, иногда в уничтожении транспорта. При этом игроку дают определённый вид оружия, которое имеет бесконечный боезапас. По стандарту в SA отсутствует это задание, так как я, просматривая в Sanny Builder код main.scm, не нашёл тех опкодов, которые относятся к данному заданию. У меня появилась идея вернуть утерянное наследие прошлых GTA и сделать это в виде отдельной миссии. Ну-с, вот код:

:Rampage
$ONMISSION = 1
while true //1
gosub @Rampage2
if //2
wasted_or_busted
then
00BA: show_text_styled GXT "RPFL" time 1000 style 1
break
else
if //3
0@ == 2
then
player.Money(0) += 100000
00BA: show_text_styled GXT "RPCP" time 1000 style 1
break
else
00BA: show_text_styled GXT "RPFL" time 1000 style 1
break
end //3
end //2
end //1
0110: clear_player 0 wanted_level
mission_cleanup
$ONMISSION = 0
end_thread

:Rampage2
increment_mission_attempts
player.WantedLevel(0) = 3
model.Load(#MINIGUN)
038B: load_requested_models
01F9: init_rampage_gxt 'RAMPAGE' weapon 38 time_limit 130000 targets 100 target_models -1 -1 -1 -1 completed_text 0
model.Destroy(#MINIGUN)
while true //1
wait 0
01FA: 0@ = rampage_status
if or //2
0@ == 2
0@ == 3
then
break
end //2
end //1
return


Рассмотрим всё по порядку.
Во-первых, всё это - миссия. Шаблон я немного переделал под цикл while true, который достаточно хорошо упрощает работу и к тому же может быть использовать для cleo миссии.
Во-вторых, игроку дают миниган и три звезды розыска, чтобы было больше возможности пройти миссию.
В-третьих, использовано два опкода, касающихся Rampage.
В-четвёртых, игра сама создаёт таймер и счётчик убийств, Вам остаётся лишь настроить параметры.
Что ж, давайте разберём опкоды.
01F9: init_rampage_gxt 'RAMPAGE' weapon 38 time_limit 130000 targets 100 target_models -1 -1 -1 -1 completed_text 0
'RAMPGAE' - текст, который будет выведен в начале задания
38 - номер оружия, с которым игроку предстоит сражаться
130000 - количество времени в миллисекундах
100 - число "жертв" Вашего буйства
-1 -1 -1 -1 - имена или номера (ID) моделей людей и машин, которые засчитываются за одно убийство (-1 - любой человек, -2 - любой транспорт)
0 - выводить ли текст завершения задания (1 - да, 0 - нет)
С текстом в данном опкоде есть некоторые проблемы: неизвестно, с чем это связано, но текст здесь выводится дважды. В связи с этим я поставил последний параметр на 0 и взял стандартный текст 'RAMPAGE', который, к счастью, не выводится, так что можно теперь использовать свой текст.
И ещё один опкод по этой теме:
01FA: 0@ = rampage_status
Записывает в 0@ состояние задания. Экспериментально, а также с помощью исследований на других сайтах я установил, что:
1 - задание в процессе выполнения
2 - успешное выполнение "Ярости"
3 - провал задания

Вот и всё! Можете экспериментировать с этими опкодами и создавать новые миссии Rampage. Можно делать это в виде обыкновенного потока, я же решил взять шаблон миссии, чтобы игра сама заканчивала действие "Ярости", когда игрок мёртв или арестован.
Вот такая миссия, которая уложилась всего в 44 строки! Удачных Вам перестрелок!



Просмотров: 1902
8.11.2013, 15:40 -

Категория: Grand Theft Auto: San Andreas » Скрипты для Grand Theft Auto: San Andreas

Коментарии к Rampage (Kill frenzy):