Quantcast
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. The Diamond Casino Heist
      2. Find Lobbies & Players
      3. Guides & Strategies
      4. Vehicles
      5. Content Creator
      6. Help & Support
    2. Red Dead Online

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

    1. Red Dead Redemption 2

      1. PC
      2. Gameplay
      3. Missions
      4. Help & Support
    2. Red Dead Redemption

    1. Grand Theft Auto Series

    2. GTA 6

      1. St Andrews Cathedral
    3. GTA V

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

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

    6. GTA Vice City Stories

    7. GTA Liberty City Stories

    8. GTA San Andreas

      1. Guides & Strategies
      2. Help & Support
    9. GTA Vice City

      1. Guides & Strategies
      2. Help & Support
    10. GTA III

      1. Guides & Strategies
      2. Help & Support
    11. Top Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    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. DYOM
      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
    3. Gangs

    1. Announcements

    2. Support

    3. Suggestions

Junior_Djjr

[SA|REL] Exhaust Tweaker

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

(English & Português)

Edited by Junior_Djjr
  • Like 16

Share this post


Link to post
Share on other sites
Fenton

FINALLY, IT'S HAPPENING!, Thanks Junior.

  • Like 1

Share this post


Link to post
Share on other sites
Reyks

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

  • Like 1

Share this post


Link to post
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

Share this post


Link to post
Share on other sites
FMMZ

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

  • Like 2

Share this post


Link to post
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;}

 

 

  • Like 1

Share this post


Link to post
Share on other sites
astitva

@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!

Share this post


Link to post
Share on other sites
The_GTA

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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites
astitva

@junior_djjr

 

alright, thanks!:)

Share this post


Link to post
Share on other sites
fabio3

 

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

Share this post


Link to post
Share on other sites
Davve95

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

Share this post


Link to post
Share on other sites
vgghighighi

Hi Junior!! I installed the script!!! But how do i change the size of the Smoke?

Share this post


Link to post
Share on other sites
Philips_27

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

Share this post


Link to post
Share on other sites
Vills SkyTerror

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • 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.