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)
 | 
