Junior_Djjr Posted May 4, 2015 Share Posted May 4, 2015 (edited) 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) 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"? I think Author: Junior_Djjr (cleo) & Fabio (asi) -download link removed- (English & Português) Edited October 25, 2020 by Sam Lake removed download link breaking forum rules FMMZ, Ezekiel, Neddo and 13 others 16 Link to comment Share on other sites More sharing options...
Fenton Posted May 4, 2015 Share Posted May 4, 2015 FINALLY, IT'S HAPPENING!, Thanks Junior. Junior_Djjr 1 Link to comment Share on other sites More sharing options...
Reyks Posted May 9, 2015 Share Posted May 9, 2015 This looks amazing! Essential mod for anyone who plays SA. Junior_Djjr 1 Link to comment Share on other sites More sharing options...
SilverRST Posted May 9, 2015 Share Posted May 9, 2015 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. Concavax and Junior_Djjr 2 Link to comment Share on other sites More sharing options...
FMMZ Posted May 10, 2015 Share Posted May 10, 2015 Nice,I love it, your Mods always are great, Junior_Djjr you have an high standart in quality. DL and installing it. Junior_Djjr and uncaged 2 Link to comment Share on other sites More sharing options...
Junior_Djjr Posted May 10, 2015 Author Share Posted May 10, 2015 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) 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;} The_GTA 1 Link to comment Share on other sites More sharing options...
astitva Posted May 10, 2015 Share Posted May 10, 2015 @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 More sharing options...
The_GTA Posted May 10, 2015 Share Posted May 10, 2015 (edited) 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 May 10, 2015 by The_GTA Junior_Djjr and fabio3 2 Link to comment Share on other sites More sharing options...
Junior_Djjr Posted May 10, 2015 Author Share Posted May 10, 2015 @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 More sharing options...
astitva Posted May 10, 2015 Share Posted May 10, 2015 @junior_djjr alright, thanks! Link to comment Share on other sites More sharing options...
fabio3 Posted May 10, 2015 Share Posted May 10, 2015 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. The_GTA and Junior_Djjr 2 Link to comment Share on other sites More sharing options...
Davve95 Posted August 28, 2016 Share Posted August 28, 2016 (edited) 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 August 28, 2016 by Davve95 Link to comment Share on other sites More sharing options...
vgghighighi Posted January 22, 2017 Share Posted January 22, 2017 Hi Junior!! I installed the script!!! But how do i change the size of the Smoke? Link to comment Share on other sites More sharing options...
Philips_27 Posted June 14, 2018 Share Posted June 14, 2018 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 More sharing options...
Vills SkyTerror Posted June 16, 2018 Share Posted June 16, 2018 Is it possible to shorten the exhaust smoke trail? Sometimes its almost half size of the vehicle. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now