Нитро ускорение
Запускаем Vice Builder и открываем наш main.scm (я использую только очищенный main, не содержащий миссии).
Далее ищем строку в верхней части main.scm:
0417: start_mission 0
и над ней пишем:
004F: create_thread JJNitro
Все, мы загрузили thread, теперь его нужно написать.
Для этого идем вниз и ищем строку
;-------------Mission 0---------------
Нашли? Теперь над ней пишем thread (пишите без того, что в скобках - это мои пояснения!):
:Nitro (название нашего thread)
0001: wait 0 ms (ждем 0 миллисекунд)
00D6: if 0 (если (условие))
0256: player $PLAYER_CHAR defined (проверка, существует ли игрок)
004D: jump_if_false ЈЈNitro (если не существует, начнем сначала)
00D6: if 0 (если)
00E0: player $PLAYER_CHAR driving (проверка, игрок в транспорте)
004D: jump_if_false ЈЈNitro (если нет, начнем сначала)
03C1: $37B = player $PLAYER_CHAR car ($37B - тачка игрока)
00D6: if 1 (если)
00E1: key_pressed 0 16 (нажатие клавиши, если написаны две клавиши, то это означает их одновременное нажатие, в нашем случае Caps Lock и Газ)
00E1: key_pressed 0 18
004D: jump_if_false ЈЈNitro (если нет, начнем сначала)
00D6: if 2
81F3: NOT car $37B airborne (проверка на полет, утопание автомобиля, перевернутость - см. ниже)
81F4: NOT car $37B flipped
83CE: NOT car $37B stuck
004D: jump_if_false ЈЈNitro (если нет, начнем сначала)
02E3: $37C = car $37B speed (выражаем через переменную скорость авто)
0007: $37D = $37C ;; floating-point values (сравниваем)
0013: $37C *= .3 ;; floating-point values (never used in VC or GTA 3)
000B: $37D += $37C ;; floating-point values
04BA: set_car $37B speed_instantly $37D (определяем скорость)
00AA: store_car $37B position_to 3@ 4@ 5@ (ускоряем авто путем перемещения на координаты)
0437: scatter_particle 27 .5 at 3@ 4@ 5@ 0 0 .0000005 (выдаем эффект огня из-под машины, с ним можно поэксперементировать)
0437: scatter_particle 12 .5 at 3@ 4@ 5@ 0 0 .0000005 (выдаем эффект огня из-под машины, с ним можно поэксперементировать)
0001: wait 10 ms (ждем 10 миллисекунд)
0002: jump ЈЈNitro (переходим в начало)
Вот и все! В Билдере у вас должно получиться вот так (это кусочек моего main.scm с нитро):
.......
:Nitro
0001: wait 0 ms
00D6: if 0
0256: player $PLAYER_CHAR defined
004D: jump_if_false ЈЈNitro
00D6: if 0
00E0: player $PLAYER_CHAR driving
004D: jump_if_false ЈЈNitro
03C1: $37B = player $PLAYER_CHAR car
00D6: if 1
00E1: key_pressed 0 16
00E1: key_pressed 0 18
004D: jump_if_false ЈЈNitro
00D6: if 2
81F3: NOT car $37B airborne
81F4: NOT car $37B flipped
83CE: NOT car $37B stuck
004D: jump_if_false ЈЈNitro
02E3: $37C = car $37B speed
0007: $37D = $37C ;; floating-point values
0013: $37C *= .3 ;; floating-point values (never used in VC or GTA 3)
000B: $37D += $37C ;; floating-point values
04BA: set_car $37B speed_instantly $37D
00AA: store_car $37B position_to 3@ 4@ 5@
0437: scatter_particle 27 .5 at 3@ 4@ 5@ 0 0 .0000005
0437: scatter_particle 12 .5 at 3@ 4@ 5@ 0 0 .0000005
0001: wait 10 ms
0002: jump ЈЈNitro
;-------------Mission 0---------------
; Originally: (no description)
.........