วิธีใช้ Particle FX แบบ Non-Looped ใน FiveM (One-Shot Effects)
วิธีใช้ Particle FX แบบ Non-Looped ใน FiveM
Non-Looped Particle Effects คือ effect ที่เล่นครั้งเดียวแล้วจบ — เหมาะกับ การระเบิด, impact, กระสุนกระทบ, หรือ flash ต่างๆ
Native Functions สำหรับ Non-Looped
-- เล่นที่พิกัด world (x, y, z)
StartParticleFxNonLoopedAtCoord(
effectName, -- string: ชื่อ effect
x, y, z, -- float: พิกัด
rotX, rotY, rotZ, -- float: rotation
scale, -- float: ขนาด (1.0 = ปกติ)
xAxis, yAxis, zAxis -- bool: flip axis
)
-- เล่นบน Entity (ตัวละคร/รถ/วัตถุ)
StartParticleFxNonLoopedOnEntity(
effectName,
entity, -- entity handle
offsetX, offsetY, offsetZ, -- offset จาก entity
rotX, rotY, rotZ,
scale,
xAxis, yAxis, zAxis
)
-- เล่นบน Bone ของ Entity
StartParticleFxNonLoopedOnEntityBone(
effectName,
entity,
offsetX, offsetY, offsetZ,
rotX, rotY, rotZ,
boneIndex, -- int: bone index
scale,
xAxis, yAxis, zAxis
)
ตัวอย่าง: Effect การระเบิด
local function PlayExplosionEffect(coords)
-- Request dictionary
RequestNamedPtfxAsset("scr_rcbarry2")
while not HasNamedPtfxAssetLoaded("scr_rcbarry2") do
Citizen.Wait(0)
end
-- เล่น effect
UseParticleFxAssetNextCall("scr_rcbarry2")
StartParticleFxNonLoopedAtCoord(
"scr_exp_clown_explode",
coords.x, coords.y, coords.z,
0.0, 0.0, 0.0,
2.0, -- scale ใหญ่ขึ้น 2 เท่า
false, false, false
)
-- Release asset หลังใช้
RemoveNamedPtfxAsset("scr_rcbarry2")
end
ตัวอย่าง: กระสุนกระทบพื้น
local function BulletImpactEffect(coords)
RequestNamedPtfxAsset("core")
while not HasNamedPtfxAssetLoaded("core") do
Citizen.Wait(0)
end
UseParticleFxAssetNextCall("core")
StartParticleFxNonLoopedAtCoord(
"ent_sht_dirt", -- ฝุ่นกระเด็น
coords.x, coords.y, coords.z,
0.0, 0.0, 0.0,
0.5,
false, false, false
)
end
Effect ยอดนิยมสำหรับ Non-Looped
| Effect Name | Dictionary | คำอธิบาย |
|---|---|---|
exp_grd_grenade |
core |
ระเบิดระดับพื้น |
exp_air_molotov |
core |
Molotov cocktail |
ent_sht_dirt |
core |
ฝุ่นกระเด็น |
ent_sht_blood |
core |
เลือดกระเด็น |
scr_exp_clown_explode |
scr_rcbarry2 |
การระเบิดใหญ่ |
muz_pistol_b |
core |
flash กระสุน pistol |
Best Practice: Cleanup หลังใช้
-- ควร remove asset หลัง non-looped effect
-- เพื่อ free VRAM
RemoveNamedPtfxAsset("core")
หมายเหตุ: "core" dictionary ใช้บ่อยมาก — อาจ keep ไว้ใน memory ได้ตลอด แต่ dictionary เฉพาะทาง (เช่น
scr_*) ควร remove หลังใช้
สรุป
Non-Looped Effects ใช้งานง่าย ไม่ต้องจัดการ lifecycle — เล่นปุ๊บ จบเลย เหมาะกับ impact/explosion ทุกประเภท
Related Articles
วิธีจัดการ Version และ Update Script ในเซิร์ฟเวอร์ FiveM อย่างมืออาชีพ
อัพเดท script บน production โดยไม่ให้เซิร์ฟเวอร์ down — เรียนรู้ระบบจัดการ version, Git workflow, และกลยุทธ์ deploy ที่ลดความเสี่ยง
หลักการ Clean Code สำหรับ FiveM Script Developer
โค้ดที่ทำงานได้กับโค้ดที่ดีไม่ใช่สิ่งเดียวกัน — เรียนรู้หลักการ clean code ที่ทำให้ FiveM script ของคุณอ่านง่าย, แก้ง่าย และขยายได้
วิธีทดสอบ FiveM Script ก่อน Deploy ขึ้น Production Server
อย่า deploy script ที่ยังไม่ผ่านการทดสอบลงบน production — เรียนรู้วิธีสร้าง testing workflow สำหรับ FiveM ที่ลด downtime และป้องกัน bug จากผู้เล่นจริง