Halo 3 Retail Plugins

Discussion about modding Halo 3.
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

Yoou say Perf is complete, and yet it's filled with unknowns?.. >_<

Anyway good job so far =)
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

Prey wrote:Yoou say Perf is complete, and yet it's filled with unknowns?.. >_<

Anyway good job so far =)
The layout is completed meaning all the reflexives and such have been mapped. But the values are still unknown thats why its still at v0.0
xzodia wrote:if your making a new format why bother writing plugins in the old format?
Those where just a few a had lying around thought I might as we'll put them out so they can be used until the new format is done.
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

shade45 wrote:The layout is completed meaning all the reflexives and such have been mapped. But the values are still unknown thats why its still at v0.0
I though you meant that, but you said the same thing about trak.. so I had to make sure =x
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
Tanasoo




Literarian 250

Posts: 298
Joined: Sat Jan 01, 2005 7:15 pm

Post by Tanasoo »

shade45 wrote:there is a new better format coming soon :D
Oh, yays! I was really getting sick of the old one >_< :D
Digital Marine





Posts: 50
Joined: Mon Dec 27, 2004 7:02 am

Post by Digital Marine »

weap.cs:

Code: Select all

using System;
using System.Collections.Generic;
using System.Text;
using Halo3Map.Data;

namespace Halo3Map.Tags.Layouts
{
    [Tag("Digital Marine", "weap", 0.1)]

    public class weap : H3Tag
    {
        [Size(52)]
        public byte[] unused1;
        [ID(IdType.TagReference)]
        public TagReference hlmt;

        [Size(60)]
        public byte[] unused2;
        [ID(IdType.TagReference)]
        public TagReference foot;

        [Size(44)]
        public byte[] unused3;
        public H3Reflexive<Attachments> attachments;
        [Size(32)]
        //Offset: 188, Size: 32
        public class Attachments : Chunk
        {
            [ID(IdType.TagReference)]
            public TagReference FX; //0-16
            public int Unknown1; //16-20
            public int Unknown2; //20-24
            public int Unknown3; //24-28
            public int Unknown4; //28-30
        }

        [Size(40)]
        public byte[] unused4;
        public H3Reflexive<Unknown_1> Unknown_Reflexive_1;
        [Size(32)]
        //Offset: 236, Size: 32
        public class Unknown_1 : Chunk
        {
            [Size(32)]
            public byte unused;
        }

        [Size(808)]
        public byte[] unused5;
        public H3Reflexive<fpmodels> FP_Models;
        [Size(32)]
        //Offset: 1052, Size: 32
        public class fpmodels : Chunk
        {
            [ID(IdType.TagReference)]
            public TagReference Model;
            [ID(IdType.TagReference)]
            public TagReference Animation;
        }

        [Size(32)]
        public byte[] unused6;
        public H3Reflexive<mag> Magazine;
        [Size(128)]
        //Offset: 1092, Size: 128
        public class mag : Chunk
        {
            [Size(6)]
            public byte[] unused1;
            public short Starting_Ammo,
                Max_Ammo,
                Clip_Size,
                Max_Holding_Ammo;
            [Size(6)]
            public byte[] unused2;
            public short Reloading_Amount;

            [Size(94)]
            public byte[] unused3;
            public H3Reflexive<ammo> Ammo_Pack_Settings_Question;
            [Size(20)]
            //Offset: 116, Size: 20
            public class ammo : Chunk
            {
                public short Ammo_Picked_Up;
                [Size(2)]
                public byte[] unused;
                [ID(IdType.TagReference)]
                public TagReference Equipment;
            }
        }

        [Size(4)]
        public byte[] unused7;
        public H3Reflexive<triggers> Triggers_Question;
        [Size(144)]
        //Offset: 1104, Size: 144
        public class triggers : Chunk
        {
            [Size(144)]
            public byte[] unused;
        }

