1
0
Fork 0
forked from Simnation/Main
Main/resources/[inventory]/nordi_hookah/client/main.lua
2025-06-25 01:55:50 +02:00

91 lines
2.9 KiB
Lua

local Config = {
HookahProp = 'prop_bong_01', -- Eigenes Prop (ohne .ydr/.ytd)
TobaccoItem = 'shisha_tobacco',
Keybind = 'E',
Animation = {
dict = 'anim@amb@clubhouse@table@male@smoking@base',
anim = 'base',
prop = 'v_corp_lngestoolfd',
flag = 49,
bone = 57005
},
SmokeEffect = {
name = 'ent_anim_cig_exhale_mth',
scale = 0.2
},
UseDuration = 30 -- Sekunden
}
local isSmoking = false
local smokeEffect = nil
-- Preload Assets
CreateThread(function()
RequestModel(Config.HookahProp)
RequestAnimDict(Config.Animation.dict)
while not HasModelLoaded(Config.HookahProp) or not HasAnimDictLoaded(Config.Animation.dict) do
Wait(0)
end
end)
-- Hookah Placement Logic
RegisterCommand('placehookah', function()
if isSmoking then return end
local playerPed = PlayerPedId()
local coords = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 0.8, -0.4)
local heading = GetEntityHeading(playerPed)
local hookah = CreateObject(Config.HookahProp, coords.x, coords.y, coords.z, true, true, true)
PlaceObjectOnGroundProperly(hookah)
SetEntityHeading(hookah, heading)
FreezeEntityPosition(hookah, true)
exports['qb-target']:AddTargetEntity(hookah, {
options = {
{
type = 'client',
event = 'qb-hookah:startSmoking',
icon = 'fas fa-smoking',
label = 'Smoke Hookah',
targeticon = 'fas fa-eye',
item = Config.TobaccoItem
}
},
distance = 2.5
})
end, false)
-- Smoking Logic
RegisterNetEvent('qb-hookah:startSmoking', function(entity)
if isSmoking then return end
QBCore.Functions.TriggerCallback('qb-hookah:removeTobacco', function(success)
if not success then
QBCore.Functions.Notify('You need hookah tobacco!', 'error')
return
end
isSmoking = true
local playerPed = PlayerPedId()
local animDict = Config.Animation.dict
-- Attach bong prop
local bong = CreateObject(Config.Animation.prop, GetEntityCoords(playerPed), true, true, true)
AttachEntityToEntity(bong, playerPed, Config.Animation.bone, 0.12, 0.018, -0.01, -80.0, -20.0, 180.0, true, true, false, true, 1, true)
-- Play animation
TaskPlayAnim(playerPed, animDict, Config.Animation.anim, 8.0, -8.0, Config.UseDuration * 1000, Config.Animation.flag, 0, false, false, false)
-- Smoke effect
UseParticleFxAssetNextCall('core')
smokeEffect = StartParticleFxLoopedOnEntityBone(Config.SmokeEffect.name, playerPed, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, GetPedBoneIndex(playerPed, 47419), Config.SmokeEffect.scale, 0.0, 0.0, 0.0)
-- Auto stop
Wait(Config.UseDuration * 1000)
DeleteObject(bong)
StopParticleFxLooped(smokeEffect, 0)
ClearPedTasks(playerPed)
isSmoking = false
end)
end)