gta-chaos-mod / ChaosModV

Chaos Mod for Grand Theft Auto V
https://gta5-mods.com/scripts/chaos-mod-v-beta
GNU General Public License v3.0
256 stars 98 forks source link

Chaos Mod V

A replica of the chaos mods found on previous GTA games for GTA V.

See the GTA5-Mods mod page for more information and instructions on how to install it.

Feel free to join the Discord Server for community support or simply to stay up to date on this (and other) mods.

Also make sure to check the Wiki!

Building

Preparation

  1. Clone the repo git clone https://github.com/gta-chaos-mod/ChaosModV.git

  2. cd ChaosModV

  3. Initialize all submodules

git submodule init
git submodule update --recursive

Building

Check the corresponding subdirectories for instructions on how to compile each project.

Building all projects

MSBuild (Visual Studio) NOTE: The methods above are preferred over this one for the ASI (the ChaosMod project). There may be components of the ASI only available to CMake due to complications with third-party libraries. 1. Open `vendor/minhook/build/VC17/MinHookVC17.sln` in Visual Studio (or click on the "Switch between solutions and available views" button and load `MinHookVC17.sln`) 2. Compile libMinHook as x64 Release build 3. Open `ChaosMod.sln` in the root folder in Visual Studio (if not open already) 4. Compiling should work now. If there's an error referencing `MsBuildMajorVersion` when building either the ConfigApp or TwitchChatProxy projects, close and open Visual Studio again.

Adding new effects

You can easily add and share your own effects using the integrated Lua scripting engine. See here for more information.

Otherwise, if you want to integrate your effect directly into the mod:

  1. Create a new .cpp file in the appropriate folder under ChaosMod/Effects/db/ with a fitting name

Layout of the file should look like this:

/*
    Effect by <Your Name>
*/

#include <stdafx.h>

static void OnStart()
{

}

static void OnStop()
{

}

static void OnTick()
{

}

// clang-format off
REGISTER_EFFECT(OnStart, OnStop, OnTick, EffectInfo
    {
        // These are always required, you may have to add more designators depending on your effect
        .Name = "Generic Effect",
        .Id = "player_funny_stuff"
    }
);

The project makes use of clang-format which will mess up the formatting of the list-initialization, thus it's necessary to exempt it using // clang-format off.

  1. Add the same info to ConfigApp/Effects.cs