Jump to content
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. Los Santos Drug Wars
      2. Updates
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Red Dead Online

      1. Blood Money
      2. Frontier Pursuits
      3. Find Lobbies & Outlaws
      4. Help & Support
    3. Crews

    1. Grand Theft Auto Series

      1. Bugs*
      2. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Classic GTA SA
      2. Guides & Strategies
      3. Help & Support
    6. GTA Vice City

      1. Classic GTA VC
      2. Guides & Strategies
      3. Help & Support
    7. GTA III

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

    3. Suggestions

[SA|REL] Exhaust Tweaker


Junior_Djjr
 Share

Recommended Posts

Junior_Djjr

A little cool mod created by me and my friend @fabio3, among many GTA V GTA V GTA V here :)

 

With this, you can tweak the exhaust of vehicles, separated by engine type (petrol or diesel) and some flags (like IsBig, IsBus etc)

 

jpg4.jpg

 

This mod works with a .ini file, and you can configure the size, alpha and brightness (black-white) of the smoke, also the distance to view

 

Also have a "bonus" list in ini to you force diesel smoke in some cars, simply typing the name of .dff

(or edit the handling of car and put "D" in the line)

 

 

Better than "Diesel Mod"? :p I think

 

Author: Junior_Djjr (cleo) & Fabio (asi)

-download link removed-

(English & Português)

Edited by Sam Lake
removed download link breaking forum rules
Link to comment
Share on other sites

FINALLY, IT'S HAPPENING!, Thanks Junior.

  • Like 1
Link to comment
Share on other sites

This looks amazing! Essential mod for anyone who plays SA.

  • Like 1

jYzLR2j.png

Link to comment
Share on other sites

SilverRST

Amazing you're still making mods for GTASA! It always comfort me when people are still making mods for GTASA.

I'll test it soon.

  • Like 2
Link to comment
Share on other sites

Nice,I love it, your Mods always are great, Junior_Djjr you have an high standart in quality. DL and installing it.

  • Like 2
Link to comment
Share on other sites

Junior_Djjr

Amazing you're still making mods for GTASA! It always comfort me when people are still making mods for GTASA.

I hope the mods for GTA SA remain alive :)

 

 

 

btw: with this asi you can create a new cleo script changing the colors of the exhaust in any car, by model or struct, simply using addEditModelCarID (by model) or addEditPlayerCar (by individual car, not only player)

jpg340.jpg

 

In this mod I don't put RGB option in ini 'cause it's not realistic, and it's better to create a new script for individual cars and not by models

 

anyway, here's the sources of this mod:

.cs (by me)

 

 

