Missie scripten (GTA2)

Hoofdpagina > GTA2 > Modding > Missie scripten


Missies staan in aparte scripts (multiscripts), in een map met dezelfde naam als het hoofdscript (mainscript). Missies krijgen ook de naam van het mainscript, maar met een toevoeging erachter. Deze toevoeging bestaat uit de eerste letter van de gang (die wel verschillend moet zijn), een letter die aangeeft of het een groene, gele of rode missie is en een cijfer dat aangeeft welke missie het is. Als we dezelfde benamingsmethode als de originele scripts aanhouden, dan heeft de voorbeeldmap dus de volgende bestanden:

  • tst.gmp voor het level zelf
  • tst.mis voor het mainscript
  • tst voor de map waarin de missies staan
  • tst_te1 voor de eerste groene missie van de Testgang
  • tst_vm3 voor de derde gele missie van de Voorbeeldgang
  • tst_ph2 voor de tweede rode missie van de Proefgang

In plaats van LEVELSTART en LEVELEND gebruikt een multiscript MISSIONSTART en MISSIONEND. De werking blijft hetzelfde, al staan de missies van GTA2 geheel in subroutines. Hierdoor staat vrijwel alle code voor LEVELSTART.

Wanneer je een missiescript door de compiler wilt halen, kun je gewoon het mainscript selecteren. De compiler zoekt dan automatisch de externe missiescripts op, mits ze in het mainscript opgeroepen worden en de missiescripts in een map staan die op dezelfde locatie als het mainscript te vinden is.

Voorbeeld

Het script hieronder bevat een complete, eenvoudige missie. Er wordt meerdere keren een COUNTER uit het hoofdscript opgeroepen. Deze counters houden onder andere bij hoeveel missies er gehaald en gefaald zijn, of de speler momenteel een missie doet en zo ja, voor welke gang hij een missie doet. Dit is een onderdeel van een uitgebreid systeem dat de missiestructuur van GTA2 laat functioneren. Extra counters die in de missie gecreëerd worden, moeten een unieke naam hebben die ook in het mainscript niet voorkomt.

Het gaat om de eerste groene missie ("green_1") van de Zaibatsu Corporation ("zaibgang"). Bij het aannemen van de missie worden er een Eddy en een Panto gecreëerd. Om te slagen voor de missie moet je in de Eddy stappen. Stap je in de Panto, word je gearresteerd, of verlies je al je health, dan faal je de missie.

COUNTER main_zaibgang_green_1 = 1
COUNTER zaibgang_green_1_in_eddy = 0
COUNTER zaibgang_green_1_in_panto = 0

CAR_DATA zaibgang_green_1_eddy
CAR_DATA zaibgang_green_1_panto

FORWARD clean_up_zaibgang_green_1:

zaibgang_green_1:

SET flag_failed_zaibgang_green_1 = 0 //Nodig als de speler de missie eerder gefaald heeft.
SET flag_on_mission = 1 //De speler is nu bezig met een missie, en kan geen andere starten
SET flag_on_zaibgang_mission = 1 //De speler is nu bezig met een Zaibatsu-missie

zaibgang_green_1_eddy = CREATE_CAR ( 130.5 , 114.5 , 2.0 ) 5 270 EDSEL END //Eddy wordt gecreëerd
zaibgang_green_1_panto = CREATE_CAR ( 130.5 , 116.5 , 2.0 ) 7 270 FIAT END //Panto wordt gecreëerd

DISPLAY_MESSAGE ( 3847 ) // Missietitel
DISPLAY_BRIEF_NOW ( 3800 ) // Opdrachtgever legt de missie uit.

