<![CDATA[Tutorials & Guides Latest Topics]]>https://www.xboxchaos.com/forum/54-tutorials-guides/en[360] Giving Brutes non-blue armorhttps://www.xboxchaos.com/topic/5793-360-giving-brutes-non-blue-armor/ This is being written for the Xbox 360 build of Halo 3, but can easily be done on MCC as well. 

Giving Brutes non-blue armor

If you have spent a short amount of time on this website or on the HaloMods subreddit/discord, you may have had the question of "how do I make brutes have different armor colors, like other enemies?" In your search, you will have probably come across this guide (https://pastebin.com/Bqu7CrtS) that explains one way to fix this issue. That guide explains that the Brute armor colors found in the Biped ARE being used in-game, but that the shader applied to the armor is essentially overriding the color with a blue-colored overlay; the solution goes into detail of how to edit the shader so that this is no longer a problem. If you have PC modding tools, you may have also seen this (https://www.nexusmods.com/halothemasterchiefcollection/mods/1476) post on Nexus on how to make/use improved Brute shaders. This is by far the best solution, in terms of quality, but it also cannot be used on the 360 (or on the PC without the modding tools installed).

This will work on the 360 and on MCC, all you need is Assembly. You will be making 1 new tag and editing the contents of 1 existing one. For best results, repeat this process for each map

 

tl;dr

1. Duplicate the Cheiftain_Armor shader tag under rmsh (name it whatever you want)

2a. Go to your new tag and open it.

2b. Under Parameters, change the bitmaps for:

  • 0-17(18) minor_major_armorwork
  • 2-17(18) minor_major_armorwork_cc
  • 3-17(18) minor_major_armorwork_bump

2c. Under Postprocess/Textures, change the bitmaps for:

  • 0-5(6) minor_major_armorwork
  • 3-5(6) minor_major_bump

2d. Save the tag.

3a. Open the Brute render model (under 'mode', name is just 'Brute')

3b. Under Materials, change the shader for:

  • 3-15(16) [YOURSHADERNAME]

3c. Save the Brute tag.

4. Go test it out!

Final thoughts

I hope that folks find this little tutorial helpful. Obviously with MCC on PC, there are better ways to do it and have more control over how the shader ends up looking. I'm not too familiar with biped colors and the like, but I hope that this gives you a jumping off point to recolor and such however you want. You may still have to mess around with the float constants to get your desired results (the 'contribution' floats especially can add tints of environmental color to the metal when you may not want it, for example). Enjoy!

Pictures (biped colors are default values, Xbox 360)

Image

Image

halo3_4_Co-op 004.jpghalo3_2_Co-op 002.jpghalo3_3_Co-op 003.jpghalo3_7_Co-op 007.jpg

]]>
5793Wed, 26 Jan 2022 23:31:41 +0000
How to make melee damage sync with biped animationhttps://www.xboxchaos.com/topic/5784-how-to-make-melee-damage-sync-with-biped-animation/ When I change my 3rd person unit to a hunter the animation works but it's not synced with the damage output the damage is early before the animation even finishes does anybody know how to make it sync 

]]>
5784Tue, 25 Jan 2022 00:22:13 +0000
Player Failed to Load Content .MAP Modhttps://www.xboxchaos.com/topic/5455-player-failed-to-load-content-map-mod/ Xbox 360 Slim RGH fonctionne.
Forge Campaign .MAP Mod dans le fichier de jeu.
Je vois le fichier .MAP dans le lobby Forge, mais le message "Le lecteur n'a pas pu charger le contenu" est affiché. OO

Pourquoi....

]]>
5455Fri, 06 Sep 2019 17:48:28 +0000
How to get the Flaming Helmet in Halo 3's Campaign.https://www.xboxchaos.com/topic/5593-how-to-get-the-flaming-helmet-in-halo-3s-campaign/ How to enable the Flaming Helmet in Halo 3’s Campaign on PC

After finding Hyptichypezz’s guide on how to change Master Chief’s armour in campaign I also wanted to get the flaming helmet working, too. I had a look around on the internet, but I could not find any guides on how to do so. So, after some trial and error, I eventually found on how to do it.

Before you can do this, you will need to also follow Hyptichypezz’s guide!

Part 1 – Launching MCC with Anti-cheat off.

To be able to mod Halo MCC, you will need to launch MCC with Easy Anti Cheat disabled.

1.       Click W + R and this will bring up the Run window

2.       Enter: steam://launch/976730/option1

3.       The game will then launch without loading the Easy Anti Cheat up.

Part 2 – Advice when editing maps.

I would advise on making a backup of the map that you are injecting to so that if something breaks you can revert to it. I have had to do this multiple times as you can break something. Or you can just validate the game files and it will download the map again from Valve’s servers.

Part 3 - Editing the armour

1.       When following this section within Hyptichypezz’s guide, you want to change the Permutation ID for chest to 8 and this selects mp_bungie chest plate which enables the flaming helmet.

2.       Since 343i have added more armour to Halo 3, you will need to also change the ID for chest-shared to 1 otherwise Master Chief will not have armour on his back, as shown to change this below. 

        Tutorial_4.png

3.       343i have a changed all the armour indexes, but the original Permutation Names are there, and they are at the start the of the list, so you will not need to go search through the entire list for them.

Part 4 – Editing Chief’s Biped

1.       Open “objects\characters\masterchief\masterchief” in [BIPD] and search for “Attachments”.

2.       Next you want to go over to the Part and select: 3-3(4)

        Tutorial_1.png

This next part can be a bit complicated, so I will try and explain it as best as possible.

3.       For the effect chosen, you click on the drop-down arrow to expand a list of all the effects within the mission.

4.       Scroll up one, you will see effect “objects\characters\masterchief\fx\flaming_ninja”. Click on that to choose it as the fourth attachment type.

5.       You then want to add in the Marker field “flaming_ninja”.

6.       Finally, in the Primary Scale you need to add in the field “alive” and that is it!

Part 5 – Poking this to in-game.

If you have done Part 4 correctly then it should look like this as the fourth attachment, as shown below.

 Tutorial_5.png

Now you need to poke all this while in-game and then restart. If you have done all this correctly then it should show in-game.

Part 6 – Screenshots

Here are some screenshots from Halo 3 on PC in 1440p with it enabled.

Screenshot_1.png

Screenshot_2.png

Screenshot_3.png

Screenshot_4.png

Part 7 – Final word

I would just like to thank Hyptichypezz for his guide on how to change the armour in Halo 3’s campaign as I didn't know how to.

Thanks.

]]>
5593Wed, 13 Jan 2021 04:47:58 +0000
how to apply the mod to all game levels (campaign)https://www.xboxchaos.com/topic/5601-how-to-apply-the-mod-to-all-game-levels-campaign/ Hello everyone guys!
I explain my problem.

I modded the first level of halo 3: i just edited a bit the weapons damages and others little stuff.

I saved all changes in all tags i needed (i used assembly). So now how can i apply these changes also in all Game levels???
I tried to exstract these tags and then inject in next levels, but i didn't success.

Someone can help me?

]]>
5601Wed, 12 May 2021 08:13:14 +0000
Injecting Custom Soundshttps://www.xboxchaos.com/topic/4485-injecting-custom-sounds/ This tutorial can also be applied to injecting sounds from another map, which I'll touch on when the time comes, but tldr its all this but with more ugh blocks to keep track of.

 

This tutorial can also apply to every other game that is not named Halo 4. Use some common sense to adapt any changes.

 

Stuff needed:

1. Preparing your sound

Before we begin we need to make sure your sound is all good and ready for conversion. But we also need to make sure your Audacity is good to go as well.

Head to Edit>Preferences, and under Import/Export make sure "Use Custom Mix" is selected like this. You can also uncheck "Show Metadata Editor" if you'd like.

nOWPeJK.png

 

 

Open it up in Audacity and you should see something like this

9G1RuhR.png

 

Preferably you will want the same setup as circled in red, if not stereo then mono, and if not 44100Hz then 32000Hz or 22000Hz. Anything else you will need to go to Tracks>Resample and set what you want. If you have more than 2 channels continue on as that will be fixed on export.

 

When everything checks out and you've made any edits to the sound if you are into that, go up to File>Export and change the save as type to WAV. Give it a name and hit save it to your desktop. The following dialog should pop up

tb3StjU.png

 

Here is where you will combine channels if you have more than two. Change the bottom slider and click the boxes to link them however you wish. Hit OK when done. Your WAV will be made and you can close Audacity. Make sure to note down your sample rate and channel count as you will need that later.

 

2. Converting your sound

Copy xma2encode to your desktop and with nothing selected hold Shift and right click. Select "Open Command Window Here" from the menu and you will get a command prompt window. You will want to type the following:

xma2encode yoursound.wav /targetfile yoursound.xma

If you want to get experimental you can also use

xma2encode yoursound.wav /blocksize # /targetfile yoursound.xma

With # being the size in kb you want each block to be, which will translate to permutation chunks. By default it is x10000 bytes or 64kb which is also what will be used in this tutorial. A bigger number may save you some work but it may also not work since nothing past 64kb has been tried. Multiply your choice by 1024 in windows calculator and note the result as decimal and hex for later. This is the block size.

 

xma2encode does not display any progress and just spits out your file and exits, so verify your new .xma file is on your desktop and close the command window.

 

3. Preparing your converted sound

You can't use the .xma as it stands. You must strip the header. Open the .xma in a hex editor and find the string "data", skip 4 bytes past that, then select from there backwards to the beginning and delete.

NBctTXe.png

 

File>Save As whatever name and extension, or save over your xma I dont care.

