753 lines
		
	
	
	
		
			26 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			753 lines
		
	
	
	
		
			26 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| DrugsCreator.allEffects = {}
 | |
| DrugsCreator.activeEffects = {}
 | |
| 
 | |
| local function startTimecycle(timecycleName, maxTimecycleStrenght)
 | |
|     maxTimecycleStrenght = maxTimecycleStrenght or 1.0
 | |
| 
 | |
|     local time = 10000 -- Time to reach max strenght
 | |
|     local interval = 100 -- Strenght increases each interval
 | |
| 
 | |
|     local streghtToAddEachInterval = maxTimecycleStrenght / (time/interval)
 | |
| 
 | |
|     local timecycleStrength = 0.0
 | |
| 
 | |
|     SetTimecycleModifier(timecycleName)
 | |
|     
 | |
|     while time >= 0 do
 | |
|         SetTimecycleModifierStrength(timecycleStrength)
 | |
|         Citizen.Wait(interval)
 | |
|         time = time - interval
 | |
| 
 | |
|         timecycleStrength = timecycleStrength + streghtToAddEachInterval
 | |
|     end
 | |
| end
 | |
| 
 | |
| local function startShakingGameplayCam(shakeName, maxAmplitude)
 | |
|     local time = 10000
 | |
|     local interval = 100
 | |
| 
 | |
|     local streghtToAddEachInterval = maxAmplitude / (time/interval)
 | |
| 
 | |
|     local amplitude = 0.0
 | |
|     ShakeGameplayCam(shakeName, amplitude)
 | |
| 
 | |
|     while time >= 0 do
 | |
|         SetGameplayCamShakeAmplitude(amplitude)
 | |
| 
 | |
|         Citizen.Wait(interval)
 | |
|         time = time - interval
 | |
| 
 | |
|         amplitude = amplitude + streghtToAddEachInterval
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.pink_visual = function(duration)
 | |
|     local effectName = "visual_color"
 | |
|     
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local currentTimecycle = GetTimecycleModifierIndex()
 | |
| 
 | |
|         local timecycleName = "drug_flying_02"
 | |
|         local timecycleStrenght = 1.0
 | |
| 
 | |
|         startTimecycle(timecycleName, timecycleStrenght)
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(GetTimecycleModifierIndex() == -1 or GetTimecycleModifierIndex() == currentTimecycle) then
 | |
|                 SetTimecycleModifier(timecycleName)
 | |
|                 SetTimecycleModifierStrength(timecycleStrenght)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ClearTimecycleModifier()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.visual_shaking = function(duration) 
 | |
|     local effectName = "visual_shaking"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local shakeName = "FAMILY5_DRUG_TRIP_SHAKE"
 | |
|         local shakeStrenght = 0.6
 | |
| 
 | |
|         startShakingGameplayCam(shakeName, shakeStrenght)
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(not IsGameplayCamShaking()) then
 | |
|                 ShakeGameplayCam(shakeName, shakeStrenght)
 | |
|             end
 | |
| 
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         StopGameplayCamShaking()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.drunk_walk = function(duration) 
 | |
|     local effectName = "drunk_walk"
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local plyPed = PlayerPedId()
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local animSet = "move_m@drunk@moderatedrunk"
 | |
|         local transitionSpeed = 5.0
 | |
| 
 | |
|         RequestAnimSet(animSet)
 | |
| 
 | |
|         while not HasAnimSetLoaded(animSet) do
 | |
|             Citizen.Wait(0)
 | |
|         end
 | |
|         
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             SetPedMovementClipset(plyPed, animSet, transitionSpeed)
 | |
| 
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ResetPedMovementClipset(plyPed, transitionSpeed)
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.green_visual = function(duration)
 | |
|     local effectName = "visual_color"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local currentTimecycle = GetTimecycleModifierIndex()
 | |
|         
 | |
|         local timecycleName = "stoned"
 | |
|         local timecycleStrenght = 0.54
 | |
| 
 | |
|         startTimecycle(timecycleName, timecycleStrenght)
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(GetTimecycleModifierIndex() == -1 or GetTimecycleModifierIndex() == currentTimecycle) then
 | |
|                 SetTimecycleModifier(timecycleName)
 | |
