Log in to reply
 

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!


  • MODERATOR

    @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)? :frowning:

    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.

    alt text

    I'm not too familiar with Visual Studio, can anyone help me with that?


  • MODERATOR

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


  • MODERATOR

    @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 :/


  • MODERATOR

    @Oskar What's your code?


Log in to reply
 

Looks like your connection to GTA5-Mods.com Forums was lost, please wait while we try to reconnect.