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.

Akarias

Members
  • Content count

    434
  • Joined

  • Last visited

Everything posted by Akarias

  1. Creating custom maps, the old school way. A quick overview on how custom maps were made back in the Halo 2 Xbox days, applied to Halo 3. This isn't a tutorial just a glance over. We will be going through the process of creating a custom map but in the old school way of mulling out BSP geometry and using any objects that we can salvage from the single player campaign maps. So the first thing we need is some objects to actually use. Back in the days of Halo 2 we would use machines from the campaign as custom geometry and the basis for our custom map. So image a map from Halo 3, remove all its native geometry and you suddenly have a blank canvas that you can populate. It's important to note the bounds of the BSP and use the largest possible map and also take into account the maps physics size on the disc, as I want to have quite a lot of single player assets injected, namely quite a lot of AI related tags. An example of using this method is shown in the platforms map that I showed a few months ago, the platforms are actually machines from 110_hc.map. Ditto, in engine. Note missing pieces. Something to take into account is lighting, broken lighting can be resolved by using fake light maps. Replace the existing bitmaps with blank ones, experiment for the best outcome. Plan things out. You can use a program such as 3DSMax for this along with Adjutant's import script to get all the objects you may need into a scene and pieced together. Set your unit setup to 100 inches and you will have one to one coordinates just like in engine. By far the best maps to use my opinion would be those from the DLC maps as they tend to contain all the weapons and vehicles that you may want. Don't forget about file sizes! The last thing you want is to be half way through a maps creation and run out of space from being a idiot and injecting too much garbage... Yikes. Don't forget you can always scale and object's render model and physics model to make it larger or smaller! Lots of things can be built doing this. So you have a target map and some objects to use for the basis of your maps geometry, lovely. Lets remove all the existing BSP geometry so we can get down to populating our map with new geometry. Take a look at your map's SBSP tag, before you can go about clearing it out you need to understand how the map is constructed. The bulk of a map is created from two things: Clusters and Instanced Geometry. Clusters are typically used for the displaced terrain of a map, think of the sand dunes on shrine. Instanced Geometry tends to be all the more complex and convex pieces of geometry, the multiple pieces of the tombs on shrine and the scattered parts of the crashed phantom are all instanced pieces of geometry. To give you a better idea I was working on a map called Thunderdome until I reached space issues (Hint Hint) and ended up moving away from it. Thunder dome is actually made from a single player BSP injected into sandbox and given a nice back drop with a enlarged scenery piece to fill up the backdrop. But on this BSP is a big ugly ass half of a boat that takes up a lot of space, I actually removed it from the BSP. How you ask? Instanced geometry. This ugly thing. Poof. No more ugly boat. If you extract a BSP using Adjutant and import it to 3DSMax you can see all the various pieces of Instanced Geometry and various Clusters that actually make the map. Following this information you can selectively remove the geometry from the map just by scaling it down to 0. This also removes the collisions thankfully so no need to panic about dealing with MOPPs. With clusters things are slightly different and we will talk about them later. But as a quick experiment you can find a piece of Instanced Geometry in 3DSMax and then goto its block in Assembly, make a few changes and finally poke or save. Load up the map and observe the changes you have made. So with this logic in your head you can simply set the scale of all instanced geometry in a map to 0 as a means of removing almost all of its geometry, after that you can either manually remove the clusters or just set their rmtr bitmaps to invisible ones. You will now have a big empty map. Remove any extra spawned items like vehicles from their relevant blocks in the SCNR tag. Now its starting to feel really empty indeed. Shrine with all its Instanced Geometry removed. You can now get onto the hard part, building a new map from only things that you have injected or salvaged. Machines... objects... anything that has proper collisions will work. Add in some spawn points and you are on your way. Set a custom sky dome up add some weather effects and now you have something truly unique. This is how I used to do things years ago, there was very little information on forums combined with good old dial up I had to figure most of this out on my own back in the days of Halo 2. It's kind of stuck when since then so I thought I'd write out my process here for all of you to enjoy or mock. Yikes. No one seems to really have done this for any of the modern games, so why not give it a go? make some stuff!
  2. Modding

    Experiment with them, you can add another trigger set to a different button for an alternative projectile to be fired too. You can use that to get around the lack of charge support on latch style triggers. Alternatively you can use the primary/secondary barrel fields for this.
  3. Modding

    You need to change the firing trigger to latch, look at the battle rifle for an example. Rate of fire is normally done with the recovery time. Projectile spread is done with the projectile error, error meaning spread of course. There are multiple types of error to choose from, use the dropdown to choose an enum for it.
  4. Modding

    Take a look at weapon ageing, rather than using magazine block they rely on weapon ageing instead. With each shot reducing the total age until it hits 0.
  5. Modding

    Take a look at the Triggers section, this controls how the Barrels of the weapon are used. Take a look at Barrels for both of the fired projectiles. 0 Being the single shot and 1 being the charged shot.
  6. (H2X) ScriptTools Beta

    Version Unknown

    1 download

    A script compiler/decompiler created by Soldier of Light some years ago. Original readme is below:
  7. I used to use this a few years ago, you can also use a version of entity for it too iirc.
  8. General

    https://github.com/XboxChaos/Assembly/tree/dev Git clone it from here, compile and run.
  9. General

    Disclaimer: all going from memory on this, its been a while. I may be missing steps but should be something along these lines. (This is for Halo Reach, so plugin layout will be different) Not all assets are loaded at the same time due to memory constraints on the console. Easy but potentially unstable fix (depending on the amount of tags loaded): Use the "Force Load" context menu command from the Dev branch of assembly to force a tag to be always loaded regardless of the set. OR To do things correctly adjust the correct Designer Zoneset to include the tag you want loaded. You will need to add the relevant tag from a palette into the relevant Designer Zoneset so that it actually gets loaded. Take a look at your Scenario Zoneset Groups to find out what set you need to adjust. Look at the loaded BSPs to find what
  10. Support

    No... its dosent. It applies to all teams regardless of how they are spawned. Its not squad specific.
  11. Support

    Use the ai_allegiance script ops to adjust how teams are aligned. Lets you change the allegiance of teams as a whole with each other. Bonus points for using the mp version to align MP teams with AI teams, good fun.
  12. Well look what I found: What a coincidence. Jeez the forum is dead these days. But hey a whole bunch of rendered strings that we can easily high jack to do some stuff with, nice. 0x83151067 for future reference. Pretty sure zedd showed something like this years ago. So if we write a formatted string to that buffer it will just display it I guess.
  13. Support

    Use the DEV branch of Assembly, go into the scripts page, set "Enable Extra Infomation" to on (Bottom left). You will see new information in the script decompiler, goto the script responsible for applying the animation. Its now a case of finding the expression and adjusting it. you will need to adjust the expressions after `custom_animation_loop`, the stringID is just the data sections at 0x10. Group expressions represent a set of parenthesis `( *** )` Group expressions point towards two expressions, the next expression index represents the expression that will come after the group. The data is a ExpressionDatum that will point to the expression placed inside the parenthesis. A function expression represent an opcode eg: physics_set_gravity. A function expression will just point to the next expression to come after it. So the following would be: (sleep 100) would be equal to: Group ---> Function ---> Function Just scroll through them until you find the opcode for custom_animation_loop and it is a function_name. You can then arguments for it, they will be directly after it. OR <----- Rename the animation in the brutes animation so that it matches what the originals are called.
  14. Support

    There is no public script compiler, the "Gameleak GTFO" was something of an inside joke years ago. You will have to manually edit the script expression that contains the stringID for the animation. Script Expressions are in the Scenario [SCNR] tag.
  15. https://github.com/TheGuardians/TagTool/tree/master/TagTool/Scripting/Compiler Node generator n stuff. Go learn Halo CE scripting. [Link] Scripting Guide by TCK [Link] Kornman's BSL Bible [Link] CE Script
  16. Hmmm no... Well not as a prebuilt binary. Go check out the dev branch. https://github.com/XboxChaos/Assembly/tree/dev
  17. Dont like to double post but just a quick and dirty firefight to multiplayer conversion for testing some ideas I've had for spawning AI. The small path finding volume makes setting up objects/aeras/zones far easier. The plan is to use scripted object functions to allow for the creation of AI in a more controlled manor while still retaining being able to place spawn points in forge, also had a plan floating around for spawning different variants from the same spawn point allow for a bit of randomisation. Edit: well that went well, pretty much the same setup as any other peaceable AI spawn point but thanks to scripted object functions and using a volume check to return all the freshly spawned AI and add them to a fireteam you can do some pretty neat stuff.
  18. Pulled a warface build off of a recently acquired XDK, not really halo related of course but no where else really fits: Complete with PDBs and XDBs.
  19. General

    For maps with existing path finding, you can use the relevant zones and areas that already exist. For maps that dont have any path finding (MP maps etc), you have no easy options. One of the only ways outside of manually making your own perfect pathfinding is to use patrol points and smart point navigation (Only in reach iirc) If you are interested in path finding generation, see: https://github.com/Project-Cartographer/H2Codez
  20. I would seriously consider taking a look at BlamCore if you haven't already, cross endianness between engines is a really nice thing to have. Have a thing, what a better way to christen a new XDK than fucking everything up.
  21. Modding

    Borrrringggggg. But I guess that works too.
  22. Modding

    I dont even have the map files to check but it should be something along the lines of "player_set_respawn_vehicle", just change the object definition expression to match your different vehicle/unit. The data for the object definition should be a datum for the desired tag? Correct me if I'm wrong. Have yet to look at it for the TagTool compiler. Been slowly working out more opcodes that are not named, there is a few more in here: https://gist.github.com/Akarias/d12950e339ebfb3da83f1018abca8ceb
  23. Reach

    0x507 is hud print for reach btw. Its being displayed per tick due to the startup type but you get the idea. edit: its stdout so works fine in watson.
  24. .MAP

    Really? Eh just add them in as a group I'd say. Thats what I get for assuming something from MS23. I'm messing around with reach scripts lately as I trundle my way through it in IDA. So apparently for reach specifically you are going to need a script to spawn the AI.
  25. .MAP

    Not a 100% true, if you want them to respawn after being killed scripts are needed. Just to place AI how ever can be done via the squads block in the scenario tag just like any other map. As long as the initially placed flag is enabled the ai will spawn at the start at the game.