|                 SetTimecycleModifierStrength(timecycleStrenght)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ClearTimecycleModifier()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.confused_visual = function(duration)
 | |
|     local effectName = "visual_color"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local currentTimecycle = GetTimecycleModifierIndex()
 | |
| 
 | |
|         local timecycleName = "drug_wobbly"
 | |
|         local timecycleStrenght = 1.0
 | |
| 
 | |
|         startTimecycle(timecycleName, timecycleStrenght)
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(GetTimecycleModifierIndex() == -1 or GetTimecycleModifierIndex() == currentTimecycle) then
 | |
|                 SetTimecycleModifier(timecycleName)
 | |
|                 SetTimecycleModifierStrength(timecycleStrenght)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ClearTimecycleModifier()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| 
 | |
| DrugsCreator.allEffects.yellow_visual = function(duration)
 | |
|     local effectName = "visual_color"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local currentTimecycle = GetTimecycleModifierIndex()
 | |
| 
 | |
|         local timecycleName = "BeastIntro01"
 | |
|         local timecycleStrenght = 1.0
 | |
| 
 | |
|         startTimecycle(timecycleName, timecycleStrenght)
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(GetTimecycleModifierIndex() == -1 or GetTimecycleModifierIndex() == currentTimecycle) then
 | |
|                 SetTimecycleModifier(timecycleName)
 | |
|                 SetTimecycleModifierStrength(timecycleStrenght)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ClearTimecycleModifier()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.blurred_visual = function(duration)
 | |
|     local effectName = "visual_color"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local currentTimecycle = GetTimecycleModifierIndex()
 | |
| 
 | |
|         local timecycleName = "BlackOut"
 | |
|         local timecycleStrenght = 0.84
 | |
| 
 | |
|         startTimecycle(timecycleName, timecycleStrenght)
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(GetTimecycleModifierIndex() == -1 or GetTimecycleModifierIndex() == currentTimecycle) then
 | |
|                 SetTimecycleModifier(timecycleName)
 | |
|                 SetTimecycleModifierStrength(timecycleStrenght)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ClearTimecycleModifier()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.red_visual = function(duration)
 | |
|     local effectName = "visual_color"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local currentTimecycle = GetTimecycleModifierIndex()
 | |
| 
 | |
|         local timecycleName = "damage"
 | |
|         local timecycleStrenght = 2.16
 | |
| 
 | |
|         startTimecycle(timecycleName, timecycleStrenght)
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(GetTimecycleModifierIndex() == -1 or GetTimecycleModifierIndex() == currentTimecycle) then
 | |
|                 SetTimecycleModifier(timecycleName)
 | |
|                 SetTimecycleModifierStrength(timecycleStrenght)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ClearTimecycleModifier()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.foggy_visual = function(duration)
 | |
|     local effectName = "visual_color"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local currentTimecycle = GetTimecycleModifierIndex()
 | |
| 
 | |
|         local timecycleName = "graveyard_shootout"
 | |
|         local timecycleStrenght = 0.48
 | |
| 
 | |
|         startTimecycle(timecycleName, timecycleStrenght)
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(GetTimecycleModifierIndex() == -1 or GetTimecycleModifierIndex() == currentTimecycle) then
 | |
|                 SetTimecycleModifier(timecycleName)
 | |
|                 SetTimecycleModifierStrength(timecycleStrenght)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ClearTimecycleModifier()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.blue_visual = function(duration)
 | |
|     local effectName = "visual_color"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         local currentTimecycle = GetTimecycleModifierIndex()
 | |
| 
 | |
|         local timecycleName = "MichaelColorCodeBright"
 | |
|         local timecycleStrenght = 1.04
 | |
| 
 | |
|         startTimecycle(timecycleName, timecycleStrenght)
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             if(GetTimecycleModifierIndex() == -1 or GetTimecycleModifierIndex() == currentTimecycle) then
 | |
|                 SetTimecycleModifier(timecycleName)
 | |
|                 SetTimecycleModifierStrength(timecycleStrenght)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         ClearTimecycleModifier()
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.armor50 = function()
 | |
|     AddArmourToPed(PlayerPedId(), 50)
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.armor100 = function()
 | |
|     AddArmourToPed(PlayerPedId(), 100)
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.health50 = function()
 | |
|     local plyPed = PlayerPedId()
 | |
|     local currentHealth = GetEntityHealth(plyPed)
 | |
| 
 | |
|     local newHealth = currentHealth + 50
 | |
| 
 | |
|     local maxHealth = GetEntityMaxHealth(plyPed)
 | |
| 
 | |
|     if(newHealth > maxHealth) then
 | |
|         SetEntityHealth(plyPed, maxHealth)
 | |
|     else
 | |
|         SetEntityHealth(plyPed, newHealth)
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.health100 = function()
 | |
|     local plyPed = PlayerPedId()
 | |
| 
 | |
|     local maxHealth = GetEntityMaxHealth(plyPed)
 | |
|     SetEntityHealth(plyPed, maxHealth)
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.sprint_faster = function(duration)
 | |
|     local effectName = "sprint_faster"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local ply = PlayerId()
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             SetRunSprintMultiplierForPlayer(ply, 1.3) -- About 1.49 doesn't work at all
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         SetRunSprintMultiplierForPlayer(ply, 1.0)
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.swim_faster = function(duration)
 | |
|     local effectName = "swim_faster"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local ply = PlayerId()
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             SetSwimMultiplierForPlayer(ply, 1.3)
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         SetSwimMultiplierForPlayer(ply, 1.0)
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.fall = function(duration)
 | |
|     local effectName = "fall"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local plyPed = PlayerPedId()
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             local randomNumber = math.random(1, 3)
 | |
| 
 | |
|             if(randomNumber == 1) then
 | |
