forked from Simnation/Main
fixes etc
This commit is contained in:
parent
4a0c8c6204
commit
453b281a4b
644 changed files with 1907 additions and 2456 deletions
65
resources/[standalone]/rpemotes-reborn/client/PTFX.lua
Normal file
65
resources/[standalone]/rpemotes-reborn/client/PTFX.lua
Normal file
|
@ -0,0 +1,65 @@
|
|||
local PlayerParticles = {}
|
||||
|
||||
function PtfxThis(asset)
|
||||
while not HasNamedPtfxAssetLoaded(asset) do
|
||||
RequestNamedPtfxAsset(asset)
|
||||
Wait(10)
|
||||
end
|
||||
UseParticleFxAsset(asset)
|
||||
end
|
||||
|
||||
function PtfxStart()
|
||||
LocalPlayer.state:set('ptfx', true, true)
|
||||
end
|
||||
|
||||
function PtfxStop()
|
||||
LocalPlayer.state:set('ptfx', nil, true)
|
||||
end
|
||||
|
||||
AddStateBagChangeHandler('ptfx', '', function(bagName, key, value, _unused, replicated)
|
||||
local plyId = tonumber(bagName:gsub('player:', ''), 10)
|
||||
|
||||
if (PlayerParticles[plyId] and value) or (not PlayerParticles[plyId] and not value) then return end
|
||||
|
||||
local ply = GetPlayerFromServerId(plyId)
|
||||
if ply <= 0 then return end
|
||||
|
||||
local plyPed = GetPlayerPed(ply)
|
||||
if not DoesEntityExist(plyPed) then return end
|
||||
|
||||
local stateBag = Player(plyId).state
|
||||
|
||||
if value then
|
||||
local boneIndex = stateBag.ptfxBone and GetPedBoneIndex(plyPed, stateBag.ptfxBone) or GetEntityBoneIndexByName(stateBag.ptfxName, "VFX")
|
||||
local entityTarget = plyPed
|
||||
|
||||
if stateBag.ptfxPropNet then
|
||||
local propObj = NetToObj(stateBag.ptfxPropNet)
|
||||
if DoesEntityExist(propObj) then
|
||||
entityTarget = propObj
|
||||
end
|
||||
end
|
||||
|
||||
PtfxThis(stateBag.ptfxAsset)
|
||||
|
||||
local offset = stateBag.ptfxOffset
|
||||
local rot = stateBag.ptfxRot
|
||||
PlayerParticles[plyId] = StartNetworkedParticleFxLoopedOnEntityBone(stateBag.ptfxName, entityTarget, offset.x, offset.y, offset.z, rot.x, rot.y, rot.z, boneIndex, (stateBag.ptfxScale or 1) + 0.0, false, false, false)
|
||||
|
||||
local color = stateBag.ptfxColor
|
||||
if color then
|
||||
if color[1] and type(color[1]) == 'table' then
|
||||
local randomIndex = math.random(1, #color)
|
||||
color = color[randomIndex]
|
||||
end
|
||||
SetParticleFxLoopedAlpha(PlayerParticles[plyId], color.A)
|
||||
SetParticleFxLoopedColour(PlayerParticles[plyId], color.R / 255, color.G / 255, color.B / 255, false)
|
||||
end
|
||||
DebugPrint("Started PTFX: " .. PlayerParticles[plyId])
|
||||
else
|
||||
DebugPrint("Stopped PTFX: " .. PlayerParticles[plyId])
|
||||
StopParticleFxLooped(PlayerParticles[plyId], false)
|
||||
RemoveNamedPtfxAsset(stateBag.ptfxAsset)
|
||||
PlayerParticles[plyId] = nil
|
||||
end
|
||||
end)
|
Loading…
Add table
Add a link
Reference in a new issue