        [Size(4)]
        public byte[] unused8;
        public H3Reflexive<projectiles> Projectiles;
        [Size(304)]
        //Offset: 1116, Size: 304
        public class projectiles : Chunk
        {
            public short Unknown1,
                Unknown2;
            public float Rounds_Per_Sec_Min,
                Rounds_Per_Sec_Max,
                Accel_Min,
                Decel_Max,
                Blurred_ROF,
                Unknown;
            public short Rounds_Per_Shot,
                Min_Rounds_Loaded_Question;
            public float Chamber_Time_secs;
            [Size(6)]
            public byte[] unused;
            public short Ammo_per_Shot;
            [Size(74)]
            public byte[] unused1;
            public short Projectiles_per_Shot;
            [Size(32)]
            public byte[] unused2;
            [ID(IdType.TagReference)]
            public TagReference Projectile;
            [Size(128)]
            public byte[] unused3;
            public H3Reflexive<firingeffects> Firing_Effects;
            [Size(196)]
            //Offset: 296, Size: 196
            public class firingeffects : Chunk
            {
                public short ShotCount_LowerBound,
                    ShotCount_UpperBound;
                [ID(IdType.TagReference)]
                public TagReference Firing_Effect;
                [Size(16)]
                public byte[] unused;
                public TagReference Sound;
                [Size(16)]
                public byte[] unused1;
                public TagReference Damage_Response;

            }
        }
    }
}



Enjoy :)

Happy Halloween! :D
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

Nice one :D
User avatar
LuxuriousMeat





Posts: 824
Joined: Thu Nov 03, 2005 6:43 pm
Location: zzzzzzzzzzzzzzzz
Contact:

Post by LuxuriousMeat »

Nice job on that :D.
Image
User avatar
ill3galpr0gram





Posts: 78
Joined: Thu Nov 01, 2007 7:13 pm
Location: Zombie Nation

Post by ill3galpr0gram »

I don't know if this let's me do it but I can't wait to Skin in Halo 3
Image
User avatar
blackdiamond





Posts: 764
Joined: Fri Feb 16, 2007 7:18 pm
Location: Virginia

Post by blackdiamond »

so does this mean when that meta-editor comes out, we could try to make a smg shoot missle pods??? :o :o :o
92% of teens have moved on to rap. If you are part of the 8% who still listen to real music, copy and paste this into your signature.

http://www.mindistortion.net/iwantyours ... am=dapoopy
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

blackdiamond wrote:so does this mean when that meta-editor comes out, we could try to make a smg shoot missle pods??? :o :o :o
Grab the unofficial build here and you can start using these plugins.

http://forums.halomods.com/viewtopic.ph ... &start=228
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

ugh! - layout completed

Code: Select all


using System;
using System.Collections.Generic;
using System.Text;
using Halo3Map.Data;

namespace Halo3Map.Tags.Layouts
{
    [Tag("shade45", "ugh!", 0.1)]
    public class ugh_ : H3Tag
    {
        public H3Reflexive<Unknown0> unknown0;
        [Size(4)]
        public class Unknown0 : Chunk
        {
            public short unknown;
            public short unknown2;
        }

        public H3Reflexive<Unknown12> unknown12;
        [Size(68)]
        public class Unknown12 : Chunk
        {
            public int unknown;
            public float unknown4;
            public float unknown8;
            public float unknown12;
            public float unknown16;
            public int unknown20;
            public int unknown24;
            public float unknown28;
            public int unknown32;
            public short unknown36;
            public short unknown38;
            public float pi;
            public float pi2;
            [Size(20)]
            public byte[] unknown48;
        }

        public H3Reflexive<Unknown24> unknown24;
        [Size(20)]
        public class Unknown24 : Chunk
        {
            public float unknown;
            public float unknown4;
            public float unknown8;
            public float unknown12;
            public float unknown16;
            public float unknown20;
        }