Ctrl+A to get the overall byte count of your file (as hex) and make note of that. And while we are here, open up a fresh calculator and divide the overall size by the hex block size. That will get you the number of full blocks in your sound (programmer mode rounds the result which is what you want) so note it, but you also need the size of the final block that tends to be smaller. So multiply the count by the block size then subtract it from the overall size. The result is your final block size.

 

For me that looks like this:

block size: x10000

overall size: x39800

----------

full-block count: 3

----------

final block size: x9800

----------

total block count: 4 (3 full plus the final)

 

Note the total block count and final block size and close everything down.

 

4. Injecting donor sound

Open the above Assembly and set up your H3/whatever game's shared path in settings.

 

Now you need to find a donor sound that you will be overwriting the injected raw of. I like to use a smaller/shorter sound. The smallest sounds are going to be campaign dialogue, with "sound\dialog\130_epilogue\letterbox\130lb_100_arb" from epilogue being my favorite (Arbiter saying "Were It So Easy"). So open up whatever map and extract. (This tutorial will use the Epilogue sound and if you don't your results may vary.)

 

While you could manually expand the raw table and update everything that way, we are gonna be hardcore and edit the tagc.

Open the tagc in a hex editor and do a text search for "ersp". Go xD bytes after it and select everything before it and paste it into a new document then save it as a new .tagc. Time to make some fixes to the tagc.

 

The 4 bytes following "ersp" is the size of the ersp block, and that must be updated to the overall size (hex) of your headerless xma + x11.

The last 4 bytes in your document right now is the size of the raw itself, so replace it with the overall size (hex) of your headerless xma.

 

Open your headerless xma and paste its contents at the end of your custom tagc document.

 

Do another search for ersp in the original tagc, this should take you to a second, empty page that all sounds seem to have. Copy everything from there (including the ersp text) to the end of the file and paste at the end of your custom document.

 

Search for rspg. x11 bytes past that is size. Replace those 4 bytes with the headerless size again. Skip another byte forward and you'll be at another size, replace for a final time and save. (See image if confused. The 4 underlined bytes in both instances need to be replaced, notice the one byte between them not underlined)

QoSvpDo.png

 

One last fix is needed. Select All on your custom tagc and note the hex size of the entire document. Enter this over the 4 bytes after "tagc" at the beginning of the file. Save once more and try injecting your custom tagc. It should go through fine. If you get an error you messed up somewhere in the tagc so try it again.

 

If it injected you can close the hex editor for now.

 

5. Fixing the raw pages block entry

We only modified the tagc as necessary, and there are still some things we need to fix further.

Since you only injected one thing, we can just go to the second to last Raw Pages index (the last should have a size of 0).

This is where OrangeMohawk's tool comes into play. Open that and drag your headerless file over it to get the CRC/hash info for it and replace the ones in the tag. Save Changes.

 

Take this time to make a backup and make sure that the map still loads ingame. If it doesn't check your CRC, Hashes, and TAGC.

 

6/7/8. Expansion

This tutorial was made before you were able to add entries to tag blocks (reflexives) from inside Assembly using the + button. The original end of the tutorial is spoilered, but the updated version is:

Open up play and add 2 entries to the "Sizes" block. For the first entry convert your headerless size to decimal and paste it in the first field.

Then in that first entry you added, add 1 entry for "Parts". Paste the decimal size in the second field, leaving the first field 0.

Note the index of the 2 added Raw Sizes chunks and go to the last Segments chunk below Raw Sizes. Replace the "Size Datumindex" values with both Raw Sizes indexes. The first being the one you filled in and the second being the empty one. Save. PLAY is now finished. Onward to UGH!

 

Scroll down to Pitch Ranges and add 1 entry. Note the Index of the new chunk.

 

Check other indexes to find the name index for "default". In your new chunk give "Import Name Index" that name index.

 

"Pitch Range Parameter Index" refers to the block above, so give it the index of whichever chunk looks like this:

ZoEbrPM.png

 

Make "Encoded Permutation Data Index" 0

 

Make "Encoded Runtime Permutation Flag Index" -1

 

Make "Encoded Permutation Count" 1040

 

Make "First Permutation Index" the index of the chunk you are about to add to Permutations.

 

-

 

Add 1 entry to Permutations.

 

Give "Import Name Index" the default import name too.

 

Make "Encoded Skip Fraction" 0

 

Make "Sample Size" the decimal size of the headerless xma.

 

Make "First Permutation Chunk" the index of the first chunk you are about to add to Permutation Chunks.

 

Make the "Permutation Chunk Count" the number of blocks your sound is made up of. (Remember when we did that?)

 

Leave the rest of the block empty

 

-

 

Add the same number of sound blocks you found to Permutation Chunks.

 

Make the first chunk look like this, with both Chunk Size values differing if you chose not to use 64kb block size. Also make "Unknown Size" the size of your headerless sound.

tuRNKj4.png

 

If you only had one chunk skip ahead, the following is only for filling out further chunks. Save and move on.

 

Here is what each further chunk should look like, where only the "File Offset" will change each time, besides the final chunk.

GIAIlZn.png

 

You can get the File Offset by starting at 0 and adding the decimal block size each time. 64kb is 64 times 1024 which equals 65536 so the second chunk is offset  65536. Third will be 131072, and so on and so forth.

 

At the final chunk make it look like this: (offset and sizes may vary)

PPAajBT.png

 

The Chunk Size has now changed to the smaller one and a flag was added. When everything is filled out Save Changes.

 

~Single-Chunkies may continue following now.

 

All we need now is to touch up the SND! tag. So open that up. Keep UGH! open.

 

Starting from the top;

 

Leave the "Flags" alone (Only bit 3 checked)

 

Set the "Sound Class" to whatever you want. Keeping it somewhat accurate to your intended application will benefit you. (Music gets music, etc.)

 

For "Platform Codec Index" head back to UGH! at the top and find the Platform Codec block index that matches your sound (Which is likely 44kHz Stereo). Give it that index.

 

For "Pitch Range Index" give it the index of the chunk you added.

 

Make "Language B Index" -1

 

Keep the "Unknown" 0

 

For "Playback Parameter Index" find an existing index that is either empty besides the 2 angles (Distance Flags checked), or one mostly empty besides the angles and Distance C and D. Distance A and B have not worked well in my testing. You for sure want Gain Variance, and both Random Pitch Bounds at 0 however. Gain Base is okay if it's only like -3 or something. Look for higher/lower gains if you want it louder/quieter.

 

For "Scale Index" find the chunk that looks like this and give it its index:

JrmlNOi.png

 

Promotion Index, Custom Playback Index, and Extra Info Index should be -1

 

Leave the rest of the tag alone. Save Changes. Your sound is now injected! Rename the tag as you see fit and have fun!

 

6. Preparing for expansion

In addition to the Raw Sizes info, we need to get the info of a few blocks in ugh! to accommodate your sound. So open up ugh!

 

Scroll down to "Pitch Ranges" and copy its count and entry size.

Do the same for "Permutations" below it.

And do it again for "Permutation Chunks" further down.

 

If you were injecting a sound from another map, you'd be doing this with just about all the blocks in ugh!.

 

With all that info grabbed, time for math! But first close the map.

Multiply the count and entry size for the 4 blocks and copy their hex size.

Then add up each hex result. The result rounded to the next x10000 is how much data you need. The rounded result divided by x10000 (chop off the 0s) is the amount of "pages" you need to enter into mapexpand.

 

Mine looks like this:

Raw Sizes: 4046*16 = xFCE0

Pitch Ranges: 2207*12 = x6774

Permutations: 7271*16 = x1C670

Permutation Chunks: 8260*20 = x28550

= x5B014, or x60000, or 6 pages.

 

If your un-rounded size is already pretty close (like xZD000 or higher), add an extra page for good measure.

 

 

7. Expansion

Run mapexpand (if you don't know how look at other tutorials) on your map, and obviously note the memory and file addresses.

 

Now move/duplicate those 4 blocks (see http://www.xboxchaos.com/topic/3543-duplicating-reflexives/). Start at Step 2, don't do Step 4. knowing you already have the sizes so you just need the file offsets (which I didn't already have you get because mapexpand-ing changes them.)

 

Grab all the offsets at once, then one after the other move them into your free space noting their file offsets. Leave like x100 bytes space in between each block and make sure there's a lot of space after permutation chunks.

 

When all is copied save and close the hex editor. Reopen your map in Assembly, and in the Map Information tab double click the Map Magic value to copy it. Now add that to each file offset. The results are your new memory addresses, so plug those into play and ugh!.

 

8. Filling in new chunks

Now with the blocks moved to locations that are safe to resize, we need to properly fill them in. Starting with play.

Add 2 to the count of Raw Sizes. For the first value in the block, convert your headerless size to decimal and paste it in.

Then right click the value's name and choose View Value As. Scroll down to raw example and get the address below it. Add x20 to it and paste that into the inside block with a count of 1. Copy the decimal headerless size to the second value in that block. The second added Sizes block will be left empty.

 

Note the index of the 2 added Raw Sizes chunks and go to the last Segments chunk below Raw Sizes. Replace the "Size Datumindex" values with both Raw Sizes indexes. The first being the one you filled in and the second being the empty one. Save. PLAY is now finished. Onward to UGH!

 

Scroll down to Pitch Ranges and add 1 to the count. Note the Index of the new chunk.

 

Check other indexes to find the name index for "default". In your new chunk give "Import Name Index" that name index.

 

"Pitch Range Parameter Index" refers to the block above, so give it the index of whichever chunk looks like this:

ZoEbrPM.png

 

Make "Encoded Permutation Data Index" 0

 

Make "Encoded Runtime Permutation Flag Index" -1

 

Make "Encoded Permutation Count" 1040

 

Make "First Permutation Index" the index of the chunk you are about to add to Permutations.

 

-

 

Add 1 to the count of Permutations.

 

Give "Import Name Index" the default import name too.

 

Make "Encoded Skip Fraction" 0

 

Make "Sample Size" the decimal size of the headerless xma.

 

Make "First Permutation Chunk" the index of the first chunk you are about to add to Permutation Chunks.

 

Make the "Permutation Chunk Count" the number of blocks your sound is made up of. (Remember when we did that?)

 

Leave the rest of the block empty

 

-

 

Add the same number of sound blocks you found to the count of Permutation Chunks. Scroll through them to make sure everything is 0 (to make your you didn't skimp on space at the end of pasting the Chunks block)

 

Make the first chunk look like this, with both Chunk Size values differing if you chose not to use 64kb block size. Also make "Unknown Size" the size of your headerless sound.

tuRNKj4.png

 

If you only had one chunk skip ahead, the following is only for filling out further chunks. Save and move on.

 

Here is what each further chunk should look like, where only the "File Offset" will change each time, besides the final chunk.

GIAIlZn.png

 

You can get the File Offset by starting at 0 and adding the decimal block size each time. 64kb is 64 times 1024 which equals 65536 so the second chunk is offset  65536. Third will be 131072, and so on and so forth.

 

At the final chunk make it look like this: (offset and sizes may vary)

PPAajBT.png

 

The Chunk Size has now changed to the smaller one and a flag was added. When everything is filled out Save Changes.

 

~Single-Chunkies may continue following now.

 

All we need now is to touch up the SND! tag. So open that up. Keep UGH! open.

 

Starting from the top;

 

Leave the "Flags" alone (Only bit 3 checked)

 

Set the "Sound Class" to whatever you want. Keeping it somewhat accurate to your intended application will benefit you. (Music gets music, etc.)

 

For "Platform Codec Index" head back to UGH! at the top and find the Platform Codec block index that matches your sound (Which is likely 44kHz Stereo). Give it that index.

 

For "Pitch Range Index" give it the index of the chunk you added.

 

Make "Language B Index" -1

 

Keep the "Unknown" 0

 

For "Playback Parameter Index" find an existing index that is either empty besides the 2 angles (Distance Flags checked), or one mostly empty besides the angles and Distance C and D. Distance A and B have not worked well in my testing. You for sure want Gain Variance, and both Random Pitch Bounds at 0 however. Gain Base is okay if it's only like -3 or something. Look for higher/lower gains if you want it louder/quieter.

 

For "Scale Index" find the chunk that looks like this and give it its index:

JrmlNOi.png

 

Promotion Index, Custom Playback Index, and Extra Info Index should be -1

 

Leave the rest of the tag alone. Save Changes. Your sound is now injected! Rename the tag as you see fit and have fun!

]]>
4485Wed, 27 Aug 2014 00:28:36 +0000
Custom Armour For Campaign - Halo 3https://www.xboxchaos.com/topic/5344-custom-armour-for-campaign-halo-3/ How To Change Master Chief's Armour In Campaign - Halo 3

 

About a month ago I replied to a thread on how to change Chief's armour for the campaign, it seems like people don't really know how to do it so I've decided to make this tutorial. It's going to take a lot of explaining on what to do, so get ready kids! I'm not the best at explaining how to do stuff, so if this gets difficult to follow, I will make a video on how to do it.

I will not be showing you how to mod your Xbox, where to download Assembly or where to get a modified XeX for Halo 3, you will easily be able to find where to get those elsewhere on here. There's probably an easier method on how to do this, but my way works fine if done correctly. 

Also I spell "Color" with a u because I'm British mate. Please remember to save each tag after you edit it and also make a back up of the map just in case if you do something wrong.

What you'll need to do this:

  • A modded Xbox 360
  • Assembly
  • Modified Halo 3 XeX (I'm assuming)
  • Halo 3 .map files on a USB or other device that works

Part 1 - Getting the required tags:

  1. In Assembly, you will need to extract the following tag from a multiplayer map "[BIPD] objects\characters\masterchief\mp_masterchief\mp_masterchief" to your desktop. You may close the multiplayer map as you will not need anything else from it.
  2. Once you have the extracted tag, open up any campaign mission and import "[BIPD] objects\characters\masterchief\mp_masterchief\mp_masterchief" into it. Your campaign mission should then look like this in the [BIPD] section. 
  3. Tags.jpg

Part 2 - Changing Chief's Model

  1. Open up "objects\characters\masterchief\masterchief" in [BIPD] and change where it says model from "objects\characters\masterchief\masterchief" to "objects\characters\masterchief\mp_masterchief\mp_masterchief"
  2. Next you'll want to search the [HLMT] tag and select "objects\characters\masterchief\masterchief" and also change the model in that to "objects\characters\masterchief\mp_masterchief\mp_masterchief"
  3. Tags 2.jpg

Part 3 - Editing The Armour

This is where it's going to get slightly more difficult, so prepare yourself...

  1. In [HLMT] open up "objects\characters\masterchief\mp_masterchief\mp_masterchief" and scroll down until you see "Regions" & "Permutations". Regions specifies which part of the body it will change, and Permutations is which armour it will be swapped to. Part 3.jpg

The Regions section is where you'll be selecting the piece of armour you want changed. Make sure you change where is says "0-7 (8)" before you change the number in "Model Permutation Index". We will not be editing anything in the Regions section, only changing which part of the body you are selecting, which will be 0-7, 4-7, 5,7 and 6-7.

The Permutations section is what we'll be editing. The number below will represent each armour. Insert that number into "Model Permutation Index" below where it says "Base". Make sure it always says "Base" above (Apart from Chest). Please remember to save after you edit each tag.

Helmet 0-7 (8): 

0 - Default

2 - Cobra

3 - Intruder

4 - Ninja

5 - Regulator

7 - Ryu

8 - Marathon

9 - Mark V

10 - Rogue

11 - Scout

12 - ODST

Left Shoulder 4-7 (8):

0 - Default

1 - Cobra

2 - Intruder

3 - Ninja

4 - Regulator

5 - Ryu

-1 - Bungie

6 - Marathon

7 - Scout

Right Shoulder 5-7 (8):

This one is the same as left shoulder.

Chest 6-7 (8):

-1 - Marathon

0 - Cobra

1 - Intruder

2 - Ninja

3 - Regulator

4 - Ryu

5 - Scout

6 - Katana

7 - Bungie

 

Change Armour Colour:

  1. Go to the tag [BIPD] and select "objects\characters\masterchief\masterchief", once you are on this, scroll down to where it says "Change Colors".
  2. You will see boxes where you can change the colour in them, just click on the box and select which colour you want for your armour. Make sure to change the numbers on the side after you've finished changing the colour so you change every part of the armour. 
  3. Part 4.jpg

 

After you have done this, save the tags and test out the map you have chosen. If this was too difficult to follow, please do say so and in the future I will try my best to make a video on it. It was difficult to explain but I hope I managed. If you need help, just say so. I highly recommend playing in Third Person so you can actually see your character to know if it has worked. I don't know how to change first person arms, but I am working on it.

Good luck guys, hope I helped. Feel free to show images of your game if it worked!

 

]]>
5344Fri, 21 Dec 2018 07:17:29 +0000
Animation Inheritinghttps://www.xboxchaos.com/topic/5419-animation-inheriting/ All credit goes to Lord Zedd for his research on this subject. I just made the tutorial. I also haven't went over this in a while, since leaving a few years ago so if there's something wrong please let me know and I will fix!

[HALO 3] I’ll be having the grunt animation inherit MC’s animation’s.

(parent) MC = inherited animation

(child) Grunt = Local animation

In the animation you want to have Inherit some other animation, expand the “Inheritance List” block. Now, you’ll see a tagref “Inherited Graph,” add the reference to the animation you want to Inherit (MC in my case). Open that animation. Navigate to the “Skeleton Nodes” block and note the count size and go back to the local animation and expand the “Node Map” with the same count. For example, the count size for MC, is 51 so I’ll be adding 51 chunks to the “Node Map” block.

 

Go back to the animation you want to Inherit (MC in my case) and go through each “Skeleton Nodes” chunk and note the “Name” StringID for each chunk as well as the chunk. Now, go back to the local animation, (in my case the Grunt) and go through its “Skeleton Nodes” block and note each “Name” StringID for each chunk and the chunk number itself.

 

Each chunk in the “Node Map” block corresponds to a chunk in the inherited animations “Skeleton Nodes” block.

 

Go through the local animation’s “Skeleton Nodes” and note the indexes of the strings that show up in the inherited animations “Skeleton Nodes” block.

 

So for instance, the first chunk (0) in the inherited animations “Skeleton Nodes” block is “pelvis,” and the first chunk (0) in the local animation’s “Skeleton Nodes” block is also “pelvis.”  (remember, the chunks in the “Node Map” match up with the chunks of the inherited animation’s “Skeleton Nodes” block, so chunk 0 in “Node Map” corresponds with chunk 0 in the inherited animation’s “Skeleton Nodes” block) so for the first chunk of the “Node Map” block make the “Local Node” control the index of the corresponding “Skeleton Nodes” index. So for me index 0 of the “Node Map” block is 0 as that is local animation’s corresponding node value:

rsshK5i.png

If the StringID appears on a different index in the local animation’s “Skeleton Nodes” but appears on some other index in the inherited animation’s “Skeleton Nodes” block, then in the corresponding chunk in the “Node Map” (remember, the chunks in the “Node Map” match up with the chunks of the inherited animation’s “Skeleton Nodes” block, so chunk 0 in “Node Map” corresponds with chunk 0 in the inherited animation’s “Skeleton Nodes” block) give the “Local Node” control the index of where that StringID shows up in the local animation. For example, in the inherited animation’s “Skeleton Nodes” block chunk 2 is “r_thigh” but in local animation’s “Skeleton Nodes” block “r_thigh” appears on chunk 3. So for the “Node Map” block I gave the “Local Node” control 3 as that is local animation’s corresponding node value.

2.PNG

If there is a chunk in the inherited animations “Skeleton Nodes” block that doesn’t appear in local animation’s “Skeleton Nodes” block, make it  -1.

 

Now, in the local animation expand the “Node Map Flags” block inside the “Inheritance List” block. The “Node Map Flags” reflect which nodes in the “Node Map” block are used, meaning a bit should be unchecked if you made the “Local Node” control -1. Each chunk corresponds to the first set of numbers in the series.

 

Node 0, 32, 64, 96, 128, 160, 192, 224

Node 1, 33, 65, 97, 129, 161, 193, 225

Node 2, 34, 66, 98, 130, 162, 194, 226

Etc…

 

The first chunk (0) of “Node Map Flags” corresponds to 0 – 31. Second chunk (1) of “Node Map Flags” corresponds to 32 – 63. Etc.…

So add the proper number of chunks to “Node Map Flags” to encompass the total number of chunks in “Node Map,” since MC has 51 chunks you’ll need to add 2 chunks, 0 – 63.

Duplicate the inherited animations [jmad] and steal its “Modes” block address and count and replace the “Modes” address and count in the local animation. Now go through every block and sub block in “Modes” and replace “Graph Index” with a reference to the “Inheritance List” index where you made all the edits, so for me it’s 0.

 

You can sorta speed up the graph index process by:

- hex replace a good pattern that includes the -1

 

This process is a bit different for halo reach. You use the “NEW Inheritance List” instead of the normal “.” From there you duplicate the Parent/animation you’re inheriting, rip out its animation block, plug it into the child (the animation you want to have inherited the child), and remove the inner block, set each blocks tagref to the original parent.

 

Hex > line it up to a block a line > notepad++ then you can hold alt and select the tagref of everything and type it in once to fill it all

To increment from 0 by 1:

Edit>column editor

 

What you are essentially doing is keeping the Spartan animation ordering and self-referencing to the original Spartan jmad, which is why you can then get away with notepad++ counting because everything is now going line up 1:1

 

the inner animation block holds like the raw index and stuff so that’s why you remove that

 

the tagref says "get your raw info from this jmad and this index"

 

 

 

If you animation breaks while you perform certain animations go to that specific animation in the parent animation go to the “Animations” block go to “Object-Space Parent Nodes” and either fix it or null it for that animation, or you can just null all of them for each animation to fix them all.

 

]]>
5419Sun, 02 Jun 2019 00:58:39 +0000
First Person View In Theaterhttps://www.xboxchaos.com/topic/4846-first-person-view-in-theater/ Hi, this is a newer method to achieving first person view in theater mode. I've sort of updated this tutorial but it might need a bit more work.
I did make some notes (mainly for myself) on how to do it.
 
