Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Clean up code with best practices #21

Draft
wants to merge 1 commit into
base: dev
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
185 changes: 59 additions & 126 deletions client/main.lua
Original file line number Diff line number Diff line change
@@ -1,157 +1,90 @@
local IsAlreadyDrunk = false
local DrunkLevel = -1
local DrunkLevel = -1

function Drunk(level, start)

CreateThread(function()

local playerPed = PlayerPedId()

if start then
DoScreenFadeOut(800)
Wait(1000)
end

if level == 0 then

RequestAnimSet("move_m@drunk@slightlydrunk")

while not HasAnimSetLoaded("move_m@drunk@slightlydrunk") do
Wait(0)
end

SetPedMovementClipset(playerPed, "move_m@drunk@slightlydrunk", true)

elseif level == 1 then

RequestAnimSet("move_m@drunk@moderatedrunk")

while not HasAnimSetLoaded("move_m@drunk@moderatedrunk") do
Wait(0)
end

SetPedMovementClipset(playerPed, "move_m@drunk@moderatedrunk", true)

elseif level == 2 then

RequestAnimSet("move_m@drunk@verydrunk")

while not HasAnimSetLoaded("move_m@drunk@verydrunk") do
Wait(0)
end

SetPedMovementClipset(playerPed, "move_m@drunk@verydrunk", true)

end
local function SetDrunkEffect(level, start)
local playerPed = PlayerPedId()
local animSet = {
[0] = "move_m@drunk@slightlydrunk",
[1] = "move_m@drunk@moderatedrunk",
[2] = "move_m@drunk@verydrunk"
}

SetTimecycleModifier("spectator5")
SetPedMotionBlur(playerPed, true)
SetPedIsDrunk(playerPed, true)
if start then
DoScreenFadeOut(800)
Wait(1000)
end

if start then
DoScreenFadeIn(800)
if animSet[level] then
RequestAnimSet(animSet[level])
while not HasAnimSetLoaded(animSet[level]) do
Wait(0)
end
SetPedMovementClipset(playerPed, animSet[level], true)
end

end)
SetTimecycleModifier("spectator5")
SetPedMotionBlur(playerPed, true)
SetPedIsDrunk(playerPed, true)

if start then
DoScreenFadeIn(800)
end
end

function Reality()

CreateThread(function()

local playerPed = PlayerPedId()
local function RemoveDrunkEffect()
local playerPed = PlayerPedId()

DoScreenFadeOut(800)
Wait(1000)
DoScreenFadeOut(800)
Wait(1000)

ClearTimecycleModifier()
ResetScenarioTypesEnabled()
ResetPedMovementClipset(playerPed, 0)
SetPedIsDrunk(playerPed, false)
SetPedMotionBlur(playerPed, false)
ClearTimecycleModifier()
ResetScenarioTypesEnabled()
ResetPedMovementClipset(playerPed, 0)
SetPedIsDrunk(playerPed, false)
SetPedMotionBlur(playerPed, false)

DoScreenFadeIn(800)
DoScreenFadeIn(800)
end

end)
local function HandleDrunkStatus(status)
local start = not IsAlreadyDrunk
local level = (status.val > 500000 and 2) or (status.val > 250000 and 1) or 0

if status.val > 0 then
if level ~= DrunkLevel then
SetDrunkEffect(level, start)
end
IsAlreadyDrunk = true
DrunkLevel = level
elseif IsAlreadyDrunk then
RemoveDrunkEffect()
IsAlreadyDrunk = false
DrunkLevel = -1
end
end

AddEventHandler('esx_status:loaded', function(status)

TriggerEvent('esx_status:registerStatus', 'drunk', 0, '#8F15A5',
TriggerEvent('esx_status:registerStatus', 'drunk', 0, '#8F15A5',
function(status)
if status.val > 0 then
return true
else
return false
end
return status.val > 0
end,
function(status)
status.remove(1500)
end
)

CreateThread(function()

while true do

Wait(1000)

TriggerEvent('esx_status:getStatus', 'drunk', function(status)

if status.val > 0 then

local start = true

if IsAlreadyDrunk then
start = false
end

local level = 0

if status.val <= 250000 then
level = 0
elseif status.val <= 500000 then
level = 1
else
level = 2
end

if level ~= DrunkLevel then
Drunk(level, start)
end

IsAlreadyDrunk = true
DrunkLevel = level
end

if status.val == 0 then

if IsAlreadyDrunk then
Reality()
end

IsAlreadyDrunk = false
DrunkLevel = -1

end

end)

end

end)

CreateThread(function()
while true do
Wait(Config.GetDrunkStatusTick)
TriggerEvent('esx_status:getStatus', 'drunk', HandleDrunkStatus)
end
end)
end)

RegisterNetEvent('esx_optionalneeds:onDrink')
AddEventHandler('esx_optionalneeds:onDrink', function()

local playerPed = PlayerPedId()

TaskStartScenarioInPlace(playerPed, "WORLD_HUMAN_DRINKING", 0, 1)
TaskStartScenarioInPlace(playerPed, "WORLD_HUMAN_DRINKING", 0, true)
Wait(1000)
ClearPedTasksImmediately(playerPed)

end)
end)
4 changes: 2 additions & 2 deletions config.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Config = {}

Config.TickTime = 100
Config.UpdateClientTime = 5000
Config.Locale = GetConvar('esx:locale', 'en')

Config.GetDrunkStatusTick = 5000
4 changes: 0 additions & 4 deletions server/main.lua
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
ESX.RegisterUsableItem('beer', function(source)

local xPlayer = ESX.GetPlayerFromId(source)

xPlayer.removeInventoryItem('beer', 1)

TriggerClientEvent('esx_status:add', source, 'drunk', 250000)
TriggerClientEvent('esx_optionalneeds:onDrink', source)
TriggerClientEvent('esx:showNotification', source, TranslateCap('used_beer'))

end)