Particle Effects List
Search all 2,900+ GTA V particle effects with their ptfx dictionaries and build a working Lua snippet: one-shot, networked or looped.
The Particle Effects List is the full text list of GTA V particle effects: 2,907 effect names in 360 dictionaries (ptfx assets). Search it, pick an effect, choose how you want to spawn it, and copy a Lua snippet that loads the dictionary and starts the effect.
What it is for
Every particle effect lives inside a dictionary, and you need both names to spawn it. Getting one wrong gives you nothing on screen and no error. This list pairs every effect with its dictionary and writes the loading code for you, so you only decide what the effect should do: fire once, loop on the player, loop at a spot, or show for everyone.
If you want to see what an effect looks like first, many entries have a film icon that opens its video on Particle videos.
Quick start
- Search for a word (
fire,smoke,spark,water) or a dictionary name (core,scr_rcbarry2). - Optionally pick a dictionary in the menu next to the search box.
- Press Use on a row. It turns into Selected and the snippet updates.
- Pick a Mode, set Scale (and Duration for looped modes).
- Copy
ptfx.luaor press its Download button, and test it in game.
The list
| Column | What it does |
|---|---|
| Effect | The effect name. Click to copy. A film icon means there is a video preview: click it to watch it on Particle videos. |
| Dictionary | The ptfx asset it belongs to. Click to copy. |
| Use | Loads this effect into the snippet panel. |
The search matches effect names and dictionary names: typing a dictionary name lists all of its effects. The panel title shows how many effects match. Rows load 100 at a time with a button for more.
Snippet options
| Option | What it does | Default |
|---|---|---|
| Mode: At coord | One-shot effect at the player’s position, only this client sees it. Uses StartParticleFxNonLoopedAtCoord. |
selected |
| Mode: Networked | One-shot effect other players also see. Uses StartNetworkedParticleFxNonLoopedAtCoord. |
|
| Mode: Looped on entity | Attached to the player ped until stopped. Uses StartParticleFxLoopedOnEntity. |
|
| Mode: Looped at coord | Looped effect at a fixed position until stopped. Uses StartParticleFxLoopedAtCoord. |
|
| Scale | Effect size. Any value above 0. | 1.0 |
| Duration (ms) | How long a looped effect runs before StopParticleFxLooped. Only for looped modes. |
5000 |
| Networked | Only in Looped on entity: switches to StartNetworkedParticleFxLoopedOnEntity so others see it. |
off |
| Wrap in /ptfx command | Wraps the code in a /ptfx command for quick testing. |
off |
The panel starts with core / ent_sht_steam selected.
Examples
At coord, the default:
CreateThread(function()
local dict, name = "core", "ent_sht_steam"
RequestNamedPtfxAsset(dict)
while not HasNamedPtfxAssetLoaded(dict) do Wait(0) end
local coords = GetEntityCoords(PlayerPedId())
UseParticleFxAsset(dict)
StartParticleFxNonLoopedAtCoord(name, coords.x, coords.y, coords.z, 0.0, 0.0, 0.0, 1.0, false, false, false)
RemoveNamedPtfxAsset(dict)
end)Looped at coord with Wrap in /ptfx command:
RegisterCommand("ptfx", function()
CreateThread(function()
local dict, name = "core", "ent_sht_steam"
RequestNamedPtfxAsset(dict)
while not HasNamedPtfxAssetLoaded(dict) do Wait(0) end
local coords = GetEntityCoords(PlayerPedId())
UseParticleFxAsset(dict)
local fx = StartParticleFxLoopedAtCoord(name, coords.x, coords.y, coords.z, 0.0, 0.0, 0.0, 1.0, false, false, false, false)
Wait(5000)
StopParticleFxLooped(fx, false)
RemoveNamedPtfxAsset(dict)
end)
end, false)Looped on entity keeps a handle so you can stop it:
UseParticleFxAsset(dict)
-- offset xyz, rotation xyz, scale, axis flip x/y/z
local fx = StartParticleFxLoopedOnEntity(name, PlayerPedId(), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, false, false, false)How to load an effect
The order matters:
RequestNamedPtfxAsset(dict)and wait forHasNamedPtfxAssetLoaded(dict).UseParticleFxAsset(dict)right before the start call. It only applies to the nextStart*ParticleFx*call, so call it again before each one.- Start the effect with the native that fits (see Mode above).
- Looped effects return a handle: stop them with
StopParticleFxLooped(handle, false). RemoveNamedPtfxAsset(dict)when you no longer need the dictionary.
For looped effects you can also change colour and alpha with SetParticleFxLoopedColour and SetParticleFxLoopedAlpha, but only effects made with tintable colours react.
Common mistakes
- Nothing shows up. Looped and one-shot effects are not interchangeable. Most names with
_loop,ent_amb_or_trailare looped: switch the mode and try again. - Forgot
UseParticleFxAsset. Without it right before the start call, the game looks in the wrong dictionary. - Effect never stops. You dropped the handle of a looped effect. Keep it and call
StopParticleFxLooped. - Other players cannot see it. Use a networked mode.
- Scale does nothing. Some effects ignore scale or only change part of the effect.
Tip
Test with Wrap in /ptfx command on, type /ptfx in game, and try both modes. Once it looks right, turn the wrapper off and paste the code where you need it.
Limitations
- Names and dictionaries only. For previews, use Particle videos, which has clips for most effects.
- The snippet always spawns at or on the player. Change the coordinates or entity for your use.
- Everything runs in your browser.
