Files
md-drugs/client/heroin.lua
T
2026-01-30 01:19:50 -07:00

155 lines
6.0 KiB
Lua

local herointable = false
local dirty = false
repeat Wait(100) until GlobalState.MDDrugsLocations.Heroin ~= nil
local locations = GlobalState.MDDrugsLocations.Heroin
local function createLabKit(coord, head)
local heroinlabkit = CreateObject("v_ret_ml_tablea", coord.x, coord.y, coord.z - 1, true, false,false)
SetEntityHeading(heroinlabkit, head)
PlaceObjectOnGroundProperly(heroinlabkit)
Bridge.Target.AddLocalEntity(heroinlabkit, {
{
icon = Bridge.Language.Locale('heroin.cookIcon'),
label = Bridge.Language.Locale('heroin.targetCook'),
action = function()
if not itemCheck('emptyvial') then return end
if not minigame() then
dirty = true
TriggerServerEvent("md-drugs:server:failheatingheroin")
local coords = GetEntityCoords(heroinlabkit)
AddExplosion(coords.x, coords.y, coords.z-1.0, 34, 0.0, true, false, true)
SetParticleFxLoopedAlpha(heroinkit, 3.0)
SetPedToRagdoll(PlayerPedId(), 1300, 1300, 0, 0, 0, 0)
return
end
if not progressbar(Bridge.Language.Locale('heroin.pbCook')) then return end
TriggerServerEvent("md-drugs:server:heatliquidheroin")
end,
canInteract = function()
if not dirty then return true end
end
},
{
icon = Bridge.Language.Locale('heroin.targetPickupIcon'),
label = Bridge.Language.Locale('heroin.targetPickup'),
action = function()
if not progressbar(Bridge.Language.Locale('heroin.pbPickup')) then return end
herointable = false
DeleteObject(heroinlabkit)
TriggerServerEvent("md-drugs:server:getheroinlabkitback")
end,
canInteract = function()
if not dirty then return true end
return false
end
},
{
icon = Bridge.Language.Locale('heroin.targetCleanIcon'),
label = Bridge.Language.Locale('heroin.targetClean'),
action = function()
if not itemCheck('cleaningkit') then return end
if not progressbar(Bridge.Language.Locale('heroin.pbClean'), 4000, 'clean') then return end
local done = Bridge.Callback.Trigger('md-drugs:server:removeCleaningKitHeroin', false)
if done then dirty = false end
end,
canInteract = function()
if dirty then return true end
return false
end
}})
targets[#targets+1] = heroinlabkit
end
for k, v in pairs (locations.dryplant) do
Bridge.Target.AddBoxZone('dryHeroin'..k, v.loc, v.size, v.loc.w or 180.0, {
{
label = Bridge.Language.Locale('heroin.targetDry'),
icon = Bridge.Language.Locale('heroin.dryIcon'),
action = function()
if not progressbar(Bridge.Language.Locale('heroin.pbDry')) then return end
TriggerServerEvent("md-drugs:server:dryplant", k)
end,
canInteract = function()
return handleGang(v.gang)
end
}
})
targets[#targets+1] = 'dryHeroin'..k
end
for k, v in pairs (locations.cutheroinone) do
Bridge.Target.AddBoxZone('cutHeroin'..k, v.loc, v.size, v.loc.w or 180.0, {
{
label = Bridge.Language.Locale('heroin.targetCutHeroin'),
icon = Bridge.Language.Locale('heroin.cutIcon'),
action = function()
if not itemCheck('bakingsoda') then return end
if not progressbar(Bridge.Language.Locale('heroin.pbCutHeroin')) then return end
TriggerServerEvent("md-drugs:server:cutheroin", k)
end,
canInteract = function()
return handleGang(v.gang)
end
}
})
targets[#targets+1] = 'cutHeroin'..k
end
local peds = {}
for k, v in pairs (locations.buyKit) do
requestModel(v.ped, 1000)
peds[k] = CreatePed(4, v.ped, v.loc.x, v.loc.y, v.loc.z, v.loc.w, false, false)
Freeze(peds[k], true, v.loc.w)
SetBlockingOfNonTemporaryEvents(peds[k], true)
SetEntityInvincible(peds[k], true)
Bridge.Target.AddLocalEntity(peds[k], {
{
label = Bridge.Language.Locale('heroin.targetBuyKit'),
icon = Bridge.Language.Locale('heroin.buyIcon'),
action = function()
if not progressbar(Bridge.Language.Locale('heroin.pbBuyKit')) then return end
TriggerServerEvent("md-drugs:server:getheroinlabkit", k)
end,
canInteract = function()
if not handleGang(v.gang) then return false end
return true
end
}
})
targets[#targets+1] = peds[k]
end
Bridge.Callback.Register("md-drugs:client:setheroinlabkit", function()
if herointable then
Bridge.Notify.SendNotify(Bridge.Language.Locale('heroin.tableout'), 'error')
return false
else
herointable = true
local location, head = StartRay()
if not location then herointable = false return end
if not progressbar(Bridge.Language.Locale('heroin.placing')) then return end
createLabKit(location, head)
return true, location
end
end)
for k, v in pairs (locations.fillneedle) do
Bridge.Target.AddBoxZone('fillNeedle'..k, v.loc, v.size, v.loc.w or 180.0, {
{
label = Bridge.Language.Locale('heroin.targetFill'),
icon = Bridge.Language.Locale('heroin.fillNeedleIcon'),
action = function()
if not minigame() then TriggerServerEvent("md-drugs:server:failheroin", k) return end
if not progressbar(Bridge.Language.Locale('heroin.pbFill')) then return end
TriggerServerEvent("md-drugs:server:fillneedle", k)
end,
canInteract = function()
return handleGang(v.gang)
end
}
})
targets[#targets+1] = 'fillNeedle'..k
end