162 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
-- Variables
 | 
						|
 | 
						|
local blockedPeds = {
 | 
						|
    'mp_m_freemode_01',
 | 
						|
    'mp_f_freemode_01',
 | 
						|
    'tony',
 | 
						|
    'g_m_m_chigoon_02_m',
 | 
						|
    'u_m_m_jesus_01',
 | 
						|
    'a_m_y_stbla_m',
 | 
						|
    'ig_terry_m',
 | 
						|
    'a_m_m_ktown_m',
 | 
						|
    'a_m_y_skater_m',
 | 
						|
    'u_m_y_coop',
 | 
						|
    'ig_car3guy1_m',
 | 
						|
}
 | 
						|
 | 
						|
local lastSpectateCoord = nil
 | 
						|
local isSpectating = false
 | 
						|
 | 
						|
-- Events
 | 
						|
 | 
						|
RegisterNetEvent('qb-admin:client:spectate', function(targetPed)
 | 
						|
    QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin)
 | 
						|
        if not isAdmin then return end
 | 
						|
        local myPed = PlayerPedId()
 | 
						|
        local targetplayer = GetPlayerFromServerId(targetPed)
 | 
						|
        local target = GetPlayerPed(targetplayer)
 | 
						|
        if not isSpectating then
 | 
						|
            isSpectating = true
 | 
						|
            SetEntityVisible(myPed, false)                  -- Set invisible
 | 
						|
            SetEntityCollision(myPed, false, false)         -- Set collision
 | 
						|
            SetEntityInvincible(myPed, true)                -- Set invincible
 | 
						|
            NetworkSetEntityInvisibleToNetwork(myPed, true) -- Set invisibility
 | 
						|
            lastSpectateCoord = GetEntityCoords(myPed)      -- save my last coords
 | 
						|
            NetworkSetInSpectatorMode(true, target)         -- Enter Spectate Mode
 | 
						|
        else
 | 
						|
            isSpectating = false
 | 
						|
            NetworkSetInSpectatorMode(false, target)         -- Remove From Spectate Mode
 | 
						|
            NetworkSetEntityInvisibleToNetwork(myPed, false) -- Set Visible
 | 
						|
            SetEntityCollision(myPed, true, true)            -- Set collision
 | 
						|
            SetEntityCoords(myPed, lastSpectateCoord)        -- Return Me To My Coords
 | 
						|
            SetEntityVisible(myPed, true)                    -- Remove invisible
 | 
						|
            SetEntityInvincible(myPed, false)                -- Remove godmode
 | 
						|
            lastSpectateCoord = nil                          -- Reset Last Saved Coords
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('qb-admin:client:SendReport', function(name, src, msg)
 | 
						|
    TriggerServerEvent('qb-admin:server:SendReport', name, src, msg)
 | 
						|
end)
 | 
						|
 | 
						|
local function getVehicleFromVehList(hash)
 | 
						|
    for _, v in pairs(QBCore.Shared.Vehicles) do
 | 
						|
        if hash == v.hash then
 | 
						|
            return v.model
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
 | 
						|
RegisterNetEvent('qb-admin:client:SaveCar', function()
 | 
						|
    QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin)
 | 
						|
        if not isAdmin then return end
 | 
						|
        local ped = PlayerPedId()
 | 
						|
        local veh = GetVehiclePedIsIn(ped)
 | 
						|
 | 
						|
        if veh ~= nil and veh ~= 0 then
 | 
						|
            local plate = QBCore.Functions.GetPlate(veh)
 | 
						|
            local props = QBCore.Functions.GetVehicleProperties(veh)
 | 
						|
            local hash = props.model
 | 
						|
            local vehname = getVehicleFromVehList(hash)
 | 
						|
            if QBCore.Shared.Vehicles[vehname] ~= nil and next(QBCore.Shared.Vehicles[vehname]) ~= nil then
 | 
						|
                TriggerServerEvent('qb-admin:server:SaveCar', props, QBCore.Shared.Vehicles[vehname], GetHashKey(veh), plate)
 | 
						|
            else
 | 
						|
                QBCore.Functions.Notify(Lang:t('error.no_store_vehicle_garage'), 'error')
 | 
						|
            end
 | 
						|
        else
 | 
						|
            QBCore.Functions.Notify(Lang:t('error.no_vehicle'), 'error')
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
local function LoadPlayerModel(skin)
 | 
						|
    RequestModel(skin)
 | 
						|
    while not HasModelLoaded(skin) do
 | 
						|
        Wait(0)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
