2026-03-05 00:00:34 -08:00
|
|
|
if not Config.Drugs['oxyruns'] then return end
|
2024-01-13 22:23:17 -08:00
|
|
|
local carryPackage = nil
|
2025-07-18 01:19:12 -07:00
|
|
|
local onMission = false
|
2026-01-31 02:05:15 -07:00
|
|
|
local locations = Config.Oxy.Locations
|
2025-09-05 21:28:04 -07:00
|
|
|
local pdAlert = 90
|
2026-01-18 01:20:44 -07:00
|
|
|
local vehicle = nil
|
2025-08-09 03:10:00 -06:00
|
|
|
|
2025-07-18 01:19:12 -07:00
|
|
|
local function getRoute()
|
2026-01-18 01:20:44 -07:00
|
|
|
local Route = Bridge.Callback.Trigger('md-drugs:server:getRoute')
|
2025-07-18 01:19:12 -07:00
|
|
|
if not Route then
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Notify.SendNotify(Bridge.Language.Locale('oxy.ditchCar'), "error")
|
2025-07-18 01:19:12 -07:00
|
|
|
onMission = false
|
|
|
|
|
return false
|
2024-01-13 22:23:17 -08:00
|
|
|
end
|
2026-01-18 01:20:44 -07:00
|
|
|
local Route = locations.oxylocations[Route]
|
2025-07-18 01:19:12 -07:00
|
|
|
SetNewWaypoint(Route.x, Route.y)
|
2026-01-18 01:20:44 -07:00
|
|
|
requestModel('g_m_y_famdnf_01', 30000)
|
2025-07-18 01:19:12 -07:00
|
|
|
local oxybuyer = CreatePed(0, 'g_m_y_famdnf_01',Route.x,Route.y,Route.z-1, Route.w, false, false)
|
|
|
|
|
Freeze(oxybuyer, true, Route.w)
|
|
|
|
|
local timeOut = 300
|
2024-01-13 22:23:17 -08:00
|
|
|
|
2025-07-18 01:19:12 -07:00
|
|
|
repeat
|
|
|
|
|
Wait(1000)
|
|
|
|
|
timeOut = timeOut - 1
|
|
|
|
|
until #(GetEntityCoords(PlayerPedId()) - vector3(Route.x,Route.y,Route.z)) < 5.0 or timeOut == 0
|
|
|
|
|
|
2025-09-05 21:28:04 -07:00
|
|
|
PoliceCall(pdAlert)
|
2026-01-18 01:20:44 -07:00
|
|
|
Bridge.Target.AddLocalEntity(oxybuyer,{
|
2025-07-18 01:19:12 -07:00
|
|
|
{
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('oxy.targetHandoff'),
|
2026-01-23 03:41:19 -07:00
|
|
|
icon = Bridge.Language.Locale('oxy.targetHandOffIcon'),
|
2025-07-18 01:19:12 -07:00
|
|
|
action = function()
|
|
|
|
|
if carryPackage then
|
2026-01-21 21:27:08 -07:00
|
|
|
if not progressbar(Bridge.Language.Locale('oxy.handingoff')) then return end
|
2025-07-18 01:19:12 -07:00
|
|
|
TriggerServerEvent("md-drugs:server:giveoxybox")
|
|
|
|
|
DeleteEntity(oxybuyer)
|
|
|
|
|
DetachEntity(carryPackage, true, true)
|
|
|
|
|
DeleteObject(carryPackage)
|
|
|
|
|
carryPackage = nil
|
|
|
|
|
getRoute()
|
|
|
|
|
else
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Notify.SendNotify(Bridge.Language.Locale('oxy.emptyHands'), "error")
|
2025-07-18 01:19:12 -07:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
}
|
|
|
|
|
})
|
2026-01-30 01:19:50 -07:00
|
|
|
targets[#targets+1] = oxybuyer
|
2025-07-18 01:19:12 -07:00
|
|
|
end
|
2024-01-13 22:23:17 -08:00
|
|
|
|
2025-08-06 02:25:06 -06:00
|
|
|
for k, v in pairs(locations.OxyPayForTruck) do
|
2026-01-30 00:45:03 -07:00
|
|
|
Bridge.Target.AddBoxZone('oxyTruckPur' ..k , v.loc, v.size, v.loc.w or 180.0, {
|
2025-07-18 01:19:12 -07:00
|
|
|
{
|
2026-01-23 03:41:19 -07:00
|
|
|
icon = Bridge.Language.Locale('oxy.targetPayIcon'),
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('oxy.targetPay'),
|
2025-07-18 01:19:12 -07:00
|
|
|
action = function()
|
2026-01-18 01:20:44 -07:00
|
|
|
requestModel("burrito3", 30000)
|
2024-05-02 18:34:14 -07:00
|
|
|
|
2026-01-18 01:20:44 -07:00
|
|
|
local paid = Bridge.Callback.Trigger('md-drugs:server:payfortruck', k)
|
2025-07-18 01:19:12 -07:00
|
|
|
if not paid then return end
|
2026-01-18 01:20:44 -07:00
|
|
|
vehicle = CreateVehicle("burrito3",v.truckSpawn.x, v.truckSpawn.y, v.truckSpawn.z, v.truckSpawn.w, true, false)
|
|
|
|
|
SetVehicleFuelLevel(vehicle, 100.0)
|
|
|
|
|
local plate = GetVehicleNumberPlateText(vehicle)
|
|
|
|
|
Bridge.VehicleKey.GiveKeys(vehicle, plate)
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Notify.SendNotify(Bridge.Language.Locale('oxy.keys'), 'success')
|
2025-07-18 01:19:12 -07:00
|
|
|
onMission = true
|
2026-01-18 01:20:44 -07:00
|
|
|
TriggerServerEvent('md-drugs:server:startOxyRun', NetworkGetNetworkIdFromEntity(vehicle))
|
|
|
|
|
|
|
|
|
|
Bridge.Target.AddLocalEntity(vehicle, {
|
2025-07-18 01:19:12 -07:00
|
|
|
{
|
2026-01-23 03:41:19 -07:00
|
|
|
icon = Bridge.Language.Locale('oxy.targetGetPackageIcon'),
|
2026-01-16 02:57:26 -07:00
|
|
|
label = Bridge.Language.Locale('oxy.targetGetPackage'),
|
2025-07-18 01:19:12 -07:00
|
|
|
action = function()
|
|
|
|
|
if carryPackage then
|
2026-01-16 02:57:26 -07:00
|
|
|
Bridge.Notify.SendNotify(Bridge.Language.Locale('oxy.alreadyCarrying'), "error")
|
2025-07-18 01:19:12 -07:00
|
|
|
else
|
|
|
|
|
local pos = GetEntityCoords(PlayerPedId(), true)
|
2026-01-18 01:20:44 -07:00
|
|
|
Bridge.Anim.RequestDict('anim@heists@box_carry@')
|
2025-07-18 01:19:12 -07:00
|
|
|
TaskPlayAnim(PlayerPedId(), 'anim@heists@box_carry@', 'idle', 5.0, -1, -1, 50, 0, false, false, false)
|
2026-01-18 01:20:44 -07:00
|
|
|
requestModel("hei_prop_drug_statue_box_big")
|
2025-07-18 01:19:12 -07:00
|
|
|
carryPackage = CreateObject("hei_prop_drug_statue_box_big", pos.x, pos.y, pos.z, true, true, true)
|
|
|
|
|
AttachEntityToEntity(carryPackage, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 57005), 0.05, 0.1, -0.3, 300.0, 250.0, 20.0, true, true, false, true, 1, true)
|
|
|
|
|
end
|
|
|
|
|
end,
|
2025-08-09 03:10:00 -06:00
|
|
|
canInteract = function()
|
|
|
|
|
return handleGang(v.gang)
|
|
|
|
|
end
|
2025-07-18 01:19:12 -07:00
|
|
|
}
|
|
|
|
|
})
|
2026-01-18 01:20:44 -07:00
|
|
|
Wait(1000)
|
|
|
|
|
getRoute()
|
2025-07-18 01:19:12 -07:00
|
|
|
end,
|
|
|
|
|
canInteract = function()
|
|
|
|
|
if onMission then
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
}
|
|
|
|
|
})
|
2026-01-30 01:19:50 -07:00
|
|
|
targets[#targets+1] = 'oxyTruckPur' ..k
|
2025-08-12 23:16:38 -05:00
|
|
|
end
|