forked from Simnation/Main
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)
|