Generally speaking you should use Peek Poker and just find the following patterns in a certain address range.
I can't guarantee this will work for you. 
Link to my notes
 
You'll need:
Peek Poker.
xbdm plugin for peeking and poking.
Your Xbox 360, connected to your local area network.

This is mainly for Halo 3, however I have tested it (albeit with different patterns) on Reach & Halo 4 too. I haven't tested ODST but it should work.
 
  • Basically go into the theater lobby and start a theater film. Make sure you're in first person view on your own character. Don't change anything.
  • Leave the film and go back to the theater lobby.
  • In Peek Poker, connect to your Xbox IP and click on Search
  • For the start offset, put the start offset from the notes for the game you're attempting to get first person theater camera. For Example, Halo 3 is "C5000000"
  • In length put the length in. In Halo 3's case it's "02000000".
  • In the search for box, put in the values for the Default Theater state in Theater lobby menu. Halo 3's is "ec 70 00 00 00 00 00 00 00 00 00 03"
  • After hopefully getting some results, right click the offset, preferably highest one to the top first and click copy.
  • Click on "Peek & Poke" and in the address paste the offset and click peek.
  • Start your theater film.
  • Change to another player then click peek on Peek Poker, you should see some changed values in red.
  • Underneath 0B in Peek Poker (if it's laid out the same) change the 00 to 03 and click poke.
  • Again in Peek Poker, look at the current player being spectated (2nd 00, but could also be 05 or anything else) observe current value then poke 00 (or a value of another player) then restore the original observed value.
  • The camera should now be in first person.
  • Enjoy!
  
I'm hoping to make a video at some point on how to do this, just so you can see what I'm doing when I do it.
 
 
Some things to note:
You'll need to peek and poke again if the target gets into a vehicle such as a warthog.
The viewing experience is better in campaign games than multiplayer games.
The pattern is different in Reach and Halo 4, refer to the notes for the patterns and search range.
Be careful poking, if you poke the wrong area or poke to a player that doesn't exist it'll crash the game.

 

]]>
4846Fri, 28 Aug 2015 00:57:10 +0000
AI spawnshttps://www.xboxchaos.com/topic/4321-ai-spawns/ Edit 9/12/15 - Fixed grammar and fixed somethings.

 

