forked from Simnation/Main
105 lines
No EOL
3.6 KiB
Lua
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) |