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.
| Obiettivo | Dettagli |
|---|---|
| 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:
- Request un “asset” (ptfx dictionary) e aspetta che sia caricato
- Use l’asset
- 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
| Tipo | Funzione | Uso |
|---|---|---|
| Non-looped | StartParticleFxNonLoopedAtCoord | Esplosioni, one-shot |
| Looped | StartParticleFxLoopedAtCoord / ...OnEntity | Fuoco, 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
StopParticleFxLoopedquando 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
F8DevTools / 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