Files
md-drugs/client/lean.lua
T

128 lines
3.9 KiB
Lua
Raw Normal View History

2025-07-17 02:06:17 -05:00
local started = false
2026-01-19 00:38:01 -07:00
local leanCar = nil
2026-01-30 00:45:03 -07:00
repeat Wait(100) until GlobalState.MDDrugsRecipes.Lean ~= nil
2026-01-19 00:38:01 -07:00
local location = GlobalState.MDDrugsLocations.Lean
2025-08-09 23:58:38 -06:00
2026-01-19 00:38:01 -07:00
local function SpawnCarPedChase(loc)
2025-07-17 02:06:17 -05:00
local stoploc = vector3(-1157.63, -3056.71, 13.94)
2025-08-06 02:25:06 -06:00
local start = location.StartLoc[math.random(1,#location.StartLoc)]
2025-07-18 01:19:12 -07:00
2026-01-16 02:57:26 -07:00
if started then Bridge.Notify.SendNotify(Bridge.Language.Locale('lean.alreadyChasing'), 'error') return end
2025-07-17 02:06:17 -05:00
started = true
2025-07-18 01:19:12 -07:00
2026-01-18 01:20:44 -07:00
requestModel("pounder", 30000)
requestModel("ig_priest", 30000)
requestModel("cargobob3", 30000)
2025-07-17 02:06:17 -05:00
2026-01-19 00:38:01 -07:00
leanCar = CreateVehicle("pounder", start.x+3, start.y-2, start.z-1, 52.0, true, false)
2025-07-17 02:06:17 -05:00
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)
2026-01-19 00:38:01 -07:00
local can = Bridge.Callback.Trigger('md-drugs:server:registerLean', loc, NetworkGetNetworkIdFromEntity(leanCar))
2025-07-17 02:06:17 -05:00
2026-01-19 00:38:01 -07:00
if not can then
Bridge.Notify.SendNotify(Bridge.Language.Locale('lean.cantStart'), 'error')
DeleteVehicle(leanCar)
DeleteEntity(driver)
DeleteEntity(pilot2)
started = false
return
end
2026-01-30 00:45:03 -07:00
Bridge.Notify.SendNotify(Bridge.Language.Locale('lean.chaseStarted'), 'success')
2026-01-19 00:38:01 -07:00
SetPedIntoVehicle(pilot2, leanCar, 1)
FreezeEntityPosition(driver, true)
2025-07-17 02:06:17 -05:00
FreezeEntityPosition(pilot2, true)
SetEntityInvincible(pilot2, true)
2026-01-19 00:38:01 -07:00
SetEntityAsMissionEntity(leanCar)
AddBlipForEntity(leanCar)
SetPedIntoVehicle(driver, leanCar, -1)
2025-07-17 02:06:17 -05:00
SetPedFleeAttributes(driver,false)
2026-01-19 00:38:01 -07:00
TaskVehicleDriveToCoordLongrange(driver, leanCar, stoploc.x, stoploc.y, stoploc.z-1, 50.0, 524288, 25.0)
2025-07-17 02:06:17 -05:00
SetPedKeepTask(driver, true)
repeat
Wait(1000)
until #(GetEntityCoords(driver) - stoploc) < 20.0 or GetEntityHealth(driver) == 0
2026-01-19 00:38:01 -07:00
RemoveBlip(leanCar)
2025-07-17 02:06:17 -05:00
if GetEntityHealth(driver) == 0 then
2026-01-19 00:38:01 -07:00
Bridge.Target.AddLocalEntity(leanCar, {
2025-07-17 02:06:17 -05:00
{
name = 'leancar',
2026-01-22 02:08:35 -07:00
icon = Bridge.Language.Locale('lean.carIcon'),
2026-01-16 02:57:26 -07:00
label = Bridge.Language.Locale('lean.stealFromTruck'),
2025-07-17 02:06:17 -05:00
action = function()
2025-08-09 23:58:38 -06:00
if not minigame() then return end
TriggerServerEvent('md-drugs:server:givelean')
started = false
DeleteEntity(driver)
DeleteEntity(pilot2)
2025-07-17 02:06:17 -05:00
end
}
})
else
DeleteEntity(driver)
DeleteEntity(pilot2)
end
end
2025-07-17 02:06:17 -05:00
local leanPeds = {}
2025-08-06 02:25:06 -06:00
for k, v in pairs (location.SyrupVendor) do
2026-01-18 01:20:44 -07:00
requestModel(v.ped)
2025-07-17 02:06:17 -05:00
leanPeds[k] = CreatePed(0, v.ped, v.loc.x, v.loc.y, v.loc.z, false, false)
Freeze(leanPeds[k], true, v.loc.w)
2026-01-18 01:20:44 -07:00
Bridge.Target.AddLocalEntity(leanPeds[k], {
2025-07-17 02:06:17 -05:00
{
2026-01-23 03:41:19 -07:00
icon = Bridge.Language.Locale('lean.startMissionIcon'),
2026-01-16 02:57:26 -07:00
label = Bridge.Language.Locale('lean.startMission'),
2025-07-17 02:06:17 -05:00
action = function()
2026-01-30 00:45:03 -07:00
SpawnCarPedChase(k)
2025-07-17 02:06:17 -05:00
end,
2025-08-09 03:10:00 -06:00
canInteract = function()
if not handleGang(v.gang) then return false end
return true
end
2025-07-17 02:06:17 -05:00
},
})
2026-01-19 00:38:01 -07:00
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()
2026-01-21 21:27:08 -07:00
if not progressbar(Bridge.Language.Locale('lean.makingLean')) then return end
2026-01-19 00:38:01 -07:00
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)