mirror of
https://github.com/jimathy/jim-consumables.git
synced 2026-08-17 14:36:03 +01:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1cf454687 | ||
|
|
a6f6492d5b | ||
|
|
7da98b53e1 | ||
|
|
1036f1dc21 | ||
|
|
59540d95b6 |
63
README.md
63
README.md
@@ -7,6 +7,14 @@ This script is designed as a replacement/override for food and drink consumables
|
||||
It's main purpose was to make it possible to not stand up while sitting due to lazy events such as ClearPedTasks in most scripts, this one is designed to cancel the animation you have chosen, not all animations. This includes progressbar.
|
||||
|
||||
# Installation
|
||||
|
||||
```
|
||||
Please stop asking to how add a progressbar...PLEASE
|
||||
|
||||
This script was designed to not need one, because of how it cancels all the player animations instantly
|
||||
|
||||
You can manage without a progressbar.
|
||||
```
|
||||
This script is recommended to be ran last/at the bottom of your server.cfg because this is intended to take control of items, if ran too early the original script may override this one.
|
||||
|
||||
It already takes control of default qbcore food and drink, but you would probably want to add more.
|
||||
@@ -14,15 +22,52 @@ It already takes control of default qbcore food and drink, but you would probabl
|
||||
To add an item, you only need to add a new item table in the Config.Consumables like this:
|
||||
```lua
|
||||
["heartstopper"] = {
|
||||
emote = "burger", -- Select an emote from below, it has to be in here
|
||||
time = math.random(5000, 6000), -- Amount of time it takes to consume the item
|
||||
stress = math.random(1,2), -- Amount of stress relief, can be 0
|
||||
heal = 0, -- Set amount to heal by after consuming
|
||||
armor = 5, -- Amount of armor to add
|
||||
type = "food", -- Type: "alcohol" / "drink" / "food"
|
||||
effect = { effect = "healdouble", }, -- The status effect given by the item, "heal" / "healdouble" / "stamina"
|
||||
stats = { hunger = math.random(10,20), }, -- The stats of the item, if not found in the items.lua
|
||||
emote = "burger", -- Select an emote from below, it has to be in here
|
||||
time = math.random(5000, 6000), -- Amount of time it takes to consume the item
|
||||
stress = math.random(1, 2), -- Amount of stress relief, can be 0
|
||||
heal = 0, -- Set amount to heal by after consuming
|
||||
armor = 5, -- Amount of armor to add
|
||||
type = "food", -- Type: "alcohol" / "drink" / "food"
|
||||
stats = {
|
||||
screen = "rampage", -- The screen effect to be played when after consuming the item
|
||||
effect = "heal", -- The status effect given by the item, "heal" / "stamina"
|
||||
time = 10000, -- How long the effect should last (if not added it will default to 10000)
|
||||
amount = 2, -- How much the value is changed by per second
|
||||
hunger = math.random(10,20), -- The hunger/thirst stats of the item, if not found in the items.lua
|
||||
thirst = math.random(10,20), -- The hunger/thirst stats of the item, if not found in the items.lua
|
||||
},
|
||||
},
|
||||
```
|
||||
Consuming an item can also manually activate screen effects
|
||||
|
||||
This script supports dpemotes style emotes, so if you have some that you want to be triggered when eating or drinking drop it in the Config.Emotes
|
||||
The example above uses `rampage` as this is what the effect is named after, you can use it for any item you think best
|
||||
```lua
|
||||
--The current list of screen effects are:
|
||||
"turbo"
|
||||
"focus"
|
||||
"rampage"
|
||||
"weed"
|
||||
"trevor"
|
||||
"nightvision"
|
||||
"thermal"
|
||||
```
|
||||
|
||||
## PS-Buffs Support
|
||||
This scripts can be expanded with ps-buffs (https://github.com/Project-Sloth/ps-buffs)
|
||||
|
||||
If this script is enabled it will automatically try to use their system to apply buffs:
|
||||
|
||||
```lua
|
||||
--The extra buffs that can be set include:
|
||||
"heal" -- Health recovery buff
|
||||
"stamina" -- Stamina recovery buff
|
||||
"swimming" -- Swimming speed buff
|
||||
"stress" -- Stress recovery buff
|
||||
"armor" -- Armour recovery buff
|
||||
"hacking" -- Hacking effect
|
||||
"intelligence" -- Intelligence effect
|
||||
"luck" -- Luck effect
|
||||
"strength" -- Strength effect
|
||||
```
|
||||
|
||||
This script supports dpemotes style emotes, so if you have some that you want to be triggered when eating or drinking drop it in the Config.Emotes section.
|
||||
@@ -4,13 +4,6 @@ PlayerJob = {}
|
||||
local alcoholCount = 0
|
||||
local drugCount = 0
|
||||
|
||||
local time = 40
|
||||
function loadModel(model) if not HasModelLoaded(model) then if Config.Debug then print("^5Debug^7: ^2Loading Model^7: '^6"..model.."^7'") end while not HasModelLoaded(model) do if time > 0 then time = time - 1 RequestModel(model) else time = 40 break end Wait(10) end end end
|
||||
function unloadModel(model) if Config.Debug then print("^5Debug^7: ^2Removing Model^7: '^6"..model.."^7'") end SetModelAsNoLongerNeeded(model) end
|
||||
function loadAnimDict(dict) if Config.Debug then print("^5Debug^7: ^2Loading Anim Dictionary^7: '^6"..dict.."^7'") end while not HasAnimDictLoaded(dict) do RequestAnimDict(dict) Wait(5) end end
|
||||
function unloadAnimDict(dict) if Config.Debug then print("^5Debug^7: ^2Removing Anim Dictionary^7: '^6"..dict.."^7'") end RemoveAnimDict(dict) end
|
||||
function destroyProp(entity) if Config.Debug then print("^5Debug^7: ^2Destroying Prop^7: '^6"..entity.."^7'") end SetEntityAsMissionEntity(entity) Wait(5) DetachEntity(entity, true, true) Wait(5) DeleteObject(entity) end
|
||||
|
||||
--Convert Prop Model Names to Model HashKeys now to be more optimized when loading later
|
||||
for k in pairs(Config.Emotes) do
|
||||
if Config.Emotes[k].AnimationOptions.Prop then
|
||||
@@ -18,223 +11,12 @@ for k in pairs(Config.Emotes) do
|
||||
end
|
||||
end
|
||||
|
||||
--Alcohol Effects
|
||||
local alienEffect = false
|
||||
function AlienEffect()
|
||||
if alienEffect then return end
|
||||
alienEffect = true
|
||||
if Config.Debug then print("^5Debug^7: ^3AlienEffect^7() ^2activated") end
|
||||
StartScreenEffect("DrugsMichaelAliensFightIn", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
local Ped = PlayerPedId()
|
||||
local animDict = "MOVE_M@DRUNK@VERYDRUNK"
|
||||
loadAnimDict(animDict)
|
||||
SetPedCanRagdoll(Ped, true)
|
||||
ShakeGameplayCam('DRUNK_SHAKE', 2.80)
|
||||
SetTimecycleModifier("Drunk")
|
||||
SetPedMovementClipset(Ped, animDict, 1)
|
||||
SetPedMotionBlur(Ped, true)
|
||||
SetPedIsDrunk(Ped, true)
|
||||
Wait(1500)
|
||||
SetPedToRagdoll(Ped, 5000, 1000, 1, 0, 0, 0)
|
||||
Wait(13500)
|
||||
SetPedToRagdoll(Ped, 5000, 1000, 1, 0, 0, 0)
|
||||
Wait(120500)
|
||||
ClearTimecycleModifier()
|
||||
ResetScenarioTypesEnabled()
|
||||
ResetPedMovementClipset(Ped, 0)
|
||||
SetPedIsDrunk(Ped, false)
|
||||
SetPedMotionBlur(Ped, false)
|
||||
AnimpostfxStopAll()
|
||||
ShakeGameplayCam('DRUNK_SHAKE', 0.0)
|
||||
StartScreenEffect("DrugsMichaelAliensFight", 3.0, 0)
|
||||
Wait(math.random(45000, 60000))
|
||||
StartScreenEffect("DrugsMichaelAliensFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsMichaelAliensFightIn")
|
||||
StopScreenEffect("DrugsMichaelAliensFight")
|
||||
StopScreenEffect("DrugsMichaelAliensFightOut")
|
||||
alienEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3AlienEffect^7() ^2stopped") end
|
||||
end
|
||||
--Weed Effects
|
||||
local weedEffect = false
|
||||
function WeedEffect()
|
||||
if weedEffect then return end
|
||||
weedEffect = true
|
||||
if Config.Debug then print("^5Debug^7: ^3WeedEffect^7() ^2activated") end
|
||||
StartScreenEffect("DrugsMichaelAliensFightIn", 3.0, 0)
|
||||
Wait(math.random(3000, 20000))
|
||||
StartScreenEffect("DrugsMichaelAliensFight", 3.0, 0)
|
||||
Wait(math.random(15000, 20000))
|
||||
StartScreenEffect("DrugsMichaelAliensFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsMichaelAliensFightIn")
|
||||
StopScreenEffect("DrugsMichaelAliensFight")
|
||||
StopScreenEffect("DrugsMichaelAliensFightOut")
|
||||
weedEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3WeedEffect^7() ^2stopped") end
|
||||
end
|
||||
--Other Effects
|
||||
local trevorEffect = false
|
||||
function TrevorEffect()
|
||||
if trevorEffect then return end
|
||||
if Config.Debug then print("^5Debug^7: ^3TrevorEffect^7() ^2activated") end
|
||||
trevorEffect = true
|
||||
StartScreenEffect("DrugsTrevorClownsFightIn", 3.0, 0)
|
||||
Wait(3000)
|
||||
StartScreenEffect("DrugsTrevorClownsFight", 3.0, 0)
|
||||
Wait(30000)
|
||||
StartScreenEffect("DrugsTrevorClownsFightOut", 3.0, 0)
|
||||
StopScreenEffect("DrugsTrevorClownsFight")
|
||||
StopScreenEffect("DrugsTrevorClownsFightIn")
|
||||
StopScreenEffect("DrugsTrevorClownsFightOut")
|
||||
trevorEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3TrevorEffect^7() ^2stopped") end
|
||||
end
|
||||
|
||||
local healEffectDouble = false
|
||||
function HealEffectDouble()
|
||||
if healEffectDouble then return end
|
||||
if Config.Debug then print("^5Debug^7: ^3HealEffectDouble^7() ^2activated") end
|
||||
healEffectDouble = true
|
||||
local count = 9
|
||||
while count > 0 do
|
||||
Wait(1000)
|
||||
count = count - 1
|
||||
SetEntityHealth(PlayerPedId(), GetEntityHealth(PlayerPedId()) + 6)
|
||||
end
|
||||
healEffectDouble = false
|
||||
if Config.Debug then print("^5Debug^7: ^3HealEffectDouble^7() ^2stopped") end
|
||||
end
|
||||
|
||||
local healEffect = false
|
||||
function HealEffect()
|
||||
if healEffect then return end
|
||||
if Config.Debug then print("^5Debug^7: ^3HealEffect^7() ^2activated") end
|
||||
healEffect = true
|
||||
local count = 4
|
||||
while count > 0 do
|
||||
Wait(1000)
|
||||
count = count - 1
|
||||
SetEntityHealth(PlayerPedId(), GetEntityHealth(PlayerPedId()) + 6)
|
||||
end
|
||||
healEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3HealEffect^7() ^2stopped") end
|
||||
end
|
||||
|
||||
local staminaEffect = false
|
||||
function StaminaEffect()
|
||||
if staminaEffect then return end
|
||||
if Config.Debug then print("^5Debug^7: ^3StaminaEffect^7() ^2activated") end
|
||||
staminaEffect = true
|
||||
local startStamina = 8
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.49)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
if math.random(5, 100) < 10 then RestorePlayerStamina(PlayerId(), 1.0) end
|
||||
startStamina = startStamina - 1
|
||||
if math.random(5, 100) < 51 then end
|
||||
end
|
||||
startStamina = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
|
||||
staminaEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3StaminaEffect^7() ^2stopped") end
|
||||
end
|
||||
|
||||
function StopEffects()
|
||||
if Config.Debug then print("^5Debug^7: ^2All screen effects stopped") end
|
||||
ShakeGameplayCam('DRUNK_SHAKE', 0.0)
|
||||
SetPedToRagdoll(PlayerPedId(), 5000, 1000, 1, 0, 0, 0)
|
||||
ClearTimecycleModifier()
|
||||
ResetScenarioTypesEnabled()
|
||||
ResetPedMovementClipset(PlayerPedId(), 0)
|
||||
SetPedIsDrunk(PlayerPedId(), false)
|
||||
SetPedMotionBlur(PlayerPedId(), false)
|
||||
StopScreenEffect("DrugsMichaelAliensFightIn")
|
||||
StopScreenEffect("DrugsMichaelAliensFight")
|
||||
StopScreenEffect("DrugsMichaelAliensFightOut")
|
||||
StopScreenEffect("DrugsTrevorClownsFight")
|
||||
StopScreenEffect("DrugsTrevorClownsFightIn")
|
||||
StopScreenEffect("DrugsTrevorClownsFightOut")
|
||||
end
|
||||
|
||||
--[[function EcstasyEffect()
|
||||
local startStamina = 30
|
||||
SetFlash(0, 0, 500, 7000, 500)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
startStamina = startStamina - 1
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
if math.random(1, 100) < 51 then
|
||||
SetFlash(0, 0, 500, 7000, 500)
|
||||
ShakeGameplayCam('SMALL_EXPLOSION_SHAKE', 0.08)
|
||||
end
|
||||
end
|
||||
if IsPedRunning(PlayerPedId()) then
|
||||
SetPedToRagdoll(PlayerPedId(), math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
|
||||
startStamina = 0
|
||||
end
|
||||
|
||||
function CrackBaggyEffect()
|
||||
local startStamina = 8
|
||||
local ped = PlayerPedId()
|
||||
--AlienEffect()
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.3)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
if math.random(1, 100) < 10 then
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
end
|
||||
startStamina = startStamina - 1
|
||||
if math.random(1, 100) < 60 and IsPedRunning(ped) then
|
||||
SetPedToRagdoll(ped, math.random(1000, 2000), math.random(1000, 2000), 3, 0, 0, 0)
|
||||
end
|
||||
if math.random(1, 100) < 51 then
|
||||
--AlienEffect()
|
||||
end
|
||||
end
|
||||
if IsPedRunning(ped) then
|
||||
SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
|
||||
startStamina = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
|
||||
end
|
||||
|
||||
function CokeBaggyEffect()
|
||||
local startStamina = 20
|
||||
local ped = PlayerPedId()
|
||||
--AlienEffect()
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.1)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
if math.random(1, 100) < 20 then
|
||||
RestorePlayerStamina(PlayerId(), 1.0)
|
||||
end
|
||||
startStamina = startStamina - 1
|
||||
if math.random(1, 100) < 10 and IsPedRunning(ped) then
|
||||
SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
if math.random(1, 300) < 10 then
|
||||
--AlienEffect()
|
||||
Wait(math.random(3000, 6000))
|
||||
end
|
||||
end
|
||||
if IsPedRunning(ped) then
|
||||
SetPedToRagdoll(ped, math.random(1000, 3000), math.random(1000, 3000), 3, 0, 0, 0)
|
||||
end
|
||||
|
||||
startStamina = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
|
||||
end]]
|
||||
|
||||
local consuming = false
|
||||
local cancelled = false
|
||||
|
||||
RegisterNetEvent('jim-consumables:Consume', function(itemName)
|
||||
if Config.Debug then print("^5Debug^7: ^3Consume^7: ^2Starting event, locking inventory and grabbing data^7..") end
|
||||
LocalPlayer.state:set("inv_busy", true, true)
|
||||
LocalPlayer.state:set("inv_busy", true, true) TriggerEvent('inventory:client:busy:status', true) TriggerEvent('canUseInventoryAndHotbar:toggle', true)
|
||||
local Player = PlayerPedId()
|
||||
local emote = Config.Emotes[Config.Consumables[itemName].emote]
|
||||
local animDict = tostring(emote[1])
|
||||
@@ -259,7 +41,7 @@ RegisterNetEvent('jim-consumables:Consume', function(itemName)
|
||||
cancelled = true
|
||||
if Config.Debug then print("^5Debug^7: ^3Consume^7: ^2Event already started^7, ^1Cancelling^7.") end
|
||||
LocalPlayer.state:set("inv_busy", false, true)
|
||||
TriggerEvent("QBCore:Notify", "Stopped "..string, "error")
|
||||
triggerNotify(nil, "Stopped "..string, "error")
|
||||
consuming = not consuming
|
||||
return
|
||||
end
|
||||
@@ -285,15 +67,14 @@ RegisterNetEvent('jim-consumables:Consume', function(itemName)
|
||||
loadAnimDict(animDict)
|
||||
TaskPlayAnim(PlayerPedId(), animDict, anim, 1.0, 1.0, -1, MovementType, 0, 0, 0, 0)
|
||||
|
||||
TriggerEvent("QBCore:Notify", string..QBCore.Shared.Items[itemName].label.."..", "success", (time + 1000))
|
||||
triggerNotify(nil, string..QBCore.Shared.Items[itemName].label.."..", "success")
|
||||
consuming = true
|
||||
|
||||
CreateThread(function()
|
||||
--Prop Spawning
|
||||
if model then
|
||||
if Config.Debug then print("^5Debug^7: ^3Consume^7: ^2Spawning consumable prop^7.") end
|
||||
loadModel(model)
|
||||
local attachProp = CreateObject(model, 1.0, 1.0, 1.0, 1, 1, 0)
|
||||
local attachProp = makeProp({ prop = model, coords = vector4(0.0,0.0,0.0,0.0)}, 1, 1)
|
||||
AttachEntityToEntity(attachProp, PlayerPedId(), bone, P1, P2, P3, P4, P5, P6, true, true, false, true, 1, true)
|
||||
while consuming do Wait(100) end
|
||||
destroyProp(attachProp)
|
||||
@@ -315,8 +96,8 @@ RegisterNetEvent('jim-consumables:Consume', function(itemName)
|
||||
unloadAnimDict(animDict)
|
||||
|
||||
if not cancelled then
|
||||
TriggerServerEvent("QBCore:Server:RemoveItem", itemName, 1)
|
||||
TriggerEvent("inventory:client:ItemBox", QBCore.Shared.Items[itemName], "remove", 1)
|
||||
|
||||
toggleItem(false, itemName, 1)
|
||||
|
||||
if QBCore.Shared.Items[itemName].thirst then
|
||||
TriggerServerEvent("QBCore:Server:SetMetaData", "thirst", QBCore.Functions.GetPlayerData().metadata["thirst"] + QBCore.Shared.Items[itemName].thirst) end
|
||||
@@ -356,67 +137,60 @@ RegisterNetEvent('jim-consumables:Consume', function(itemName)
|
||||
TriggerEvent("evidence:client:SetStatus", "alcohol", 200)
|
||||
elseif alcoholCount >= 4 then
|
||||
TriggerEvent("evidence:client:SetStatus", "heavyalcohol", 200)
|
||||
CreateThread(function()
|
||||
AlienEffect()
|
||||
end)
|
||||
CreateThread(function() AlienEffect() end) -- Used as overdosing/too drunk effect
|
||||
end
|
||||
end
|
||||
|
||||
stats = Config.Consumables[itemName].stats or nil
|
||||
stats = Config.Consumables[itemName].stats or nil
|
||||
|
||||
if Config.Consumables[itemName].stats then
|
||||
if stats.screen then -- Screen effect activation
|
||||
if stats.screen == "turbo" then CreateThread(function() TurboEffect() end) end
|
||||
if stats.screen == "focus" then CreateThread(function() FocusEffect() end) end
|
||||
if stats.screen == "rampage" then CreateThread(function() RampageEffect() end) end
|
||||
if stats.screen == "weed" then CreateThread(function() WeedEffect() end) end
|
||||
if stats.screen == "trevor" then CreateThread(function() TrevorEffect() end) end
|
||||
if stats.screen == "nightvision" then CreateThread(function() NightVisionEffect() end) end
|
||||
if stats.screen == "thermal" then CreateThread(function() ThermalEffect() end) end
|
||||
end
|
||||
|
||||
if Config.Consumables[itemName].stats then
|
||||
if stats.canOD then
|
||||
if Config.Debug then print("^5Debug^7: ^3Consume^7: ^2Current ^4drugCount^7: ^6"..(drugCount + 1)) end
|
||||
drugCount = drugCount + 1
|
||||
if drugCount >= 4 then
|
||||
if Config.Debug then print("^5Debug^7: ^3Consume^7: ^2Current ^4drugCount^7: ^6"..drugCount.."^7 - ^2 removing health") end
|
||||
SetEntityHealth(PlayerPedId(), GetEntityHealth(PlayerPedId()) - math.random(10,15))
|
||||
if drugCount >= 6 then
|
||||
CreateThread(function()
|
||||
AlienEffect()
|
||||
end)
|
||||
if drugCount >= 7 then
|
||||
CreateThread(function() AlienEffect() end) -- If too many drugs, if not dead will make you stumble
|
||||
end
|
||||
end
|
||||
end
|
||||
if stats.effect == "weed" then
|
||||
if drugCount >= 2 then
|
||||
CreateThread(function()
|
||||
TrevorEffect()
|
||||
end)
|
||||
end
|
||||
end
|
||||
if stats.effect == "heal" then
|
||||
CreateThread(function()
|
||||
HealEffect()
|
||||
end)
|
||||
end
|
||||
if stats.effect == "healdouble" then
|
||||
CreateThread(function()
|
||||
HealEffect()
|
||||
end)
|
||||
end
|
||||
if GetResourceState("ps-buffs") == "started" then exports["ps-buffs"]:AddHealthBuff((stats.time or 10000), (stats.amount or 6))
|
||||
else CreateThread(function() HealEffect({(stats.effect.time or 10000), (stats.amount or 6)}) end) end
|
||||
end
|
||||
if stats.effect == "stamina" then
|
||||
CreateThread(function()
|
||||
StaminaEffect()
|
||||
end)
|
||||
if drugCount >= 4 then
|
||||
CreateThread(function()
|
||||
TrevorEffect()
|
||||
end)
|
||||
end
|
||||
end
|
||||
if stats.widepupils then
|
||||
TriggerEvent("evidence:client:SetStatus", "widepupils", 200)
|
||||
--EcstasyEffect()
|
||||
if GetResourceState("ps-buffs") == "started" then exports["ps-buffs"]:StaminaBuffEffect((stats.time or 10000), (stats.amount or 6))
|
||||
else CreateThread(function() StaminaEffect({(stats.effect.time or 10000), (stats.amount or 6)}) end) end
|
||||
end
|
||||
if GetResourceState("ps-buffs") == "started" then --PS-BUFFS ONLY
|
||||
if Config.Debug then print("^5Debug^7: ^3Consume^7: ^4PS^7-^4Buffs ^2found^7, ^2hooking in to get buffs") end
|
||||
if stats.effect == "armor" then exports["ps-buffs"]:AddArmorBuff((stats.effect.time or 10000), (stats.amount or 6)) end
|
||||
if stats.effect == "stress" then exports["ps-buffs"]:AddStressBuff((stats.time or 10000), (stats.amount or 6)) end
|
||||
if stats.effect == "swimming" then exports["ps-buffs"]:SwimmingBuffEffect((stats.effect.time or 10000), (stats.amount or 6)) end
|
||||
if stats.effect == "hacking" then exports["ps-buffs"]:AddBuff("hacking", (stats.effect.time or 10000)) end
|
||||
if stats.effect == "intelligence" then exports["ps-buffs"]:AddBuff("intelligence", (stats.effect.time or 10000)) end
|
||||
if stats.effect == "luck" then exports["ps-buffs"]:AddBuff("luck", (stats.time or 10000)) end
|
||||
if stats.effect == "strength" then exports["ps-buffs"]:AddBuff("strength", (stats.time or 10000)) end
|
||||
end
|
||||
if stats.widepupils then TriggerEvent("evidence:client:SetStatus", "widepupils", 200) end
|
||||
end
|
||||
|
||||
end
|
||||
cancelled = false
|
||||
consuming = false
|
||||
|
||||
if Config.Debug then print("^5Debug^7: ^3Consume^7: ^2Finished, unlocking inventory^7..") end
|
||||
LocalPlayer.state:set("inv_busy", false, true)
|
||||
if Config.Debug then print("^5Debug^7: ^3Consume^7: ^2Finished, unlocking inventory^7...") end
|
||||
LocalPlayer.state:set("inv_busy", false, true) TriggerEvent('inventory:client:busy:status', false) TriggerEvent('canUseInventoryAndHotbar:toggle', false)
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
@@ -426,20 +200,15 @@ CreateThread(function()
|
||||
Wait(1000 * 60 * 15)
|
||||
alcoholCount = alcoholCount - 1
|
||||
else
|
||||
Wait(2000)
|
||||
Wait(1000)
|
||||
end
|
||||
end
|
||||
end)
|
||||
CreateThread(function()
|
||||
while true do
|
||||
Wait(10)
|
||||
if drugCount > 0 then
|
||||
Wait(1000 * 60 * 15)
|
||||
drugCount = drugCount - 1
|
||||
else
|
||||
Wait(2000)
|
||||
Wait(1000)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler('onResourceStop', function(r) if r ~= GetCurrentResourceName() then return end
|
||||
|
||||
48
config.lua
48
config.lua
@@ -1,4 +1,4 @@
|
||||
print("^2Jim^7-^2Consumables v^41^7.^41 ^7- ^2Consumables Script by ^1Jimathy^7")
|
||||
print("^2Jim^7-^2Consumables ^7v^41^7.^43^7.^41 ^7- ^2Consumables Script by ^1Jimathy^7")
|
||||
|
||||
-- If you need support I now have a discord available, it helps me keep track of issues and give better support.
|
||||
|
||||
@@ -6,9 +6,12 @@ print("^2Jim^7-^2Consumables v^41^7.^41 ^7- ^2Consumables Script by ^1Jimathy^7"
|
||||
|
||||
Config = {
|
||||
Debug = false,
|
||||
Notify = "qb",
|
||||
Consumables = {
|
||||
-- Default QB food and drink item override
|
||||
["vodka"] = { emote = "vodkab", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "alcohol", stats = { thirst = math.random(10,20), canOD = true }},
|
||||
|
||||
--Effects can be applied here, like stamina on coffee for example
|
||||
["vodka"] = { emote = "vodkab", time = math.random(5000, 6000), stress = 0, heal = 0, armor = 0, type = "alcohol", stats = { effect = "stress", time = 5000, amount = 2, thirst = math.random(10,20), canOD = true }},
|
||||
["beer"] = { emote = "beer", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "alcohol", stats = { thirst = math.random(10,20), canOD = true }},
|
||||
["whiskey"] = { emote = "whiskey", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "alcohol", stats = { thirst = math.random(10,20), canOD = true }},
|
||||
|
||||
@@ -17,39 +20,46 @@ Config = {
|
||||
["snikkel_candy"] = { emote = "egobar", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "food", stats = { hunger = math.random(10,20), }},
|
||||
["tosti"] = { emote = "sandwich", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "food", stats = { hunger = math.random(10,20), }},
|
||||
|
||||
["coffee"] = { emote = "coffee", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "drink", stats = { thirst = math.random(10,20), }},
|
||||
["coffee"] = { emote = "coffee", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "drink", stats = { effect = "stamina", time = 10000, thirst = math.random(10,20), }},
|
||||
["water_bottle"] = { emote = "drink", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "drink", stats = { thirst = math.random(10,20), }},
|
||||
["kurkakola"] = { emote = "ecola", time = math.random(5000, 6000), stress = math.random(2, 4), heal = 0, armor = 0, type = "drink", stats = { thirst = math.random(10,20), }},
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
-- Items that effect status changes, like bleeding can cause problems as they are all handled in their own scripts
|
||||
-- Testing these but they may be best left handled by default scripts
|
||||
["ifaks"] = { emote = "oxy", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 10, armor = 0, type = "drug", },
|
||||
["bandage"] = { emote = "oxy", time = math.random(5000, 6000), stress = 0, heal = 10, armor = 0, type = "drug", },
|
||||
["ifaks"] = { emote = "oxy", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 10, armor = 0, type = "drug", stats = { effect = "heal", amount = 6, widepupils = false, canOD = false } },
|
||||
["bandage"] = { emote = "oxy", time = math.random(5000, 6000), stress = 0, heal = 10, armor = 0, type = "drug", stats = { effect = "heal", amount = 3, widepupils = false, canOD = false } }, },
|
||||
]]
|
||||
|
||||
--Testing effects & armor with small functionality to drugs - This may be another one left to default scripts
|
||||
["joint"] = { emote = "smoke3", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 10, type = "drug", stats = { effect = "weed", widepupils = false, canOD = false } },
|
||||
["joint"] = { emote = "smoke3", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 10, type = "drug", stats = { screen = "weed", effect = "armor", widepupils = false, canOD = false } },
|
||||
|
||||
["cokebaggy"] = { emote = "coke", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 10, type = "drug", stats = { effect = "stamina", widepupils = false, canOD = true } },
|
||||
["crackbaggy"] = { emote = "coke", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 10, type = "drug", stats = { effect = "heal", widepupils = false, canOD = true } },
|
||||
["xtcbaggy"] = { emote = "oxy", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 10, type = "drug", stats = { effect = "stamina", widepupils = true, canOD = true } },
|
||||
["oxy"] = { emote = "oxy", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 10, type = "drug", stats = { effect = "heal", widepupils = false, canOD = false } },
|
||||
["cokebaggy"] = { emote = "coke", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 0, type = "drug", stats = { screen = "focus", effect = "stamina", widepupils = false, canOD = true } },
|
||||
--["crackbaggy"] = { emote = "coke", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 0, type = "drug", stats = { effect = "heal", widepupils = false, canOD = true } },
|
||||
["xtcbaggy"] = { emote = "oxy", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 10, type = "drug", stats = { effect = "strength", widepupils = true, canOD = true } },
|
||||
["oxy"] = { emote = "oxy", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 0, type = "drug", stats = { effect = "heal", widepupils = false, canOD = false } },
|
||||
["meth"] = { emote = "coke", time = math.random(5000, 6000), stress = math.random(12, 24), heal = 0, armor = 10, type = "drug", stats = { effect = "stamina", widepupils = false, canOD = true } },
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------]]
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--[[
|
||||
Example item
|
||||
["heartstopper"] = {
|
||||
|
||||
--Example item
|
||||
--[[ ["heartstopper"] = {
|
||||
emote = "burger", -- Select an emote from below, it has to be in here
|
||||
time = math.random(5000, 6000), -- Amount of time it takes to consume the item (if nil, this is the default)
|
||||
time = math.random(5000, 6000), -- Amount of time it takes to consume the item
|
||||
stress = math.random(1,2), -- Amount of stress relief, can be 0
|
||||
heal = 0, -- Set amount to heal by after consuming
|
||||
armor = 5, -- Amount of armor to add
|
||||
type = "food", -- Type: "alcohol" / "drink" / "food"
|
||||
effect = { effect = "healdouble", }, -- The status effect given by the item, "heal" / "healdouble" / "stamina"
|
||||
stats = { hunger = math.random(10,20), }, -- The stats of the item, if not found in the items.lua
|
||||
},
|
||||
]]
|
||||
stats = {
|
||||
screen = "rampage", -- The screen effect to be played when after consuming the item
|
||||
effect = "heal", -- The status effect given by the item, "heal" / "stamina"
|
||||
time = 10000, -- How long the effect should last (if not added it will default to 10000)
|
||||
amount = 6, -- How much the value is changed by per second
|
||||
hunger = math.random(10,20), -- The hunger/thirst stats of the item, if not found in the items.lua
|
||||
thirst = math.random(10,20), -- The hunger/thirst stats of the item, if not found in the items.lua
|
||||
},
|
||||
}, ]]
|
||||
|
||||
},
|
||||
Emotes = {
|
||||
["drink"] = {"mp_player_intdrink", "loop_bottle", "Drink", AnimationOptions =
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
name "Jim-Consumables"
|
||||
author "Jimathy"
|
||||
version "v1.1"
|
||||
version "v1.3.1"
|
||||
description "Consumable Script By Jimathy"
|
||||
fx_version "cerulean"
|
||||
game "gta5"
|
||||
|
||||
shared_scripts { 'config.lua', 'shared/*.lua' }
|
||||
client_scripts { 'client/*.lua', }
|
||||
server_scripts { 'server/*.lua' }
|
||||
shared_scripts { 'config.lua', }
|
||||
server_scripts { 'server/*.lua' }
|
||||
@@ -1,15 +1,21 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
--Consumables
|
||||
CreateThread(function()
|
||||
for k in pairs(Config.Consumables) do
|
||||
QBCore.Functions.CreateUseableItem(k, function(source, item)
|
||||
TriggerClientEvent('jim-consumables:Consume', source, item.name)
|
||||
end)
|
||||
end
|
||||
for k, v in pairs(Config.Consumables) do
|
||||
QBCore.Functions.CreateUseableItem(k, function(source, item) TriggerClientEvent('jim-consumables:Consume', source, item.name) end)
|
||||
if not QBCore.Shared.Items[k] then print("Item check - '"..k.."' not found in the shared lua") end
|
||||
if not Config.Emotes[v.emote] then print("Emote check - '"..k.."' requested emote '"..v.emote.."' - not found in config.lua") end
|
||||
for k, v in pairs(Config.Consumables) do
|
||||
QBCore.Functions.CreateUseableItem(k, function(source, item) TriggerClientEvent('jim-consumables:Consume', source, item.name) end)
|
||||
if not QBCore.Shared.Items[k] then print("Item check - '"..k.."' not found in the shared lua") end
|
||||
if not Config.Emotes[v.emote] then print("Emote check - '"..k.."' requested emote '"..v.emote.."' - not found in config.lua") end
|
||||
end
|
||||
|
||||
|
||||
RegisterNetEvent('jim-consumables:server:toggleItem', function(give, item, amount)
|
||||
local src = source
|
||||
if give == 0 or give == false then
|
||||
if QBCore.Functions.GetPlayer(src).Functions.RemoveItem(item, amount or 1) then
|
||||
TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], "remove", amount or 1)
|
||||
end
|
||||
else
|
||||
if QBCore.Functions.GetPlayer(src).Functions.AddItem(item, amount or 1) then
|
||||
TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], "add", amount or 1)
|
||||
end
|
||||
end
|
||||
end)
|
||||
248
shared/shared.lua
Normal file
248
shared/shared.lua
Normal file
@@ -0,0 +1,248 @@
|
||||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
RegisterNetEvent('QBCore:Client:UpdateObject', function() QBCore = exports['qb-core']:GetCoreObject() end)
|
||||
|
||||
local time = 1000
|
||||
function loadModel(model) if not HasModelLoaded(model) then
|
||||
if Config.Debug then print("^5Debug^7: ^2Loading Model^7: '^6"..model.."^7'") end
|
||||
while not HasModelLoaded(model) do
|
||||
if time > 0 then time = time - 1 RequestModel(model)
|
||||
else time = 1000 print("^5Debug^7: ^3LoadModel^7: ^2Timed out loading model ^7'^6"..model.."^7'") break
|
||||
end
|
||||
Wait(10)
|
||||
end
|
||||
end end
|
||||
function unloadModel(model) if Config.Debug then print("^5Debug^7: ^2Removing Model^7: '^6"..model.."^7'") end SetModelAsNoLongerNeeded(model) end
|
||||
function loadAnimDict(dict) if not HasAnimDictLoaded(dict) then if Config.Debug then print("^5Debug^7: ^2Loading Anim Dictionary^7: '^6"..dict.."^7'") end while not HasAnimDictLoaded(dict) do RequestAnimDict(dict) Wait(5) end end end
|
||||
function unloadAnimDict(dict) if Config.Debug then print("^5Debug^7: ^2Removing Anim Dictionary^7: '^6"..dict.."^7'") end RemoveAnimDict(dict) end
|
||||
function loadPtfxDict(dict) if not HasNamedPtfxAssetLoaded(dict) then if Config.Debug then print("^5Debug^7: ^2Loading Ptfx Dictionary^7: '^6"..dict.."^7'") end while not HasNamedPtfxAssetLoaded(dict) do RequestNamedPtfxAsset(dict) Wait(5) end end end
|
||||
function unloadPtfxDict(dict) if Config.Debug then print("^5Debug^7: ^2Removing Ptfx Dictionary^7: '^6"..dict.."^7'") end RemoveNamedPtfxAsset(dict) end
|
||||
|
||||
function destroyProp(entity)
|
||||
if Config.Debug then print("^5Debug^7: ^2Destroying Prop^7: '^6"..entity.."^7'") end
|
||||
SetEntityAsMissionEntity(entity) Wait(5)
|
||||
DetachEntity(entity, true, true) Wait(5)
|
||||
DeleteObject(entity)
|
||||
end
|
||||
|
||||
function makeProp(data, freeze, synced)
|
||||
loadModel(data.prop)
|
||||
local prop = CreateObject(data.prop, data.coords.x, data.coords.y, data.coords.z-1.03, synced or false, synced or false, 0)
|
||||
SetEntityHeading(prop, data.coords.w+180.0)
|
||||
FreezeEntityPosition(prop, freeze or 0)
|
||||
if Config.Debug then print("^5Debug^7: ^6Prop ^2Created ^7: '^6"..prop.."^7'") end
|
||||
return prop
|
||||
end
|
||||
function triggerNotify(title, message, type, src)
|
||||
if Config.Notify == "okok" then
|
||||
if not src then exports['okokNotify']:Alert(title, message, 6000, type)
|
||||
else TriggerClientEvent('okokNotify:Alert', src, title, message, 6000, type) end
|
||||
elseif Config.Notify == "qb" then
|
||||
if not src then TriggerEvent("QBCore:Notify", message, type)
|
||||
else TriggerClientEvent("QBCore:Notify", src, message, type) end
|
||||
elseif Config.Notify == "t" then
|
||||
if not src then exports['t-notify']:Custom({title = title, style = type, message = message, sound = true})
|
||||
else TriggerClientEvent('t-notify:client:Custom', src, { style = type, duration = 6000, title = title, message = message, sound = true, custom = true}) end
|
||||
elseif Config.Notify == "infinity" then
|
||||
if not src then TriggerEvent('infinity-notify:sendNotify', message, type)
|
||||
else TriggerClientEvent('infinity-notify:sendNotify', src, message, type) end
|
||||
elseif Config.Notify == "rr" then
|
||||
if not src then exports.rr_uilib:Notify({msg = message, type = type, style = "dark", duration = 6000, position = "top-right", })
|
||||
else TriggerClientEvent("rr_uilib:Notify", src, {msg = message, type = type, style = "dark", duration = 6000, position = "top-right", }) end
|
||||
end
|
||||
end
|
||||
|
||||
function countTable(table) local i = 0 for keys in pairs(table) do i = i + 1 end return i end
|
||||
|
||||
function toggleItem(give, item, amount) TriggerServerEvent("jim-consumables:server:toggleItem", give, item, amount) end
|
||||
|
||||
--Screen Effects
|
||||
local alienEffect = false
|
||||
function AlienEffect()
|
||||
if alienEffect then return else alienEffect = true end
|
||||
if Config.Debug then print("^5Debug^7: ^3AlienEffect^7() ^2activated") end
|
||||
AnimpostfxPlay("DrugsMichaelAliensFightIn", 3.0, 0)
|
||||
Wait(math.random(5000, 8000))
|
||||
local Ped = PlayerPedId()
|
||||
local animDict = "MOVE_M@DRUNK@VERYDRUNK"
|
||||
loadAnimDict(animDict)
|
||||
SetPedCanRagdoll(Ped, true)
|
||||
ShakeGameplayCam('DRUNK_SHAKE', 2.80)
|
||||
SetTimecycleModifier("Drunk")
|
||||
SetPedMovementClipset(Ped, animDict, 1)
|
||||
SetPedMotionBlur(Ped, true)
|
||||
SetPedIsDrunk(Ped, true)
|
||||
Wait(1500)
|
||||
SetPedToRagdoll(Ped, 5000, 1000, 1, 0, 0, 0)
|
||||
Wait(13500)
|
||||
SetPedToRagdoll(Ped, 5000, 1000, 1, 0, 0, 0)
|
||||
Wait(120500)
|
||||
ClearTimecycleModifier()
|
||||
ResetScenarioTypesEnabled()
|
||||
ResetPedMovementClipset(Ped, 0)
|
||||
SetPedIsDrunk(Ped, false)
|
||||
SetPedMotionBlur(Ped, false)
|
||||
AnimpostfxStopAll()
|
||||
ShakeGameplayCam('DRUNK_SHAKE', 0.0)
|
||||
AnimpostfxPlay("DrugsMichaelAliensFight", 3.0, 0)
|
||||
Wait(math.random(45000, 60000))
|
||||
AnimpostfxPlay("DrugsMichaelAliensFightOut", 3.0, 0)
|
||||
AnimpostfxStop("DrugsMichaelAliensFightIn")
|
||||
AnimpostfxStop("DrugsMichaelAliensFight")
|
||||
AnimpostfxStop("DrugsMichaelAliensFightOut")
|
||||
alienEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3AlienEffect^7() ^2stopped") end
|
||||
end
|
||||
local weedEffect = false
|
||||
function WeedEffect()
|
||||
if weedEffect then return else weedEffect = true end
|
||||
weedEffect = true
|
||||
if Config.Debug then print("^5Debug^7: ^3WeedEffect^7() ^2activated") end
|
||||
AnimpostfxPlay("DrugsMichaelAliensFightIn", 3.0, 0)
|
||||
Wait(math.random(3000, 20000))
|
||||
AnimpostfxPlay("DrugsMichaelAliensFight", 3.0, 0)
|
||||
Wait(math.random(15000, 20000))
|
||||
AnimpostfxPlay("DrugsMichaelAliensFightOut", 3.0, 0)
|
||||
AnimpostfxStop("DrugsMichaelAliensFightIn")
|
||||
AnimpostfxStop("DrugsMichaelAliensFight")
|
||||
AnimpostfxStop("DrugsMichaelAliensFightOut")
|
||||
weedEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3WeedEffect^7() ^2stopped") end
|
||||
end
|
||||
local trevorEffect = false
|
||||
function TrevorEffect()
|
||||
if trevorEffect then return else trevorEffect = true end
|
||||
if Config.Debug then print("^5Debug^7: ^3TrevorEffect^7() ^2activated") end
|
||||
AnimpostfxPlay("DrugsTrevorClownsFightIn", 3.0, 0)
|
||||
Wait(3000)
|
||||
AnimpostfxPlay("DrugsTrevorClownsFight", 3.0, 0)
|
||||
Wait(30000)
|
||||
AnimpostfxPlay("DrugsTrevorClownsFightOut", 3.0, 0)
|
||||
AnimpostfxStop("DrugsTrevorClownsFight")
|
||||
AnimpostfxStop("DrugsTrevorClownsFightIn")
|
||||
AnimpostfxStop("DrugsTrevorClownsFightOut")
|
||||
trevorEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3TrevorEffect^7() ^2stopped") end
|
||||
end
|
||||
local turboEffect = false
|
||||
function TurboEffect()
|
||||
if turboEffect then return else turboEffect = true end
|
||||
if Config.Debug then print("^5Debug^7: ^3TurboEffect^7() ^2activated") end
|
||||
AnimpostfxPlay('RaceTurbo', 0, true)
|
||||
SetTimecycleModifier('rply_motionblur')
|
||||
ShakeGameplayCam('SKY_DIVING_SHAKE', 0.25)
|
||||
Wait(30000)
|
||||
StopGameplayCamShaking(true)
|
||||
SetTransitionTimecycleModifier('default', 0.35)
|
||||
Wait(1000)
|
||||
ClearTimecycleModifier()
|
||||
AnimpostfxStop('RaceTurbo')
|
||||
turboEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3TurboEffect^7() ^2stopped") end
|
||||
end
|
||||
local rampageEffect = false
|
||||
function RampageEffect()
|
||||
if rampageEffect then return else rampageEffect = true end
|
||||
if Config.Debug then print("^5Debug^7: ^3RampageEffect^7() ^2activated") end
|
||||
AnimpostfxPlay('Rampage', 0, true)
|
||||
SetTimecycleModifier('rply_motionblur')
|
||||
ShakeGameplayCam('SKY_DIVING_SHAKE', 0.25)
|
||||
Wait(30000)
|
||||
StopGameplayCamShaking(true)
|
||||
SetTransitionTimecycleModifier('default', 0.35)
|
||||
Wait(1000)
|
||||
ClearTimecycleModifier()
|
||||
AnimpostfxStop('Rampage')
|
||||
rampageEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3RampageEffect^7() ^2stopped") end
|
||||
end
|
||||
local focusEffect = false
|
||||
function FocusEffect()
|
||||
if focusEffect then return else focusEffect = true end
|
||||
if Config.Debug then print("^5Debug^7: ^3FocusEffect^7() ^2activated") end
|
||||
Wait(1000)
|
||||
AnimpostfxPlay('FocusIn', 0, true)
|
||||
Wait(30000)
|
||||
AnimpostfxStop('FocusIn')
|
||||
focusEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3FocusEffect^7() ^2stopped") end
|
||||
end
|
||||
local NightVisionEffect = false
|
||||
function NightVisionEffect()
|
||||
if NightVisionEffect then return else NightVisionEffect = true end
|
||||
if Config.Debug then print("^5Debug^7: ^3NightVisionEffect^7() ^2activated") end
|
||||
SetNightvision(true)
|
||||
Wait(math.random(3000, 4000)) -- FEEL FREE TO CHANGE THIS
|
||||
SetNightvision(false)
|
||||
SetSeethrough(false)
|
||||
NightVisionEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3NightVisionEffect^7() ^2stopped") end
|
||||
end
|
||||
local thermalEffect = false
|
||||
function ThermalEffect()
|
||||
if thermalEffect then return else thermalEffect = true end
|
||||
if Config.Debug then print("^5Debug^7: ^3ThermalEffect^7() ^2activated") end
|
||||
SetNightvision(true)
|
||||
SetSeethrough(true)
|
||||
Wait(math.random(2000, 3000)) -- FEEL FREE TO CHANGE THIS
|
||||
SetNightvision(false)
|
||||
SetSeethrough(false)
|
||||
thermalEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3ThermalEffect^7() ^2stopped") end
|
||||
end
|
||||
|
||||
--Built-in Buff effects
|
||||
local healEffect = false
|
||||
function HealEffect(data)
|
||||
if healEffect then return end
|
||||
if Config.Debug then print("^5Debug^7: ^3HealEffect^7() ^2activated") end
|
||||
healEffect = true
|
||||
local count = (data[1] / 1000)
|
||||
while count > 0 do
|
||||
Wait(1000)
|
||||
count = count - 1
|
||||
SetEntityHealth(PlayerPedId(), GetEntityHealth(PlayerPedId()) + data[2])
|
||||
end
|
||||
healEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3HealEffect^7() ^2stopped") end
|
||||
end
|
||||
|
||||
local staminaEffect = false
|
||||
function StaminaEffect(data)
|
||||
if staminaEffect then return end
|
||||
if Config.Debug then print("^5Debug^7: ^3StaminaEffect^7() ^2activated") end
|
||||
staminaEffect = true
|
||||
local startStamina = (data[1] / 1000)
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.49)
|
||||
while startStamina > 0 do
|
||||
Wait(1000)
|
||||
if math.random(5, 100) < 10 then RestorePlayerStamina(PlayerId(), data[2]) end
|
||||
startStamina = startStamina - 1
|
||||
if math.random(5, 100) < 51 then end
|
||||
end
|
||||
startStamina = 0
|
||||
SetRunSprintMultiplierForPlayer(PlayerId(), 1.0)
|
||||
staminaEffect = false
|
||||
if Config.Debug then print("^5Debug^7: ^3StaminaEffect^7() ^2stopped") end
|
||||
end
|
||||
|
||||
function StopEffects() -- Used to clear up any effects stuck on screen
|
||||
if Config.Debug then print("^5Debug^7: ^2All screen effects stopped") end
|
||||
ShakeGameplayCam('DRUNK_SHAKE', 0.0)
|
||||
SetPedToRagdoll(PlayerPedId(), 5000, 1000, 1, 0, 0, 0)
|
||||
ClearTimecycleModifier()
|
||||
ResetScenarioTypesEnabled()
|
||||
ResetPedMovementClipset(PlayerPedId(), 0)
|
||||
SetPedIsDrunk(PlayerPedId(), false)
|
||||
SetPedMotionBlur(PlayerPedId(), false)
|
||||
SetNightvision(false)
|
||||
SetSeethrough(false)
|
||||
AnimpostfxStop("DrugsMichaelAliensFightIn")
|
||||
AnimpostfxStop("DrugsMichaelAliensFight")
|
||||
AnimpostfxStop("DrugsMichaelAliensFightOut")
|
||||
AnimpostfxStop("DrugsTrevorClownsFight")
|
||||
AnimpostfxStop("DrugsTrevorClownsFightIn")
|
||||
AnimpostfxStop("DrugsTrevorClownsFightOut")
|
||||
AnimpostfxStop('RaceTurbo')
|
||||
AnimpostfxStop('FocusIn')
|
||||
AnimpostfxStop('Rampage')
|
||||
end
|
||||
Reference in New Issue
Block a user