{$CLEO}{0AA5: call addEditModelCarID num_params 6 pop 6  Size 0.5  Alpha 255  RGB 255 255 255  Model 400 0AA5: call addEditPlayerCar num_params 6 pop 6  Size 0.5  Alpha 255  RGB 255 255 255  Struct [email protected] //not only player's car, but any car (by struct)}if or8AA2: [email protected] = load_library "IndieVehSmoke.asi" // IF and SET8AA4: [email protected] = get_proc_address "addEditModelCarID" library [email protected] // void addEditModelCarID(unsigned int p, float r, float g, float b, float a, float size)//8AA4: [email protected] = get_proc_address "addEditPlayerCar" library [email protected] // void addEditPlayerCar(unsigned int p, float r, float g, float b, float a, float size)then    wait 2000    [email protected] = 0    while [email protected] < 5000        wait 0        0ACD: show_text_highpriority "~r~ERROR: Fail to load 'IndieVehSmoke.asi'" time 1000    end    0A93: end_custom_threadendif 8AAB:   not file_exists "cleo\Exhaust Tweaker.ini"then    wait 2000    [email protected] = 0    while [email protected] < 5000        wait 0        0ACD: show_text_highpriority "~r~ERROR: Fail to load 'Exhaust Tweaker.ini'" time 1000    end      0A93: end_custom_threadendif 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Sets" key "DistanceLimit"then    if [email protected] == 0    then        0A8C: write_memory 0x006DE279 size 2 value 0x6AEB virtual_protect 1        0A8C: write_memory 0x006DE27B size 2 value 0x9090 virtual_protect 1        0A8C: write_memory 0x006DE27D size 1 value 0x90 virtual_protect 1    else        if [email protected] > 0.0        then            0AC7: [email protected] = var [email protected] offset            0A8C: write_memory 0x006DE2B4 size 4 value [email protected] virtual_protect 1            0A8C: write_memory 0x006DE2C5 size 4 value [email protected] virtual_protect 1            0087: [email protected] = [email protected]        end    end end0AF0: [email protected] = get_int_from_ini_file "cleo\Exhaust Tweaker.ini" section "Petrol" key "Enable"0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Petrol" key "Brightness" 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Petrol" key "Low_Size" 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Petrol" key "NotLow_Size" 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Petrol" key "Low_Alpha" 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Petrol" key "NotLow_Alpha"                                                                                              0AF0: [email protected] = get_int_from_ini_file "cleo\Exhaust Tweaker.ini" section "Diesel" key "Enable" 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Diesel" key "Brightness" 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Diesel" key "BigOrBus_Size" 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Diesel" key "NotBigOrBus_Size"  0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Diesel" key "BigOrBus_Alpha" 0AF2: [email protected] = get_float_from_ini_file "cleo\Exhaust Tweaker.ini" section "Diesel" key "NotBigOrBus_Alpha" for [email protected] = 0 to 160    0085: [email protected] = [email protected]     [email protected] *= 0x308     [email protected] += 0xB1F650     [email protected] += 0x4E     0A8D: [email protected] = read_memory [email protected] size 2 virtual_protect 0 // get handling ID    [email protected] *= 0xE0     [email protected] += 0xC2B9DC              0A8E: [email protected] = [email protected] + 400 //Veh model        0A8E: [email protected] = [email protected] + 0x75 //EngineType    0A8D: [email protected] = read_memory [email protected] size 1 virtual_protect 0        if [email protected] == 80 //Petrol    then        if [email protected] == true        then              [email protected] += 0xCC //ModelFlags            0A8D: [email protected] = read_memory [email protected] size 1 virtual_protect 0            if 08B7:   test [email protected] bit 2 //IsLow             then 0AA5: call [email protected] num_params 6 pop 6  Size [email protected]  Alpha [email protected]  RGB [email protected] [email protected] [email protected]  Model [email protected]             else 0AA5: call [email protected] num_params 6 pop 6  Size [email protected]  Alpha [email protected]  RGB [email protected] [email protected] [email protected]  Model [email protected]             end            continue        end    end                 if [email protected] == 68 //Diesel    then        if [email protected] == true        then            [email protected] += 0xCC //ModelFlags            0A8D: [email protected] = read_memory [email protected] size 1 virtual_protect 0            if or            08B7:   test [email protected] bit 1 //IsBus             08B7:   test [email protected] bit 3 //IsBig            then 0AA5: call [email protected] num_params 6 pop 6  Size [email protected]  Alpha [email protected]  RGB [email protected] [email protected] [email protected]  Model [email protected]             else 0AA5: call [email protected] num_params 6 pop 6  Size [email protected]  Alpha [email protected]  RGB [email protected] [email protected] [email protected]  Model [email protected]             end        end    endend0AF0: [email protected] = get_int_from_ini_file "cleo\Exhaust Tweaker.ini" section "Diesel Bonus" key "Number"if [email protected] > 0then    for [email protected] = 1 to [email protected]        0AD3: [email protected] = format "Model%i" [email protected]        if 0AF4: [email protected] = read_string_from_ini_file "cleo\Exhaust Tweaker.ini" section "Diesel Bonus" key [email protected]         then            0AC7: [email protected] = var [email protected] offset            0AA7: call_function 0x004C5940 num_params 2 pop 2   PointerToRet [email protected]   StringToPass [email protected]   Result [email protected]                        if [email protected] <> 0 // loaded?            then                0AA5: call [email protected] num_params 6 pop 6  Size [email protected]  Alpha [email protected]  RGB [email protected] [email protected] [email protected]  Model [email protected]             end        end    endend0A93: end_custom_thread

 

 

 

.cpp (by Fabio) ("fabio3" here in gtaf)

 

 

// dllmain.cpp : Defines the entry point for the DLL application.#include "stdafx.h"#include <injector/assembly.hpp>#include <injector/calling.hpp>#include <injector/hooking.hpp>#include <injector/injector.hpp>#include <map>auto particlesTest = injector::thiscall<void(unsigned int, float, float, float, float, float, float, unsigned int)>::call<0x4AB290>;struct data{	float r, g, b, a, size;	bool active;	data(){		active = false;		r = g = b = a = 1.0f;		size = 0.2f;	}};std::map <unsigned int, data> models;std::map <unsigned int, data> player_cars;union testeGambi{	DWORD d;	float f;};testeGambi * __fastcall FxPrtMult_c__FxPrtMult_c(testeGambi *thisptr, int edx, float a2, float a3, float a4, float a5, float a6, float a7, DWORD a8){	unsigned int regesi;	__asm{		mov regesi, esi	}	auto modelID = *(unsigned short*)(regesi + 0x22);	auto carPTR = regesi;	data dataTest;	if (player_cars[carPTR].active)	{		dataTest = player_cars[carPTR];	}	else if (models[modelID].active)	{		dataTest = models[modelID];	}	else	{		dataTest.r = 0.89999998;		dataTest.g = 0.89999998;		dataTest.b = 1.0;		dataTest.a = 1.0;		dataTest.size = 0.2;	}	particlesTest((unsigned int)thisptr, dataTest.r, dataTest.g, dataTest.b, a5 * dataTest.a, dataTest.size, a7, a8);	return thisptr;}void hook(){	injector::MakeCALL(0x006DE629, FxPrtMult_c__FxPrtMult_c);}extern "C" __declspec(dllexport) void addEditPlayerCar(unsigned int p, float r, float g, float b, float a, float size){	auto &use = player_cars[p];	use.active = true;	use.r = r;	use.g = g;	use.b = b;	use.a = a;	use.size = size;}extern "C" __declspec(dllexport) void addEditModelCarID(unsigned int p, float r, float g, float b, float a, float size){	auto &use = models[p];	use.active = true;	use.r = r;	use.g = g;	use.b = b;	use.a = a;	use.size = size;}BOOL APIENTRY DllMain( HMODULE hModule,                       DWORD  ul_reason_for_call,                       LPVOID lpReserved					 ){	switch (ul_reason_for_call)	{	case DLL_PROCESS_ATTACH:		hook();		break;	case DLL_THREAD_ATTACH:	case DLL_THREAD_DETACH:	case DLL_PROCESS_DETACH:		break;	}	return TRUE;}

 

 

Link to comment
Share on other sites

@junior_djjr

 

 

man, you are an awesome modder, seriously.

I am also a small time modder(of course not great like you) and I need a little help from you, if you can help me.

I know it's a little off topic, but can you please tell me how can I gta sa's default oxygen bar to work as a timer???? Coz I created some special ability mods from gta V but I don't know that how can I get the oxygen bar to work as a timer, since I want my mod to be compatible with DK's gta V hud and everyone knows that the special ability bar in the hud is actually gta sa's default oxygen bar!

Link to comment
Share on other sites

I hope the mods for GTA SA remain alive :)