Things you will need
- Assembly can be found here and how to compile here.
- Campaign.map, shared.map, and mainmenu.map for the selected Halo game you want to do this in
- Console that can play unsigned code
- xex with checks removed, AI in multiplayer and the ability to spawn AI via effect tags.
Halo Reach
Halo 3

 

*Make sure you have "Show invisibles" on.

dHI7BXU.png

 

 

Step 1:
First open a campaign mission and extract any [char] tag(s) you want, I'll be doing the Brute [char].
Give Assembly a minute to extract the selected [char] tag(s). 

 

TIP:

extracting the [char] tag brings the [bipd] tag as well, but some [char] tags are variants of the original and some may not contain the [bipd] tag it's always safe to just extract the main base [char] for what AI you want and if you have to have a different variant then change it in the [hlmt]. 

 

once you have the [char] tag(s) you extracted somewhere leave them and open the map you want the AI to be in.

I'll be opening Sandbox.

 

So now it's time to prepare a [effe] tag so we can have our AI spawn.

You have 2 options to attack this, both methods require you to duplicate a [effe] tag

the first one:

Pick a random [effe] tag, duplicate it and add the "Parts" block with Assembly.

Spoiler

 

you'll need to find an [effe] tag so we can "gut it" and make it our own it can be any [effe] tag

once you found one, right click it and click duplicate tag and make the name something you'll remember, something to do with your spawn, like "fx\spawn_effects\spawn\AI\brute_minor"; now you'll need to close the map and reopen it so the newly duplicated tag shows up.

 

once you reopen it, find your duplicated tag and lets start editing it 

 

First at the top, make everything zero except the float32 under the undefined, make that 0.1. Now at "Loop Start Even" make that either -1 or 0

 

Now go to where you see  "Locations"  and "Events" blocks.

Under "Locations" block, you will see "Marker Name" change the stringID to "spawn".

Under "Events" block, you will see "Name" change the int32 to "spawn". Save.

 

Continuing down you will see "Duration Bounds Min" and "Duration Bounds Max" change the float32 for both to 10000.0 (if you have it at a lower number AI will flood your map). Save.

Go down and you will see a block called "Parts" click the "+" next to the chunk count to bring up the "Tag Block Reallocator" and add 1 new entry count. 

Once done click the "+" to expand the block and now you will see "Create in Disposition" change that to "Either Mode" if it is not already set to that, under "Create in Disposition" change all the values to 0 if they aren't already. Save.

Go down a little and you will see "Anticipated Tag Class Note" and under that you will see "Anticipated Tag Class" change the ascii to "char" and for
"Spawned tag" find the char of the AI you injected. Everything from "Velocity Bounds Min" to “Origin Rotation j" make 0 if not already. Save.

 

Lastly, go to the bottom of the tag, and make everything zero except:

"Location Index" make that -1

"Event Index" make that -1

and the last unknown that is a float32, make that 0.1 if not already. 

Save.

 

 

or

 

Find an [effe] tag that already has a parts block and fix it accordingly (look at the first way to see what I changed). 

 

Step 2:

 

Do a search for 
objects\multi\spawning\respawn_point

 

once you found it again right click it and click duplicate tag and make the name something you'll remember, something to do with your spawn, like "objects\multi\spawning\brute_respawn_point"; now you'll need to close the map and reopen it so the newly duplicated tag shows up.

 

First go to "Multiplayer Object Properties"
Change the "Type" to "Equipment"
And in flags uncheck bit 3. save.

 

Now go to the "Functions" block and click the "+" next to the chunk count to bring up the "Tag Block Reallocator" and add 1 new entry count. 
Once done, check always active in flags and change both "Export Name" and "Import Name" to either respawn_point, spawn, or active (they all should work). Save.

Now go the the  "Attachments" block and click the "+" next to the chunk count to bring up the "Tag Block Reallocator" and add 1 new entry count. At "Attachments" use the first drop down box to find [effe] class and use the second to find the edited [effe] tag
I.e for me I'll find fx\spawn_effects\spawn\AI\brute_minor. Lastly, at "Marker" change the stringID to "spawn" Save.

Once done, go to [scnr] and search for "Sandbox Goal Objects", and add the spawn point there.
Save.
Or add it to whatever sandbox palette you want.

 

Halo Reach:

In order to get the spawns to work in Halo Reach

you'll need to change the spawn point hlmt to "objects\multi\models\mp_spawn_point\mp_spawn_point"

T0NNe7p.jpg


in addition for Halo Reach 

go in the effect 

under the "parts" block 