        public H3Reflexive<Unknown36> unknown36;
        [Size(4)]
        public class Unknown36 : Chunk
        {
            public short unknown;
            public short unknown2;
        }

        public H3Reflexive<Unknown48> unknown48;
        [Size(16)]
        public class Unknown48 : Chunk
        {
            public int unknown;
            public int unknown4;
            public int unknown8;
            public int unknown12;
        }

        public H3Reflexive<Unknown60> unknown60;
        [Size(12)]
        public class Unknown60 : Chunk
        {
            public short unknown;
            public short unknown2;
            public short unknown4;
            public short unknown6;
            public short unknown8;
            public short unknown10;
        }

        public H3Reflexive<Unknown72> unknown72;
        [Size(16)]
        public class Unknown72 : Chunk
        {
            public short unknown;
            public short unknown2;
            public short unknown4;
            public short unknown6;
            public short unknown8;
            public short unknown10;
            public short unknown12;
            public short unknown14;
        }

        public H3Reflexive<Unknown84> unknown84;
        [Size(72)]
        public class Unknown84 : Chunk
        {
            [Size(24)]
            public byte[] unknown;

            public H3Reflexive<Unknown24> unknown24;
            [Size(72)]
            public class Unknown24 : Chunk
            {
                [Size(8)]
                public byte[] unknown;

                public float unknown8;
                public float unknown12;

                [Size(8)]
                public byte[] unknown16;

                public float unknown24;
                public float unknown28;

                [Size(8)]
                public byte[] unknown32;

                public float unknown40;
                public float unknown44;

                [Size(24)]
                public byte[] unknown48;
            }

            [Size(36)]
            public byte[] unknown36;
        }

        public H3Reflexive<Unknown96> unknown96;
        [Size(28)]
        public class Unknown96 : Chunk
        {
            public int unknown;
            [Size(24)]
            public byte[] unknown4;
        }

        public H3Reflexive<Unknown108> unknown108;
        [Size(1)] //Padding 5%?
        public class Unknown108 : Chunk
        {
            public byte unknown;
        }

        [Size(28)]
        public byte[] unknown120;

        public H3Reflexive<Unknown148> unknown148;
        [Size(20)]
        public class Unknown148 : Chunk
        {
            public int unknown;
            public int unknown4;
            public short unknown8;
            public short unknown10;
            public short unknown12;
            public short unknown14;
            public short unknown16;
            public short unknown18;
        }

        [Size(12)]
        public byte[] unknown160;

        public H3Reflexive<Unknown172> unknown172;
        [Size(12)]
        public class Unknown172 : Chunk
        {
            public int unknown;
            public int unknown4;
            public int unknown8;
        }
    }
}

OwnZ joO




Articulatist 500

Posts: 980
Joined: Thu Nov 10, 2005 4:24 pm

Post by OwnZ joO »

I like the way you set these plugins up :lol: :lol: So H3Reflexives are just a List of Chunks from what it looks right?
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

OwnZ joO wrote:I like the way you set these plugins up :lol: :lol: So H3Reflexives are just a List of Chunks from what it looks right?
Yes, but H3Reflexive is also a class, it holds the chunk offset/size and can read/write to the map file :D
User avatar
neodos
Readers Club




Artisan Miner

Posts: 1394
Joined: Thu Aug 12, 2004 11:57 am

Post by neodos »

I should have posted this here,

I found the chunk palette in the scenery placement reflexive.

Code: Select all

