Content: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Background: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Pattern: Blank Waves Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Welcome to Xbox Chaos: Modding Evolved

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.


How to copy script expressions from one map to another.

6 posts in this topic

Pretty straight forward, jump to the map's script expression data in a hex editor and copy and paste the required expressions into a new map. Be sure to take the string table over too in case it is needed, or you want to be able to read the script in assembly's decompiler. (In most cases, strings are not actually needed at all. But do them anyway for the sake of it.)

To find the file offset for the expressions you need, find the expressions related to your target script. (Bungie tends to place the starting expression at the end of the relevant data, so be sure to make your way back up so you don't copy any bogus or unwanted expressions.


WE WILL NOT BE MERGING SCRIPTS MANUALLY, THAT SHIT IS TEDIOUS AF BRUV. (Fixing indexes is horrible, its the only thing BH can do that is useful. pls)

Go check out my blog post here if you want some scripts to try out, or even merge.


I'll use in the following example and we will copy the auto turret setup script to another map:

ovV63FE.png Copy the file offset

VeBs4cO.png Ctrl+G = Hey look, its our expressions and also the very end of the string table!

(Expressions in Halo 3 have a hex length of 18 and 24 as decimal.) 

Okay cool, we found our expressions. Lets find the end of our relevant expressions so we can paste them into our target map:

We do the same as before, find our last expression in assembly, view value as etc.

dsq8oNH.pngNeato, lasts our last expression.

(Confusingly it actually throws us to index number 4 then continues the script, go figure)

We have our beginning and an end, so select it all and save it to a txt file for later.

A88pahc.png(Noice meme)

AAjW36d.png Data


Scroll up a bit above the script expressions and you will see the end of the string table, copy everything up to BA and save it.

TWcFfIm.png Not having these in our new map will mean assembly wont be able to show you the script, missing bits etc.

(Note: the script will still work without these, but some functions require the relevant string. EG: forced animation scripts)


We got our scripts, lets goto our target map's expressions and strings, paste them in and setup our script entry.


fXWSgE8.png Matching starting indexes of our data...

PEeQWZ1.png Expression index 4, lets paste our data in with ctrl+b to overwrite...

NE6ctNU.pngDope, hit ctrl+S to save.

dBJuXeU.png Ctrl+S....


Okay we are done with the hex editing, close your editor and jump into assembly and double check everything is hunky dory. 


c8MeN2U.png Nice, lets finish up by adding our script entry as per the original map.

De7Lbyt.png Expanding our entries... (And dongs, oof)

qMR6Awg.png Script names don't matter unless the coincide with another script (EG: Command Scripts) 


And that's it, go check it out and make sure everything is as it should be.




Now this is not very useful as of right now, but you could always be a cheeky sod and copy some example scripts from existing maps. Ill put a few up later on so you can have some fun without needing to spend the time writing the scripts yourself. 

Edited by Akarias
ImDatNigga and blackdimund like this

Share this post

Link to post
Share on other sites

just tried this out. one thing to note, i viewed value from the salt at the beginning, then from the last unknown at the end when copying a block of hex. haven't tested yet in game, but it loads the scripts ok, pretty sure that's how it should work

Edited by blackdimund

Share this post

Link to post
Share on other sites

yep thats how it should work, youll need to correct the indexes if you are placing tge expressions in a different index to the original map.

Share this post

Link to post
Share on other sites

can you just paste from one map to another with different index locations? i don't see the index numbers in hex or ascii. not a big deal, don't need it for anything right now

Share this post

Link to post
Share on other sites

the index for the expressions is based on where you paste the data. 

so you could copy from index 50 into index 10 but the expression would still have all of the same data as it did when sitting at 50.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now