Personages zijn erg belangrijk bij het maken van missies en soortgelijke scripts. Je kunt ze verschillende AI's en opdrachten geven. Personages staan ook bekend als chars (kort voor characters, personages), bots, non-player characters of NPC's, pedestrians (voetgangers) of peds, alhoewel de laatste twee doorgaans refereren naar de standaard voetgangers die over straat lopen.
Personages plaatsen
Personages worden in het script aangeduid als CHARs en worden geplaatst met het CHAR_DATA commando.
CHAR_DATA naam //declare naam = CREATE_CHAR ( X.x , Y.y , Z.z ) uiterlijk rotatie AI END //set CHAR_DATA name = ( X.x , Y.y , Z.z ) uiterlijk rotatie AI //declare & set
naam | Unieke naam van het personage |
---|---|
( X.x , Y.y , Z.z ) | De coördinaten |
uiterlijk | Het uiterlijk of "remap" van het personage. Ieder uiterlijk heeft een eigen nummer, welke je kunt vinden in de lijst onderaan dezepagina. |
rotatie | Welke richting het personage op moet kijken wanneer het gecreëerd wordt. |
AI | Welke occupation (bestemming) het personage moet hebben. Iedere AI heeft zijn eigen set reacties op bepaalde situaties, in combinatie met de objective (opdracht) die het personage heeft. Als voorbeeld: een FBI AI met de opdracht je te vermoorden zal je uit je wagen trekken en je op korte afstand achtervolgen, terwijl een DUMMY AI met dezelfde opdracht vanaf een afstand op je wagen zal schieten. |
Voorbeeld
Als je een dummy voetganger met het uiterlijk van Elvis wilt plaatsen op 126.5 , 112.5 , 2.0, dan ziet de code er zo uit:
CHAR_DATA ped = ( 126.5 , 112.5 , 2.0 ) 12 180 DUMMY
Personages opdrachten geven
Simpelweg een personage creëren is niet bepaald spannend: meestal levert het een personage op dat doelloos door de stad dwaalt. Om een personage echt zinvol te maken moet je hem een objective (Engels voor "opdracht") geven.
SET_CHAR_OBJECTIVE ( naam , opdracht ) SET_CHAR_OBJECTIVE ( naam , opdracht , tweede_voorwerp ) SET_CHAR_OBJECTIVE ( naam , opdracht , X.x , Y.y , Z.z ) SET_CHAR_OBJECTIVE ( naam , opdracht , X.x , Y.y , Z.z , rotatie , afstand )
naam | Naam van het personage | ||
---|---|---|---|
opdracht | De objective die het personage moet hebben. Kies hierbij uit een van de volgende opties: | NO_OBJ | Laat het personage ronddwalen zonder doel. |
WAIT_ON_FOOT | Laat het personage op zijn huidige locatie wachten totdat er iets gebeurt. | ||
FLEE_ON_FOOT_TILL_SAFE | Laat het personage vluchten totdat hij denkt dat hij weilig is. | ||
GUARD_SPOT | Laat het personage zijn huidige positie bewaken. | ||
GUARD_AREA | Laat het personage zijn huidige gebied bewaken. | ||
WAIT_IN_CAR | Laat het personage in zijn auto wachten zonder weg te rijden. | ||
tweede_voorwerp | De volgende objectives vereisen een tweede voorwerp, personage, etc. om correct te werken: | KILL_CHAR_ON_FOOT | Laat het personage een ander personage aanvallen totdat diegene dood is. Als het doelwit buiten bereik is achtervolgt hij hem te voet. |
KILL_CHAR_ANY_MEANS | Laat het personage een ander personage aanvallen totdat diegene dood is. Als het doelwit buiten bereik is zal hij een voertuig laten spawnen en naar het doelwit teleporteren. Als het doelwit buiten zicht is kan de bot hem alleen lokaliseren als het doelwit zich op een weg bevindt. | ||
FLEE_CHAR_ON_FOOT_TILL_SAFE | Laat het personage van een ander personage te voet wegvluchten totdat hij denkt dat hij veilig is. Hierna zal hij rondlopen zonder doel. | ||
FLEE_CHAR_ON_FOOT_ALWAYS | Laat het personage voor altijd van een ander personage te voet wegvluchten. | ||
GOTO_CHAR_ON_FOOT | Laat het personage een ander personage volgen totdat hij hem bereikt heeft. Hierna zal hij rondlopen zonder doel. | ||
LEAVE_CAR | Laat het personage uit zijn auto stappen. | ||
ENTER_CAR_AS_PASSENGER | Laat het personage een voertuig instappen via de rechterdeur. | ||
ENTER_CAR_AS_DRIVER | Laat het personage een voertuig instappen via de linkerdeur. | ||
FOLLOW_CAR_IN_CAR | Laat het personage een auto volgen in een andere auto. Zorg ervoor dat de bot in een auto zit wanneer je dit commando gebruikt! | ||
FIRE_AT_OBJECT_FROM_VEHICLE | Laat het personage een object beschieten vanuit een Tank. Zorg ervoor dat de bot in een tank zit wanneer je dit commando gebruikt! | ||
DESTROY_OBJECT | Laat het personage een object aanvallen. | ||
DESTROY_CAR | Laat het personage een voertuig aanvallen. | ||
X.x , Y.y , Z.z | De volgende objectives vereisen coördinaten: | GOTO_AREA_ON_FOOT | Laat het personage te voet naar coördinaten gaan. |
GOTO_AREA_IN_CAR | Laat het personage in een auto naar coördinaten gaan. | ||
rotatie , afstand | Dit objective vereist een rotatie (0-359) en een afstand in blocks (0.0): | FOLLOW_CAR_ON_FOOT_WITH_OFFSET | Laat het personage een voertuig te voet volgen. De rotatie bepaalt vanaf welke kant het personage de auto moet volgen (270 is vanaf de linkerkant, bijvoorbeeld) en de afstand bepaalt hoe dicht hij op de auto moet lopen. |
Voorbeeld
In dit voorbeeld maken we een soldaat die de speler koste wat het kost wil vermoorden.
CHAR_DATA soldaat = ( 126.5 , 112.5 , 2.0 ) 4 0 ARMY SET_CHAR_OBJECTIVE ( soldaat , KILL_CHAR_ANY_MEANS , player )
Als je bovenstaand script probeert, zul je een soldaat tegenkomen die je aanvalt met zijn blote handen. Dat is niet de bedoeling, dus we moeten hem een wapen geven. Hij zal je ook achtervolgen in een bruine Benson, wat ook niet erg passend is. Dit veranderen we in een Armed Land Roamer en aangezien we toch bezig zijn zorgen we er gelijk voor dat hij het machinegeweer van zijn wapen ook moet gebruiken.
GIVE_WEAPON ( soldaat , MACHINE_GUN ) SET_FAVOURITE_MODEL ( soldaat , GUNJEEP ) SET_CHAR_TO_USE_CAR_WEAPON ( soldaat , ON )
Graphic type
Personages die je met deze code creëert zijn, evenals de player_ped of gangleden, groter dan normale voetgangers. Dit kun je aanpassen met het volgende commando:
SET_CHAR_GRAPHIC_TYPE ( char_naam , graphic_type , uiterlijk )
char_naam | De naam van het personage dat je wilt veranderen | ||
---|---|---|---|
graphic_type | kies uit één van de drie volgende types: | DUMMY_GRAPHIC | Normale voetganger (kleiner dan een standaard char) |
GANG_GRAPHIC | Standaard char (groter dan een voetganger) | ||
EMERG_GRAPHIC | Cop, paramedic, etc. | ||
Uiterlijk | Het uiterlijk of "remap" van het personage. |
Dit commando moet na LEVELSTART. Je kunt het graphic_type van een char zo vaak veranderen als je wilt.
Uiterlijken
|
AI
|
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 |