make "Location index" 0 instead of -1

 

 


JJIJR had the idea, I just decided to figure it out myself and make a tutorial.

 

 

Want the tutorial as a pdf?

Download here:

MEGA outdated tutorial

Virus scan here:

https://www.virustotal.com/en/file/a59e979ec0aac6d89ef2704d042f2b41be9550879667e752270cf28af8598110/analysis/1437356414/

 

 

 

 

 

Old tutorial here: 

Spoiler

 

Things you will need
- Assembly can be found here skips over sounds and fixes the crash when you add injected assets to the forge list
and how to compile here.
- Campaign, shared, and mainmenu maps for the selected Halo game you want to do this in
- RGH/Dev kit/JTAG
- Mapexpand with corn found here
- Xex with checks removed, Ai in mp, and Ai ability to spawn via effect tags.
Halo Reach
Halo 3

Before you continue, I'm working on fixing this tutorial up please come back later.
This probably will work for Halo reach but the process may very slightly

Step 1:
First open a campaign mission and extract any char you want, I'll be doing the brute char.
Give Assembly a minute to extract and inject the tags

Step 2:

Open a clean map, this can be any map, you're going to be using this map to take the needed tags from.
(you can also duplicate tags with a hex editor, but I wont be going over that)

Once you found a map, go to the [effe] class; you'll need to find an effe tag so we can fix it up.
I recommend using fx\material_effects\materials\brittle\glass_breakable_shards

So once you find fx\material_effects\materials\brittle\glass_breakable_shards
We need to go through it.
First at the top, you will see two blocks, one called "locations" and the other one is called "events"
Under locations, you will see "marker name" change the stringId to "spawn".
Under "events", you will see "name" change the int32 to "spawn". Save.
Continuing down you will see "duration bounds min" and "duration bounds max" change the float32 for both to 10000 (if you have it at a lower number AI will flood your map). Save.
Go down and you will see a block called "particle systems" take its address (make sure to put 0 in the address) and make the chunk size 0.
Go to "parts" click show information and paste the address you grabbed from "particle systems" into the address slot and add one chunk
Once done click the "+"; you will see "create in disposition" change that to either mode if it is not already set to that, under "create in disposition" change all the int32's to 0. Save.

Go down a little and you will see "anticipated tag class note" and under that you will see "anticipated tag class" change the ascii to "char" and for
"Spawned tag" find the char of the Ai you injected to spawn from this point. Everything from "velocity bounds min" to “origin rotation j" make 0.
Save. Change the name of this tag to something else. I will change mine to fx\decal\Brute_Minor because fx\decal is always at the top of the tags
in the [effe] class and Brute_Minor because I want a Brute minor AI, don't forget to click "save tag names" and extract the tag.
Give Assembly a minute to extract the tag, once done inject the tag give Assembly a minute.
Once the tag is injected go to [scen] (in the same map) search for
objects\multi\spawning\respawn_point
First go to "multiplayer object properties"
Change the "type" to "equipment"
And in flags uncheck bit 3. Save.

Change the name of this tag to something else. I'm going to change it to objects\multi\spawning\spawn_point_brute_minor once you found a name don't forget to click "save tag names" and extract the tag. Now open the map you want these AI spawns in.

Inject both the tags and the char tag you got from the campaign map, once Assembly is done injecting click save and close the map.

Step 3:

Make a folder to hold what we'll be working on, place your .map in and copy mapexpand to the folder (make sure it's extracted). Shift+Right and click and click "open command window here" type in:

mapexpand (your map name here).map tag 1

Once it's done note down the address I circled in red (this address will very for you).
AVciMXO.png

Close the command prompt and open your map back up in Assembly.

Go to the injected spawn point tag
I.e for me objects\multi\spawning\spawn_point_brute_minor
And click expand information for the block "functions" and place the address you got (the one I have circled in red) into to address slot and add one chunk
Once done, check always active in flags and change both "export name" and "import name" to either respawn_point, spawn, or active (they all should work). Save.

Again close Assembly and repeat the mapexpand process (you will get a different address this time)
Once you did it go back into your injected spawn point tag and click expand information for the block "attachments" and place the address you got (the one I have circled in red) into to address slot and add one chunk. At "attachments" use the first drop down box to find [effe] class and use the second to find the injected effect tag
I.e for me I'll find fx\decal\Brute_Minor. Save.

Once done, go to [scnr] and search for "sandbox goal objects", and add the spawn point there.
Save.
Or add it to what ever sandbox palette you want.

 

JJIJR had the idea, I just decided to figure it out myself and make a tutorial.

 

 

]]>
4321Sat, 19 Jul 2014 21:41:23 +0000
<![CDATA[Halo 3 Hacks - Tips & Tools for Finishing the Fight]]>https://www.xboxchaos.com/topic/505-halo-3-hacks-tips-tools-for-finishing-the-fight/ Halo 3 Hacks - Tips & Tools for Finishing the Fight

This (.PDF) contains 30+ Halo 3 .Map modding tutorials. I will be creating/Including more tutorials over time. If you have any tutorials you want in this, or any problems with it please send me a Privet Message. This collection was made just for you guys here at XboxChaos!

 

Important Notes:

  • This is not a modding program. This a a document containing many different types of tutorials to help you get started learning how to mod Halo 3. 
  • Assembly is required Download Here 
  • You will need to have a Jtag/RGH or Devkit to follow these tutorials.
  • These tutorials should work on the release of Halo MCC: Halo 3 (Will update upon release).

 

If you do like this collection of tutorials please give + Rep it always helps! If you could also subscribe to my youtube channel that's all i ask!

X02jKZq.png

 

Download:

v1.1 - Halo 3 Hacks.pdf

]]>
505Tue, 29 Jun 2010 03:55:04 +0000
Halo 3 hunter bipdhttps://www.xboxchaos.com/topic/5483-halo-3-hunter-bipd/ I’ve managed to change my character to hunter but there’s one problem how do I enable to use the cannon beacouse instead it’s using the weapon that the game give you

]]>
5483Sun, 08 Dec 2019 14:39:32 +0000
How to Play as Other Charactershttps://www.xboxchaos.com/topic/5316-how-to-play-as-other-characters/ NOTE: This WILL NOT  work for those who do not have a modded Xbox 360 console. Sorry!

 

There are two parts to this tutorial; part one will teach you how to extract .tag files such as [bipd] which will be what we are using for this and is crucial for part two, part two will teach you how to import the extracted [bipd] 

 

Part One - Extracting your [bipd]

1. Open up a .map file of your choosing

2. Choose any campaign .map that you want (preferably citadel because it has the most bipds and char)

3. Once opened, go to the bipd taglist and choose any bipd you want

for this tutorial, I will be choosing the grunt.bipd

4. Highlight and right click on the grunt bipd tag and Extract... (With Raw)

giphy.gif

5. Now, you will need to drag your .map file over to your neighborhood map folder

 

Part Two - Importing your [bipd] and playing as your character

6. After that, you will go to the .map you're wanting to mod 

7. Import the extracted bipd you chose

8. Find the taglist [matg]

9. Search for, "Player Representation"

10. Choose whichever player you are, elite or masterchief  I am player masterchief

YsE3AzM.png

11. In the red box is what bipd you will be changing and you can change it whatever you want I chose the grunt.bipd once again

rFykH9a.png

12. As you can see, i chose the grunt bipd, once you've chose your bipd, click poke and respawn

 

 

After I’ve poked, here’s my grunt after respawning

Spoiler

SyYTaPM.jpg

 

 

Be sure to check out my YouTube channel!

 

]]>
5316Sat, 15 Sep 2018 04:04:34 +0000
problem halo 3 forge campaignhttps://www.xboxchaos.com/topic/5447-problem-halo-3-forge-campaign/ Hello

I can not play in campaign forge mode

I download the card on blamdepot.com I put it on my usb stick then I put it in the xbox and I have nothing forging menu.

if someone can help me it would be very nice thank you

47627D5C-4909-41A9-9AA1-EFCFCC637541.jpeg

]]>
5447Wed, 14 Aug 2019 23:04:57 +0000
<![CDATA[Script Creation & Editing - A terrible guide please ignore.]]>https://www.xboxchaos.com/topic/5246-script-creation-editing-a-terrible-guide-please-ignore/ Shits out of date and some parts are flat out wrong, you have been warned.

Quote

 

Please refer to: https://gist.github.com/Akarias/1155c1b651f8db4e58957071223895d6

 

Most of this is outdated

 

Okay we will start but discussing the layout of a basic script and some of the quirks with assembly when it comes to previewing scripts.

All of our work is done under SCNR in the SCRIPTS, SCRIPTS EXPRESSIONS blocks. If we need to preview all of our scripts, just click on the "Scripts" tab in assembly and it will do its best to show you a semi-accurate representation of what is actually going on with them.

EG:

cwnM7IT.png Tsavo Highway, gutted of its scripts and replaced with my own.

Here we can see a that there is a script that runs on startup and does nothing else, then we also have a command script. Command scripts are scripts that are ran on AI squads and allow you to do things such as giving orders to AI and other effects like controlling the speed of a vehicle being piloted by an AI. We will cover commands scripts in greater detail later, for now we will focus on general scripts.

Open up that has the player_count script, it is in most maps but not all. I'd recommend a multiplayer map as they have far less script data and are easier to navigate. We are going to investigate this script and work out what it is actually made of in terms of script expressions. Something to also note here is that the assembly script decompiler is a bit quirky and that was you read in the decompiler is a lot of the time not the full story. A perfect example is the phantom_show_1 script in the example above, there is actually a begin expression there that is not show. This can be confusing when trying to find where you are in the expressions list as things do not match up visually. Overtime to you begin to remember OPCODES based on their numbers and tell when assembly is having a bit of a moment. 

