Rocket Voltic PTFX effect?
-
Hey,
I'm about to start with a realistic afterburner script and I'll be using the rocket boost particle effect from the Rocket Voltic. Does anyone know the PTFX effect name of it?
-
@Oskar I think @Dilapidated might know.
-
Anyone?
-
@Oskar Alright, the dictionary name is veh_impexp_rocket by doing some digging in the new DLC.
-
Also did this little dump for all the ptfx asset names in the veh_impexp_rocket dictionary:
- ptfx_afterburner_rings_rgb.veh_rocket_boost_glow_lit.veh_rocket_boost_glow_lit.veh_rocket_boost_glow_lit.veh_rocket_boost_glow_lit......0ž.P............×ÞÖ4....veh_rocket_boost_rings.veh_rocket_boost_rings.veh_rocket_boost_rings.veh_rocket_boost_rings.veh_rocket_boost_tail.veh_rocket_boost_haze.veh_rocket_boost_haze.veh_rocket_boost_haze.veh_rocket_boost_tail.veh_rocket_boost_haze.veh_rocket_boost_jet.veh_rocket_boost_jet._explosion_fireball.veh_impexp_rocket.RGB_soft_refract.veh_rocket_boost
This is just a dump from Hex Editor. I think they are seperated by the "." sign.
I think the ptfxs with RGB in their name their color can be changed with change color native for PTFXs.
-
@AHK1221 Thanks a lot! I'll try these out!
-
@Oskar Make sure to use looped ptfx for the rocket ptfx.
-
@MAFINS Can you tell me which one out of the above is the rocket ptfx?
-
@AHK1221 @MAFINS So I've been going trough every ove the above listed ptfx but none seem to work. I tried to use them as looped and non looped ptfx with "veh_impexp_rocket" as the effect library.
-
@Oskar You need to use the SET_PARTICLE_FX_LOOPED_EVOLUTION function. The particle has two parameters "boost" and "charge" which have to be adjusted for it to show up it all. @Dilapidated had the same problem.
-
Here is a dump of "veh_impexp_rocket":
<ptxEffectRule name="veh_rocket_boost"> <ptxEventEmitters> <item name="veh_rocket_boost_jet" /> <item name="veh_rocket_boost_rings" /> <item name="veh_rocket_boost_haze" /> <item name="veh_rocket_boost_glow_lit" /> </ptxEventEmitters> <ptxEvolutionArgs> <item name="LOD" /> <item name="boost" /> <item name="charge" /> </ptxEvolutionArgs> </ptxEffectRule> </ptxEffectRules> The fx name is "veh_rocket_boost"
-
@CamxxCore Thanks, but how did you get that dump? If not from HxD how did you get it?
-
@AHK1221 I have some code that will dump the particle assets in memory (while game is running). Can post if you like.
-
@CamxxCore That would be the most useful thing ever! Especially with game updates like these!
-
@CamxxCore Geez, so there must be a bunch of ptfxs that have their own evolution arguments to be used with SET_PARTICLE_FX_LOOPED_EVOLUTION.
Is it possible that someone has a list of PTFX assets, fx names, AND their evolution arguments (if any)?
If not, how did you dump "veh_impexp_rocket"? I'd like to try compiling at least some of these into a list..
-
@stillhere I asked him to upload the code, this could be very useful as a tool.
-
@CamxxCore Can you tell why this code doesn't work?
if (e.KeyCode == Keys.I) { Function.Call(Hash.REQUEST_NAMED_PTFX_ASSET, "veh_impexp_rocket"); if (!Function.Call<bool>(Hash.HAS_NAMED_PTFX_ASSET_LOADED, "veh_impexp_rocket")) { timeout = DateTime.UtcNow + new TimeSpan(0, 0, 0, 0, 500); while (DateTime.UtcNow < timeout) { Function.Call(Hash.REQUEST_NAMED_PTFX_ASSET, "veh_impexp_rocket"); Yield(); } } if (!isPtfxCalled) { ptfxHandle = Function.Call<int>(Hash.START_PARTICLE_FX_LOOPED_AT_COORD, "veh_rocket_boost", Game.Player.Character.Position.X, Game.Player.Character.Position.Y, Game.Player.Character.Position.Z, Game.Player.Character.Rotation.X, Game.Player.Character.Rotation.Y, Game.Player.Character.Rotation.Z, 3.5f, false, false, false, false); Function.Call(Hash.SET_PARTICLE_FX_LOOPED_EVOLUTION, ptfxHandle, "boost", 5f, true); Function.Call(Hash.SET_PARTICLE_FX_LOOPED_EVOLUTION, ptfxHandle, "charge", 5f, true); UI.ShowSubtitle(ptfxHandle.ToString()); } else Function.Call(Hash.STOP_PARTICLE_FX_LOOPED, ptfxHandle, false); }
-
Doesn't work for me either
edit Nevermind, got it working! Huge thanks for that!
-
@Oskar Can you tell us how?
-
Nothing special actually.
RequestEffectLibrary("veh_impexp_rocket");
GRAPHICS::_SET_PTFX_ASSET_NEXT_CALL("veh_impexp_rocket");
int Bone_Index1 = ENTITY::GET_ENTITY_BONE_INDEX_BY_NAME(veh, "overheat");
AfterBurnerHandle = GRAPHICS::_START_PARTICLE_FX_LOOPED_ON_ENTITY_BONE("veh_rocket_boost", veh, 0.0, 0.0, 0.0, 0.0, 0.0, 180.0, Bone_Index1, 2.0, true, true, true);
GRAPHICS::SET_PARTICLE_FX_LOOPED_EVOLUTION(AfterBurnerHandle, "boost", 5.0, 0);
GRAPHICS::SET_PARTICLE_FX_LOOPED_EVOLUTION(AfterBurnerHandle, "charge", 5.0, 0);
GRAPHICS::SET_PARTICLE_FX_LOOPED_ALPHA(AfterBurnerHandle, 255);But I've got another problem regarding the rocket boost, this time not related to the PTFX but I thought why creating a new topic for that.
Well it's more of a general problem, I've found this code snippet to reload the rocket boost in the GTAForums. I believe it was by @Unknown-Modder.
The problem is that I'm always getting an error when using getScriptHandleBaseAddress.I'm not too familiar with Visual Studio, can anyone help me with that?
-
@Oskar Make sure your ScriptHookV.lib is up-to-date. Or alternatively use this:
typedef __int64(*GetScriptHandleAddress_t)(int handle); GetScriptHandleAddress_t GetScriptHandleAddress = (GetScriptHandleAddress_t)Pattern::Scan("83 F9 FF 74 31 4C 8B 0D ?? ?? ?? ?? 44 8B C1 49");
-
@Unknown-Modder Thanks updating the ScriptHookV.lib solved it! But the boost isn't refilling. Is it possible that the address of it has changed or something like that?
-
@Oskar The offset is still 0x31C but the max value has changed.
This is my CVehicle::FillRocketBoost()void FillRocketBoost() { rocketBoostValue = getGameVersion() > VER_1_0_944_2_NOSTEAM ? 1.25f : 2.5f; }
-
@Unknown-Modder said in Rocket Voltic PTFX effect?:
rocketBoostValue = getGameVersion() > VER_1_0_944_2_NOSTEAM ? 1.25f : 2.5f;
Doesn't work with both values
-
@Oskar What's your code?