forked from Simnation/Main
273 lines
9.7 KiB
Lua
273 lines
9.7 KiB
Lua
if Config.UseStress then
|
|
local stress = 0
|
|
RegisterNetEvent('hud:client:UpdateStress', function(newStress) -- Add this event with adding stress elsewhere
|
|
stress = newStress
|
|
SendNUIMessage({ type="set_status", statustype = "stress", value = newStress})
|
|
end)
|
|
function IsWhitelistedWeaponStress(weapon)
|
|
if weapon then
|
|
for _, v in pairs(Config.WhitelistedWeaponStress) do
|
|
if weapon == v then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
CreateThread(function() -- Speeding
|
|
if Config.AddStress["on_fastdrive"].enable then
|
|
while true do
|
|
local ped = playerPed
|
|
if IsPedInAnyVehicle(ped, false) then
|
|
local speed = GetEntitySpeed(GetVehiclePedIsIn(ped, false)) * speedMultiplier
|
|
local stressSpeed = 110
|
|
if speed >= stressSpeed then
|
|
TriggerServerEvent('hud:server:GainStress', math.random(Config.AddStress["on_fastdrive"].min, Config.AddStress["on_fastdrive"].max))
|
|
end
|
|
end
|
|
Wait(10000)
|
|
end
|
|
end
|
|
|
|
end)
|
|
|
|
CreateThread(function() -- Shooting
|
|
if Config.AddStress["on_shoot"].enable then
|
|
while true do
|
|
local ped = playerPed
|
|
local weapon = GetSelectedPedWeapon(ped)
|
|
if weapon ~= `WEAPON_UNARMED` then
|
|
if IsPedShooting(ped) then
|
|
if math.random() < 0.15 and not IsWhitelistedWeaponStress(weapon) then
|
|
TriggerServerEvent('hud:server:GainStress', math.random(Config.AddStress["on_shoot"].min, Config.AddStress["on_shoot"].max))
|
|
end
|
|
end
|
|
else
|
|
Wait(900)
|
|
end
|
|
Wait(8)
|
|
end
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
CreateThread(function()
|
|
while true do
|
|
local ped = playerPed
|
|
if stress >= 100 then
|
|
|
|
local ShakeIntensity = GetShakeIntensity(stress)
|
|
local FallRepeat = math.random(2, 4)
|
|
local RagdollTimeout = (FallRepeat * 1750)
|
|
ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', ShakeIntensity)
|
|
SetFlash(0, 0, 500, 3000, 500)
|
|
|
|
if not IsPedRagdoll(ped) and IsPedOnFoot(ped) and not IsPedSwimming(ped) then
|
|
SetPedToRagdollWithFall(ped, RagdollTimeout, RagdollTimeout, 1, GetEntityForwardVector(ped), 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
|
|
end
|
|
|
|
Wait(500)
|
|
for i=1, FallRepeat, 1 do
|
|
Wait(750)
|
|
DoScreenFadeOut(200)
|
|
Wait(1000)
|
|
DoScreenFadeIn(200)
|
|
ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', ShakeIntensity)
|
|
SetFlash(0, 0, 200, 750, 200)
|
|
end
|
|
elseif stress >= 50 then
|
|
local ShakeIntensity = GetShakeIntensity(stress)
|
|
ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', ShakeIntensity)
|
|
SetFlash(0, 0, 500, 2500, 500)
|
|
end
|
|
Wait(GetEffectInterval(stress))
|
|
end
|
|
end)
|
|
|
|
function GetShakeIntensity(stresslevel)
|
|
local retval = 0.05
|
|
local Intensity = {
|
|
["shake"] = {
|
|
[1] = {
|
|
min = 50,
|
|
max = 60,
|
|
intensity = 0.12,
|
|
},
|
|
[2] = {
|
|
min = 60,
|
|
max = 70,
|
|
intensity = 0.17,
|
|
},
|
|
[3] = {
|
|
min = 70,
|
|
max = 80,
|
|
intensity = 0.22,
|
|
},
|
|
[4] = {
|
|
min = 80,
|
|
max = 90,
|
|
intensity = 0.28,
|
|
},
|
|
[5] = {
|
|
min = 90,
|
|
max = 100,
|
|
intensity = 0.32,
|
|
},
|
|
}
|
|
}
|
|
for k, v in pairs(Intensity['shake']) do
|
|
if stresslevel >= v.min and stresslevel <= v.max then
|
|
retval = v.intensity
|
|
break
|
|
end
|
|
end
|
|
return retval
|
|
end
|
|
|
|
function GetEffectInterval(stresslevel)
|
|
local EffectInterval = {
|
|
[1] = {
|
|
min = 50,
|
|
max = 60,
|
|
timeout = math.random(14000, 15000)
|
|
},
|
|
[2] = {
|
|
min = 60,
|
|
max = 70,
|
|
timeout = math.random(12000, 13000)
|
|
},
|
|
[3] = {
|
|
min = 70,
|
|
max = 80,
|
|
timeout = math.random(10000, 11000)
|
|
},
|
|
[4] = {
|
|
min = 80,
|
|
max = 90,
|
|
timeout = math.random(8000, 9000)
|
|
},
|
|
[5] = {
|
|
min = 90,
|
|
max = 100,
|
|
timeout = math.random(6000, 7000)
|
|
}
|
|
}
|
|
local retval = 10000
|
|
for k, v in pairs(EffectInterval) do
|
|
if stresslevel >= v.min and stresslevel <= v.max then
|
|
retval = v.timeout
|
|
break
|
|
end
|
|
end
|
|
return retval
|
|
end
|
|
|
|
end
|
|
|
|
|
|
RegisterNetEvent('esx_basicneeds:onEat')
|
|
AddEventHandler('esx_basicneeds:onEat', function()
|
|
if Config.RemoveStress["on_eat"].enable then
|
|
local val = math.random(Config.RemoveStress["on_eat"].min, Config.RemoveStress["on_eat"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('consumables:client:Eat')
|
|
AddEventHandler('consumables:client:Eat', function()
|
|
if Config.RemoveStress["on_eat"].enable then
|
|
local val = math.random(Config.RemoveStress["on_eat"].min, Config.RemoveStress["on_eat"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
|
|
|
|
RegisterNetEvent('consumables:client:Drink')
|
|
AddEventHandler('consumables:client:Drink', function()
|
|
if Config.RemoveStress["on_drink"].enable then
|
|
local val = math.random(Config.RemoveStress["on_drink"].min, Config.RemoveStress["on_drink"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
RegisterNetEvent('consumables:client:DrinkAlcohol')
|
|
AddEventHandler('consumables:client:DrinkAlcohol', function()
|
|
if Config.RemoveStress["on_drink"].enable then
|
|
local val = math.random(Config.RemoveStress["on_drink"].min, Config.RemoveStress["on_drink"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('devcore_needs:client:StartEat')
|
|
AddEventHandler('devcore_needs:client:StartEat', function()
|
|
if Config.RemoveStress["on_eat"].enable then
|
|
local val = math.random(Config.RemoveStress["on_eat"].min, Config.RemoveStress["on_eat"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
RegisterNetEvent('devcore_needs:client:DrinkShot')
|
|
AddEventHandler('devcore_needs:client:DrinkShot', function()
|
|
if Config.RemoveStress["on_drink"].enable then
|
|
local val = math.random(Config.RemoveStress["on_drink"].min, Config.RemoveStress["on_drink"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('devcore_needs:client:StartDrink')
|
|
AddEventHandler('devcore_needs:client:StartDrink', function()
|
|
if Config.RemoveStress["on_drink"].enable then
|
|
local val = math.random(Config.RemoveStress["on_drink"].min, Config.RemoveStress["on_drink"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('esx_optionalneeds:onDrink')
|
|
AddEventHandler('esx_optionalneeds:onDrink', function()
|
|
if Config.RemoveStress["on_drink"].enable then
|
|
local val = math.random(Config.RemoveStress["on_drink"].min, Config.RemoveStress["on_drink"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
|
|
|
|
RegisterNetEvent('esx_basicneeds:onDrink')
|
|
AddEventHandler('esx_basicneeds:onDrink', function()
|
|
if Config.RemoveStress["on_drink"].enable then
|
|
local val = math.random(Config.RemoveStress["on_drink"].min, Config.RemoveStress["on_drink"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end)
|
|
|
|
AddEventHandler('esx:onPlayerDeath', function()
|
|
TriggerServerEvent('hud:server:RelieveStress', 10000)
|
|
end)
|
|
|
|
RegisterNetEvent('hospital:client:RespawnAtHospital')
|
|
AddEventHandler('hospital:client:RespawnAtHospital', function()
|
|
TriggerServerEvent('hud:server:RelieveStress', 10000)
|
|
end)
|
|
|
|
Citizen.CreateThread(function()
|
|
if Config.RemoveStress["on_swimming"].enable then
|
|
while true do
|
|
Citizen.Wait(10000)
|
|
if IsPedSwimming(playerPed) then
|
|
local val = math.random(Config.RemoveStress["on_swimming"].min, Config.RemoveStress["on_swimming"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
Citizen.CreateThread(function()
|
|
if Config.RemoveStress["on_running"].enable then
|
|
while true do
|
|
Citizen.Wait(10000)
|
|
if IsPedRunning(playerPed) then
|
|
local val = math.random(Config.RemoveStress["on_running"].min, Config.RemoveStress["on_running"].max)
|
|
TriggerServerEvent('hud:server:RelieveStress', val)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|