Hold up cowboy time for a boring bit.

Lets talk about these "expressions" I keep rambling on about. Expressions are the raw data that is read by the games scripting engine, its the reason why we cant just go and type nice big scripts and hit save/compile like we can in Halo CE. In HEK (Halo Editing Kit, for Halo CE) we can use sapien to compile our text based script into lovely expressions that are then stored in the .map file when compiled. The only current way of making our scripts is to manually create these expressions from scratch or by altering existing ones. 

Lets take a look at the player_count script and see what expressions it uses:

7LUHawh.png 6r8PCSB.png <-- as per the decompiler

First we find our desired script using the drop down box, then we follow its Root Expression Index. The "REI" is where the script begins, this first expression does a few things. It states what type of script it actually is, such as a startup script that does exactly what you think it does, it runs once when the map is start or a new round is started. It also states the return value of the script, see "Value Type" to find out. So in theory if we ran this script from within another script it would return the number of players within the game as a number, specifically a short. We could use this for say, making sure we spawn at least one vehicle per player for a race map or adjust the amount of AI that spawn. You get the idea.

You can ignore salts for the most part, they just add more work for us if I'm honest but can also be useful for double checking you are in the right place. Its up to you if you want to use them.

So we have found the start of the script, now here is where things can be bit confusing. Expression type does what it says on the tin, there are different types of expressions. Most of the time you will be only using two of them, they are:

  • Expression Type 8 "GROUP" - States anything inside of it as a group, so a open parentheses and close parentheses. Value type will be the return type of that group, set as VOID if nothing is returned.
  • Expression Type 9 "FUNCTION" - The meat and potatoes, this will actually do stuff! Uses OPCODE to set the function, I have yet to find a situation where values are used for functions at all. (Correct if wrong)

It's important to understand these greatly, so please don't rush through all of this massive post then complain about stuff not working. Let's talk about Opcodes, it's short for operation code and is what we use to define a function when expression type 9 is used. You can find every single Opcode for the scripting engine in your H3_Scripting.xml. An important note is that opcodes are in decimal format inside assembly, you will need to convert them back to hex and vice-versa when looking through your opcodes xml file.

Back to inspecting our script. Now something that will stand out is that the NEI for our very first expression is set to 65535? (FF) This is the first part where people stumble, when we use a expression type of 8 the NEI is actually the next line in the script, and instead the expression data is used to define the next expression on our line. Value 00 (LSB) is actually used to define the next expression on the line but ONLY when the value type is 8. So to find our next expression we follow Value 00 (LSB) to find the next expression on our line. If the script engine lands at 65535 it will run any expressions on that line as defined by Value 00 (LSB) and then it will end. The script is finished.

The only time this is not correct is at the very start of a script, if you are using a begin you will need to set the second expression to function type 9 and then use NEI to point to the next type 8 expression. Confusing but you will see what I mean.

Time for a double whammy, when you are looking a bungie made script in a campaign map the extra data at the bottom that you see is not strictly true at first glance. This is due to the way assembly reads this data as told to by our scnr.xml plugin. You have to right click view value as on Value 00 (LSB) in order to find the correct index to go to. If all else fails generally speaking a expression type of 8 will have is accompanying expression type of 9 right after it in chronological order. By the way as far as I can tell the extra 00 00 at the end of the expression 0x18 length is completely unused, it is normally set as invisible but I'd recommend editing your plugin so you can see it. Helps for getting offsets when copying scripts from one map to another. (Ill leave a link to my plugin at the bottom of this post. LAZY BOIS)

Going back to op codes, when an expression has a type of 8 it doesn't necessarily need to have a opcode of any kind, but for the sake of making your expressions easier to read please make them the same as your follow up expression type 9 function opcodes as bungie's compiler seems to have done this (makes working out their scripts sooo much easier). So the above expression has an opcode of 0. Thats the opcode for "begin" so we can assume by default that the type 9 for the next expression has the same op code and thus this has gotta be the start of the script.(Again, useful for trawling through expressions and finding the start.) Please refer to a Halo CE or Halo 2 scripting guide for what this actually does, and yes its not required but just do it. 

Next is the "String Address", this value represents a decimal offset that the engine will look into the string table and in most cases is not needed. Even for functions that have quotes in them such as #cs_go_to "path/p0" 1# they don't actually rely on the string to work, instead they use the extra data from values 03 to 00. (In the case of cs_go_to it uses value 02 as the point set index and 00 as the point index.) I could change the string to anything and it would still do the same thing. The only time they really matter is on some specific functions such as #print "My string"#, the function will actually use the data from the string table in this case and ignore any extra values. This is on a function by function basis.

So having strings is nice and all but does not really matter for most things you are doing, unless of course they are required. Don't waste time entering strings for every single freekin' expression, that's how people go insane. :v

Okay with this all in mind, lets go back to looking at our player_count script and I'll show you the layout of the expressions in a more visual format:

Quote

avI9RF0.jpg

Fantastic, you can now navigate expressions according to the script itself and hopefully will be able to see any "invisible" expressions that assembly does not show.

 

Let's have a go at writing our first expressions, the classic low-gravity script.

  

Quote

Our target is to have the following in our maps scripts.

qPpDkLV.png This will half the gravity on the entire map.

Open up a empty map, navigate to scnr and goto the scripts area. We will use shrine.map in this example.

On shrine.map an existing script is used to setup the auto-turrets (Guardians). Make sure to use empty expressions or you will have a crash!

Go down to scripts and expand the block by 1 by hitting the + sign at the right side:

V8R7Pf8.png

Give it a name, set its script type to start up. This means the script will be ran every time the map is loaded, or a new round is started in MP. Return type as void, we are not returning anything. 

Set its REI to something that is not being used, I will use 50. Hit Save.

b0dMVpr.png

Now if you were to open shrine.hsc from the scripts area, assembly would crash as the REI has no valid expression. Let's start by creating our begin group & begin function.

Begin uses opcode 0.

Set the opcode to 0, value type to void, expression type 8 for our group, string address to 0. 0 out all of the invalid data from value 03 down to line number (or the invisible, if enabled).

Set line number to something ever increasing, assembly will rely on it for displaying the script. it will still work without it just assembly wont be able to display it. 

Set Value 00 to our next expression, ill be using 51. Hit save, change indexes to another script then back so the values all update. Correct if anything unexpected also changed. 

vWdr5Pb.png

Next we create our begin function on index 51.

lnGSlAk.png

Just to make sure everything is working correctly so far, set the NEI for our begin function to 65535. Open shrine.hsc and it should show up.

kCTb8th.png  <--- Whats going on?

Our script is working just fine, we know its there just assembly is not displaying it. This is due to incorrect line numbers, set them to 1 2 3 etc. They dont need to be correct, just to exist in our expressions and assembly should have no issues. After checking, set it back to our next expression.

wj1SaDK.png physics_set_gravity uses opcode 150 and requires a real. (As per our H3_Scripting.xml

Now you don't have to create a group if the script is just going to have one function but it's best practice to do so, create a new group with return type of void. NEI set to 65535, there are no more new lines in this script. Set V00 to where our physics_set_gravity will be.

LNeMp6n.png Our group, follow it up with our function.

HUoJeFE.png Our function, phys_set_gravity requires a real. So lets make our next expression a real.

ZAcbNKp.png Set your opcode to real, change value type to real, expression type to 9. Set NEI to 65535, this is the last expression and finally set our value for the real to 0.5.

VvtuPse.png

And we are done, go check your script and test it!

5JD6Mam.png

 

Good stuff, you can now write a basic script. All you really need to do now is read some example scripts or the single player scripts for examples on how to write certain values and expressions.

Below will be some examples of logic and detecting player input.  

Quote

Work in progress

-Sorry for not having any of this written in months, I've been busy with life etc. 24th July 18.

 

 

 

]]>
5246Sun, 08 Apr 2018 23:05:44 +0000
Forge In Campaign With Ai!https://www.xboxchaos.com/topic/5091-forge-in-campaign-with-ai/ Hey XboxChaos, I've recently just downloaded these two maps that Gamecheat13 created:

 

and also this:

 

now since these games are very similar with the engine their bothing running.

The ODST map contains AI while the Halo 3 campaign map with forge  doesnt contain AI, i am just wondering can i some how transfer the tags from the modded odst map and inject it to the halo 3 campaign map with AI without any issues?

]]>
5091Thu, 08 Dec 2016 03:52:18 +0000
Custom Bitmap Injectionhttps://www.xboxchaos.com/topic/4549-custom-bitmap-injection/Doesn't take nearly as long as sounds do, promise. Again, turns out the SDK handles the file conversions.

 

Update 3: New tool, new info

 

Update 2: Oops rawpage no worky for this right now.

 

Update 1: Added new version of Injection Helper, added tutorial for converting an adj bin with unbundler

 

Gonna need some things:

 

1. Deciding Your Bitmap

 

As is common in all these injection tutorials, you need to know what you want. While you should be able to replace an existing bitmap without

 

Either way you will be using an existing bitmap as a base to duplicate off of, but are you modifying something existing or plan on making something all new? This will also help you choose your base.

 

With a modification, you are obviously going to want to use what you plan on editing. But for something new, it would be wise to find a bitmap that is applied similarly (UI bitmap if going for UI, HUD for HUD, etc) so the format doesn't need to be changed.

 

This tutorial will use modification but with a modified (upscaled) resolution to demonstrate what you'd do for a "new" image.

 

2. Tool Preparation

 

Extract the EasyBitmapInjection folder to your desktop and copy bundler.exe to EasyBitmapInjection's directory.

 

