forked from Simnation/Main
239 lines
11 KiB
Lua
239 lines
11 KiB
Lua
![]() |
QBCore = exports['qb-core']:GetCoreObject()
|
||
|
local ShowBlips = false
|
||
|
local ShowNames = false
|
||
|
local NetCheck1 = false
|
||
|
local NetCheck2 = false
|
||
|
|
||
|
CreateThread(function()
|
||
|
while true do
|
||
|
Wait(1000)
|
||
|
if NetCheck1 or NetCheck2 then
|
||
|
TriggerServerEvent('qb-admin:server:GetPlayersForBlips')
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent('qb-admin:client:toggleBlips', function()
|
||
|
QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin)
|
||
|
if not isAdmin then return end
|
||
|
if not ShowBlips then
|
||
|
ShowBlips = true
|
||
|
NetCheck1 = true
|
||
|
QBCore.Functions.Notify(Lang:t('success.blips_activated'), 'success')
|
||
|
else
|
||
|
ShowBlips = false
|
||
|
QBCore.Functions.Notify(Lang:t('error.blips_deactivated'), 'error')
|
||
|
end
|
||
|
end)
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent('qb-admin:client:toggleNames', function()
|
||
|
QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin)
|
||
|
if not isAdmin then return end
|
||
|
if not ShowNames then
|
||
|
ShowNames = true
|
||
|
NetCheck2 = true
|
||
|
QBCore.Functions.Notify(Lang:t('success.names_activated'), 'success')
|
||
|
else
|
||
|
ShowNames = false
|
||
|
QBCore.Functions.Notify(Lang:t('error.names_deactivated'), 'error')
|
||
|
end
|
||
|
end)
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent('qb-admin:client:Show', function(players)
|
||
|
QBCore.Functions.TriggerCallback('qb-admin:isAdmin', function(isAdmin)
|
||
|
if not isAdmin then return end
|
||
|
for _, player in pairs(players) do
|
||
|
local playeridx = GetPlayerFromServerId(player.id)
|
||
|
local ped = GetPlayerPed(playeridx)
|
||
|
local blip = GetBlipFromEntity(ped)
|
||
|
local name = 'ID: ' .. player.id .. ' | ' .. player.name
|
||
|
|
||
|
local Tag = CreateFakeMpGamerTag(ped, name, false, false, '', false)
|
||
|
SetMpGamerTagAlpha(Tag, 0, 255) -- Sets "MP_TAG_GAMER_NAME" bar alpha to 100% (not needed just as a fail safe)
|
||
|
SetMpGamerTagAlpha(Tag, 2, 255) -- Sets "MP_TAG_HEALTH_ARMOUR" bar alpha to 100%
|
||
|
SetMpGamerTagAlpha(Tag, 4, 255) -- Sets "MP_TAG_AUDIO_ICON" bar alpha to 100%
|
||
|
SetMpGamerTagAlpha(Tag, 6, 255) -- Sets "MP_TAG_PASSIVE_MODE" bar alpha to 100%
|
||
|
SetMpGamerTagHealthBarColour(Tag, 25) --https://wiki.rage.mp/index.php?title=Fonts_and_Colors
|
||
|
|
||
|
if ShowNames then
|
||
|
SetMpGamerTagVisibility(Tag, 0, true) -- Activates the player ID Char name and FiveM name
|
||
|
SetMpGamerTagVisibility(Tag, 2, true) -- Activates the health (and armor if they have it on) bar below the player names
|
||
|
if NetworkIsPlayerTalking(playeridx) then
|
||
|
SetMpGamerTagVisibility(Tag, 4, true) -- If player is talking a voice icon will show up on the left side of the name
|
||
|
else
|
||
|
SetMpGamerTagVisibility(Tag, 4, false)
|
||
|
end
|
||
|
if GetPlayerInvincible(playeridx) then
|
||
|
SetMpGamerTagVisibility(Tag, 6, true) -- If player is in godmode a circle with a line through it will show up
|
||
|
else
|
||
|
SetMpGamerTagVisibility(Tag, 6, false)
|
||
|
end
|
||
|
else
|
||
|
SetMpGamerTagVisibility(Tag, 0, false)
|
||
|
SetMpGamerTagVisibility(Tag, 2, false)
|
||
|
SetMpGamerTagVisibility(Tag, 4, false)
|
||
|
SetMpGamerTagVisibility(Tag, 6, false)
|
||
|
RemoveMpGamerTag(Tag) -- Unloads the tags till you activate it again
|
||
|
NetCheck2 = false
|
||
|
end
|
||
|
|
||
|
-- Blips Logic
|
||
|
if ShowBlips then
|
||
|
if not DoesBlipExist(blip) then
|
||
|
blip = AddBlipForEntity(ped)
|
||
|
SetBlipSprite(blip, 1)
|
||
|
ShowHeadingIndicatorOnBlip(blip, true)
|
||
|
else
|
||
|
local veh = GetVehiclePedIsIn(ped, false)
|
||
|
local blipSprite = GetBlipSprite(blip)
|
||
|
--Payer Death
|
||
|
if not GetEntityHealth(ped) then
|
||
|
if blipSprite ~= 274 then
|
||
|
SetBlipSprite(blip, 274) --Dead icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Player in Vehicle
|
||
|
elseif veh ~= 0 then
|
||
|
local classveh = GetVehicleClass(veh)
|
||
|
local modelveh = GetEntityModel(veh)
|
||
|
--MotorCycles (8) or Cycles (13)
|
||
|
if classveh == 8 or classveh == 13 then
|
||
|
if blipSprite ~= 226 then
|
||
|
SetBlipSprite(blip, 226) --Motorcycle icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--OffRoad (9)
|
||
|
elseif classveh == 9 then
|
||
|
if blipSprite ~= 757 then
|
||
|
SetBlipSprite(blip, 757) --OffRoad icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Industrial (10)
|
||
|
elseif classveh == 10 then
|
||
|
if blipSprite ~= 477 then
|
||
|
SetBlipSprite(blip, 477) --Truck icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Utility (11)
|
||
|
elseif classveh == 11 then
|
||
|
if blipSprite ~= 477 then
|
||
|
SetBlipSprite(blip, 477) --Truck icon despite finding better one
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Vans (12)
|
||
|
elseif classveh == 12 then
|
||
|
if blipSprite ~= 67 then
|
||
|
SetBlipSprite(blip, 67) --Van icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Boats (14)
|
||
|
elseif classveh == 14 then
|
||
|
if blipSprite ~= 427 then
|
||
|
SetBlipSprite(blip, 427) --Boat icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Helicopters (15)
|
||
|
elseif classveh == 15 then
|
||
|
if blipSprite ~= 422 then
|
||
|
SetBlipSprite(blip, 422) --Moving helicopter icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Planes (16)
|
||
|
elseif classveh == 16 then
|
||
|
if modelveh == 'besra' or modelveh == 'hydra' or modelveh == 'lazer' then
|
||
|
if blipSprite ~= 424 then
|
||
|
SetBlipSprite(blip, 424) --Jet icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
elseif blipSprite ~= 423 then
|
||
|
SetBlipSprite(blip, 423) --Plane icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Service (17)
|
||
|
elseif classveh == 17 then
|
||
|
if blipSprite ~= 198 then
|
||
|
SetBlipSprite(blip, 198) --Taxi icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Emergency (18)
|
||
|
elseif classveh == 18 then
|
||
|
if blipSprite ~= 56 then
|
||
|
SetBlipSprite(blip, 56) --Cop icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Military (19)
|
||
|
elseif classveh == 19 then
|
||
|
if modelveh == 'rhino' then
|
||
|
if blipSprite ~= 421 then
|
||
|
SetBlipSprite(blip, 421) --Tank icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
elseif blipSprite ~= 750 then
|
||
|
SetBlipSprite(blip, 750) --Military truck icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Commercial (20)
|
||
|
elseif classveh == 20 then
|
||
|
if blipSprite ~= 477 then
|
||
|
SetBlipSprite(blip, 477) --Truck icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
--Every car (0, 1, 2, 3, 4, 5, 6, 7)
|
||
|
else
|
||
|
if modelveh == 'insurgent' or modelveh == 'insurgent2' or modelveh == 'limo2' then
|
||
|
if blipSprite ~= 426 then
|
||
|
SetBlipSprite(blip, 426) --Armed car icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, false)
|
||
|
end
|
||
|
elseif blipSprite ~= 225 then
|
||
|
SetBlipSprite(blip, 225) --Car icon
|
||
|
ShowHeadingIndicatorOnBlip(blip, true)
|
||
|
end
|
||
|
end
|
||
|
-- Show number in case of passangers
|
||
|
local passengers = GetVehicleNumberOfPassengers(veh)
|
||
|
if passengers then
|
||
|
if not IsVehicleSeatFree(veh, -1) then
|
||
|
passengers = passengers + 1
|
||
|
end
|
||
|
ShowNumberOnBlip(blip, passengers)
|
||
|
else
|
||
|
HideNumberOnBlip(blip)
|
||
|
end
|
||
|
--Player on Foot
|
||
|
else
|
||
|
HideNumberOnBlip(blip)
|
||
|
if blipSprite ~= 1 then
|
||
|
SetBlipSprite(blip, 1)
|
||
|
ShowHeadingIndicatorOnBlip(blip, true)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
SetBlipRotation(blip, math.ceil(GetEntityHeading(veh)))
|
||
|
SetBlipNameToPlayerName(blip, playeridx)
|
||
|
SetBlipScale(blip, 0.85)
|
||
|
|
||
|
if IsPauseMenuActive() then
|
||
|
SetBlipAlpha(blip, 255)
|
||
|
else
|
||
|
local x1, y1 = table.unpack(GetEntityCoords(PlayerPedId(), true))
|
||
|
local x2, y2 = table.unpack(GetEntityCoords(GetPlayerPed(playeridx), true))
|
||
|
local distance = (math.floor(math.abs(math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))) / -1)) + 900
|
||
|
if distance < 0 then
|
||
|
distance = 0
|
||
|
elseif distance > 255 then
|
||
|
distance = 255
|
||
|
end
|
||
|
SetBlipAlpha(blip, distance)
|
||
|
end
|
||
|
end
|
||
|
else
|
||
|
RemoveBlip(blip)
|
||
|
NetCheck1 = false
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
end)
|