Results 1 to 10 of 105

Thread: [IG]Intergalactic Morons WIP Thread

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #25
    #2 Intergalactic Moron IGMBiti's Avatar
    Join Date
    Dec 2008
    Location
    At my desk
    Posts
    11

    Re: [IG]Intergalactic Morons WIP Thread

    Open Sauce can already do Multi Team Vehicles so this is nothing new and not that exciting.
    In response to that: Abyll had attempted to use the code in Open Sauce. It worked successfully for the dedicated 1.08 exe, but it caused exceptions when he tried to patch the client. I'm assuming that the address for the 3-byte change on the client (1.08) was off by a bit.
    As far as choosing an executable instead of a DLL...I was originally planning on using a DLL that would be loaded using another project of ours (haven't released yet), but just because I was lazy at the time and I thought it may be more convenient for people who already have edited libraries and for those who do not want those libraries changed, I decided to use an executable.
    Code:
            static MTV()
            {
                if (MemoryHandler.Version == MemoryHandler.HaloVersion.CLIENT)
                {
                    MTV.INSTRUCTION_ADDRESS = 0x0056A3B1; //client address
                }
                else
                {
                    MTV.INSTRUCTION_ADDRESS = 0x00518D41; //dedicated address
                }
            }
    /* Addition: I think I could simplify this:
    MTV.INSTRUCTION_ADDRESS = (MemoryHandler.Version == MemoryHandler.HaloVersion.CLIENT) ? 0x0056A3B1 : 0x00518D41;
    */
    I'm not sure if those tags would work, but that's the constructor I used for a static class that enables/disables the ability. It sets the addresses if the intended target is client or dedicated.

    Edit: Looked at Open Sauce's code (did not feel like making a new post to the one just after this):
    Code:
    FUNC_PTR(UNIT_CAN_ENTER_SEAT_MOD, 0x56A261, 0x56A3B1, 0x518D41);
    #define FUNC_PTR(name, ce_offset, ce_107_offset, cededi_offset) enum FUNC_PTR_##name { PTR_##name = cededi_offset }; COMPILE_ASSERT( PTR_##name != NULL );
    At the moment, the ce_107_offset matches the offset I have for client 1.08, and so I think that is what caused Abyll errors for the client patch.
    Last edited by IGMBiti; April 28th, 2009 at 07:15 PM.
    Reply With Quote

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •