Game references¶
Lists of the things in The Warriors that scripts, mods and Coney's own code refer to: characters and their classes, attacks and hats, gangs and the Rumble roster, objects, weapons, items and cars, levels and what they place (flags, zones, doors, glass, lights), cameras and screen effects, AI goals, unlockables and statistics, animations, controls and commands, colours, text tags and labels, script constants, sounds, speech, script events and the names of the files in the game's archive. They play the part FiveM's game references play for GTA V: a modder looks up the id or name to pass, a contributor the value to expect.
Characters are "humans". The game calls every person, the player included, a human: scripts create one
with HuCreate, the engine updates them all in Humans_Update, and most character bindings start with Hu.
A human is the game's equivalent of GTA's ped; see Characters (research).
Start with Entities: every kind of thing the game has at run time (humans, objects, cars, flags, cameras, gangs ...), how scripts refer to each, how many there can be, and which lists and bindings cover it, with the FiveM equivalent of each.
Everything here is a name, an id, a number or our own short description, read from the player's own disc by
coney-tools refs extract and checked by hand. No game text, script source, model or image from the disc is
copied (LEGAL.md, "Reference lists").
Lists¶
| List | Entries | What is complete |
|---|---|---|
| Characters | 449 | Every type CfgChar configures (449) is listed with every argument. |
| Character models | 543 | Every record (543) is listed. |
| Gangs | 25 | Every gang type (25) is listed with its arguments; the meaning of the byte values is not traced. Labels are hand-written. |
| AI goal types | 149 | All 149 goal classes are listed, read from their vtables in the executable: type ids 0-158, with 10, 30, 76, 77, 81, 97, 98, 106, 139 and 151 unused. |
| Speed classes | 5 | All five classes are listed. |
| Objects and weapons | 1,371 | Every object type (1,371) is listed with its class, type, physics shape, size and animations. |
| Object groups | 5 | Every group named by a character type is listed. |
| Cars | 41 | Every type and part id is listed. |
| Particle effects | 270 | All 270 types are listed. |
| Levels | 111 | Every record is listed with every field. |
| Level starts | 188 | Every story level whose script creates player 1 at a literal position, and every Rumble flag script whose name is known. |
| World flags | 7,057 | Every AddFlag call whose name is a literal string: 7,057 flags (4,167 names) added by 94 scripts of 62 levels. |
| Object zones | 225 | Every zone number a level's scripts name (Zone<n> globals, <TABLE>.<NAME>_ZONE fields), switch or spawn objects into: 225 zones in 62 levels. |
| Volume boxes | 974 | Every AddVolumeBox call whose name is a literal string: 974 boxes (547 volume, 251 player and 176 turf boxes) in 47 levels. |
| Scenes and movies | 1,256 | All 16 movies, and every scene of scene_list.cnk except the 1,525 segments that continue a longer scene: 1,240 scenes, 24 of them under names cut to 16 characters. |
| Glass types | 19 | All 19 types are listed with every argument. |
| Doors | 484 | Every SpawnDoor call (484 doors in 45 levels). |
| Object tints | 37 | Every literal tint of ObjSpawn and ObjColor is listed. |
| Lights | 5,283 | Every 14-argument SetLight call; arguments the script computes show none. |
| Spawner states | 12 | All twelve states are listed; 6 and 10 only the game sets. |
| Crime types | 15 | All 15 types are listed. |
| Camera types and switches | 28 | All fourteen classes the code makes are listed: types 10, 14 and 15 belong to no class. |
| Screen effects | 23 | All six queue types, thirteen look slots and four layers are listed. |
| Inventory items | 23 | All 23 slots are listed; 15 have an object in config_preload2.lua and level20 reconfigures three. |
| Unlockables | 610 | All 610 records are listed with every field, grouped by type. |
| Power classes | 254 | Every class each difficulty sets is listed with every argument: 51 classes (0-10, 13-66 with gaps), 50 in Rumble. Every script sets class 39 twice; the second call wins and is the one listed. |
| Warrior classes | 46 | Every class each difficulty sets is listed with every argument (nine per difficulty and the boot class 9), and every byte's reader is traced. |
| Attack kinds and tables | 187 | All 45 kinds, every CfgAttackDelay (44 kinds; kind 4 and 18 have none, and kind 17 is set twice) and the Rumble scripts' weights are listed, and every 45-entry table at boot and as each difficulty redefines it. |
| Hat fittings | 908 | All 908 fittings of config_preload2.lua are listed: 28 sets, one per Warriors model, 14 to 43 hats each. |
| Rumble roster | 450 | All 9 modes, 29 arenas, 46 gangs and 366 characters are listed (the characters are set in four scripts, in two copies; both agree). |
| Statistics | 75 | All six categories, all 45 event slots and every level row of PointsMatrix are listed. |
| Animation clips | 1,875 | Every clip (1,875) is listed. |
| Anim ids | 722 | All 722 ids are listed with the generic clip and Rembrandt's own clip where he has one. |
| Controls | 18 | Every button bit and both sticks are listed. |
| Commands | 50 | Every trigger kind, every pad command the scripts bind or switch and all seven Warrior commands are listed. |
| HUD colours | 14 | Every key of CL is listed. |
| Radar icons and blips | 31 | Every icon a script or the code uses and every blip type the code adds are listed. |
| Text formatting | 66 | All 66 tags are listed; the effects are written from the layout code. |
| Text labels | 716 | Every key of every string table on the disc is listed, with the scripts that name it. |
| Script enums | 485 | Every numeric constant of those scripts is listed. |
| Sound and music | 2,124 | Every configured sound, ambient sound, emitter and literal speech line name is listed. |
| Speech | 464 | All 207 speech commands are listed by their names in the executable, and every voice set that has lines, a character type or a script user, with the lines the game finds for each. |
| Script events | 16 | Every message number a script uses with either binding is listed; the senders of 3, 4, 5 and 8 are traced, the other meanings are inferred from callback names. |
| WAD entry names | 6,313 | 6,313 of 10,701 names are known; the streamed world and most early entries are still unnamed. |
Script bindings¶
The functions the scripts call are listed in Script bindings.
Still to list¶
Families of ids, names and values that scripts or the Cfg* tables use and that have no list yet, the most
useful to a script author first. Counts are from the disc's 467 compiled scripts. Image says how an entry
could be illustrated: model render (Coney renders the model, as for characters), icon render (one
2D icon or sprite of at most 64 x 64 that Coney renders from the disc), swatch (a colour the docs draw)
or none. The list is research/references/still-to-list.yaml; a family that gets its own list leaves
it.
Every family the scripts use has a list now.
Not to be listed: the credits (CfgCredits) and the text of any string table, which are game text; boss portraits
(HUDSetANBossTexture), loading screens and other artwork.
Images¶
Characters, objects, cars, radar icons, particle effects and the lists that name an object (hats, inventory)
may show a thumbnail. Coney renders them itself from the player's disc (coney --render-references DIR
--names FILE, Running Coney) as transparent PNGs in
docs/references/images/, named after the entry's stable reference name, so the renderer and these lists
agree without a lookup table. Models are 256 x 256; 2D icons and sprites are at most 64 x 64:
| Lists | Image | File name | Example |
|---|---|---|---|
| Characters, Character models | the model standing | characters/<model name>.png, or <name hash>.png for a model with no recovered name |
characters/warr_re_cv.png |
| Objects, Hats, Inventory | the object's model | objects/<name>.png, the object type name |
objects/dyn_bat.png |
| Cars (types) | the undamaged car | cars/<type name>.png |
cars/car_osedan.png |
| Radar icons | the icon at its own size | radar/icon-<n>.png |
radar/icon-28.png |
| Particle effects (traced sprites) | the sprite scaled to fit 64 x 64 | particles/<name>.png |
particles/part_fire.png |
coney-tools refs extract fills an entry's image field when its file exists; a missing image is simply
left out of the table.
Contributing¶
Edit the YAML in research/references/, then run uv run --project python coney-tools refs render. The
hand-written fields (who a character is, what a constant means) are kept when the lists are refreshed from
the disc with coney-tools refs extract. The schema and rules are in
Research workflow.