Как создать свои миссии в гта вайс сити

Обновлено: 04.07.2024

В этой статье я вам расскажу о принципах создания гонки для GTA VC, для этой игры пока еще не создали Race Mission Builder, но и с VC Mission Builder'ом можно научиться создавать гонки.
Итак, для создания понадобится VC Mission Builder(желательно v1.5) и сама игра GTA Vice City.

Итак, запускаем скачанный VCMissionBuilder и открываем файл Stripped_complete.txt (это скрипт 100% прохождения) (он в: папка Mission Builder'aStripped scripts), и вот у нас перед глазами код, ищем где у нас

DEFINE MISSIONS 1 ;; количество миссий
DEFINE MISSION 0 AT ЈЈLabel031F34 ;; всегда номера миссий начинаются с 0

Это прописка миссий, здесь только одна(это создание всех припаркованных тачек, оружия, пикапов(типа здоровья, брони) и тд), эти строки мы меняем на:

DEFINE MISSIONS 2
DEFINE MISSION 0 AT ЈЈLabel031F34
DEFINE MISSION 1 AT ЈЈRACE ;; прописка нашей гонки

P.S. Label'ы, это метки, на которые переходит игра

Далее создаем стартер для миссии, для этого ищем где у нас все create_thread'ы и ставим там в конце вот такую строчку:

004F: create_thread ЈЈstartracer ;; это ссылка на метку с стартером, startracer - метка, но в Mission Builder'e есть такой баг, что компилятор не всегда понимает JJ в ссылках, например:

0002: jump ЈЈLabel00994C
(0002: - опкод, команда jump компилятором игнорируется и поэтому можно записать и так:

Возвращаемся к стартеру гонки:

:startracer
02A7: $icon = create_icon_marker_and_sphere 35 at -236.929 -465.912 10.300 ;; создаём маркер с именем $icon типа 35(типы можно узнать в текстовом файле radar_icons.txt, опять же он в папке MissionBuilder'a) на карте и отметку

:strt1
0001: wait 250 ms ;; ждем 250 мс
00D6: if 0 ;; если
0256: player $PLAYER_CHAR defined ;; жив и не арестован
004D: jump_if_false ЈЈstrt1 ;; если ложь то на метку strt1, если правда то идем дальше
00D6: if 0
00F9: player $PLAYER_CHAR stopped 0 ()near_point_on_foot -236.929 -465.912 10.300 radius 1.0 1.0 2.0 ;; игрок на точке
004D: jump_if_false ЈЈstrt1
00D6: if 0
0038: $ONMISSION == 0 ;; integer values ;; игрок не на миссии
004D: jump_if_false ЈЈstrt1
00D6: if 0
03EE: player $PLAYER_CHAR controllable ;; игрок управляемый(сам незнаю зачем это но писать это надо)
004D: jump_if_false ЈЈstrt1
0164: disable_marker $icon ;; убрать маркер $icon с карты
0417: start_mission 1 ;; начать миссию
004E: end_thread ;; завершить стартер(ну.. или поток, как это обобщенно сказать)

Всё это пишется только в области MAIN'a, и, как видно здесь юзается JJ

в самом конце кода пишем:

:RACE ;;метка начала миссии
0050: gosub Јstarting ;; gosub - это некое обращение к другой метке которое можно завершить командой 0051: return
00D6: if 0
0112: wasted_or_busted
004D: jump_if_false Јend
0050: gosub ЈFAIL

:end
0050: gosub Јclean
004E: end_thread

;;всё что выше, нужно, чтоб если Томми умер во время миссии, то миссия завершится с провалом.

:starting
0317: increment_mission_attempts ;; команда, для того чтобы в статистике к попытке миссий прибавилось 1
03A4: name_thread "RACE" ;; начинаем поток с названием RACE
01E8: create_forbidden_for_cars_cube -252.929 -337.286 9.307 -455.861 -499.581 10.210 ;; создаем запрещенную для машин область где старт гонки, чтоб машины не мешали стартовать
0004: $checkpoint = 1 ;; integer values ;; как бы флаг, сколько отметок прошел игрок
0004: $crd = 1 ;; integer values ;; как бы флаг, сколько отметок прошел противник
0005: $x = -527.164 ;; floating-point values
0005: $y = -487.341 ;; floating-point values
0005: $z = 10.087 ;; floating-point values
0005: $xZ = -527.164 ;; floating-point values
0005: $yZ = -487.341 ;; floating-point values
0005: $zZ = 10.087 ;; floating-point values
0005: $x1 = -829.568 ;; floating-point values
0005: $y1 = -710.641 ;; floating-point values
0005: $z1 = 9.947 ;; floating-point values
0005: $x2 = -973.242 ;; floating-point values
0005: $y2 = -1074.749 ;; floating-point values
0005: $z2 = 13.717 ;; floating-point values
0005: $x3 = -1198.370 ;; floating-point values
0005: $y3 = -934.293 ;; floating-point values
0005: $z3 = 13.717 ;; floating-point values
0005: $x4 = -1420.124 ;; floating-point values
0005: $y4 = -783.965 ;; floating-point values
0005: $z4 = 13.717 ;; floating-point values

;; P.S. тут все "джампы" юзаются с J , потому что в миссии

:inc
00D6: if 1 ;; если
80FA: NOT player $PLAYER_CHAR stopped 0 (in-sphere)near_point_in_car -238.262 -481.053 10.082 radius 2.0 2.0 2.0 ;; игрок не на точке -238.262 -481.053 10.082 в машине с радиусами 2.0 2.0 2.0
0001: wait 0 ms
004D: jump_if_false Јcount ;; если ложь, т.е. если игрок на точке в машине

00D6: if 1 ;; если
8118: NOT actor $vd dead ;; актёр (водитель) $vd не умер
0001: wait 0 ms
004D: jump_if_false ЈPROTD ;; если умер то переходим к метке PROTD
0002: jump Јinc ;; переходим в начало метки inc

:count ;; от этой метки начинается отсчёт
03BD: destroy_sphere $sph ;; удалить отметку $sph
03C1: $playcar = player $PLAYER_CHAR car ;; машина игрока записывается в память с именем $playcar
03AB: (unknown) $playcar 1 ;; что-то неизвестное, писать всё равно надо
0224: set car $playcar health to 2000 ;; задаем здоровье тачке игрока, равное 2000
0428: unknown_car $zbr flag 1 ;; задаем какой-то флаг машине противника - $zbr
01B4: set player $PLAYER_CHAR frozen state 0 (frozen) ;; отключаем управление игрока
00BA: text_styled "RACE2" 1000 ms 5 ;; выводим текст - "3"
018C: play_sound 1 at 0.0 0.0 0.0 ;; проигрываем звук (номера звуков нигде не описаны, но разобрать постараюсь)
0001: wait 1000 ms
00BA: text_styled "RACE3" 1000 ms 5 ;; выводим текст - "2"
018C: play_sound 1 at 0.0 0.0 0.0
0001: wait 1000 ms
00BA: text_styled "RACE4" 1000 ms 5 ;; выводим текст - "1"
018C: play_sound 1 at 0.0 0.0 0.0
0001: wait 1000 ms
00BA: text_styled "RACE5" 1000 ms 5 ;; выводим текст - "GO!"
018C: play_sound 10 at 0.0 0.0 0.0
;; 010E: set player $PLAYER_CHAR minimum wanted level to 4 ;; этооо, мы задаем игроку уровень розыска 4, это ставить не обязательно
01B4: set player $PLAYER_CHAR frozen state 1 (frozen) ;; включаем управление игроку
014E: set_timer_to $race type 0 ;; создаём таймер отсчета гонки с переменной $race, мы её указывали в начале типа 0 - это отсчет от 0, а 1 - это обратный отсчет - до 0

:startrace ;; начало гонки после отсчета
02C2: car $zbr drive_to_point $x $y $z ;; машина противника едет на координаты $x $y $z - переменные с координатами, указанные в начале

:cnt
00D6: if 1
80E3: NOT player $PLAYER_CHAR 0 ()near_point $x $y radius 6.0 6.0 ;; игрок на на координатах $x $y с радиусами 6.0 6.0
0001: wait 0 ms
004D: jump_if_false Јpank
0050: gosub Јcorona ;; обращение к метке с короной(т.е. большим кругом)
00D6: if 1
81AF: NOT car $zbr 0 ()near point $xZ $yZ $zZ radius 6.0 6.0 6.0 ;; машина противника не на точке $xZ $yZ $zZ (тоже переменные) с радиусами 6.0 6.0 6.0
0001: wait 0 ms
004D: jump_if_false Јchangecrd
0050: gosub Јcorona
00D6: if 1
8118: NOT actor $vd dead ;; если актёр $vd жив
0001: wait 0 ms
004D: jump_if_false ЈPROTD ;; если мёртв то идем к метке провала миссии, для чего это? ну.. бывает, что застрелишь своего противника и поедешь один, это защита от этого
0050: gosub Јcorona
0002: jump Јcnt

:corona
00D6: if 0
0038: $finish == 1 ;; integer values ;; если флаг финиша = 1
004D: jump_if_false Јgreen ;; если нет то идем к green

024F: create_corona 6.0 6 0 with_color 255 0 0 at_point $x $y $z ;; создаем круг с радиусом 6.0, 6 0 - незнаю что это, с цветом 255 0 0 (цвет как видно получается при помощи RGB палитры) на координатах $x $y $z
0051: return ;; возврат назад

:green
024F: create_corona 6.0 6 0 with_color 14 235 50 at_point $x $y $z
0051: return

:x1
018C: play_sound 1 at 0.0 0.0 0.0 ;; проигрываем звук
0164: disable_marker $chk ;; удаляем маркер $chk
0086: $x = $x1 ;; floating-point values only ;; задаем конкретно переменной $x значение переменной $x1
0086: $y = $y1 ;; floating-point values only
0086: $z = $z1 ;; floating-point values only
018A: $chk = create_checkpoint_at $x $y $z
0165: set marker $chk color to 1
0008: $checkpoint += 1 ;; integer values ;; прибавляем 1 пункт к числу пройденных отметок
0002: jump Јcnt

:x2
018C: play_sound 1 at 0.0 0.0 0.0
0164: disable_marker $chk
0086: $x = $x2 ;; floating-point values only
0086: $y = $y2 ;; floating-point values only
0086: $z = $z2 ;; floating-point values only
018A: $chk = create_checkpoint_at $x $y $z
0165: set marker $chk color to 1
0008: $checkpoint += 1 ;; integer values
0002: jump Јcnt

:x3
018C: play_sound 1 at 0.0 0.0 0.0
0164: disable_marker $chk
0086: $x = $x3 ;; floating-point values only
0086: $y = $y3 ;; floating-point values only
0086: $z = $z3 ;; floating-point values only
018A: $chk = create_checkpoint_at $x $y $z
0165: set marker $chk color to 1
0008: $checkpoint += 1 ;; integer values
0002: jump Јcnt

:x4
018C: play_sound 1 at 0.0 0.0 0.0
0164: disable_marker $chk
0086: $x = $x4 ;; floating-point values only
0086: $y = $y4 ;; floating-point values only
0086: $z = $z4 ;; floating-point values only
018A: $chk = create_checkpoint_at $x $y $z
0165: set marker $chk color to 5
0008: $checkpoint += 1 ;; integer values
0008: $finish += 1 ;; integer values
0002: jump Јcnt

:changecrd ;; это аналогично тому, что с игроком, только если противник наберет 5 пунктов числа пройденных им отметок, то гонка проиграна
00D6: if 1
8039: NOT $crd == 1 ;; integer values
0001: wait 0 ms
004D: jump_if_false Јx11
00D6: if 1
8039: NOT $crd == 2 ;; integer values
0001: wait 0 ms
004D: jump_if_false Јx21
00D6: if 1
8039: NOT $crd == 3 ;; integer values
0001: wait 0 ms
004D: jump_if_false Јx31
00D6: if 1
8039: NOT $crd == 4 ;; integer values
0001: wait 0 ms
004D: jump_if_false Јx41
00D6: if 1
8039: NOT $crd == 5 ;; integer values
0001: wait 0 ms
004D: jump_if_false ЈRACEFA ;; идем на метку с выводом текста о провале миссии
0002: jump Јchangecrd

:x11
0086: $xZ = $x1 ;; floating-point values only
0086: $yZ = $y1 ;; floating-point values only
0086: $zZ = $z1 ;; floating-point values only
0008: $crd += 1 ;; integer values ;; прибавляем 1 пункт к числу пройденных противником отметок
02C2: car $zbr drive_to_point $xZ $yZ $zZ ;; тачка противника гонит на координаты $xZ $yZ $zZ
0002: jump Јcnt

;; всё что ниже, аналогично описанию метки x11

:x21
0086: $xZ = $x2 ;; floating-point values only
0086: $yZ = $y2 ;; floating-point values only
0086: $zZ = $z2 ;; floating-point values only
0008: $crd += 1 ;; integer values
02C2: car $zbr drive_to_point $xZ $yZ $zZ
0002: jump Јcnt

:x31
0086: $xZ = $x3 ;; floating-point values only
0086: $yZ = $y3 ;; floating-point values only
0086: $zZ = $z3 ;; floating-point values only
0008: $crd += 1 ;; integer values
02C2: car $zbr drive_to_point $xZ $yZ $zZ
0002: jump Јcnt

:x41
0086: $xZ = $x4 ;; floating-point values only
0086: $yZ = $y4 ;; floating-point values only
0086: $zZ = $z4 ;; floating-point values only
0008: $crd += 1 ;; integer values
02C2: car $zbr drive_to_point $xZ $yZ $zZ
0002: jump Јcnt

:RACEFA ;; метка с текстом о провале гонки
00BC: text_highpriority "RACEFA" 4000 ms 1 ;; выводим текст о том, что гонка не выиграна
0002: jump ЈFAIL

:PROTD ;; метка для ожидания 0 мс, можно не использовать, но мешать это не будет
0001: wait 0 ms

:FAIL
00BA: text_styled "M_FAIL" 4000 ms 1 ;; выводим текст о провале миссии, кстати, 4000 ms - это время, сколько будет текст на экране, 1 - это тип текста, поизменяйте его на 2 3 4 5 6, увидите разницу
0051: return ;; возврат к чему-то, не знаю только к чему, писать всё-таки следует

:clean ;; метка очистки миссии
0004: $ONMISSION = 0 ;; ставим флаг "игрок не на миссии"
004F: create_thread ЈЈstartracer ;; создаем ссылку на поток startracer

;; P.S. create_thread - исключение из правил J, JJ будет везде и в миссии, и в MAIN'e.

Ну вот! Я научил вас созданию гонки, с этим материалом вы научитесь создавать гонки на 2 гонщиков.
С уважением, zx300

Nightride FM


Доброго вечера всем! Хочу представить вам новую радиостанцию Nightride FM для GTA Vice City. По слухам, эта радиостанция должна была присутствовать в GTA V, но её вырезали из игры (или вообще не думали добавлять). На этой радиостанции крутят треки жа.

[!] Если вы считаете, что этот файл уже был добавлен в архив ранее, то сообщите, пожалуйста, об этом администратору с указанием ссылок на этот и добавленный ранее файл.

Как создать свои миссии в гта вайс сити

Лучшие аплоадеры за последние пять дней в погоне за репутацией!


Mission selection


Flash FM, вся волна из GTA VC одним файлом, лучшие треки 80х я считаю. Качать всем.

Flash FM 1985


Я решил сделать радиостанции по "промежуточной" дате между временами действий GTA VCS(1984 год) и GTA VC(1986 год). Это даже юбилейная дата, потому что на дворе 2015 год(30 лет прошло с 1985 года).Flash FM 1985Список композиций:Bryan Adams .

Скриптинг

:Label00A29A
0001: wait 250 ms - ждать 250 милисекунд
00D6: if 0
0256: player $PLAYER_CHAR defined
004D: jump_if_false ЈЈLabel00A29A
00D6: if 0
0038: $= 0 ;; integer values
004D: jump_if_false ЈЈLabel00A29A
00D6: if 0
00F9: player $PLAYER_CHAR stopped 0 ()near_point_on_foot 812.707 582.606 17.2778 radius 2.0 2.0 2.0 - вот

самое главное - где начинается миссия
004D: jump_if_false ЈЈLabel00A29A - эсли не наступили, делаем всё сначала
0164: disable_marker $9 - уничтожить маркер
03BD: destroy_sphere $A - уничтожить круг
0417: start_mission 0 - стартуем миссию
0001: wait 7000 ms ждём
004E: end_thread

:Label009B51
03A4: name_thread "Mission1" создаём thread
0050: gosub ЈLabel009AEE - загрузка моделей
00D6: if 0
0112: wasted_or_busted
004D: jump_if_false ЈLabel009B7A
0050: gosub ЈLabel009ACC

:Label009B7A
0050: gosub ЈLabel00A222
004E: end_thread

:Label009ABC
0001: wait 0 ms
00D6: if 0
0118: actor $my1 dead - если он умер
004D: jump if false ЈЈLabel009CCA
0002: jump ЈЈLabel009ACCb - то переходим х тексту Миссия выполнена

:Label009CCA
0001: wait 0 ms
00D6: if 0
0112: wasted or busted
004D: jump if false ЈЈLabel009ABC
0002: jump ЈЈLabel009ACC

:Label009ACCb
0001: wait 0 ms
0164: disable marker 1@ - удаляем маркер
0394: play_music 1 - проигрываем музыку
01E3: text_1number_styled "M_PASS" 200 5000 ms 1 - выводим надпись миссия выполнена и цена 200$
030C: set_mission_points += 1 - изменяем статистику
0109: player $PLAYER_CHAR money += 200 - даём игроку деньги
004E: end thread

:Label009ACC
0001: wait 0 ms
0164: disable marker 1@ - удаляем маркер
00BA: text_styled "M_FAIL" 4000 ms 1 - выводим надпись миссия провалена
004E: end thread

Создание миссий для GTA Vice City - всего 2 редактора миссий

Создание миссий для GTA: Vice City

Когда игра пройдена уже по несколько раз, так хочется поиграть с новыми миссиями! Особенно это касается старых игр серии, которые вышли так давно, что уже затерты фанатами буквально до дыр.

Для этой игры от Rockstar Games их всего два - Vice Lua и VC Mission Builder. Обе из них позволят вам сваять собственное задание или даже серию миссий.

Хочешь первым узнавать о выходе новых редакторов миссий для GTA Vice City?

Ты подписан на уведомления о выходе новых редакторов миссий для GTA Vice City

Читайте также: