2025-07-15 02:21:34 -07:00
|
|
|
|
2024-03-17 20:05:09 -07:00
|
|
|
local herointable = false
|
2024-12-16 03:22:44 -08:00
|
|
|
local dirty = false
|
2026-01-16 02:57:26 -07:00
|
|
|
local locations = GlobalState.MDDrugsLocations.Heroin
|
2025-08-09 23:58:38 -06:00
|
|
|
|
2024-12-16 03:22:44 -08:00
|
|
|
local function createLabKit(coord, head)
|
2024-10-25 11:41:59 -07:00
|
|
|
local heroinlabkit = CreateObject("v_ret_ml_tablea", coord.x, coord.y, coord.z - 1, true, false,false)
|
2024-10-25 01:55:35 -07:00
|
|
|
SetEntityHeading(heroinlabkit, head)
|
|
|
|
|
PlaceObjectOnGroundProperly(heroinlabkit)
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Target.AddLocalEntity(heroinlabkit, {
|
2025-07-14 01:34:58 -07:00
|
|
|
{
|
|
|
|
|
icon = "fa-solid fa-temperature-high",
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('heroin.targetCook'),
|
2025-07-14 01:34:58 -07:00
|
|
|
action = function()
|
2026-01-16 02:57:26 -07:00
|
|
|
if not Bridge.Inventory.HasItem('emptyvial') then
|
|
|
|
|
Bridge.Notify.SendNotify(Bridge.Language.Locale('Catches.itemMissings', Bridge.Inventory.GetItemInfo('emptyvial').label), 'error')
|
2025-08-09 23:58:38 -06:00
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2025-07-14 01:34:58 -07:00
|
|
|
if not minigame() then
|
|
|
|
|
dirty = true
|
|
|
|
|
TriggerServerEvent("md-drugs:server:failheatingheroin")
|
2026-01-16 02:57:26 -07:00
|
|
|
local coords = GetEntityCoords(heroinlabkit)
|
|
|
|
|
AddExplosion(coords.x, coords.y, coords.z-1.0, 34, 0.0, true, false, true)
|
2025-07-14 01:34:58 -07:00
|
|
|
SetParticleFxLoopedAlpha(heroinkit, 3.0)
|
|
|
|
|
SetPedToRagdoll(PlayerPedId(), 1300, 1300, 0, 0, 0, 0)
|
2026-01-16 02:57:26 -07:00
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
if not progressbar(Bridge.Language.Locale('heroin.pbCook'), 4000, 'uncuff') then return end
|
2025-07-14 01:34:58 -07:00
|
|
|
TriggerServerEvent("md-drugs:server:heatliquidheroin")
|
|
|
|
|
end,
|
|
|
|
|
canInteract = function()
|
2025-07-15 02:21:34 -07:00
|
|
|
if not dirty then return true end
|
|
|
|
|
end
|
2025-07-14 01:34:58 -07:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
icon = "fas fa-box-circle-check",
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('heroin.targetPickup'),
|
2025-07-14 01:34:58 -07:00
|
|
|
action = function()
|
2026-01-16 02:57:26 -07:00
|
|
|
if not progressbar(Bridge.Language.Locale('heroin.pbPickup'), 4000, 'uncuff') then return end
|
2025-07-14 01:34:58 -07:00
|
|
|
herointable = false
|
|
|
|
|
DeleteObject(heroinlabkit)
|
|
|
|
|
TriggerServerEvent("md-drugs:server:getheroinlabkitback")
|
|
|
|
|
end,
|
|
|
|
|
canInteract = function()
|
|
|
|
|
if not dirty then return true end
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
icon = "fa-solid fa-hand-sparkles",
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('heroin.targetClean'),
|
2025-07-14 01:34:58 -07:00
|
|
|
action = function()
|
2026-01-16 02:57:26 -07:00
|
|
|
if not Bridge.Inventory.HasItem('cleaningkit') then
|
|
|
|
|
Bridge.Notify.SendNotify(Bridge.Language.Locale('Catches.itemMissings', Bridge.Inventory.GetItemInfo('cleaningkit').label), 'error')
|
2025-08-09 23:58:38 -06:00
|
|
|
return
|
|
|
|
|
end
|
2026-01-16 02:57:26 -07:00
|
|
|
if not progressbar(Bridge.Language.Locale('heroin.pbClean'), 4000, 'clean') then return end
|
|
|
|
|
local done = Bridge.Callback.Trigger('md-drugs:server:removeCleaningKitHeroin', false)
|
2025-07-14 01:34:58 -07:00
|
|
|
if done then dirty = false end
|
|
|
|
|
end,
|
|
|
|
|
canInteract = function()
|
|
|
|
|
if dirty then return true end
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
}})
|
2024-10-25 01:55:35 -07:00
|
|
|
end
|
2024-10-24 20:00:27 -07:00
|
|
|
|
2025-08-06 02:25:06 -06:00
|
|
|
for k, v in pairs (locations.dryplant) do
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Target.AddBoxZone('dryHeroin'..k, v.loc, vector3(v.l, v.w, 2.0), v.loc.w or 180.0, {
|
2025-07-14 01:34:58 -07:00
|
|
|
{
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('heroin.targetDry'),
|
2025-07-14 01:34:58 -07:00
|
|
|
icon = 'fa-solid fa-temperature-high',
|
|
|
|
|
action = function()
|
2026-01-16 02:57:26 -07:00
|
|
|
if not progressbar(Bridge.Language.Locale('heroin.pbDry'), 4000, 'uncuff') then return end
|
2025-07-14 01:34:58 -07:00
|
|
|
TriggerServerEvent("md-drugs:server:dryplant", k)
|
|
|
|
|
end,
|
|
|
|
|
canInteract = function()
|
|
|
|
|
return handleGang(v.gang)
|
|
|
|
|
end
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
end
|
2024-01-13 22:23:17 -08:00
|
|
|
|
2025-08-06 02:25:06 -06:00
|
|
|
for k, v in pairs (locations.cutheroinone) do
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Target.AddBoxZone('cutHeroin'..k, v.loc, vector3(v.l, v.w, 2.0), v.loc.w or 180.0, {
|
2025-07-14 01:34:58 -07:00
|
|
|
{
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('heroin.targetCutHeroin'),
|
2025-07-14 01:34:58 -07:00
|
|
|
icon = 'fa-solid fa-seedling',
|
|
|
|
|
action = function()
|
2026-01-16 02:57:26 -07:00
|
|
|
if not Bridge.Inventory.HasItem('bakingsoda') then
|
|
|
|
|
Bridge.Notify.SendNotify(Bridge.Language.Locale('Catches.itemMissings', Bridge.Inventory.GetItemInfo('bakingsoda').label), 'error')
|
2025-09-11 21:44:26 -06:00
|
|
|
return
|
|
|
|
|
end
|
2026-01-16 02:57:26 -07:00
|
|
|
if not progressbar(Bridge.Language.Locale('heroin.pbCutHeroin'), 4000, 'uncuff') then return end
|
2025-07-14 01:34:58 -07:00
|
|
|
TriggerServerEvent("md-drugs:server:cutheroin", k)
|
|
|
|
|
end,
|
|
|
|
|
canInteract = function()
|
|
|
|
|
return handleGang(v.gang)
|
|
|
|
|
end
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
end
|
2026-01-16 02:57:26 -07:00
|
|
|
|
2025-08-06 02:25:06 -06:00
|
|
|
local peds = {}
|
|
|
|
|
for k, v in pairs (locations.buyKit) do
|
2026-01-16 02:57:26 -07:00
|
|
|
requestModel(v.ped, 1000)
|
2025-08-06 02:25:06 -06:00
|
|
|
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)
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Target.AddLocalEntity(peds[k], {
|
2025-08-06 02:25:06 -06:00
|
|
|
{
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('heroin.targetBuyKit'),
|
2025-08-06 02:25:06 -06:00
|
|
|
icon = 'fa-solid fa-box-open',
|
|
|
|
|
action = function()
|
2026-01-16 02:57:26 -07:00
|
|
|
if not progressbar(Bridge.Language.Locale('heroin.pbBuyKit'), 4000, 'uncuff') then return end
|
2025-08-06 02:25:06 -06:00
|
|
|
TriggerServerEvent("md-drugs:server:getheroinlabkit", k)
|
|
|
|
|
end,
|
|
|
|
|
canInteract = function()
|
2025-08-09 03:10:00 -06:00
|
|
|
if not handleGang(v.gang) then return false end
|
|
|
|
|
return true
|
|
|
|
|
end
|
2025-08-06 02:25:06 -06:00
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
end
|
2024-01-13 22:23:17 -08:00
|
|
|
|
|
|
|
|
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Callback.Register("md-drugs:client:setheroinlabkit", function()
|
2025-07-14 01:34:58 -07:00
|
|
|
if herointable then
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Notify.SendNotify(Bridge.Language.Locale('heroin.tableout'), 'error')
|
2024-11-22 12:26:27 -08:00
|
|
|
return false
|
2024-10-25 01:55:35 -07:00
|
|
|
else
|
|
|
|
|
herointable = true
|
|
|
|
|
local location, head = StartRay()
|
2024-11-22 12:26:27 -08:00
|
|
|
if not location then herointable = false return end
|
2026-01-16 02:57:26 -07:00
|
|
|
if not progressbar(Bridge.Language.Locale('heroin.placing'), 4000, 'uncuff') then return end
|
2024-10-25 01:55:35 -07:00
|
|
|
createLabKit(location, head)
|
2024-11-22 12:26:27 -08:00
|
|
|
return true, location
|
2024-10-25 01:55:35 -07:00
|
|
|
end
|
2024-01-13 22:23:17 -08:00
|
|
|
end)
|
|
|
|
|
|
2025-08-06 02:25:06 -06:00
|
|
|
for k, v in pairs (locations.fillneedle) do
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Target.AddBoxZone('fillNeedle'..k, v.loc, vector3(v.l, v.w, 2.0), v.loc.w or 180.0, {
|
2025-07-14 01:34:58 -07:00
|
|
|
{
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('heroin.targetFill'),
|
2025-07-14 01:34:58 -07:00
|
|
|
icon = 'fa-solid fa-syringe',
|
|
|
|
|
action = function()
|
|
|
|
|
if not minigame() then TriggerServerEvent("md-drugs:server:failheroin", k) return end
|
2026-01-16 02:57:26 -07:00
|
|
|
if not progressbar(Bridge.Language.Locale('heroin.pbFill'), 4000, 'uncuff') then return end
|
2025-07-14 01:34:58 -07:00
|
|
|
TriggerServerEvent("md-drugs:server:fillneedle", k)
|
|
|
|
|
end,
|
|
|
|
|
canInteract = function()
|
|
|
|
|
return handleGang(v.gang)
|
|
|
|
|
end
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
end
|