forked from Simnation/Main
204 lines
6.4 KiB
Lua
204 lines
6.4 KiB
Lua
function GetPlayerHeading()
|
|
local heading = GetEntityHeading(cache.ped)
|
|
|
|
if heading >= 315 or heading < 45 then
|
|
return locale('north')
|
|
elseif heading >= 45 and heading < 135 then
|
|
return locale('west')
|
|
elseif heading >= 135 and heading < 225 then
|
|
return locale('south')
|
|
elseif heading >= 225 and heading < 315 then
|
|
return locale('east')
|
|
end
|
|
end
|
|
|
|
function GetPlayerGender()
|
|
local gender = locale('male')
|
|
if QBCore.Functions.GetPlayerData().charinfo.gender == 1 then
|
|
gender = locale('female')
|
|
end
|
|
return gender
|
|
end
|
|
|
|
function GetIsHandcuffed()
|
|
return QBCore.Functions.GetPlayerData()?.metadata?.ishandcuffed
|
|
end
|
|
|
|
function IsOnDuty()
|
|
if Config.OnDutyOnly then
|
|
if QBCore.Functions.GetPlayerData().job.onduty then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
|
|
---@return boolean
|
|
local function HasPhone()
|
|
for _, item in ipairs(Config.PhoneItems) do
|
|
if QBCore.Functions.HasItem(item) then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
---@param coords table
|
|
---@return string
|
|
function GetStreetAndZone(coords)
|
|
local zone = GetLabelText(GetNameOfZone(coords.x, coords.y, coords.z))
|
|
local street = GetStreetNameFromHashKey(GetStreetNameAtCoord(coords.x, coords.y, coords.z))
|
|
return street .. ", " .. zone
|
|
end
|
|
|
|
---@param vehicle string
|
|
---@return string
|
|
local function getVehicleColor(vehicle)
|
|
local vehicleColor1, vehicleColor2 = GetVehicleColours(vehicle)
|
|
local color1 = Config.Colors[tostring(vehicleColor1)]
|
|
local color2 = Config.Colors[tostring(vehicleColor2)]
|
|
|
|
if color1 and color2 then
|
|
return color2 .. " on " .. color1
|
|
elseif color1 then
|
|
return color1
|
|
elseif color2 then
|
|
return color2
|
|
else
|
|
return "Unknown"
|
|
end
|
|
end
|
|
|
|
---@param vehicle string
|
|
---@return string
|
|
local function getVehicleDoors(vehicle)
|
|
local doorCount = 0
|
|
|
|
if GetEntityBoneIndexByName(vehicle, 'door_pside_f') ~= -1 then doorCount = doorCount + 1 end
|
|
if GetEntityBoneIndexByName(vehicle, 'door_pside_r') ~= -1 then doorCount = doorCount + 1 end
|
|
if GetEntityBoneIndexByName(vehicle, 'door_dside_f') ~= -1 then doorCount = doorCount + 1 end
|
|
if GetEntityBoneIndexByName(vehicle, 'door_dside_r') ~= -1 then doorCount = doorCount + 1 end
|
|
|
|
if doorCount == 2 then
|
|
doorCount = locale('two_door')
|
|
elseif doorCount == 3 then
|
|
doorCount = locale('three_door')
|
|
elseif doorCount == 4 then
|
|
doorCount = locale('four_door')
|
|
else
|
|
doorCount = 'unknown'
|
|
end
|
|
|
|
return doorCount
|
|
end
|
|
|
|
---@param vehicle string
|
|
---@return table
|
|
function GetVehicleData(vehicle)
|
|
local data = {}
|
|
|
|
local vehicleClass = {
|
|
[0] = locale('compact'),
|
|
[1] = locale('sedan'),
|
|
[2] = locale('suv'),
|
|
[3] = locale('coupe'),
|
|
[4] = locale('muscle'),
|
|
[5] = locale('sports_classic'),
|
|
[6] = locale('sports'),
|
|
[7] = locale('super'),
|
|
[8] = locale('motorcycle'),
|
|
[9] = locale('offroad'),
|
|
[10] = locale('industrial'),
|
|
[11] = locale('utility'),
|
|
[12] = locale('van'),
|
|
[17] = locale('service'),
|
|
[19] = locale('military'),
|
|
[20] = locale('truck')
|
|
}
|
|
|
|
data.class = vehicleClass[GetVehicleClass(vehicle)] or "Unknown"
|
|
data.name = GetLabelText(GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)))
|
|
data.plate = GetVehicleNumberPlateText(vehicle)
|
|
data.doors = getVehicleDoors(vehicle)
|
|
data.color = getVehicleColor(vehicle)
|
|
data.id = NetworkGetNetworkIdFromEntity(vehicle)
|
|
|
|
return data
|
|
end
|
|
|
|
function PhoneAnimation()
|
|
lib.requestAnimDict("cellphone@in_car@ds", 500)
|
|
|
|
if not IsEntityPlayingAnim(cache.ped, "cellphone@in_car@ds", "cellphone_call_listen_base", 3) then
|
|
TaskPlayAnim(cache.ped, "cellphone@in_car@ds", "cellphone_call_listen_base", 3.0, 3.0, -1, 50, 0, false, false, false)
|
|
end
|
|
|
|
Wait(2500)
|
|
StopEntityAnim(cache.ped, "cellphone_call_listen_base", "cellphone@in_car@ds", 3)
|
|
end
|
|
|
|
---@param message string
|
|
---@return boolean
|
|
function IsCallAllowed(message)
|
|
local msgLength = string.len(message)
|
|
|
|
if msgLength == 0 then return false end
|
|
if GetIsHandcuffed() then return false end
|
|
if Config.PhoneRequired and not HasPhone() then QBCore.Functions.Notify('You need a communications device for this.', 'error', 5000) return false end
|
|
|
|
return true
|
|
end
|
|
|
|
local weaponTable = {
|
|
[584646201] = "CLASS 2: AP-Pistol",
|
|
[453432689] = "CLASS 1: Pistol",
|
|
[3219281620] = "CLASS 1: Pistol MK2",
|
|
[1593441988] = "CLASS 1: Combat Pistol",
|
|
[-1716589765] = "CLASS 1: Heavy Pistol",
|
|
[-1076751822] = "CLASS 1: SNS-Pistol",
|
|
[-771403250] = "CLASS 2: Desert Eagle",
|
|
[137902532] = "CLASS 2: Vintage Pistol",
|
|
[-598887786] = "CLASS 2: Marksman Pistol",
|
|
[-1045183535] = "CLASS 2: Revolver",
|
|
[911657153] = "Taser",
|
|
[324215364] = "CLASS 2: Micro-SMG",
|
|
[-619010992] = "CLASS 2: Machine-Pistol",
|
|
[736523883] = "CLASS 2: SMG",
|
|
[2024373456] = "CLASS 2: SMG MK2",
|
|
[-270015777] = "CLASS 2: Assault SMG",
|
|
[171789620] = "CLASS 2: Combat PDW",
|
|
[-1660422300] = "CLASS 4: Combat MG",
|
|
[3686625920] = "CLASS 4: Combat MG MK2",
|
|
[1627465347] = "CLASS 4: Gusenberg",
|
|
[-1121678507] = "CLASS 2: Mini SMG",
|
|
[-1074790547] = "CLASS 3: Assaultrifle",
|
|
[961495388] = "CLASS 3: Assaultrifle MK2",
|
|
[-2084633992] = "CLASS 3: Carbinerifle",
|
|
[4208062921] = "CLASS 3: Carbinerifle MK2",
|
|
[-1357824103] = "CLASS 3: Advancedrifle",
|
|
[-1063057011] = "CLASS 3: Specialcarbine",
|
|
[2132975508] = "CLASS 3: Bulluprifle",
|
|
[1649403952] = "CLASS 3: Compactrifle",
|
|
[100416529] = "CLASS 4: Sniperrifle",
|
|
[205991906] = "CLASS 4: Heavy Sniper",
|
|
[177293209] = "CLASS 4: Heavy Sniper MK2",
|
|
[-952879014] = "CLASS 4: Marksmanrifle",
|
|
[487013001] = "CLASS 2: Pumpshotgun",
|
|
[2017895192] = "CLASS 2: Sawnoff Shotgun",
|
|
[-1654528753] = "CLASS 3: Bullupshotgun",
|
|
[-494615257] = "CLASS 3: Assaultshotgun",
|
|
[-1466123874] = "CLASS 3: Musket",
|
|
[984333226] = "CLASS 3: Heavyshotgun",
|
|
[-275439685] = "CLASS 2: Doublebarrel Shotgun",
|
|
[317205821] = "CLASS 2: Autoshotgun",
|
|
[-1568386805] = "CLASS 5: GRENADE LAUNCHER",
|
|
[-1312131151] = "CLASS 5: RPG",
|
|
[125959754] = "CLASS 5: Compactlauncher"
|
|
}
|
|
|
|
function GetWeaponName()
|
|
local currentWeapon = GetSelectedPedWeapon(cache.ped)
|
|
return weaponTable[currentWeapon] or "Unknown"
|
|
end
|