Files
Elite-Gaming-FiveM/resources/holstersounds/client.lua
T
KingMcDonalds b436d9047b fix and remove something add new
scripts holster the pull gun out  and new mlo
2024-09-20 13:26:29 -07:00

141 lines
3.4 KiB
Lua

local default_weapon = GetHashKey(data.weapon)
local active = false
local ped = nil -- Cache the ped
local currentPedData = nil
local holstered = true
local skins = {
"mp_m_freemode_01",
"mp_f_freemode_01",
}
local weapons = {
"WEAPON_COMBATPISTOL",
"WEAPON_HEAVYPISTOL",
}
-- anims
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local ped = PlayerPedId()
if DoesEntityExist( ped ) and not IsEntityDead( ped ) and not IsPedInAnyVehicle(PlayerPedId(), true) and CheckSkin(ped) then
loadAnimDict( "rcmjosh4" )
loadAnimDict( "weapons@pistol@" )
if CheckWeapon(ped) then
if holstered then
TriggerEvent("holster:sounds", "unholster", 0.2)
TaskPlayAnim(ped, "rcmjosh4", "josh_leadout_cop2", 0.0, 2.0, 1, 16, 32, 0, 0, 0 )
Citizen.Wait(600)
ClearPedTasks(ped)
holstered = false
end
elseif not CheckWeapon(ped) then
if not holstered then
TriggerEvent("holster:sounds", "holster", 0.2)
TaskPlayAnim(ped, "weapons@pistol@", "aim_2_holster", 2.0, 2.0, -1, 48, 10, 0, 0, 0 )
Citizen.Wait(500)
ClearPedTasks(ped)
holstered = true
end
end
end
end
end)
-- functions
function table_invert(t)
local s={}
for k,v in pairs(t) do
s[v]=k
end
return s
end
function CheckSkin(ped)
for i = 1, #skins do
if GetHashKey(skins[i]) == GetEntityModel(ped) then
return true
end
end
return false
end
function CheckWeapon(ped)
for i = 1, #weapons do
if GetHashKey(weapons[i]) == GetSelectedPedWeapon(ped) then
return true
end
end
return false
end
function DisableActions(ped)
DisableControlAction(1, 37, true)
DisablePlayerFiring(ped, true)
end
function loadAnimDict( dict )
while ( not HasAnimDictLoaded( dict ) ) do
RequestAnimDict( dict )
Citizen.Wait( 0 )
end
end
Citizen.CreateThread(function()
while true do
ped = GetPlayerPed(-1)
local ped_hash = GetEntityModel(ped)
local enable = false
for ped, data in pairs(data.peds) do
if GetHashKey(ped) == ped_hash then
enable = true
if data.enabled ~= nil then
enable = data.enabled
end
currentPedData = data
break
end
end
active = enable
Citizen.Wait(5000)
end
end)
local last_weapon = nil
Citizen.CreateThread(function()
while true do
if active then
current_weapon = GetSelectedPedWeapon(ped)
if current_weapon ~= last_weapon then
for component, holsters in pairs(currentPedData.components) do
local holsterDrawable = GetPedDrawableVariation(ped, component)
local holsterTexture = GetPedTextureVariation(ped, component)
local emptyHolster = holsters[holsterDrawable]
if emptyHolster and current_weapon == default_weapon then
SetPedComponentVariation(ped, component, emptyHolster, holsterTexture, 0)
break
end
local filledHolster = table_invert(holsters)[holsterDrawable]
if filledHolster and current_weapon ~= default_weapon and last_weapon == default_weapon then
SetPedComponentVariation(ped, component, filledHolster, holsterTexture, 0)
break
end
end
end
last_weapon = current_weapon
end
Citizen.Wait(200)
end
end)
AddEventHandler('holster:sounds', function(soundFile, soundVolume)
SendNUIMessage({
transactionType = 'playSound',
transactionFile = soundFile,
transactionVolume = soundVolume
})
end)