Particles (ptfx)

INFO

Le particles (ptfx) sono effetti visivi procedurali (fumo, fuoco, luci, polvere) generati dai nativi GTA V. Sono perfette per “dare vita” a un server senza asset custom.

ObiettivoDettagli
Cosa imparerai• Caricare e usare gli asset ptfx
• Spawnare un effetto in un punto
• Effetti comuni e come trovarli
Prerequisiti• Lua base (modulo 08)

1. Workflow di Base

Per usare un effetto:

  1. Request un “asset” (ptfx dictionary) e aspetta che sia caricato
  2. Use l’asset
  3. Spawn l’effetto con coordinate/rotazione
-- client.lua
local function spawnPtfx(dict, name, coords, scale)
    -- 1. Richiedi l'asset
    RequestNamedPtfxAsset(dict)
    while not HasNamedPtfxAssetLoaded(dict) do
        Wait(10)
    end
 
    -- 2. Usa l'asset
    UseParticleFxAsset(dict)
 
    -- 3. Spawna l'effetto
    SetParticleFxNonLoopedAlpha(scale or 1.0)
    local fxId = StartParticleFxLoopedAtCoord(name, coords.x, coords.y, coords.z, 0.0, 0.0, 0.0, scale or 1.0)
    return fxId
end
 
-- Esempio: fumo al banco di lavoro
spawnPtfx('scr_ambietl', 'scr_amb_etl_smoke', vec3(250.0, -150.0, 29.5), 1.0)

2. Effetti Looped vs Non-Looped

TipoFunzioneUso
Non-loopedStartParticleFxNonLoopedAtCoordEsplosioni, one-shot
LoopedStartParticleFxLoopedAtCoord / ...OnEntityFuoco, fumo persistente
-- One-shot: esplosione
StartParticleFxNonLoopedAtCoord('scr_weap_exhaust', 'scr_weap_exhaust_medium', x, y, z, 0, 0, 0, 1.0)
 
-- Looped: fuoco (va fermato)
local fx = StartParticleFxLoopedAtCoord('core', 'exp_air_bird_crush', x, y, z, 0, 0, 0, 1.0)
StopParticleFxLooped(fx)

WARNING

Gli effetti looped vanno fermati con StopParticleFxLooped quando non servono più (es. fuoco quando l’incendio finisce). Altrimenti restano per sempre.


3. Cercare gli Effetti

  • Docs FiveM: la lista dei ptfx dict/name è enorme; cercali su forum/guide
  • F8 DevTools / CodeWalker: alcuni tool mostrano gli effetti
  • Ricerche: “GTA V particle fx dictionary list” su GitHub

NOTE

I nomi dei ptfx (dizionario e nome effetto) devono combaciare esattamente. Non esiste un “catalogo” ufficiale completo: si raccolgono dagli script e dalle mod.


4. Attach a Entità

-- client.lua
-- Fuoco attaccato a un veicolo
StartParticleFxLoopedOnEntity('core', 'exp_air_bird_crush', vehicle, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)

5. Best Practice Performance

  • Preferisci few effetti looped ben fatti a tanti effetti ripetuti
  • Ferma gli effetti looped quando non servono
  • Non spawnare effetti in loop stretto (Wait(0))
  • Gli effetti non sono sincronizzati di default: usa eventi/network per farli vedere a tutti

WARNING

StartParticleFx* è client-side. Per far vedere l’effetto a tutti, il server deve triggerare l’evento ai client (o usare entità di rete con il particle attach).


Verifica

  • Asset richiesto e caricato prima dell’uso
  • Effetti looped fermati correttamente
  • Effetti sincronizzati (se devono essere visti da tutti)
  • Nessun loop stretto con particelle

TIP

Prossimo passo: 03 - Scaleform e HUD


Torna alla: Indice Generale