The numbers in the header have an unknown usage.
[1] Easy Liberty City NEW, 22, nyc.cmp, 0, 100 1 1 1 1 0
[2] Medium Liberty City new, 22, nyc.cmp, 0, 100 1 1 1 1 0
[1001] DEATHMATCH1, 22, nyc.cmp, 0, 100 1 1 1 1 0
[1002] Canonball Run1, 22, nyc.cmp, 0, 100 1 1 1 1 0
[1003] Canonball Run2, 22, nyc.cmp, 0, 100 1 1 1 1 0
[1004] Canonball Run3, 22, nyc.cmp, 0, 100 1 1 1 1 0
[102] San Andreas medium, 22, sanb.cmp, 0, 100 1 1 1 1 0
[103] San Andreas hard, 22, sanb.cmp, 0, 100 1 1 1 1 0
[1101] DEATHMATCH1, 22, sanb.cmp, 0, 150 1 1 1 1 0
[1102] Canonball Run1, 22, sanb.cmp, 0, 100 1 1 1 1 0
[1103] Canonball Run2, 22, SANB.cmp, 0, 100 1 1 1 1 0
[1104] Canonball Run3, 22, sanb.cmp, 0, 100 1 1 1 1 0
[202] Vice is Painless, 22, miami.cmp, 0, 100 1 1 1 1 0
[203] Vice is Painless, 22, miami.cmp, 0, 100 1 1 1 1 0
[1201] DEATHMATCH1, 22, miami.cmp, 0, 100 1 1 1 1 0
[1202] Canonball Run1, 22, miami.cmp, 0, 100 1 1 1 1 0
[1203] Canonball Run2, 22, miami.cmp, 0, 100 1 1 1 1 0
[1204] Canonball Run3, 22, miami.cmp, 0, 100 1 1 1 1 0
[1] Intro London NEW, 22, uk\uk.cmp, 0, 100 1 1 1 1 0
[2] Easy London NEW, 22, uk\uk.cmp, 0, 100 1 1 1 1 0
[3] Medium London NEW, 22, uk\uk.cmp, 0, 100 1 1 1 1 0
[4] Hard London NEW, 22, uk\uk.cmp, 0, 100 1 1 1 1 0
[1001] DEATHMATCH1, 22, uk\uk.cmp, 0, 100 1 1 1 1 0
[1002] Canonball Run1, 22, uk\uk.cmp, 0, 100 1 1 1 1 0
[1003] Canonball Run2, 22, uk\uk.cmp, 0, 100 1 1 1 1 0
[1004] Canonball Run3, 22, uk\uk.cmp, 0, 100 1 1 1 1 0
[1] Camp01 London2 NEW, 22, uk\uke.cmp, 0, 100 1 1 1 1 0
[1001] DEATHMATCH1, 22, uk\mc.cmp, 0, 100 1 1 1 1 0
This list is based on the strings found in the EXE files, compared with the commands used in the INI files.
The commands were compared with the template in IniPad and the usage in the game's Mission.ini files, and some fixes have been made.
The descriptions were mainly taken from mtd.pdf (GTA Mission Template Description by DMA Design Ltd. 1998-01-21).
START_DRIVER <ped> <succ> 0 <car> <score>
THIS IS NOT A VALID COMMAND!
However, here is the description written in mtd.txt.
Creates driver object and sends him to <car>. It always goes to <succ>.
Any car-triggers must be declared after the car that they’re referring to. This is very important! Same with drivers for cars, make sure the car is declared first.
This is the same for ANYTHING that refers to another line - this ‘other’ car/ped/object must have been declared before the reference to it.
Every objective that has a timer with the 0 - Infinite option, can now be failed, at the moment only the escort arriving at their destination will cause this to happen, but if you can think of anything else that could be used then please let me know.
After the effort James went to, to insert proper line numbering, you could at least have the decency to use it in a bit more responsible manner, you have 32768 (0-32767) line numbers to play with, you don’t have to squeeze them all together, plus at the moment you’re not leaving any room if anything needs to be inserted into them later you’ll be completely stuck, just don’t say I didn’t warn your, and before you ask, I am not going to write a renumber program for you, you’ll have to do that yourselves.
The target defined with line number zero will be executed every time. Use this very carefully!
‘Physical’ Z-Value means it’s like the actual z-value, e.g. 4
‘Logical’ Z-Value means it’s the game processing value, e.g. 3
Basically, if you’re creating something use the physical value, if you’re referring to something use the logical value… That’s the gist of it.
Multiphone ‘retriggering’ now works, if you follow the proper layout for it.
It’s a bit fiddly but it works. You need to do a MPHONE
declaration, followed by a PHONE_TOGG to get the multi-phones
to work….
If you want to execute a section of code once on startup, you need to place a
trigger on the start location of the player, which calls a line with the
STARTUP command in it. This section of code doesn’t have to consist of
DISABLEs only, you can use it to do an arrow pointing to the multiphones, or a
briefing. In fact, it’s better to do this with STARTUP.
Here’s a little example to show you what I mean.
(123,50,4) MPHONES 10 3 {line 200}
.
.
(123,50,4) PHONE_TOGG 200 5 {line 203}
.
(120,50,4) TRIGGER 3000 0 {line 210}
10 {multiphones as normal}
.
.
.
3000 STARTUP 210 0 -1 0 0
3010 DISABLE {disable triggers etc goes here}
.
.
3020 DISABLE 10 -1 0 0 0 {the -1 ‘kills’ this process,
THIS IS IMPORTANT….}
Doors now have a default state of ‘OFF’ to prevent players entering them at the wrong time. Use DOOR_ON to turn them ‘ON’ during particular missions, and use DOOR_OFF to switch them back off when you’re finished. DOORS NOW DEFAULT TO OFF
If you’re having problems getting mission.ini to load, things to
check/remember are:
“Request for an object line number has produced a line_num of -1”
These tend to mean that a line somewhere above has too little or too many
parameters, particular culprits are doors & peds. Look out for driver peds
without a car for example.
Typing errors are also prone to give this - look for brackets with { and ( mixed
up, or maybe . instead of , … All these can give this error. These can be fiddly
to find, but if I can do it, so can you.
Of course, it could be that you’re just referring to an object which doesn’t
exist.
“missing ‘(‘ in style … “
This means dino is trying to find a (X,Y,Z) when it shouldn’t be. Commonest
cause of this is
missing out the ‘-1’ at the end of the object list. Something like
101 (0,0,0) DUMMY 0 0
102
103 (0,0,0) DUMMY 0 0
can cause this error too….
IS_PED_IN_CAR not going to succ
Check that your model number is -1… If it’s 0, it will look for a model num of
0!
(These may not be 100% correct)
NOTE:
“EXTRA INFO” is the piece of extra info called <enemy> in the command listing
above.
For PED_ONS this should be in the <score> field…
An ‘extra info’ of -1 for simple guards means do NOT shoot at any ped/player
-2 means the ped will latch onto a random ped…
(complicated peds now…)
By using these more complicated types, you get more control of the actions of these peds.
A quick list of suitable ‘object types’ for the likes of suitcases, telephones etc.
All coordinates in the mission.ini are one of two types
0 - 255 (BLOCKS)
These are block references. (0,0,0) would be the very top corner, (255,255,4)
would be the very bottom right.
0 - 16320 (PIXELS)
A more precise way of placing objects etc - this gives you an extra 64 pixels
per block to place things. To convert between blocks & shifted coords, divide
your PIXEL coord by 64.
The basic format for Object creation is
{X,Y,Z} TYPE CLASS ANGLE
However various types use the Class and Angle fields for additional data, below
is a description of all the types you can create, and what the parameters mean.
(X,Y,Z) are now PIXEL values like objects. Z value should be PHYSICAL level, e.g. 4 shifted up.
Each objective is specified in the following manner
TYPE <Object> <Succeed> <Fail> <Data> <Score>
Ben Millard, aka Cerbera, has created some very helpful documentation, found here:
| block.rar | Manipulating map block data. | (mirror) |
|---|---|---|
| car.rar | Lists all vehicle indentifiers and some relevant commands. | (mirror) |
| misc.rar | Two sets of uncommented code examples. | (mirror: part1 / part2) |
| object.rar | Using dynamic objects, such as potted trees and bollards. | (mirror) |
| ped.rar | Ped remaps, AI types and relevant commands. | (mirror) |
| powerup.rar | Complete list of all valid powerups. | (mirror) |
See also the smallest mission.ini for GTA 1 Coding (mirror).