public H3Reflexive<SceneryPlacement> sceneryPlacement;
        [Size(180)]
        public class SceneryPlacement : Chunk
        {
            public short SceneryPaletteChunk;
	    public short Unknown2;
            public int Unknown4;
            public float PosX;
            public float PosY;
            public float PosZ;
            public float Yaw;
            public float Pitch;
            public float Roll;
Oh and it seems like the forge player respawn are attached to a scenery model.
OwnZ joO




Articulatist 500

Posts: 980
Joined: Thu Nov 10, 2005 4:24 pm

Post by OwnZ joO »

shade45 wrote:
OwnZ joO wrote:I like the way you set these plugins up :lol: :lol: So H3Reflexives are just a List of Chunks from what it looks right?
Yes, but H3Reflexive is also a class, it holds the chunk offset/size and can read/write to the map file :D
Does it extend List<T> or is it just a custom collections class you made, either way, I like the idea, good thinking whoever did that.
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

OwnZ joO wrote:
shade45 wrote:
OwnZ joO wrote:I like the way you set these plugins up :lol: :lol: So H3Reflexives are just a List of Chunks from what it looks right?
Yes, but H3Reflexive is also a class, it holds the chunk offset/size and can read/write to the map file :D
Does it extend List<T> or is it just a custom collections class you made, either way, I like the idea, good thinking whoever did that.
Yeah it extends List<T>, Anthony's Idea.
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

zone - completed basic layout

Code: Select all

using System;
using System.Collections.Generic;
using System.Text;
using Halo3Map.Data;

namespace Halo3Map.Tags.Layouts
{
    [Tag("shade45", "zone", 0.1)]
    public class zone : H3Tag
    {
        public int Unknown;

        public H3Reflexive<Unkn4> Unknown4;
        [Size(28)]
        public class Unkn4 : Chunk
        {
            public int Unknown;
            public int Unknown4;
            public int Unknown8;
            public int Unknown12;
            public int Unknown16;
            public int Unknown20;
            public int Unknown24;
        }

        public H3Reflexive<Unkn16> Unknown16;
        [Size(20)]
        public class Unkn16 : Chunk
        {
            public int Unknown;
            public int Unknown4;
            public int Unknown8;
            public int Unknown12;
            public int Unknown16;
        }

        [Size(60)]
        public byte[] Unknown28;

        public H3Reflexive<RawTable> rawTable;
        [Size(64)]
        public class RawTable : Chunk
        {
            public TagReference tag;
            public int Raw_Ident;
            public int Unknown20;
            public int Unknown24;
            public int Unknown28;
            public int Unknown32;
            public int Unknown36;

            public H3Reflexive<Unknown40> unknown40;
            [Size(8)]
            public class Unknown40 : Chunk
            {
                public int Unknown0;
                public int Unknown4;
            }

            public H3Reflexive<Unknown52> unknown52;
            [Size(8)]
            public class Unknown52 : Chunk
            {
                public int Unknown0;
                public int Unknown4;
            }
        }

        public H3Reflexive<Unkn100> Unknown100;
        [Size(120)]
        public class Unkn100 : Chunk
        {
            public H3Reflexive<Unkn> Unknown;
            [Size(4)]
            public class Unkn : Chunk
            {
                public int Unknown;
            }

            [Size(12)]
            public byte[] Unknown12;

            public H3Reflexive<Unkn> Unknown24;
            public H3Reflexive<Unkn> Unknown36;

            public int Unknown48;
            public int Unknown52;
            public int Unknown56;
            public int Unknown60;
            public int Unknown64;
            public int Unknown68;

            public H3Reflexive<Unkn72> Unknown72;
            [Size(20)]
            public class Unkn72 : Chunk
            {
                public int Unknown;
                public int Unknown4;
                public int Unknown8;
                public int Unknown12;
                public int Unknown16;
            }

            public H3Reflexive<Unkn84> Unknown84;
            [Size(4)]
            public class Unkn84 : Chunk
            {
                public int Unknown;
            }

            public H3Reflexive<Unkn84> Unknown96;

            public int Unknown108;
            public int Unknown112;
            public int Unknown116;
        }

        public H3Reflexive<Unkn100> Unknown112;

        [Size(12)]
        public byte[] Unknown124;

        //All these reflexive are exactly the same format a Unknown100
        public H3Reflexive<Unkn100> Unknown136; 
        public H3Reflexive<Unkn100> Unknown148;
        public H3Reflexive<Unkn100> Unknown160;
        public H3Reflexive<Unkn100> Unknown172;
        public H3Reflexive<Unkn100> Unknown184;
        public H3Reflexive<Unkn100> Unknown196;

        [Size(12)]
        public byte[] Unknown208;

        public H3Reflexive<Unkn100> Unknown220;
        ///////////////////////////////////////////////////////////////

        [Size(24)]
        public byte[] Unknown232;

        public H3Reflexive<Unkn256> Unknown256;
        [Size(36)]
        public class Unkn256 : Chunk
        {
            public int Unknown;
            public int Unknown4;
            public int Unknown8;
            public int Unknown12;
            public int Unknown16;
            public int Unknown20;
            public int Unknown24;
            public int Unknown28;
            public int Unknown32;
        }

        public H3Reflexive<Unkn268> Unknown268;
        [Size(16)]
        public class Unkn268 : Chunk
        {
            public TagReference sbsp;
        }

        [Size(36)]
        public byte[] Unknown280;

        public int TableOrSumthingOfTheSortSize;

        [Size(8)]
        public byte[] Unknown320;

        public int TableOrSumthingOfTheSortOffset;  // - map magic
        public int Unknown332;
        public int Unknown336;
        public int Unknown340;
        public int Unknown344;
        public int Unknown348;
        public int Unknown352;

        public H3Reflexive<Unkn356> Unknown356;
        [Size(20)]
        public class Unkn356 : Chunk
        {
            public int Unknown;
            public int Unknown4;
            public int Unknown8;
            public int Unknown12;
            public int Unknown16;
        }

        [Size(96)]
        public byte[] Unknown368;

        public H3Reflexive<Unknown464> unknown464;
        [Size(4)]
        public class Unknown464 : Chunk
        {
            public int Unknown;
        }

        public H3Reflexive<Unknown476> unknown476;
        [Size(8)]
        public class Unknown476 : Chunk
        {
            public int Unknown;
            public int Unknown4;
        }

        public H3Reflexive<Unknown488> unknown488;
        [Size(4)]
        public class Unknown488 : Chunk
        {
            public int Unknown;
        }

        public H3Reflexive<Unknown500> unknown500;
        [Size(8)]
        public class Unknown500 : Chunk
        {
            public short Unknown;
            public short Unknown2;
            public short Unknown4;
            public short Unknown6;
        }

        public H3Reflexive<Unknown512> unknown512;
        [Size(12)]
        public class Unknown512 : Chunk
        {
            public short Unknown;
            public short Unknown2;
            public int Unknown4;
            public int Unknown8;            
        }
    }
}
User avatar
Veegie




Socialist Architect Coroner Golden Age
Mad Hatter Acolyte Translator New Age
ONI

Posts: 3638
Joined: Wed Nov 26, 2003 2:28 pm
Location: Redmond, WA

Post by Veegie »

Very nice work, everyone.
Image
Hijikata wrote:The fact you love Jesus doesn't change the fact you're a *** mental patient. It just means you're a mental patient with a great imaginary friend.
Evan





Posts: 105
Joined: Fri Oct 26, 2007 1:26 pm
Location: Indiana

Post by Evan »

I wouldn't mind seeing this as a sticky with the research discussion.
User avatar
Veegie




Socialist Architect Coroner Golden Age
Mad Hatter Acolyte Translator New Age
ONI

Posts: 3638
Joined: Wed Nov 26, 2003 2:28 pm
Location: Redmond, WA

Post by Veegie »

Merged two stickies and added this.
Just make sure to keep the first post updated*, Shade. ;)

*hyperlinks
Image
Hijikata wrote:The fact you love Jesus doesn't change the fact you're a *** mental patient. It just means you're a mental patient with a great imaginary friend.
Post Reply