Well said, friend. Your mod is small, nice and clean. I especially like the style that your friend used to reverse the game engine routines (basically completely C++! ) ;)

 

I can overlook the fact that he used STL vectors. He probably does not know that the engine has an hardcoded limit of 20000 models.

For developers I want to say, be careful about using the auto keyword. It is not intuitive.

 

Nice work! :)

Edited by The_GTA
  • Like 2
Link to comment
Share on other sites

Junior_Djjr

@junior_djjr

 

 

man, you are an awesome modder, seriously.

I am also a small time modder(of course not great like you) and I need a little help from you, if you can help me.

I know it's a little off topic, but can you please tell me how can I gta sa's default oxygen bar to work as a timer???? Coz I created some special ability mods from gta V but I don't know that how can I get the oxygen bar to work as a timer, since I want my mod to be compatible with DK's gta V hud and everyone knows that the special ability bar in the hud is actually gta sa's default oxygen bar!

work in what sense?

 

I don't know what address, but if knowing the memory address of oxygen value you can make anything with this, including a timer or a new bar (03C4:)

I don't know much about how GTA V hud works

Link to comment
Share on other sites

 

I hope the mods for GTA SA remain alive :)

Well said, friend. Your mod is small, nice and clean. I especially like the style that your friend used to reverse the game engine routines (basically completely C++! ) ;)

 

I can overlook the fact that he used STL vectors. He probably does not know that the engine has an hardcoded limit of 20000 models.

For developers I want to say, be careful about using the auto keyword. It is not intuitive.

 

Nice work! :)

 

 

I did not know of the hardcoded limit, but I used a std::map, the elements only will be allocated when I request them.

I don't think this will become a problem, although I admit it is not the best way to do this.

 

Thanks. :)

  • Like 2
Link to comment
Share on other sites

  • 1 year later...

Sorry for bumping this. But have to as I have a question. Better then creating a new topic.

 

Seems like a awesome mod! I was looking for this.

 

Does it fix exhausts too? I mean like on the Hustler it does just come out of one exhaust. Even if it have 2.

(A bug/miss from R*)

 

Edit: If you not have fixed that. Thathe would have been really cool!

Edited by Davve95
Link to comment
Share on other sites

  • 4 months later...
  • 1 year later...

Hey there.
I installed Visual C++ Redistributable 2010 but still have a error with loading plugin. What I can do?

Link to comment
Share on other sites

Vills SkyTerror

Is it possible to shorten the exhaust smoke trail? Sometimes its almost half size of the vehicle.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.