cl_utils.lua

CreateThread(function()
    for k,v in pairs(Config.Drones) do
        exports["ak4y-core"]:AddModelToTargeting(v.model, "Take Drone", function(entity)
            if type(entity) == "table" then
                local istaken = Entity(entity.entity).state.istaken
                if not istaken then
                    EnsureControlOfEntity(entity.entity)
                    Entity(entity.entity).state:set('istaken', true, true)
                    local data = Entity(entity.entity).state.data
                    TriggerServerEvent('ak4y-drone:GetDrone', data)
                    DeleteObject(entity.entity)
                else
                    exports["ak4y-core"]:NotifyViaFramework(Config.locales[Config.Locale].game.already_taken, "error")
                end
            else
                local istaken = Entity(entity).state.istaken
                if not istaken then
                    EnsureControlOfEntity(entity)
                    Entity(entity).state:set('istaken', true, true)
                    local data = Entity(entity).state.data
                    TriggerServerEvent('ak4y-drone:GetDrone', data)
                    DeleteObject(entity)
                else
                    exports["ak4y-core"]:NotifyViaFramework(Config.locales[Config.Locale].game.already_taken, "error")
                end
            end
        end, nil, nil, 2.5)

        exports["ak4y-core"]:AddModelToTargeting(v.model, "Check Drone Abilities", function(entity)
            if type(entity) == "table" then
                local data = Entity(entity.entity).state.data
                if data.ownerid == GetPlayerServerId(PlayerId()) then
                    TriggerEvent('ak4y-drone:checkabilities', data)
                else
                    exports["ak4y-core"]:NotifyViaFramework(Config.locales[Config.Locale].game.not_our_drone, "error")
                end
            else
                local data = Entity(entity).state.data
                if data.ownerid == GetPlayerServerId(PlayerId()) then
                    TriggerEvent('ak4y-drone:checkabilities', data)
                else
                    exports["ak4y-core"]:NotifyViaFramework(Config.locales[Config.Locale].game.not_our_drone, "error")
                end
            end
        end, nil, nil, 2.5)
    end
end)

CreateThread(function()
    for k,v in pairs(Config.DroneShops) do
        exports["ak4y-core"]:AddZoneToTargeting(
            v.coords,
            90.0,
            vec3(0.45, 0.35, 0.45),
            "Open Drone Shop",
            "ak4y-drone:OpenShop",
            function()
                if v.job then
                    return IsJobValid(v.job)
                else    
                    return true
                end
            end,
            nil,
            2.5,
            "fas fa-sign-in-alt"
        )
    end
end)

function IsJobValid(jobs)
    for k,v in pairs(jobs) do
        if exports["ak4y-core"]:GetPlayerJob() == v then
            return true
        end
    end
    return false
end

AddEventHandler('onResourceStop', function(resourceName)
    if resourceName ~= GetCurrentResourceName() then return end
    for k,v in pairs(Config.Drones) do
        exports["ak4y-core"]:RemoveModelFromTargeting(v.model)
    end
end)

Last updated