Extract the contents of "bitm Plugins.zip" to your Assembly directory and overwrite.

 

3. Map Preparation

 

Make a copy of the map you want (backups, yo) and open it in Assembly. Navigate to your base bitm and Right Click>Extract it using "Extract... (Without Raw)".

 

Extracting without raw will save some space in your map.

 

But before you reinject, you need to open up the tagc in a hex editor and modify the tag's name so it will inject. Nothing fancy, just swap a letter out for now.

 

To find it, do a text search (or just take a look, since the tagc should be pretty small) for "bitm" then the full name. So for me editing the Foundry signs, I need to find "bitmobjects\levels\dlc\warehouse\bitmaps\fence_sign_red"

ZGZdRKr.png

 

Just going to replace the "o" in "objects" to an "x". That will serve the added function of it sorting at the end of the tag tree for easy access.

 

Once done save it and inject the tagc back and open the new bitm for later.

 

4. Bitmap Preparation

 

While not necessary, it is highly recommended that you use the original image as a base. And in most cases Adjutant will provide that for you, here's how:

 

 

Open the map with the bitmap you wish to modify in Adjutant and bring it up.

 

Note down the format and then Right Click>Export This Image. Save it as .BIN and again as DDS.

oI49D83.png

 

Open the .DDS file in your image editor and give it a look over, does it look like it does in Adjutant? Is the alpha channel intact?

 

If the resolution isn't "normal" (not 64/128/256/etc) your DDS may be the wrong size, but a crop/canvas resize down to the correct resolution will work if everything else is fine (anchor the upper left corner).

 

If there is a major issue with the DDS you will need to convert that .bin you also extracted. But since that requires the tool let's get that mostly filled out first.

 

If the DDS is good feel free to edit and save as .tga, if not make sure the size is still right and save as .tga anyway so it can be used as a dummy for bin conversion.

 

5. Tool Usage A

 

 

With the injected bitm still open in Assembly you need to check 4 things; the "Is Tiled" flag, the format, the mipmap count, and the zone Asset Index at the bottom.

 

Open EasyBitmapInjection and get ready to start filling things in as such:

 

If "Is Tiled" is checked, leave the first Format dropdown alone, if unchecked, change it to "Linear"

 

Set the second Format dropdown to match the Format value in Assembly.

 

If you have to convert a .bin from Adjutant, just write down the mipmap count for now and keep it at 0/1 in the tool.

 

Lastly, enter the Zone Asset Index for the bitmap data.

 

Close the map in Assembly.

 

Current Notes:

For formats like  DXT*a_mono use DXT*a, the only difference is that they may use a single channel or something. If you having to convert a .bin it was probably one of these formats.

 

6 Manual Bitmap Conversion

 

This can be skipped if your DDS worked fine.

 

In the tool, tick "Keep XPR" but NOT "Inject Into Map" and run the tool, which will ask for your .tga.

 

What we are doing here is creating a dummy file that we can put the bin file into. Go ahead and delete the "convertedBitmap.bin", "convertedBitmap_mipmaps.bin" and CustomImageNoMip.xpr" files that got made

 

Open CustomImage.xpr in a hex editor as well as the Adjutant .bin.

 

Look at x4 in the file and ensure the 4 bytes after are equal to the size of the .bin. It should be.

hOlJEr6.png

 

Now go to offset x80C, hold shift, then press the End key on your keyboard. This will select everything past the offset. Delete the selection.

 

Switch to the .bin and do select all then copy.

 

Switch back to the XPR file and paste at the end. Save and close the Hex Editor.

 

Now make sure unbundler.exe is in the same location as your XPR, then right click>Open Command Window Here somewhere.

 

Enter the following:

unbundler customimage.xpr

Then hit enter. This will spit out a couple files, but among them will be InitialImage.tga. That is your image so go ahead and open it in your image editor.

 

This should be a perfect file so edit as you will and save as a new .tga (or the same, whatever) when done.

 

7. Tool Usage B

 

If you had to convert the .bin, you will need to remove any extra non dll or exe files from the directory to continue.

 

The tool should still be open so uncheck "Keep XPR" if needed.

 

Enter the Mipmap count

 

Select your map that you reinjected the bitm tag to and once again check the Asset Index one more time.

 

Run the tool and give it your .tga. If you have been following along it should tell you when everything is done with no problems. The process shouldn't take very long.

 

8. Applying The Bitmap

 

So open your map back up in Assembly and go to your bitm tag. If you made any modifications to width/height or mipmaps, update them here and save,

 

Now open whatever shader or relevant tag that you wish to use your bitmap in, then swap it and save.

 

Congratulations You Did The Thing! ;) Copy the map over and (hopefully) enjoy

XsjxRdA.jpg

 

Below is that manual later-half of the original tutorial. At this point it probably isn't very coherent and I don't really care to fix it but here it is:

 

4. Creating Bitmap Raw

 

In the bitm tag scroll down to the "Mipmap Count" value, you will need this in a second. (Or you can have your own count. But if it was 0 then you should probably not bother.)

 

Make sure bundler.exe is in the same location as Halo 3 Injection Helper, then open up Halo 3 Injection Helper and fill in the fields as necessary. Keep the first dropdown "D3DFMT_" but change the format to match Adjutant. Set the "Levels" value the same as the Mipmap Count, unless the count is 0, then use 1 instead. Once filled in hit "Generate Image Raw" and select your TGA.

 

The tool will then run bundler to swizzle your image and output either 1 or 2 files depending on if you have mipmaps. In the log on the left it will also give lengths which you will need, so make note of them.

xMe6G3a.png

 

With those lengths copied you can close the tool. You should close Assembly, too.

 

5. Map Preparation Part 2

 

Convert the Image Raw and MipMaps Raw lengths to hex and paste them next to the decimal values.

 

Then, take the Total Length value, and as hex, divide it by x1000, then convert it to decimal, this is the page count you will need to give to Mapexpand. I have xF0000, so that becomes xF0, then as decimal that's 240. 240 pages.

 

Open the MapExpand folder, copy your map to it, then Right Click>Open Command Window Here somewhere in the Window, not over a file. From the command prompt run Mapexpand kinda like this:

mapexpand warehouse.map resource 240

Except "warehouse.map" will be your map and "240" will be your page count.

 

Hit Enter and Mapexpand will add your pages to you map, then give you the offset of the blank data.

SRjYSc5.png

 

Zedd Note: I'm doing both signs at once in case you were wondering why the values suddenly changed.

 

Anyway, copy that offset somewhere safe and close the command window.

 

Copy the map back over (maybe make a backup by renaming the original instead of overwriting? hm?) and open it in a hex editor.

 

6. Copying Over Bitmap Raw

 

With the map open, jump to the offset Mapexpand gave, then open up your raw files.

 

Starting with the mipmap raw (if applicable, otherwise the only file you got), select all and copy its data, then in your map select the size of the raw (Hex Workshop has Edit>Select Block for doing this easily), then paste over the selection you made. After you paste you should be taken to the end of the data, so note the offset you are currently on. (Or you could do Mapexpand offset + the size.) Then from that location repeat the process with the other (main) raw.

 

A quick explanation, Halo seems to like to store bitmaps in 2 parts; the main image, and then all the mipmaps as one group. The mipmaps seem to always come first so it is better to follow that pattern here.

 

With the raw pasted and the offsets collected you can save and close the map and hex editor.

 

7. Fixin' Stuff

 

This step will be in 2 parts: Play and Zone Fixups. If you're only modifying in-place and didn't change the resolution or mipmap count, then you shouldn't need to mess with fixups, but it is possible you'll need to change a format-related value if you see garbage ingame.

 

7.1. Play Fixin'

So open your map back up in Assembly. If you missed the part earlier after the Helper Tool about closing Assembly and your map was still open, close it and reopen it.

 

Now, assuming you only injected 1 bitm and nothing else since then, you don't have to look up the Zone Asset Index and do any navigating. Open up the PLAY tag and scroll to the bottom. Go to the last "Segments" chunk (or whatever your navigation brought you to if you had to) and make sure both "Segment Offset" values are 0, unless the optional/secondary one is -1 (no mipmaps), then leave the -1. Save.

 

Scroll up to the "Raw Pages" block and go the the second to last chunk. If you had no mipmaps then go to the last chunk. We need to fix up the values in the(se) chunks to match the raw we added.

 

So first off, set both "Compression Codec Index" and "Shared Cache Index" to -1. The raw has no compression and it isn't in a shared location. (But if you are injecting to the mainmenu you need to make the Shared Cache Index 0 instead of -1).

 

Then on the left side of Assembly click the Map Information tab and double click the "Raw Table Offset" value. This will copy it so paste it somewhere. Go back to the Tags tab.

 

For the Block Offset value, you need to take the offsets you noted when copying the raw in, then subtract the Raw Table Offset from them. Convert the result to decimal then fill it in.

 

For both the Compressed and Uncompressed Block Size values, use the decimal Raw Length values from the Helper Tool. Both will be the same value since there is no compression.

 

For the rest you need to use the Hash Checker tool, so open that up then drag your raw file over it. Copy each value in the tool to the respective place in the Raw Pages chunk. To be proper and fancy, finish it off by setting the Block Asset Count to 1.

 

Repeat the above on the last chunk if applicable. When done, double check everything, then Save.

 

7.1. Zone Fixup Fixin'

So with the introduction of Fixup Data, parts of bitm are also stored in them as well as bitm, so changes to resolution or mipmap counts will need to be reflected there.

 

First off, make your changes to the bitm tag to get it out of the way. Then Save.

 

Now head to the ZONE tag and go to the last Tag Resources chunk. Make sure the Parent Tag matches then copy the "Fixup Information Offset" value. Maybe the size too if it is something not 64 but otherwise don't worry.

 

