1
0
Fork 0
forked from Simnation/Main
Main/resources/[jobs]/[crime]/r_bridge-1.2.3/utils/client/natives.lua
2025-07-20 22:10:36 +02:00

105 lines
No EOL
3.6 KiB
Lua

local blips = {}
Core.Natives = {}
function Core.Natives.CreateBlip(coords, sprite, color, scale, label, shortRange)
local blip = AddBlipForCoord(coords.x, coords.y, coords.z)
SetBlipSprite(blip, sprite)
SetBlipColour(blip, color)
SetBlipScale(blip, scale)
SetBlipAsShortRange(blip, shortRange)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(label)
EndTextCommandSetBlipName(blip)
blips[#blips + 1] = { id = blip, creator = GetInvokingResource() }
return blips[#blips].id
end
function Core.Natives.RemoveBlip(id)
for _, blip in pairs(blips) do
if blip.id == id then
RemoveBlip(id)
table.remove(blips, _)
return
end
end
end
function Core.Natives.SetGpsRoute(render, coords, color)
if not render then SetGpsMultiRouteRender(render) return end
ClearGpsMultiRoute()
StartGpsMultiRoute(color, true, true)
AddPointToGpsMultiRoute(coords.x, coords.y, coords.z)
SetGpsMultiRouteRender(render)
end
function Core.Natives.CreateProp(model, coords, heading, networked)
RequestModel(joaat(model))
while not HasModelLoaded(joaat(model)) do Wait(10) end
local prop = CreateObject(joaat(model), coords.x, coords.y, coords.z, networked, false, false)
SetEntityHeading(prop, heading)
SetModelAsNoLongerNeeded(model)
return prop
end
function Core.Natives.CreateNpc(model, coords, heading, networked)
RequestModel(model)
while not HasModelLoaded(model) do Wait(10) end
local npc = CreatePed(0, model, coords.x, coords.y, coords.z, heading, networked, false)
SetModelAsNoLongerNeeded(model)
return npc
end
function Core.Natives.CreateVeh(model, coords, heading, networked)
RequestModel(model)
while not HasModelLoaded(model) do Wait(10) end
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, heading, networked, false)
SetModelAsNoLongerNeeded(model)
return veh
end
function Core.Natives.SetEntityProperties(entity, frozen, invincible, oblivious)
if not DoesEntityExist(entity) then return end
FreezeEntityPosition(entity, frozen)
SetEntityInvincible(entity, invincible)
SetBlockingOfNonTemporaryEvents(entity, oblivious)
end
function Core.Natives.PlayAnim(ped, dict, anim, duration, flag, playback)
RequestAnimDict(dict)
while not HasAnimDictLoaded(dict) do Wait(10) end
TaskPlayAnim(ped, dict, anim, 8.0, 8.0, duration, flag, playback, false, false, false)
RemoveAnimDict(dict)
end
function Core.Natives.PlayPtFx(coords, asset, effect, scale)
RequestNamedPtfxAsset(asset)
while not HasNamedPtfxAssetLoaded(asset) do Wait(10) end
UseParticleFxAsset(asset)
StartParticleFxNonLoopedAtCoord(effect, coords.x, coords.y, coords.z, 0, 0, 0, scale, false, false, false)
RemoveNamedPtfxAsset(asset)
end
function Core.Natives.PlayPtFxLooped(coords, asset, effect, scale, duration)
RequestNamedPtfxAsset(asset)
while not HasNamedPtfxAssetLoaded(asset) do Wait(0) end
UseParticleFxAsset(asset)
local ptFx = StartParticleFxLoopedAtCoord(effect, coords.x, coords.y, coords.z, 0, 0, 0, scale, false, false, false, false)
SetTimeout(duration, function()
StopParticleFxLooped(ptFx, false)
RemoveNamedPtfxAsset(asset)
end)
end
AddEventHandler('onResourceStop', function(resource)
local removed = 0
if resource ~= GetCurrentResourceName() then
for _, blip in pairs(blips) do
if blip.creator == resource then
RemoveBlip(blip.id)
removed = removed + 1
end
end
if removed > 0 then print('[DEBUG] - removed blips for ' .. resource) end
end
end)