Well chaos is pretty dead, after spending the last two weeks doing; to quote "Smashing my face into the screen" I've worked out the script layout and how the data within expressions links to other expressions and so forth.
I'm just a bit salty that for years no one has said fuck all.
No explaining the data layout. No Explaining how expressions reference other expressions.
I'm pretty fucking mad. This information has been here the whole time, just kept inside peoples heads and on their machines.
This is not a tutorial or a rant, it's a blog.
Dumping these random scripts into any map will not work.
(Unless you pump them through Blam3 Hammer, it will generate a prop expression for you)
Please take the time to familiarise yourself with the method behind manual script editing
(Go stare at the expressions block for 2 weeks like I did.)
- Something to make everyone's life easy.
Well hello there, came for some example scripts have we? You'll find any useful scripts that I make here and maybe even instructions on how to use/implement them.
I'll do my best to make some sense of this, it's really not that bad; Just tedious. You can actually poke script data so long as you don't change around memory address, then poke something like 0x8296B01F 1 Byte on Halo 3 to restart the scenario. All scenario changes do not apply without forcing a scenario restart.
^^^Warning filler content below^^^
Forge_Halo, making script player0 into a startup gravity edit. Nice and basic but shows the editing process after initial script setup. Haven't even bothered testing this so... Note the first two entries don't(?) contain important information other than a repeat of the scripts block, something like that. Photoshop keeps taking a shite on my desktop so have OBS footage.
Bits & Bobs:
ALLWAYS MAKE EXPRESSION INDEX 0 JUST SOME RANDOM VALUE, EG A BOOL WITH TRUE. This means when you create a new script, without ANY changes at all it wont cause assembly to flip its shit out about an invalid expression type when you preview the new script header. EG:
So much more forgiving for when you first start.
For true or false values, EG Globals:
BOOL, set VALUE03 16777215 = FALSE = Int8 ExampleD
33554431 = TRUE = Int8 ExampleA
VALUE00 & VALUE03 are identical most of the time but are displayed differently. If you think its garbage data do "view as" and compare the relevant values.
Expression indexes have a raw byte length of 0x18. (24decimal)
With this you can clearly see that there are 4 INVALID expressions: 0,1,2,3. We have the fourth selected and it contains valid bytes, you can use this copy entire scripts into other maps but of course you will need to fix the passThrough voids, index pointers and strings for them to be valid but that beats making it all from scratch. Try creating your own auto turrets by copying the snowbound auto turret script, creating the relevant "object names" & "trigger volumes".
All functions with null="true" will still quote en quote compile, but wont actually do anything. This is dictated in the games .xex and we may be able to re-enable some functionality if the data for those functions still exists. I've only had a brief look into this.
GOTO 8203F0C8 ON TU for script HEADER data list
Oh shit whats this. When no one else will do it, do it yourself lads.
- [Link] Placeholder
Go learn Halo CE scripting.