Release Date: February 14th, 2004
Purpose:
Allows you to start/stop Vigilante missions anywhere (including on foot), except in other sub-mission
vehicles (Taxis, Ambulance, Firetruck, Pizza Boy, Whoopee); However, You can still end Vigilante while in the
other sub-mission vehicles. This also fixes the lame ass criminal spawning after level 12. Instead of spawning
the 3rd car somewhere it'll kill itself half the time, it keeps all 3 cars together like missions 8-12. They
should also keep spawning in different places instead of being stuck at the same spawn point like they normally
are (I think).
Installation:
Copy the main.scm to the Data folder in your GTA Vice directory, or use the mission builder to make
the changes yourself (described below).
Notes:
I used Demarest's GTA3 mod as a guide when I started looking at this, and I probably would've spent a lot longer
getting started if it weren't for his work. In doing this, I noticed that only the FBI Washington and the Hunter
are checked. The other law enforcement vehicles must've been hardcoded because I can't find anywhere the SCM checks
if you're driving them.
Changing the SCM yourself:
I used Barton's builder v1.3 for this. It may look different in other builders/versions. Obviously, my way isn't
the only way to do this. It could also be done more thoroughly. I didn't bother with the vehicle health
restoration part in my SCM, but I'll tell you where it is.
First, we want to be able to start Vigilante anywhere except in another sub-mission vehicle. Find the label where
it displays the Vigilante mission text if you enter a law enforcement vehicle. It looks like this:
:Label00F3CE 0001: wait 0? ms 00D6: if 0? 0256: player $PLAYER_CHAR defined 004D: jump_if_false ££Label00F662 00D6: if 22? 056C: $PLAYER_ACTOR 00DE: player $PLAYER_CHAR driving_vehicle_type #HUNTER 00DE: player $PLAYER_CHAR driving_vehicle_type #FBICAR 004D: jump_if_false ££Label00F647 00D6: if 0? 0038: $ONMISSION == 0? \\ integer values 004D: jump_if_false ££Label00F640 0293: 72?? = current_controls 00D6: if 0? 0038: 100?? == 1? \\ integer values 004D: jump_if_false ££Label00F471 00D6: if 0? 0038: 1288?? == 0? \\ integer values 004D: jump_if_false ££Label00F471 00D6: if 0? 8038: NOT 72?? == 3? \\ integer values 004D: jump_if_false ££Label00F460 03E5: text_box "CTUTOR" \\ Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle Vigilante missions on or off. 0002: jump ££Label00F46A |
:Label00F3CE 0001: wait 0? ms 00D6: if 0? 0256: player $PLAYER_CHAR defined 004D: jump_if_false ££Label00F662 00D6: if 6 0038: $ONMISSION == 0 ;; integer values 00E1: key_pressed 0 19 82DE: NOT player $PLAYER_CHAR driving taxi vehicle 80DE: NOT player $PLAYER_CHAR driving vehicle type #AMBULAN 80DE: NOT player $PLAYER_CHAR driving vehicle type #FIRETRUK 80DE: NOT player $PLAYER_CHAR driving vehicle type #MRWHOOP 80DE: NOT player $PLAYER_CHAR driving vehicle type #PIZZABOY 004D: jump_if_false ££Label00F662 0002: jump ££Label00F4EE |
:Label00F4EE 00D6: if 0 00DE: player $PLAYER_CHAR driving_vehicle_type #HUNTER 004D: jump_if_false ££Label00F517 00BA: text_styled "COP_M3" 6000 ms 5 ;; 'BROWN THUNDER' 0002: jump ££Label00F54F |
:Label10BCE6 00D6: if 2 856C: NOT $PLAYER_ACTOR 80DE: NOT player $PLAYER_CHAR driving_vehicle_type #HUNTER 80DE: NOT player $PLAYER_CHAR driving_vehicle_type #FBICAR 004D: jump_if_false £Label10BE04 00D6: if 0 0038: $1AF5 == 0 ;; integer values 004D: jump_if_false £Label10BD52 01BD: $1AF0 = current_time_in_ms 00D6: if 0 0018: $1AF4 > 60000 ;; integer values 004D: jump_if_false £Label10BD43 0004: $1AF3 = 60000 ;; integer values 0002: jump £Label10BD4B |
:Label10D0A6 00D6: if 2 856C: NOT $PLAYER_ACTOR 80DE: NOT player $PLAYER_CHAR driving_vehicle_type #HUNTER 80DE: NOT player $PLAYER_CHAR driving_vehicle_type #FBICAR 004D: jump_if_false £Label10D1B8 0396: 0 (clear) useless_flag 00D6: if 0 0038: $1AF5 == 0 ;; integer values 004D: jump_if_false £Label10D116 01BD: $1AF0 = current_time_in_ms 00D6: if 0 0018: $1AF4 > 60000 ;; integer values 004D: jump_if_false £Label10D107 0004: $1AF3 = 60000 ;; integer values 0002: jump £Label10D10F |
:Label10BCE6 0002: jump £Label10BE04 |
:Label10D0A6 0002: jump £Label10D1B8 |
:Label10ED62 0293: $12 = current_controls 00D6: if 22 056C: $PLAYER_ACTOR 00DE: player $PLAYER_CHAR driving_vehicle_type #HUNTER 00DE: player $PLAYER_CHAR driving_vehicle_type #FBICAR 004D: jump_if_false £Label10EE4A 03C1: $1ADB = player $PLAYER_CHAR car 053F: set_car $1ADB tires_vulnerable 0 00D6: if 0 8038: NOT $12 == 3 ;; integer values 004D: jump_if_false £Label10EDF9 00D6: if 0 00E1: key_pressed 0 19 004D: jump_if_false £Label10EDD9 00D6: if 0 0038: $1AFA == 1 ;; integer values 004D: jump_if_false £Label10EDD2 0004: $1AFA = 2 ;; integer values |
:Label10ED62 0293: $12 = current_controls 00D6: if 0 8038: NOT $12 == 3 ;; integer values 004D: jump_if_false £Label10EDF9 00D6: if 0 00E1: key_pressed 0 19 004D: jump_if_false £Label10EDD9 00D6: if 0 0038: $1AFA == 1 ;; integer values 004D: jump_if_false £Label10EDD2 0004: $1AFA = 2 ;; integer values |
:Label109611 00D6: if 1 0018: $1AEC > 7 ;; integer values 001A: 12 > $1AEC ;; integer values 004D: jump_if_false £Label109802 04B9: unknown_stuff $1B1E $1B1F $1B20 13.0 500.0 $1B1E $1B1F $1B20 $1B24 $1B25 $1B26 $1B27 00D6: if 3 0042: $1B1E == 0.0 ;; floating-point values 0042: $1B1F == 0.0 ;; floating-point values 0042: $1B24 == 0.0 ;; floating-point values 0042: $1B25 == 0.0 ;; floating-point values 004D: jump_if_false £Label109692 0001: wait 0 ms 0002: jump £Label109385 |
00D6: if 0 0018: $1AEC > 7 ;; integer values 004D: jump_if_false £Label109802 |
:Label10BBBF 0578: $1B1A 0008: $1AEC += 1 ;; integer values 00D6: if 22 056C: $PLAYER_ACTOR 00DE: player $PLAYER_CHAR driving_vehicle_type #HUNTER 00DE: player $PLAYER_CHAR driving_vehicle_type #FBICAR 004D: jump_if_false £Label10BC11 03C1: $1ADB = player $PLAYER_CHAR car 053F: set_car $1ADB tires_vulnerable 0 0227: $1AFC = car $1ADB health 0008: $1AFC += 100 ;; integer values 0224: set_car $1ADB health_to $1AFC |