|                 SetPedToRagdollWithFall(plyPed, 1500, 2000, 1, GetEntityForwardVector(plyPed), 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
 | |
|             end
 | |
|             
 | |
|             Citizen.Wait(5000)
 | |
|             timer = timer + 5000
 | |
|         end
 | |
| 
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.infinite_stamina = function(duration)
 | |
|     local effectName = "infinite_stamina"
 | |
| 
 | |
|     if(not DrugsCreator.activeEffects[effectName]) then
 | |
|         DrugsCreator.activeEffects[effectName] = duration
 | |
| 
 | |
|         local ply = PlayerId()
 | |
| 
 | |
|         local timer = 0
 | |
| 
 | |
|         while timer <= DrugsCreator.activeEffects[effectName] do
 | |
|             ResetPlayerStamina(ply)
 | |
|             
 | |
|             Citizen.Wait(1000)
 | |
|             timer = timer + 1000
 | |
|         end
 | |
| 
 | |
|         DrugsCreator.activeEffects[effectName] = false
 | |
|     else
 | |
|         DrugsCreator.activeEffects[effectName] = DrugsCreator.activeEffects[effectName] + duration
 | |
|     end
 | |
| end
 | |
| 
 | |
| DrugsCreator.allEffects.remove_old_effects = function()
 | |
|     for effectName, effectTime in pairs(DrugsCreator.activeEffects) do
 | |
|         if(effectTime) then
 | |
|             DrugsCreator.activeEffects[effectName] = 0
 | |
|         end
 | |
|     end
 | |
| end
 | |
| 
 | |
| local function assumeDrug(type)
 | |
|     local plyPed = PlayerPedId()
 | |
| 
 | |
|     if(type == "pill") then
 | |
|         local animDict = "mp_suicide"
 | |
|         local anim = "pill"
 | |
| 
 | |
|         RequestAnimDict(animDict)
 | |
| 
 | |
|         while not HasAnimDictLoaded(animDict) do
 | |
|             Citizen.Wait(0)
 | |
|         end
 | |
| 
 | |
|         local animDuration = 3200
 | |
| 
 | |
|         TaskPlayAnim(plyPed, animDict, anim, 4.0, 4.0, animDuration, 49, 0.0, 0, 0, 0)
 | |
| 
 | |
|         Citizen.Wait(animDuration)
 | |
|     elseif(type == "drink") then
 | |
|         if(IsPedInAnyVehicle(plyPed, false)) then return end
 | |
| 
 | |
|         TaskStartScenarioInPlace(plyPed, "world_human_drinking", 0, true)
 | |
| 
 | |
|         Citizen.Wait(10000)
 | |
| 
 | |
|         ClearPedTasks(plyPed)
 | |
|     elseif(type == "drink_soda") then
 | |
|         if(IsPedInAnyVehicle(plyPed, false)) then return end
 | |
| 
 | |
|         local animDict = "amb@world_human_drinking@beer@male@idle_a"
 | |
|         local animName = "idle_c"
 | |
|         Utils.loadAnimDict(animDict)
 | |
| 
 | |
|         local objectModel = DRINK_SODA_MODEL
 | |
|         Utils.loadModel(objectModel, 10)
 | |
| 
 | |
|         local object = CreateObject(objectModel, GetEntityCoords(plyPed), true, false, false)
 | |
|         TaskPlayAnim(plyPed, animDict, animName, 8.0, 8.0, 10000, 16, 0.0, false, 0, false)
 | |
| 
 | |
|         AttachEntityToEntity(object, plyPed, 91, 0.13620177363839, 0.051340419212092, -0.032412815738839, -78.198566893409, 0, 0, true, true, false, true, 1, true)
 | |
|         
 | |
|         Citizen.Wait(10000)
 | |
| 
 | |
|         DetachEntity(object, false, true)
 | |
|         DeleteObject(object)
 | |
|         ClearPedTasks(plyPed)
 | |
|     elseif(type == "smoke") then
 | |
|         if(IsPedInAnyVehicle(plyPed, false)) then return end
 | |
| 
 | |
|         TaskStartScenarioInPlace(plyPed, "WORLD_HUMAN_SMOKING_POT", 0, true)
 | |
| 
 | |
|         Citizen.Wait(10000)
 | |
| 
 | |
|         ClearPedTasks(plyPed)
 | |
|     elseif(type == "snort") then
 | |
|         if(IsPedInAnyVehicle(plyPed, false)) then return end
 | |
| 
 | |
|         local animDict = 'missfbi3_party'
 | |
|         local animName = 'snort_coke_b_male3'
 | |
|         Utils.loadAnimDict(animDict)
 | |
|         TaskPlayAnim(plyPed, animDict, animName, 8.0, 8.0, 7000, 16, 0.22, false, 0, false)
 | |
| 
 | |
|         Citizen.Wait(7000)
 | |
| 
 | |
|         ClearPedTasks(plyPed)
 | |
|     elseif(type == "needle") then
 | |
|         local syringeProp = GetHashKey('prop_syringe_01')
 | |
|         local syringeDict = "rcmpaparazzo1ig_4"
 | |
|         local syringeAnim = "miranda_shooting_up"
 | |
|         local syringeBone = 28422
 | |
|         local syringeOffset = vector3(0, 0, -0.045)
 | |
|         local syringeRot = vector3(0, 0, 0)
 | |
| 
 | |
|         RequestAnimDict(syringeDict)
 | |
|         while not HasAnimDictLoaded(syringeDict) do
 | |
|             Citizen.Wait(150)
 | |
|         end
 | |
| 
 | |
|         RequestModel(syringeProp)
 | |
|         while not HasModelLoaded(syringeProp) do
 | |
|             Citizen.Wait(150)
 | |
|         end
 | |
| 
 | |
|         local syringeObj = CreateObject(syringeProp, 0.0, 0.0, 0.0, true, true, false)
 | |
|         local syringeBoneIndex = GetPedBoneIndex(plyPed, syringeBone)
 | |
| 
 | |
|         SetCurrentPedWeapon(plyPed, "weapon_unarmed", true)
 | |
|         AttachEntityToEntity(syringeObj, plyPed, syringeBoneIndex, syringeOffset.x, syringeOffset.y, syringeOffset.z, syringeRot.x, syringeRot.y, syringeRot.z, false, false, false, false, 2, true)
 | |
|         SetModelAsNoLongerNeeded(syringeProp)
 | |
| 
 | |
|         local pos = GetEntityCoords(plyPed)
 | |
|         local he = GetEntityHeading(plyPed)
 | |
| 
 | |
|         TaskPlayAnim(plyPed, syringeDict, syringeAnim, 8.0, 8.0, 6000, 49, 0, 0, 0, 0)
 | |
| 
 | |
|         RemoveAnimDict(syringeDict)
 | |
| 
 | |
|         Citizen.Wait(1)
 | |
|         SetEntityAnimCurrentTime(plyPed, syringeDict, syringeAnim, 0.55)
 | |
| 
 | |
|         while(IsEntityPlayingAnim(plyPed, syringeDict, syringeAnim, 3)) do
 | |
|             Citizen.Wait(0)
 | |
|             DisableControlAction(0,21,true) -- no sprint
 | |
|             DisableControlAction(0,24,true) -- no attack
 | |
|             DisableControlAction(0,25,true) -- no aim
 | |
|             DisableControlAction(0,47,true) -- no weapon
 | |
|             DisableControlAction(0,58,true) -- no weapon
 | |
|             DisableControlAction(0,263,true) -- no melee
 | |
|             DisableControlAction(0,264,true) -- no melee
 | |
|             DisableControlAction(0,257,true) -- no melee
 | |
|             DisableControlAction(0,140,true) -- no melee
 | |
|             DisableControlAction(0,141,true) -- no melee
 | |
|             DisableControlAction(0,142,true) -- no melee
 | |
|             DisableControlAction(0,143,true) -- no melee
 | |
|             DisableControlAction(0,37,true) -- no weapon select
 | |
|             DisableControlAction(0,22,true) -- no jump
 | |
|         end
 | |
| 
 | |
|         SetEntityAsMissionEntity(syringeObj, false, false)
 | |
|         DeleteObject(syringeObj)
 | |
|     end
 | |
| end
 | |
| 
 | |
| local function processCumulativeEffects(cumulativeEffects)
 | |
|     if not cumulativeEffects then return end
 | |
|     
 | |
|     for i = 1, #cumulativeEffects do
 | |
|         local effect = cumulativeEffects[i]
 | |
| 
 | |
|         local actionKey = effect.action .. effect.type:gsub("^%l", string.upper) -- Merge action + type ex. "increaseArmor"
 | |
|         local event = CUMULATIVE_EFFECTS_EVENTS[actionKey]
 | |
| 
 | |
|         if event then
 | |
|             TriggerEvent(event, effect.amount)
 | |
|         end
 | |
|     end
 | |
| end
 | |
| 
 | |
| local function drugEffects(type, effects, duration, cumulativeEffects)
 | |
|     assumeDrug(type)
 | |
|     processCumulativeEffects(cumulativeEffects)
 | |
| 
 | |
|     duration = duration * 1000
 | |
|     for k, effect in pairs(effects) do
 | |
|         Citizen.CreateThread(function() 
 | |
|             DrugsCreator.allEffects[effect](duration)
 | |
|         end)
 | |
|     end
 | |
| end
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ':drugEffects', drugEffects)
 | |
