b436d9047b
scripts holster the pull gun out and new mlo
141 lines
3.4 KiB
Lua
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) |