local function isPedAllowedRandom(skin)
 | 
						|
    local retval = false
 | 
						|
    for _, v in pairs(blockedPeds) do
 | 
						|
        if v ~= skin then
 | 
						|
            retval = true
 | 
						|
        end
 | 
						|
    end
 | 
						|
    return retval
 | 
						|
end
 | 
						|
 | 
						|
RegisterNetEvent('qb-admin:client:SetModel', function(skin)
 | 
						|
    QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin)
 | 
						|
        if not isAdmin then return end
 | 
						|
        local ped = PlayerPedId()
 | 
						|
        local model = GetHashKey(skin)
 | 
						|
        SetEntityInvincible(ped, true)
 | 
						|
 | 
						|
        if IsModelInCdimage(model) and IsModelValid(model) then
 | 
						|
            LoadPlayerModel(model)
 | 
						|
            SetPlayerModel(PlayerId(), model)
 | 
						|
 | 
						|
            if isPedAllowedRandom(skin) then
 | 
						|
                SetPedRandomComponentVariation(ped, true)
 | 
						|
            end
 | 
						|
 | 
						|
            SetModelAsNoLongerNeeded(model)
 | 
						|
        end
 | 
						|
        SetEntityInvincible(ped, false)
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('qb-admin:client:SetSpeed', function(speed)
 | 
						|
    QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin)
 | 
						|
        if not isAdmin then return end
 | 
						|
        local ped = PlayerId()
 | 
						|
        if speed == 'fast' then
 | 
						|
            SetRunSprintMultiplierForPlayer(ped, 1.49)
 | 
						|
            SetSwimMultiplierForPlayer(ped, 1.49)
 | 
						|
        else
 | 
						|
            SetRunSprintMultiplierForPlayer(ped, 1.0)
 | 
						|
            SetSwimMultiplierForPlayer(ped, 1.0)
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent('qb-admin:client:GiveNuiFocus', function(focus, mouse)
 | 
						|
    SetNuiFocus(focus, mouse)
 | 
						|
end)
 | 
						|
 | 
						|
local performanceModIndices = { 11, 12, 13, 15, 16 }
 | 
						|
function PerformanceUpgradeVehicle(vehicle, customWheels)
 | 
						|
    customWheels = customWheels or false
 | 
						|
    local max
 | 
						|
    if DoesEntityExist(vehicle) and IsEntityAVehicle(vehicle) then
 | 
						|
        SetVehicleModKit(vehicle, 0)
 | 
						|
        for _, modType in ipairs(performanceModIndices) do
 | 
						|
            max = GetNumVehicleMods(vehicle, tonumber(modType)) - 1
 | 
						|
            SetVehicleMod(vehicle, modType, max, customWheels)
 | 
						|
        end
 | 
						|
        ToggleVehicleMod(vehicle, 18, true) -- Turbo
 | 
						|
        SetVehicleFixed(vehicle)
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
RegisterNetEvent('qb-admin:client:maxmodVehicle', function()
 | 
						|
    QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin)
 | 
						|
        if not isAdmin then return end
 | 
						|
        local vehicle = GetVehiclePedIsIn(PlayerPedId())
 | 
						|
        PerformanceUpgradeVehicle(vehicle)
 | 
						|
    end)
 | 
						|
end)
 |