| 
 | |
| --[[
 | |
|  ██████ ██    ██ ███    ███ ██    ██ ██       █████  ████████ ██ ██    ██ ███████     ███████ ███████ ███████ ███████  ██████ ████████ ███████ 
 | |
| ██      ██    ██ ████  ████ ██    ██ ██      ██   ██    ██    ██ ██    ██ ██          ██      ██      ██      ██      ██         ██    ██      
 | |
| ██      ██    ██ ██ ████ ██ ██    ██ ██      ███████    ██    ██ ██    ██ █████       █████   █████   █████   █████   ██         ██    ███████ 
 | |
| ██      ██    ██ ██  ██  ██ ██    ██ ██      ██   ██    ██    ██  ██  ██  ██          ██      ██      ██      ██      ██         ██         ██ 
 | |
|  ██████  ██████  ██      ██  ██████  ███████ ██   ██    ██    ██   ████   ███████     ███████ ██      ██      ███████  ██████    ██    ███████ 
 | |
| ]]
 | |
| 
 | |
| local fw = Framework.getFramework() -- 'ESX' o 'QBCore'
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:increaseArmor", function(amount)
 | |
| 	local ped=PlayerPedId()
 | |
| 	local oldArmor=GetPedArmour(ped)
 | |
| 	local newArmor=math.min(100, oldArmor+amount)
 | |
| 	if (newArmor<0) then return end
 | |
| 	SetPedArmour(ped, newArmor)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:decreaseArmor", function(amount)
 | |
