Saints Row 3 and 4 Zone File Tools

Would anybody be interested in a version of the SRReadZone tool that shows the file offset of every item it currently displays? It would mainly be for people who like to poke around using a hex editor to change values like positions of things. That's how I removed the garage door in Syndicate Tower in my Working Elevators mod - Back To Syndicate Tower mod. This new version doesn't display any new information (other than file position) -- it's functionally the same as the current version. It just makes it easier to find where things are in the file.

I ask because I haven't really seen anyone releasing mods with zone file changes. It seems like nobody's really interested in editing zone files.
 
Would anybody be interested in a version of the SRReadZone tool that shows the file offset of every item it currently displays? It would mainly be for people who like to poke around using a hex editor to change values like positions of things. That's how I removed the garage door in Syndicate Tower in my Working Elevators mod - Back To Syndicate Tower mod. This new version doesn't display any new information (other than file position) -- it's functionally the same as the current version. It just makes it easier to find where things are in the file.

I ask because I haven't really seen anyone releasing mods with zone file changes. It seems like nobody's really interested in editing zone files.
Release it, it's always better to have more tools. I'm sure someone will make a good use of it, even if there's no interest at the moment.
 
VERSION 2.1 RELEASED.

This version is purely for advanced modders who like to poke around in zone files using a hex editor. It adds two command line options to the SRReadZone tool:
  • --position : displays the position (in hexadecimal) of each data item in the file, so you can experiment with changing things with a hex editor
  • --type : displays the type of each item in the file, so you know what kind of data your changing (e.g. Int32, Int16, String, float)
Download it from post #1. GitHub is updated with the latest source code for this release.
 
VERSION 2.2 RELEASED

This version adds an extremely simple new tool called SRPatchFile that I wrote for patching files from the command line. You can use any hex editor to do the same thing, but I use this for build scripts that I write for building my mods.

You can find things to patch using the SRReadZone tool. For example, I used this to remove the door to the Syndicate Tower by running the following command:
Code:
SRPatchFile "sr3_city~f1216.czn_pc" 00009650:00000000 00000000 00000000
That's it! Really simple.

You can actually use it for any file. It's not Saints Row specific. Download it from post #1.
 
VERSION 2.3 RELEASED

This version updates the SRReadZone and ZRZoneTool utilities to decode and display object type names. This makes it much easier to determine the meaning of what's in the zone files. It also tells you which names you can use in Lua scripts and what they're used for.

Object type names that are now displayed include:
  • navpoint
  • trigger_volume
  • scripted_path
  • script_mover
  • script_group
  • script_vehicle
  • script_npc
  • action_node_group
Download it from post #1.
 
VERSION 2.4 RELEASED

This version updates the SRReadZone and ZRZoneTool utilities to decode and display one additional object type "audio_emitter".

Object type names that are now displayed are:
  • navpoint
  • trigger_volume
  • scripted_path
  • script_mover
  • script_group
  • script_vehicle
  • script_npc
  • action_node_group
  • audio_emitter
Download it from post #1.
 
I swear I posted this before, but here's a fairly complete list of object types:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ChrisLaRosa.SaintsRow.ZoneFile
{
    /*
     * These are Volition CRC hashes of object type names
     * and seem to correspond to the object_type_hash field
     */
    public enum SRObjectType : uint
    {
        action_node = 0x9819E2A7,
        action_node_group = 0xDE264D4E,
        activity_start = 0x50C01AFB,
        audio_emitter = 0x454D826F,
        audio_emitter_multi = 0xD3C09F8C,
        base_object = 0xAB4A8269,
        battlefront = 0x9F3E6097,
        brass = 0xA6CFE79E,
        city_takeover_region = 0xDBEDBF51,
        climbable_spline = 0x8FC2C162,
        cover_node = 0x5229C9DA,
        crib = 0x69653449,
        ctg_object = 0x81431719,
        cto_start = 0x948906B7,
        cutscene_slate_obj = 0x423D4B45,
        damage_region = 0x13ECAFE7,
        detour_hull = 0x105A7D93,
        district = 0x54E38BEE,
        door = 0xABA18B31,
        effect_object = 0xDA1A82F0,
        flashpoint = 0x324FE51A,
        garage_info = 0xC378FD50,
        general_mover = 0x71DDAD68,
        hood = 0x15A381D8,
        hotspot = 0xD5DF5C6D,
        hotspot_target = 0xA932538B,
        human = 0x634022E8,
        interior_volume = 0x82606C1C,
        item = 0x01A3592D,
        level_light = 0x6A44E812,
        level_respawn = 0x4652DBF2,
        light_list = 0x161048E8,
        light_vis_volume = 0x2F481200,
        mission_info = 0x991E5B37,
        navpoint = 0x445C1F3D,
        navpoint_path = 0x302B6A22,
        npc = 0xB9CDAF3E,
        object_debris = 0x89E8818E,
        object_rig = 0xEB1C95CA,
        object_tree = 0x41ACD323,
        occluder = 0xD489BF77,
        parking_spot = 0xBA73CC6F,
        photo_op = 0x573CE01E,
        physical_object = 0xC68ACA17,
        player = 0x29DBDBC6,
        projectile = 0xDF712A1B,
        resource_object = 0xB78242F1,
        roadblock = 0x2C033366,
        script_group = 0x7AD3AD35,
        script_group_object = 0x59FC5EA5,
        script_interior = 0x2BB7B8C5,
        script_item = 0xB426E6A6,
        script_light_group = 0xB3FB6098,
        script_mover = 0x252BD154,
        script_npc = 0xA518E725,
        script_peered = 0x8D42DB8B,
        script_vehicle = 0x97335A0B,
        scripted_mission_start = 0x5E20A824,
        scripted_path = 0xD14F1482,
        shop_object = 0x46883C82,
        silent_mission_start = 0x4D3AEC73,
        smooth_scripted_path = 0xBE2F0901,
        spawn_region = 0xA94DBBA7,
        survival = 0x82470BA4,
        trigger_volume = 0xF300989F,
        vehicle = 0x86EC3BF8,
        vfx_volume = 0x765E72F7,
        weapon = 0xD8F10645,

        UNKNOWN = 0xFFFFFFFF
    }
}

This is from a local branch that I obviously never got around to submitting :(
 
I swear I posted this before, but here's a fairly complete list of object types:
...

This is from a local branch that I obviously never got around to submitting :(
Oh that is AWESOME! I've been looking for a complete list like that FOREVER! Thank you so much, Minimaul! :)
I have never seen this list, so if you posted it, I'm not sure where.
I'll add it to my SRZoneTool ASAP (I just got back from vacation, so I just saw this).
If you'd rather do a GitHub pull request, I'll take that, but otherwise I'll just copy and paste it from this post, if you don't mind.
 
Back
Top