Files
md-drugs/client/lean.lua
T
2026-01-19 00:38:01 -07:00

128 lines
3.8 KiB
Lua

local started = false
local hit = 0
local leanCar = nil
local location = GlobalState.MDDrugsLocations.Lean
local function SpawnCarPedChase(loc)
local stoploc = vector3(-1157.63, -3056.71, 13.94)
local start = location.StartLoc[math.random(1,#location.StartLoc)]
if started then Bridge.Notify.SendNotify(Bridge.Language.Locale('lean.alreadyChasing'), 'error') return end
started = true
requestModel("pounder", 30000)
requestModel("ig_priest", 30000)
requestModel("cargobob3", 30000)
leanCar = CreateVehicle("pounder", start.x+3, start.y-2, start.z-1, 52.0, true, false)
local driver = CreatePed(26, "ig_priest", start.x, start.y, start.z, 268.9422, false, false)
local pilot2 = CreatePed(26, "ig_priest", stoploc.x-3, stoploc.y-3, stoploc.z-1, 268.9422, false, false)
local can = Bridge.Callback.Trigger('md-drugs:server:registerLean', loc, NetworkGetNetworkIdFromEntity(leanCar))
if not can then
Bridge.Notify.SendNotify(Bridge.Language.Locale('lean.cantStart'), 'error')
DeleteVehicle(leanCar)
DeleteEntity(driver)
DeleteEntity(pilot2)
started = false
return
end
SetPedIntoVehicle(pilot2, leanCar, 1)
FreezeEntityPosition(driver, true)
FreezeEntityPosition(pilot2, true)
SetEntityInvincible(pilot2, true)
SetEntityAsMissionEntity(leanCar)
AddBlipForEntity(leanCar)
SetPedIntoVehicle(driver, leanCar, -1)
SetPedFleeAttributes(driver,false)
TaskVehicleDriveToCoordLongrange(driver, leanCar, stoploc.x, stoploc.y, stoploc.z-1, 50.0, 524288, 25.0)
SetPedKeepTask(driver, true)
repeat
Wait(1000)
until #(GetEntityCoords(driver) - stoploc) < 20.0 or GetEntityHealth(driver) == 0
RemoveBlip(leanCar)
if GetEntityHealth(driver) == 0 then
Bridge.Target.AddLocalEntity(leanCar, {
{
name = 'leancar',
icon = 'fa-solid fa-car',
label = Bridge.Language.Locale('lean.stealFromTruck'),
action = function()
if not minigame() then return end
TriggerServerEvent('md-drugs:server:givelean')
started = false
DeleteEntity(driver)
DeleteEntity(pilot2)
end
}
})
else
DeleteEntity(driver)
DeleteEntity(pilot2)
end
end
local leanPeds = {}
for k, v in pairs (location.SyrupVendor) do
requestModel(v.ped)
leanPeds[k] = CreatePed(0, v.ped, v.loc.x, v.loc.y, v.loc.z, false, false)
Freeze(leanPeds[k], true, v.loc.w)
Bridge.Target.AddLocalEntity(leanPeds[k], {
{
icon = "fa-solid fa-hand-holding-medical",
label = Bridge.Language.Locale('lean.startMission'),
action = function()
SpawnCarPedChase()
end,
canInteract = function()
if not handleGang(v.gang) then return false end
return true
end
},
})
end
local function concat(tbl)
local str = ""
for k, v in pairs (tbl) do
str = str .. v.item .. " X " .. v.amount .. " \n "
end
return str
end
local function getDisabled(recipe)
for k, v in pairs (recipe.ingredients) do
local count = Bridge.Inventory.GetItemCount(v.item)
if count < v.amount then
return true
end
end
return false
end
RegisterNetEvent("md-drugs:client:makeLean", function()
local menu = {}
for k, v in pairs (GlobalState.MDDrugsRecipes.Lean) do
menu[#menu+1] = {
title = Bridge.Inventory.GetItemInfo(v.item).label,
description = concat(v.ingredients),
icon = Bridge.Inventory.GetItemInfo(v.item).image,
disabled = getDisabled(v),
onSelect = function()
if not progressbar(Bridge.Language.Locale('lean.makingLean'), 4000, 'uncuff') then return end
TriggerServerEvent('md-drugs:server:makeLean', k)
end,
}
end
Bridge.Menu.Open({
id = 'makeLeanMenu',
title = Bridge.Language.Locale('lean.makeLeanMenuTitle'),
description = Bridge.Language.Locale('lean.makeLeanMenuDesc'),
options = menu
})
end)