| 	local ped=PlayerPedId()
 | |
| 	local oldArmor=GetPedArmour(ped)
 | |
| 	local newArmor=math.max(0, oldArmor-amount)
 | |
| 	if (newArmor<0) then return end
 | |
| 	SetPedArmour(ped, newArmor)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:increaseHealth", function(amount)
 | |
| 	local ped=PlayerPedId()
 | |
| 	local oldHealth=GetEntityHealth(ped)
 | |
| 	local maxHealth=GetEntityMaxHealth(ped)
 | |
| 	local newHealth=math.min(maxHealth, oldHealth+amount)
 | |
| 	if (newHealth<=0) then return end
 | |
| 	SetEntityHealth(ped, newHealth)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:decreaseHealth", function(amount)
 | |
| 	local ped=PlayerPedId()
 | |
| 	local oldHealth=GetEntityHealth(ped)
 | |
| 	local newHealth=math.max(0, oldHealth-amount)
 | |
| 	if (newHealth<0) then return end
 | |
| 	SetEntityHealth(ped, newHealth)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:increaseThirst", function(amount)
 | |
| 	if (fw == 'ESX') then
 | |
| 		TriggerEvent('esx_status:add', 'thirst', -amount)
 | |
| 		return
 | |
| 	end
 | |
| 	local pd = QBCore.Functions.GetPlayerData()
 | |
| 	local thirst = (pd.metadata and pd.metadata.thirst) and pd.metadata.thirst or 100
 | |
| 	local newThirst = math.max(0, math.min(100, thirst - amount)) -- Diminuisci l'idratazione
 | |
| 	TriggerServerEvent('consumables:server:addThirst', newThirst)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:decreaseThirst", function(amount)
 | |
| 	if (fw == 'ESX') then
 | |
| 		TriggerEvent('esx_status:add', 'thirst', amount)
 | |
| 		return
 | |
| 	end
 | |
| 	local pd = QBCore.Functions.GetPlayerData()
 | |
| 	local thirst = (pd.metadata and pd.metadata.thirst) and pd.metadata.thirst or 100
 | |
| 	local newThirst = math.max(0, math.min(100, thirst + amount)) -- Aumenta l'idratazione
 | |
| 	TriggerServerEvent('consumables:server:addThirst', newThirst)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:increaseHunger", function(amount)
 | |
| 	if (fw == 'ESX') then
 | |
| 		TriggerEvent('esx_status:add', 'hunger', -amount)
 | |
| 		return
 | |
| 	end
 | |
| 	local pd = QBCore.Functions.GetPlayerData()
 | |
| 	local hunger = (pd.metadata and pd.metadata.hunger) and pd.metadata.hunger or 100
 | |
| 	local newHunger = math.max(0, math.min(100, hunger - amount)) -- Diminuisci la sazietà
 | |
| 	TriggerServerEvent('consumables:server:addHunger', newHunger)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:decreaseHunger", function(amount)
 | |
| 	if (fw == 'ESX') then
 | |
| 		TriggerEvent('esx_status:add', 'hunger', amount)
 | |
| 		return
 | |
| 	end
 | |
| 	local pd = QBCore.Functions.GetPlayerData()
 | |
| 	local hunger = (pd.metadata and pd.metadata.hunger) and pd.metadata.hunger or 100
 | |
| 	local newHunger = math.max(0, math.min(100, hunger + amount)) -- Aumenta la sazietà
 | |
| 	TriggerServerEvent('consumables:server:addHunger', newHunger)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:increaseStress", function(amount)
 | |
| 	if (fw=='ESX') then
 | |
| 		TriggerEvent('esx_status:add','stress',amount)
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
|     TriggerServerEvent('hud:server:GainStress', amount)
 | |
| end)
 | |
| 
 | |
| RegisterNetEvent(Utils.eventsPrefix .. ":cumulative:decreaseStress", function(amount)
 | |
| 	if (fw=='ESX') then
 | |
| 		TriggerEvent('esx_status:add','stress',-amount)
 | |
| 		return
 | |
| 	end
 | |
| 
 | |
|     TriggerServerEvent('hud:server:RelieveStress', amount)
 | |
| end)
 | 