Convert that offset to hex then scroll down, way down, to the "Fixup Information" dataref. Copy the Offset value you see.

 

Go back to the Map Information tab and double click the Map Magic value to copy it, paste that somewhere.

 

Now what you need to do it take the offset you got from the dataref, then subtract the map magic from it. This will be your file offset for it. Close Assembly.

 

Open your map in the hex editor for a final time and head to the dataref file offset you math'd plus the offset you got from the Tag Resources chunk and converted to hex. For the sake of this tutorial I will be extracting the fixup data to a new document to point things out better, you however will be editing it in place.

 

The first noteworthy value is a size value at x14 from the beginning of the fixup. If your fixup has 00's then leave it.

86Wlip0.png

 

If it wasn't 0 you'll need to make it the size of the main raw (not mipmap).

 

The next stuff starts at x28, beginning with the width and height, both 2 bytes long. (Width is selected below)

e5lFGRR.png

 

The byte after (x2C) is depth, which you probably aren't changing.

 

The byte after depth (x2D), is the levels count from the Helper tool, or if you don't remember, then its "Mipmap Count + 1" (For me, 9 Mipmaps plus 1 is 10, or xA)

6hlmcCQ.png

 

The byte after that (x2E) is Type, which you also probably aren't going to change.

 

The bytes after the (x2F) is unknown at this time, lol.

 

The 4 bytes after that (x30) is the format value, but it's set up weird. The last two bytes (so starting at x32) of it is what you need to change if you see garbage ingame, and sadly there isn't much known about it. If you are having troubles try "01 54", and if that doesn't work, either PM me or go hunting in similar bitmap's fixups and try their values there.

MBuH0ES.png

 

Make the changes you need and save. Then close the hex editor.

]]>
4549Mon, 20 Oct 2014 10:47:42 +0000
How to change FOV in Assemblyhttps://www.xboxchaos.com/topic/5323-how-to-change-fov-in-assembly/ Hey, I know this is very simple but I do not know where to go in assembly to change the FOV from 70 to 90. I have seen the FOV before in assembly but can't seem to find it.

Help please? Thanks

]]>
5323Sat, 22 Sep 2018 18:40:52 +0000
Flaming Skull Head Tutorial [UPDATED]https://www.xboxchaos.com/topic/5315-flaming-skull-head-tutorial-updated/ NOTE: This WILL NOT  work for those who do not have a modded Xbox 360 console. Sorry!

Also, before anything be sure to have Bungie armor on for this tutorial!

 

_______________________________________________________________________________________

 

Hey there! This is literally my first tutorial EVER, but not to worry, I got you covered!

 

_______________________________________________________________________________________

 

 

 

 

 

 

Here, I will walk you through a simple easy quick 15 step-by-step tutorial on how to get the flaming skull as your helmet/head.

 

Alright, so let's get on with it!

To start with, your character should look like this

9LkBdNz.png

 

1. Open up assembly with your .map of your liking

2. In the search box, type in "masterchief"

3. Go to the [hlmt] taglist

4. select, "objects\characters\masterchief\mp_masterchief\mp_masterchief"

5. Scroll down to where you see, "Objects"

0ZLaakH.png

 

6. Click on the, "+" sign and add 1 chunk to "Objects"

bAwLFaJ.png

 

7.   ●   Type in "head" in the "Parent Marker" box

        ●    In "Child Object", select the [weap] taglist - "objects\weapons\multiplayer\ball\ball"

Cac9eDK.png

 

8. This is what you should have thus far

 Bqj4VoL.png

                                                          -Click save-

P.S. the reason the name of my ball is different than "objects\weapons\multiplayer\ball\ball" is because i made duplication's which are ball weap, hlmt, and mode  strictly for the helmet/head so the original multiplayer ball weap would not be affected.

 

IT IS CRITICAL TO READ THIS BEFORE MOVING ON TO THE NEXT STEP!

 

In order for this to work without crashing/freezing, you must now must save and copy/drag the map over into your neighborhood's Halo 3 map folder

The reason having to do this is because each time that you add a chunk, it is changing the data byte of the .map, therefore isn't being rendered real time to your xbox .map file hence being the reason having to drag/copy the modified .map over to your maps folder.

GBSloVy.png

 

Once you've dragged the.map folder over, you can successfully null out the skull or add it anytime you want via poking around.

 

Back to assembly...

9. Go to [mode] taglist and expand it

10. Select this, "objects\characters\masterchief\mp_masterchief\mp_masterchief"

11. Scroll down to where you see, "Materials". Here is where you will null out your helmet and visor of your player.

          A. Select it to your players' helmet and visor

          B. Null them both

Tm8WfjY.png

                                                        -Click save or poke-

 

If you have done the steps above correctly, this is what your character should look like... a headless spartan

RXgEsRK.png

 

 

We are almost done, hang in there!

 

12. Now, go to the [mode] tag and select this, "objects\characters\masterchief\mp_masterchief\mp_masterchief"

 

13. Scroll down till you see this, then make sure that you're on number 11 in the "Marker Groupswhich you should see head as the "Name"

and copy everything here in the red box to your "Markers"

UJqRrtK.png

                                                            -Click save or poke-

LASTLY...

14. Go to [mode] and select "objects\weapons\multiplayer\ball\ball"

15. Scroll down to here, and copy everything in the red box to yours

F855MDG.png

and then!!!                                     -Click save or poke-

 

Now you can either drag your .map file over to your maps folder in neighborhood, re-spawn, and/or change teams, and you shall see the flaming skull mod!

 

Here is the flaming skull head!

Spoiler

Kb4c6oB.png

 

 

 

 

 

NOTE: Sometimes for an unbeknownst reason, it will glitch and won't work. Just let me know in the comment section below if this worked for you! If not, shoot me a PM and we’ll figure it out!

 

 

]]>
5315Mon, 03 Sep 2018 22:26:48 +0000
3DSMax Unit Setuphttps://www.xboxchaos.com/topic/5305-3dsmax-unit-setup/ This applies to basically all Halo games, in order to setup 3D Studio Max to have the same units that you see within assembly or any other editing tool you will need to setup custom units.

For 3DS: Goto "Customise > Units Setup..." and set your units to "Custom..." equal to 100 inches.

OsTpbJv.jpgPYltZ72.jpg

 

Your units will now match up, pair this with a autohotkey copy+paste script and life will be far easier when populating maps with more or less anything. (Point sets am I right lads)

You should be able to do this with blender, but i'll be honest I really cant stand the UI. Spending half your life using 3ds does things to ya.

 

I also highly recomend Soulburn Scripts

]]>
5305Thu, 09 Aug 2018 21:53:29 +0000
Crate Projectileshttps://www.xboxchaos.com/topic/5302-crate-projectiles/ Was asked how to do this in a PM, so here you go. Applies to H3 and Reach.

Goto your desired weapon tag, jump to "Barrels" (Protip, hit CTRL+F and type Barrels). Make sure to select the correct block index, some weapons have more than one such as the plasma pistol.

HzIOmGv.jpg

Jump to "Crate Projectile" and then set it to a crate class object eg Bloc. Set a Projectile Speed. You can also null the initial projectile while you are at it.

uMpkjKe.jpg

080rQp2.jpg

All done, go shoot some stuff I guess.

I'll admit that a lot of basic info from the early days does not translate well into the modern plugins that we all use, if you want anything updated/explained let me know.

]]>
5302Tue, 24 Jul 2018 20:06:57 +0000
HELP with modding .maps in Assemblyhttps://www.xboxchaos.com/topic/5287-help-with-modding-maps-in-assembly/ Okay, so I'm trying to inject tags into assembly and nothing is working. I am not quite sure what I've done wrong, i've been looking everywhere on how to do this, but there is nothing for halo 3.

 

Here is what I have set in my assembly settings,

-resource cache is in the folder where it has the shared, mainmenu, and campaign.map

-selected the halo 3 game

-opened up a campaign.map file like the citadel map

-opened up the vehi/char.taglist and would either extract the hunter char or phantom.tagc RAW into a tag folder

-opened up sandbox map

-imported those tags

-weap then I would make my magnum shoot out and it would freeze when choose those, but it wont freeze when I choose what is defaulted in the bipd or vehi.taglist

 

And when I try to edit the forge menu, it wont work. I go to scnr.taglist and even when I try changing the budget limit from 1500 to 3000, wont work.

 

I don't know if its because I'm not on the original sandbox map because I deleted everything off of there and I already have the budget to 1500? I was using another map called, sandbox canvas whereas everything is deleted and I have $1500, but I even tried all of this on the regular default sandbox map and nothing works. Please guys, help

 

]]>
5287Fri, 29 Jun 2018 16:56:46 +0000
How to copy script expressions from one map to another.https://www.xboxchaos.com/topic/5244-how-to-copy-script-expressions-from-one-map-to-another/ 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 shrine.map 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.

 

vhOe7ZP.png

 

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. 

]]>
5244Sat, 07 Apr 2018 15:19:03 +0000
Campaign weapons that are laying on the ground/weapon racks/unoccupied vehicles/scenery how to remove?https://www.xboxchaos.com/topic/5241-campaign-weapons-that-are-laying-on-the-groundweapon-racksunoccupied-vehiclesscenery-how-to-remove/ Where do I look for that in assembly? Is it possible to fully remove those files? 

]]>
5241Sun, 25 Mar 2018 13:59:28 +0000
Does anyone have Sav3rhttps://www.xboxchaos.com/topic/5235-does-anyone-have-sav3r/ I want to know if that Tool still works and is out there still cuz I want to mod map names/gametype names

]]>
5235Mon, 12 Mar 2018 16:34:29 +0000