WHILE_EXEC ( main_zaibgang_green_1 = 1 ) //Volgende commando's gelden zolang je nog niet in één van de wagens zit

	IF ( IS_CHARACTER_IN_CAR  (  player1  ,  zaibgang_green_1_eddy  ) ) //Wanneer de speler in de Eddy stapt...
		SET zaibgang_green_1_in_eddy = 1
		SET main_zaibgang_green_1 = 0
	ENDIF

	IF ( IS_CHARACTER_IN_CAR  (  player1  ,  zaibgang_green_1_panto  ) ) //Wanneer de speler in de Panto stapt...
		SET zaibgang_green_1_in_panto = 1
		SET main_zaibgang_green_1 = 0
	ENDIF

	IF ( zaibgang_green_1_in_eddy = 1 )
		CLEAR_ALL_BRIEFS ( ) //Verwijderd alle teksten.
		DISPLAY_BRIEF ( 7022 ) // "Well done! You passed!"
		SET flag_passed_zaibgang_green_1 = 1 //Je hebt deze missie gehaald
		DISPLAY_MESSAGE ( 3100 ) // "JOB COMPLETE!"
		ADD_SCORE ( player1 , 3000 )//Je krijgt de beloning
		ADD_MULTIPLIER ( player1 , 1 ) //Je krijgt een multiplier
		CHANGE_GANG_CHAR_RESPECT_AND_UPDATE ( zaibgang , player1 , 1 ) //Je krijgt meer respect
		CLEAR_WANTED_LEVEL ( player1 ) //Wanted level wordt verwijderd
		SET_PHONE_DEAD ( zaibgang_green_phone_1 ) //De telefoon wordt uitgeschakeld
		DISABLE_THREAD_TRIGGER ( thr_zaibgang_green_1 ) //De missie-thread wordt uitgeschakeld
		RETURN 
	ENDIF

	IF ( zaibgang_green_1_in_panto = 1 )
		CLEAR_ALL_BRIEFS ( )
		DISPLAY_BRIEF ( 3683 ) // "You blew it, baby! The job's over for you."
		CHANGE_GANG_CHAR_RESPECT_AND_UPDATE ( zaibgang , player1 , -1 ) 
		SET flag_failed_zaibgang_green_1 = 1 //Je hebt deze missie gefaald
//		SET flag_failed_zaibgang_green_phone_1a = 1 //Je hebt deze missie gefaald en mag hem niet overdoen
		DISPLAY_MESSAGE ( 3730 ) // "JOB FAILED!"
		RETURN 
	ENDIF	 
ENDWHILE
RETURN

//---------------------------------------------------------------------------------------------

clean_up_zaibgang_green_1: 

IF ( flag_passed_zaibgang_green_1 = 1 )
	++ flag_all_missions_passed //De speler heeft een missie gehaald
	++ flag_zaibgang_missions_passed //De speler heeft een Zaibatsu-missie gehaald
	IF ( flag_zaibgang_missions_passed = 7 ) // Als de speler 7 (alle) Zaibatsu missies haalt...
		DISPLAY_MESSAGE ( 3674 ) // "ALL ZAIBATSU JOBS DONE!"
		DISPLAY_BRIEF ( 3675 ) //"Congratulations, Gecko! You have succeeded in completing ALL the Zaibatsu jobs!"
	ENDIF
ENDIF

IF ( flag_failed_zaibgang_green_1 = 1 )
	++ flag_all_missions_failed //De speler heeft een missie gefaald
	++ flag_zaibgang_missions_failed //De speler heeft een Zaibatsu-missie gefaald
ENDIF

IF ( CHECK_DEATHARREST_EXECUTED ( ) ) //Als de speler tijdens de missie wordt gearresteerd of gedood...
	++ flag_all_missions_failed //De speler heeft een missie gefaald
	++ flag_zaibgang_missions_failed //De speler heeft een Zaibatsu-missie gefaald
	CHANGE_GANG_CHAR_RESPECT_AND_UPDATE ( zaibgang , player1 , -1 )
ENDIF

MISSION_HAS_FINISHED (  ) 
    
SET flag_on_mission = 0 //Speler is niet meer bezig met een missie
SET flag_on_zaibgang_mission = 0 //Speler is niet meer bezig met een Zaibatsu-missie
 
RETURN

MISSIONSTART

GOSUB zaibgang_green_1:
GOSUB clean_up_zaibgang_green_1:

MISSIONEND
Modding tutorials van Grand Theft Auto 2
Mapping Editor (Epic) · Gebouwen · Wegen · Water & animaties · Slopes · Flat tiles · Collision info · Rand van een level · Zones · Level ingame zetten
Scripting Declareren: Basisscript · Script Compiler (MIS Pad) · Codelijsten · Commando's · Voertuigen · Objecten · Geluiden · Personages · Groepen · Deuren
Programmeren: IF · WHILE · COUNTERs · Subroutines · THREAD TRIGGERs · EXEC · PARK · Kill Frenzies · PHONEs · Singleplayerscript · Missies · Jesus saves
Beide Belichting · Car shops · Cranes & crushers · Gangs · Metro · Multiplayerlevels
Bestandstypes .gci · .gmp · .gxt · .mis · .mmp · .pal · .scr · .seq · .sty · .tmp
Overig Texting · Physics (Lijst) · Texturing · Voertuigen maken · Plattegrond · Terminologie · Levels installeren