Merge pull request #59 from Mustachedom/test2

yolo
This commit is contained in:
Mustache Dom authored and GitHub committed 2025-01-13 22:48:13 -08:00
commit 4cacab3c7c
51 files changed
+2050 -2205

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
{
"Lua.diagnostics.disable": [
"missing-parameter",
"param-type-mismatch"
],
"Lua.diagnostics.globals": [
"lib",
"progressbar",
"loadParticle",
"makeMenu",
"minigame",
"tele",
"sorter",
"MySQL",
"trays",
"heroinkit",
"getPlayer",
"dist",
"sortTab",
"getRep",
"heroinCooldown",
"checkLoc",
"getRandW",
"shroomsCooldown"
]
}
+56 -104
View File
@@ -1,7 +1,6 @@
local QBCore = exports['qb-core']:GetCoreObject()
local started = nil local started = nil
function loadParticle(dict)
local function loadParticle(dict)
if not HasNamedPtfxAssetLoaded(dict) then if not HasNamedPtfxAssetLoaded(dict) then
RequestNamedPtfxAsset(dict) RequestNamedPtfxAsset(dict)
end end
@@ -11,8 +10,6 @@ local started = nil
SetPtfxAssetNextCall(dict) SetPtfxAssetNextCall(dict)
end end
function MethCooking() function MethCooking()
local animDict, animName = "anim@amb@business@meth@meth_monitoring_cooking@cooking@", "chemical_pour_short_cooker" local animDict, animName = "anim@amb@business@meth@meth_monitoring_cooking@cooking@", "chemical_pour_short_cooker"
lib.requestAnimDict(animDict, 500) lib.requestAnimDict(animDict, 500)
@@ -23,9 +20,9 @@ function MethCooking()
local scenePos, sceneRot = vector3(1010.656, -3198.445, -38.925), vector3(0.0, 0.0, 0.0) local scenePos, sceneRot = vector3(1010.656, -3198.445, -38.925), vector3(0.0, 0.0, 0.0)
local netScene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3) local netScene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
NetworkAddPedToSynchronisedScene(PlayerPedId(), netScene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0) NetworkAddPedToSynchronisedScene(PlayerPedId(), netScene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
local sacid = CreateObjectNoOffset(`bkr_prop_meth_sacid`, targetPosition, 1, 1, 0) local sacid = CreateObjectNoOffset("bkr_prop_meth_sacid", targetPosition, 1, 1, 0)
NetworkAddEntityToSynchronisedScene(sacid, netScene, animDict, "chemical_pour_short_sacid", 4.0, -8.0, 1) NetworkAddEntityToSynchronisedScene(sacid, netScene, animDict, "chemical_pour_short_sacid", 4.0, -8.0, 1)
local ammonia = CreateObjectNoOffset(`bkr_prop_meth_ammonia`, targetPosition, 1, 1, 0) local ammonia = CreateObjectNoOffset("bkr_prop_meth_ammonia", targetPosition, 1, 1, 0)
NetworkAddEntityToSynchronisedScene(ammonia, netScene, animDict, "chemical_pour_short_ammonia", 4.0, -8.0, 1) NetworkAddEntityToSynchronisedScene(ammonia, netScene, animDict, "chemical_pour_short_ammonia", 4.0, -8.0, 1)
NetworkStartSynchronisedScene(netScene) NetworkStartSynchronisedScene(netScene)
Wait(animDuration) Wait(animDuration)
@@ -58,11 +55,11 @@ function SmashMeth()
local netScene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3) local netScene = NetworkCreateSynchronisedScene(scenePos, sceneRot, 2, false, false, 1065353216, 0, 1.3)
NetworkAddPedToSynchronisedScene(ped, netScene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0) NetworkAddPedToSynchronisedScene(ped, netScene, animDict, animName, 1.5, -4.0, 1, 16, 1148846080, 0)
local objects, sceneObjects = {}, { local objects, sceneObjects = {}, {
{ hash = `w_me_hammer`, animName = "break_weigh_" .. ver .. "hammer"}, { hash = "w_me_hammer", animName = "break_weigh_" .. ver .. "hammer"},
{ hash = `bkr_Prop_Meth_SmashedTray_01_frag_`, animName = "break_weigh_"..ver.."tray01"}, { hash = "bkr_Prop_Meth_SmashedTray_01_frag_", animName = "break_weigh_"..ver.."tray01"},
{ hash = `bkr_Prop_Meth_Tray_02a`, animName = "break_weigh_"..ver.."tray01^1"}, { hash = "bkr_Prop_Meth_Tray_02a", animName = "break_weigh_"..ver.."tray01^1"},
{ hash = `bkr_Prop_Meth_Tray_02a`, animName = "break_weigh_"..ver.."tray01^2"}, { hash = "bkr_Prop_Meth_Tray_02a", animName = "break_weigh_"..ver.."tray01^2"},
{ hash = `bkr_Prop_Meth_SmashedTray_01_frag_`, animName = "break_weigh_"..ver.."tray01^3"}, { hash = "bkr_Prop_Meth_SmashedTray_01_frag_", animName = "break_weigh_"..ver.."tray01^3"},
} }
for i=1, #sceneObjects, 1 do for i=1, #sceneObjects, 1 do
local obj = CreateObjectNoOffset(sceneObjects[i].hash, targetPosition, true, true, true) local obj = CreateObjectNoOffset(sceneObjects[i].hash, targetPosition, true, true, true)
@@ -89,28 +86,28 @@ function BagMeth()
local scenePos, sceneRot = vector3(1008.734, -3196.646, -39.99), vector3(0.0, 0.0, 1.08) local scenePos, sceneRot = vector3(1008.734, -3196.646, -39.99), vector3(0.0, 0.0, 1.08)
local scenes = { local scenes = {
{ {
{ hash = `bkr_prop_meth_bigbag_04a`, animName = "break_weigh_"..ver.."box01"}, { hash = "bkr_prop_meth_bigbag_04a", animName = "break_weigh_"..ver.."box01"},
{ hash = `bkr_prop_meth_bigbag_03a`, animName = "break_weigh_"..ver.."box01^1"}, { hash = "bkr_prop_meth_bigbag_03a", animName = "break_weigh_"..ver.."box01^1"},
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01"} { hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01"}
}, },
{ {
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^1"}, { hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^1"},
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^2"}, { hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^2"},
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^3"} { hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^3"}
}, },
{ {
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^4"}, { hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^4"},
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^5"}, { hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^5"},
{ hash = `bkr_prop_meth_openbag_02`, animName = "break_weigh_"..ver.."methbag01^6"} { hash = "bkr_prop_meth_openbag_02", animName = "break_weigh_"..ver.."methbag01^6"}
}, },
{ {
{ hash = `bkr_prop_meth_scoop_01a`, animName = "break_weigh_"..ver.."scoop"}, { hash = "bkr_prop_meth_scoop_01a", animName = "break_weigh_"..ver.."scoop"},
{ hash = `bkr_prop_coke_scale_01`, animName = "break_weigh_"..ver.."scale"}, { hash = "bkr_prop_coke_scale_01", animName = "break_weigh_"..ver.."scale"},
{ hash = `bkr_prop_fakeid_penclipboard`, animName = "break_weigh_"..ver.."pen"} { hash = "bkr_prop_fakeid_penclipboard", animName = "break_weigh_"..ver.."pen"}
}, },
{ {
{ hash = `bkr_prop_fakeid_clipboard_01a`, animName = "break_weigh_"..ver.."clipboard"}, { hash = "bkr_prop_fakeid_clipboard_01a", animName = "break_weigh_"..ver.."clipboard"},
{ hash = `bkr_Prop_Meth_Tray_02a`, animName = "break_weigh_"..ver.."tray01^5"} { hash = "bkr_Prop_Meth_Tray_02a", animName = "break_weigh_"..ver.."tray01^5"}
} }
} }
local scenesList, entitiesList = {}, {} local scenesList, entitiesList = {}, {}
@@ -162,8 +159,6 @@ function Tray()
AttachEntityToEntity(trays, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 28422), 0.01,-0.2, -0.2, 20.0, 0.0, 0.0, true, true, false, true, 1, true) AttachEntityToEntity(trays, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 28422), 0.01,-0.2, -0.2, 20.0, 0.0, 0.0, true, true, false, true, 1, true)
end end
function CutCoke() function CutCoke()
local animDict, animName = "anim@amb@business@coc@coc_unpack_cut_left@", "coke_cut_v5_coccutter" local animDict, animName = "anim@amb@business@coc@coc_unpack_cut_left@", "coke_cut_v5_coccutter"
lib.requestAnimDict(animDict, 500) lib.requestAnimDict(animDict, 500)
@@ -173,9 +168,9 @@ function CutCoke()
local scenePos, sceneRot = vector3(1090.37+.9, -3193.61-1.68, -39.60), vector3(0.0, 0.0, 0.00) local scenePos, sceneRot = vector3(1090.37+.9, -3193.61-1.68, -39.60), vector3(0.0, 0.0, 0.00)
local scenes = { local scenes = {
{ {
{ hash = `bkr_prop_coke_bakingsoda_o`, animName = "coke_cut_v5_bakingsoda"}, { hash = "bkr_prop_coke_bakingsoda_o", animName = "coke_cut_v5_bakingsoda"},
{ hash = `prop_cs_credit_card`, animName = "coke_cut_v5_creditcard"}, { hash = "prop_cs_credit_card", animName = "coke_cut_v5_creditcard"},
{ hash = `prop_cs_credit_card`, animName = "coke_cut_v5_creditcard^1"} { hash = "prop_cs_credit_card", animName = "coke_cut_v5_creditcard^1"}
}, },
} }
local scenesList, entitiesList = {}, {} local scenesList, entitiesList = {}, {}
@@ -229,22 +224,22 @@ local ver = ""
local scenePos, sceneRot = vector3(1090.62+4.3, -3196.2+3, -38.99-1), vector3(360.0, 360.0, 180.08) local scenePos, sceneRot = vector3(1090.62+4.3, -3196.2+3, -38.99-1), vector3(360.0, 360.0, 180.08)
local scenes = { local scenes = {
{ {
{ hash = `bkr_prop_coke_cutblock_01`, animName = "break_weigh_"..ver.."box01"}, { hash = "bkr_prop_coke_cutblock_01", animName = "break_weigh_"..ver.."box01"},
{ hash = `bkr_prop_coke_fullmetalbowl_02`, animName = "break_weigh_"..ver.."box01^1"}, { hash = "bkr_prop_coke_fullmetalbowl_02", animName = "break_weigh_"..ver.."box01^1"},
{ hash = `bkr_prop_coke_cutblock_01`, animName = "break_weigh_"..ver.."methbag01"} { hash = "bkr_prop_coke_cutblock_01", animName = "break_weigh_"..ver.."methbag01"}
}, },
{ {
{ hash = `xm3_prop_xm3_bag_coke_01a`, animName = "break_weigh_"..ver.."methbag01^1"}, { hash = "xm3_prop_xm3_bag_coke_01a", animName = "break_weigh_"..ver.."methbag01^1"},
{ hash = `xm3_prop_xm3_bag_coke_01a`, animName = "break_weigh_"..ver.."methbag01^2"}, { hash = "xm3_prop_xm3_bag_coke_01a", animName = "break_weigh_"..ver.."methbag01^2"},
{ hash = `xm3_prop_xm3_bag_coke_01a`, animName = "break_weigh_"..ver.."methbag01^3"} { hash = "xm3_prop_xm3_bag_coke_01a", animName = "break_weigh_"..ver.."methbag01^3"}
}, },
{ {
{ hash = `bkr_prop_coke_fullscoop_01a`, animName = "break_weigh_"..ver.."scoop"}, { hash = "bkr_prop_coke_fullscoop_01a", animName = "break_weigh_"..ver.."scoop"},
{ hash = `bkr_prop_coke_scale_01`, animName = "break_weigh_"..ver.."scale"}, { hash = "bkr_prop_coke_scale_01", animName = "break_weigh_"..ver.."scale"},
{ hash = `bkr_prop_fakeid_penclipboard`, animName = "break_weigh_"..ver.."pen"} { hash = "bkr_prop_fakeid_penclipboard", animName = "break_weigh_"..ver.."pen"}
}, },
{ {
{ hash = `bkr_prop_fakeid_clipboard_01a`, animName = "break_weigh_"..ver.."clipboard"}, { hash = "bkr_prop_fakeid_clipboard_01a", animName = "break_weigh_"..ver.."clipboard"},
} }
} }
@@ -373,17 +368,18 @@ end
local hit = 0 local hit = 0
function SpawnCarPedChase() function SpawnCarPedChase()
local stoploc = vector3(-1157.63, -3056.71, 13.94) local stoploc = vector3(-1157.63, -3056.71, 13.94)
local start = Config.StartLoc[math.random(1,#Config.StartLoc)] local config = lib.callback.await('md-drugs:server:getLocs', false)
local start = config.StartLoc[math.random(1,#config.StartLoc)]
if started then if started then
Notify(Lang.lean.act,'error') Notify(Lang.lean.act,'error')
else else
started = true started = true
lib.requestModel(`pounder`, Config.RequestModelTime) lib.requestModel("pounder", Config.RequestModelTime)
lib.requestModel("ig_priest", Config.RequestModelTime) lib.requestModel("ig_priest", Config.RequestModelTime)
lib.requestModel(`cargobob3`, Config.RequestModelTime) lib.requestModel("cargobob3", Config.RequestModelTime)
local leancar = CreateVehicle(`pounder`, start.x+3, start.y-2, start.z-1, 52.0, true, true) local 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, 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, true, false) local pilot2 = CreatePed(26, "ig_priest", stoploc.x-3, stoploc.y-3, stoploc.z-1, 268.9422, false, false)
FreezeEntityPosition(pilot2, true) FreezeEntityPosition(pilot2, true)
SetEntityInvincible(pilot2, true) SetEntityInvincible(pilot2, true)
SetEntityAsMissionEntity(leancar) SetEntityAsMissionEntity(leancar)
@@ -397,7 +393,7 @@ function SpawnCarPedChase()
until #(GetEntityCoords(driver) - stoploc) < 20.0 or GetEntityHealth(driver) == 0 until #(GetEntityCoords(driver) - stoploc) < 20.0 or GetEntityHealth(driver) == 0
RemoveBlip(leancar) RemoveBlip(leancar)
if GetEntityHealth(driver) == 0 then if GetEntityHealth(driver) == 0 then
AddSingleModel(leancar, { name = 'leancar', icon = 'fa-solid fa-car', label = 'Steal From Car', AddSingleModel(leancar, { name = 'leancar', icon = 'fa-solid fa-car', label = Lang.targets.lean.st,
action = function() action = function()
hit = hit + 1 hit = hit + 1
if not minigame() then return end if not minigame() then return end
@@ -411,22 +407,7 @@ function SpawnCarPedChase()
end end
end}, nil) end}, nil)
else else
repeat DeleteVehicle(leancar) DeleteEntity(driver) DeleteEntity(pilot2)
Wait(1000)
until #(GetEntityCoords(driver) - GetEntityCoords(pilot2)) < 25.0
Wait( 3 * 1000)
local heli = CreateVehicle(`cargobob3`, stoploc.x-20, stoploc.y-20, stoploc.z-1, 80, true,true)
Wait(1000)
if DoesEntityExist(heli) then
SetEntityInvincible(pilot2, false)
DeleteVehicle(leancar)
DeleteEntity(driver)
SetEntityAsMissionEntity(heli)
SetPedIntoVehicle(pilot2, heli, -1)
TaskHeliMission(pilot2, heli, 0, 0, -3362.05, 589.45, -13.04, 4, 150.0, 20.0, -1.0, 10, 10, 5.0, 0)
else
heli = CreateVehicle(`cargobob3`, stoploc.x-20, stoploc.y-20, stoploc.z-1, 80, true,true)
end
end end
end end
end end
@@ -434,19 +415,20 @@ end
function SpawnMethCarPedChase() function SpawnMethCarPedChase()
local ped = GetEntityCoords(PlayerPedId()) local ped = GetEntityCoords(PlayerPedId())
local stoploc = vector3(-1157.63, -3056.71, 13.94) local stoploc = vector3(-1157.63, -3056.71, 13.94)
local start = Config.StartLoc[math.random(1,#Config.StartLoc)] local config = lib.callback.await('md-drugs:server:getLocs', false)
local start = config.StartLoc[math.random(1,#config.StartLoc)]
local startedmeth = false local startedmeth = false
if startedmeth then if startedmeth then
Notify(Lang.meth.act,'error') Notify(Lang.meth.act,'error')
else else
startedmeth = true startedmeth = true
lib.requestModel(`journey`, Config.RequestModelTime) lib.requestModel("journey", Config.RequestModelTime)
lib.requestModel("a_m_m_hillbilly_02", Config.RequestModelTime) lib.requestModel("a_m_m_hillbilly_02", Config.RequestModelTime)
lib.requestModel(`cargobob3`, Config.RequestModelTime) lib.requestModel("cargobob3", Config.RequestModelTime)
local methcar = CreateVehicle(`journey`, start.x+3, start.y-2, start.z-1, 52.0, true, true) local methcar = CreateVehicle("journey", start.x+3, start.y-2, start.z-1, 52.0, true, false)
local methdriver = CreatePed(26, "a_m_m_hillbilly_02", start.x, start.y, start.z, 268.9422, true, false) local methdriver = CreatePed(26, "a_m_m_hillbilly_02", start.x, start.y, start.z, 268.9422, false, false)
local methpilot = CreatePed(26, "a_m_m_hillbilly_02", stoploc.x-3, stoploc.y-3, stoploc.z-1, 268.9422, true, false) local methpilot = CreatePed(26, "a_m_m_hillbilly_02", stoploc.x-3, stoploc.y-3, stoploc.z-1, 268.9422, false, false)
FreezeEntityPosition(methpilot, true) FreezeEntityPosition(methpilot, true)
SetEntityInvincible(methpilot, true) SetEntityInvincible(methpilot, true)
SetEntityAsMissionEntity(methcar) SetEntityAsMissionEntity(methcar)
@@ -466,7 +448,7 @@ else
action = function() action = function()
if not minigame() then return end if not minigame() then return end
TriggerServerEvent('md-drugs:server:givemethingridients') TriggerServerEvent('md-drugs:server:givemethingridients')
startedmeth = nil startedmeth = false
if math.random(1,100) <= 30 then if math.random(1,100) <= 30 then
DeleteVehicle(methcar) DeleteVehicle(methcar)
DeleteEntity(methdriver) DeleteEntity(methdriver)
@@ -475,23 +457,9 @@ else
end, end,
}, nil ) }, nil )
else else
repeat DeleteVehicle(methcar)
Wait(1000) DeleteEntity(methdriver)
until #(GetEntityCoords(methdriver) - GetEntityCoords(methpilot)) < 25.0 DeleteEntity(methpilot)
Wait( 3 * 1000)
local methheli = CreateVehicle(`cargobob3`, stoploc.x-20, stoploc.y-20, stoploc.z-1, 80, true,true)
Wait(1000)
if DoesEntityExist(methheli) then
SetEntityInvincible(methpilot, false)
CreatePickUpRopeForCargobob(methheli, 1)
AttachVehicleToCargobob(methheli, methcar, GetEntityBoneIndexByName(methcar, 'bodyshell'), 0.0, 0.0, 0.0)
DeleteEntity(methdriver)
SetEntityAsMissionEntity(methheli)
SetPedIntoVehicle(methpilot, methheli, -1)
TaskHeliMission(methpilot, methheli, 0, 0, -3362.05, 589.45, -13.04, 4, 150.0, 20.0, -1.0, 10, 10, 5.0, 0)
else
methheli = CreateVehicle(`cargobob3`, stoploc.x-20, stoploc.y-20, stoploc.z-1, 80, true,true)
end
end end
end end
end end
@@ -518,19 +486,3 @@ function SetUpPeds()
end end
end end
RegisterCommand('DrugRep', function()
if not Config.TierSystem then return end
local rep = lib.callback.await('md-drugs:server:GetRep', false)
lib.registerContext({
id = 'DrugRep',
title = 'Drug Reputation',
options = {
{icon = "fa-solid fa-face-flushed", title = 'Cocaine: '..rep.coke},
{icon = "fa-solid fa-syringe", title = 'Heroin: '..rep.heroin},
{icon = "fa-solid fa-vial", title = 'LSD: '..rep.lsd},
{icon = "fa-solid fa-plug", title = 'Dealer: '..rep.dealerrep},
{icon = "fa-solid fa-money-bill", title = 'Corner Selling: ' .. rep.cornerselling.rep, description = 'Rank: ' .. rep.cornerselling.label }
}
})
lib.showContext('DrugRep')
end, false)
+11 -11
View File
@@ -1,4 +1,3 @@
local QBCore = exports['qb-core']:GetCoreObject()
local CocaPlant = {} local CocaPlant = {}
local cuttingcoke = nil local cuttingcoke = nil
local baggingcoke = nil local baggingcoke = nil
@@ -53,7 +52,7 @@ RegisterNetEvent("md-drugs:client:makepowder", function(data)
TriggerServerEvent("md-drugs:server:makepowder", data.data) TriggerServerEvent("md-drugs:server:makepowder", data.data)
end) end)
RegisterNetEvent("md-drugs:client:cutcokeone", function() RegisterNetEvent("md-drugs:client:cutcokeone", function(data)
if not ItemCheck('bakingsoda') then return end if not ItemCheck('bakingsoda') then return end
cuttingcoke = true cuttingcoke = true
if Config.FancyCokeAnims then if Config.FancyCokeAnims then
@@ -61,11 +60,11 @@ RegisterNetEvent("md-drugs:client:cutcokeone", function()
else else
if not progressbar(Lang.Coke.cutting, 5000, 'uncuff') then cuttingcoke = nil return end if not progressbar(Lang.Coke.cutting, 5000, 'uncuff') then cuttingcoke = nil return end
end end
TriggerServerEvent("md-drugs:server:cutcokeone") TriggerServerEvent("md-drugs:server:cutcokeone", data.data)
cuttingcoke = nil cuttingcoke = nil
end) end)
RegisterNetEvent("md-drugs:client:bagcoke", function() RegisterNetEvent("md-drugs:client:bagcoke", function(data)
if not ItemCheck('empty_weed_bag') then return end if not ItemCheck('empty_weed_bag') then return end
baggingcoke = true baggingcoke = true
if Config.FancyCokeAnims then if Config.FancyCokeAnims then
@@ -73,18 +72,19 @@ RegisterNetEvent("md-drugs:client:bagcoke", function()
else else
if not progressbar(Lang.Coke.bagging, 5000, 'uncuff') then baggingcoke = nil return end if not progressbar(Lang.Coke.bagging, 5000, 'uncuff') then baggingcoke = nil return end
end end
TriggerServerEvent("md-drugs:server:bagcoke") TriggerServerEvent("md-drugs:server:bagcoke", data.data)
baggingcoke = nil baggingcoke = nil
end) end)
CreateThread(function() CreateThread(function()
local config = lib.callback.await('md-drugs:server:getLocs', false)
if Config.FancyCokeAnims == false then if Config.FancyCokeAnims == false then
AddBoxZoneMulti('cuttcoke', Config.CuttingCoke, { type = "client", event = "md-drugs:client:cutcokeone", icon = "fa-solid fa-mortar-pestle", label = Lang.targets.coke.cut}) AddBoxZoneMulti('cuttcoke', config.CuttingCoke, { type = "client",event = "md-drugs:client:cutcokeone", icon = "fa-solid fa-mortar-pestle", label = Lang.targets.coke.cut})
AddBoxZoneMulti('baggcoke', Config.BaggingCoke, { type = "client", event = "md-drugs:client:bagcoke", icon = "fa-solid fa-sack-xmark", label = Lang.targets.coke.bag}) AddBoxZoneMulti('baggcoke', config.BaggingCoke, { type = "client",event = "md-drugs:client:bagcoke", icon = "fa-solid fa-sack-xmark", label = Lang.targets.coke.bag})
else else
AddBoxZoneSingle('cutcoke', vector3(1093.17, -3195.74, -39.19), AddBoxZoneSingle('cutcoke', config.singleSpot.cutcoke,
{ type = "client", event = "md-drugs:client:cutcokeone", icon = "fa-solid fa-mortar-pestle", label = Lang.targets.coke.cut, canInteract = function()if cuttingcoke == nil and baggingcoke == nil then return true end end }) { data = config.singleSpot.cutcoke, type = "client", event = "md-drugs:client:cutcokeone", icon = "fa-solid fa-mortar-pestle", label = Lang.targets.coke.cut, canInteract = function() if cuttingcoke == nil and baggingcoke == nil then return true end end })
AddBoxZoneSingle('bagcokepowder', vector3(1090.29, -3195.66, -39.13), AddBoxZoneSingle('bagcokepowder', config.singleSpot.bagcokepowder,
{ type = "client", event = "md-drugs:client:bagcoke", icon = "fa-solid fa-sack-xmark", label = Lang.targets.coke.bag, canInteract = function() if baggingcoke == nil and cuttingcoke == nil then return true end end }) { data = config.singleSpot.bagcokepowder, type = "client", event = "md-drugs:client:bagcoke", icon = "fa-solid fa-sack-xmark", label = Lang.targets.coke.bag, canInteract = function() if baggingcoke == nil and cuttingcoke == nil then return true end end })
end end
end) end)
+40 -23
View File
@@ -1,8 +1,7 @@
local QBCore = exports['qb-core']:GetCoreObject()
RegisterNetEvent('md-drugs:client:consumedrugs', function(time, effect, anim, progresstext, status, item)
lib.callback.register('md-drugs:client:consumedrugs', function(time, effect, anim, progresstext, status, item)
if not progressbar(progresstext .. GetLabel(item).. "!", time, anim ) then return end if not progressbar(progresstext .. GetLabel(item).. "!", time, anim ) then return end
TriggerServerEvent('md-drugs:server:removeconsum', item)
for k, v in pairs (status) do for k, v in pairs (status) do
if k == 'health' then if k == 'health' then
local cur = GetEntityHealth(PlayerPedId()) local cur = GetEntityHealth(PlayerPedId())
@@ -19,27 +18,45 @@ RegisterNetEvent('md-drugs:client:consumedrugs', function(time, effect, anim, pr
TriggerEvent('md-drugs:client:recievebuff', k, v) TriggerEvent('md-drugs:client:recievebuff', k, v)
end end
end end
TriggerEvent('evidence:client:SetStatus', 'widepupils', 200) if effect == "alien" then AlienEffect() elseif effect == "ecstacy" then EcstasyEffect() elseif effect == "meth" then MethBagEffect() elseif effect == "coke" then CokeBaggyEffect() elseif effect == "trevor" then TrevorEffect() else end if status == nil then return end TriggerEvent('evidence:client:SetStatus', 'widepupils', 200)
TriggerEvent('md-drugs:client:applyFeeling', effect)
return true
end) end)
RegisterNetEvent('md-drugs:client:recievebuff', function(type, amount) RegisterNetEvent('md-drugs:client:recievebuff', function(type, amount)
if type == 'speed' then if type == 'speed' then
local count = 0 local count = 0
SetRunSprintMultiplierForPlayer(PlayerPedId(), 1.49) SetRunSprintMultiplierForPlayer(PlayerPedId(), 1.49)
repeat repeat
count = count + 1 count = count + 1
Wait(1000) Wait(1000)
until count == amount until count == amount
SetRunSprintMultiplierForPlayer(PlayerPedId(), 1.00) SetRunSprintMultiplierForPlayer(PlayerPedId(), 1.00)
end end
if type == 'strength' then if type == 'strength' then
local strength = 0 local strength = 0
SetCurrentPedWeapon(PlayerPedId(), 'weapon_unarmed', true) SetCurrentPedWeapon(PlayerPedId(), 'weapon_unarmed', true)
SetWeaponDamageModifier(GetHashKey("WEAPON_UNARMED"), 50.0) SetWeaponDamageModifier(GetHashKey("WEAPON_UNARMED"), 50.0)
repeat repeat
strength = strength + 1 strength = strength + 1
Wait(1000) Wait(1000)
until strength == amount until strength == amount
SetWeaponDamageModifier(GetHashKey("WEAPON_UNARMED"), 1.0) SetWeaponDamageModifier(GetHashKey("WEAPON_UNARMED"), 1.0)
end end
end) end)
RegisterNetEvent('md-drugs:client:applyFeeling', function(effect)
if effect == "alien" then
AlienEffect()
elseif effect == "ecstacy" then
EcstasyEffect()
elseif effect == "meth" then
MethBagEffect()
elseif effect == "coke" then
CokeBaggyEffect()
elseif effect == "trevor" then
TrevorEffect()
else
end
end)
+43 -20
View File
@@ -1,16 +1,30 @@
local QBCore = exports['qb-core']:GetCoreObject()
local sell = false local sell = false
local sold = false local sold = false
local targbusy = false local targbusy = false
local inZone = false local inZone = false
local active = false
local function reset(targ) local function reset(targ)
FreezeEntityPosition(targ, false) FreezeEntityPosition(targ, false)
ClearPedTasks(targ) ClearPedTasks(targ)
local coords = GetEntityCoords(targ)
TaskWanderInArea(targ, coords.x, coords.y, coords.z, 100.0, 2, 10.0)
Wait(10000) Wait(10000)
DeletePed(targ) DeletePed(targ)
targbusy = false targbusy = false
sold = true sold = true
active = false
end
local function walkAway(targ)
FreezeEntityPosition(targ, false)
ClearPedTasks(targ)
local coords = GetEntityCoords(targ)
TaskWanderInArea(targ, coords.x, coords.y, coords.z, 100.0, 2, 10.0)
Wait(10000)
DeletePed(targ)
targbusy = false
active = false
end end
local function sellDrug(item, amount, price, targ) local function sellDrug(item, amount, price, targ)
@@ -33,50 +47,55 @@ local function deny(targ)
end end
function Cornersell() function Cornersell()
if active then return false end
local targ = lib.GetClosestPed(GetEntityCoords(PlayerPedId()), 8) local targ = lib.GetClosestPed(GetEntityCoords(PlayerPedId()), 8)
if targ == nil then return end if targ == nil then return end
if IsPedInAnyVehicle(targ, false) or GetEntityHealth(targ) == 0 or not IsPedHuman(targ) then return end if IsPedInAnyVehicle(targ, false) or GetEntityHealth(targ) == 0 or not IsPedHuman(targ) then return end
local data = lib.callback.await('md-drugs:server:cornerselling:getAvailableDrugs', false, targ)
if data.item == 'nothing' then Notify(Lang.Cornerselling.nodrugs, 'error') sell = false FreezeEntityPosition(targ, false) ClearPedTasks(targ) active = false return false end
TaskGoToCoordAnyMeans(targ, GetEntityCoords(PlayerPedId()), 1.0, 0, 0, 0, 0) TaskGoToCoordAnyMeans(targ, GetEntityCoords(PlayerPedId()), 1.0, 0, 0, 0, 0)
active = true
repeat repeat
Wait(1000) Wait(1000)
until #(GetEntityCoords(PlayerPedId()) - GetEntityCoords(targ)) < 2.0 until #(GetEntityCoords(PlayerPedId()) - GetEntityCoords(targ)) < 2.0
lib.requestAnimDict("rcmme_tracey1") lib.requestAnimDict("rcmme_tracey1")
TaskStartScenarioInPlace(targ, "WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT", 0, false) FreezeEntityPosition(targ, true) TaskStartScenarioInPlace(targ, "WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT", 0, false) FreezeEntityPosition(targ, true)
local item, amount, price = lib.callback.await('md-drugs:server:cornerselling:getAvailableDrugs', false) AddMultiModel(data.ped, {
if item == 'nothing' then Notify(Lang.Cornerselling.nodrugs, 'error') sell = false FreezeEntityPosition(targ, false) ClearPedTasks(targ) return false end { label = string.format(Lang.targets.CornerSell.sell, data.amount, GetLabel(data.item), data.price), icon ="fa-solid fa-money-bill",
local options = { action = function() sellDrug(data.item, data.amount, data.price, targ) end,
{ label = string.format(Lang.targets.CornerSell.sell, amount, GetLabel(item), price), icon ="fa-solid fa-money-bill", canInteract = function()
action = function() sellDrug(item, amount, price, targ) end, if not targbusy then return true end end,
canInteract = function() },
if not targbusy then return true end end, { label = Lang.targets.CornerSell.deny, icon = "fa-solid fa-person-harassing",
}, action = function() deny(targ) end,
{ label = Lang.targets.CornerSell.deny, icon = "fa-solid fa-person-harassing", canInteract = function()
action = function() deny(targ) end, if not targbusy then return true end end,
canInteract = function() }}, nil)
if not targbusy then return true end end, local timer = 45
},
}
AddMultiModel(targ, options, nil)
repeat repeat
Wait(1000) Wait(1000)
until sold timer = timer - 1
until sold or timer == 0
if sold then sold = false return true end if sold then sold = false return true end
if timer == 0 then Notify(Lang.Cornerselling.timeout, 'error') targbusy = true walkAway(targ) return false end
end end
RegisterNetEvent('md-drugs:client:cornerselling', function() RegisterNetEvent('md-drugs:client:cornerselling', function()
if not GetCops(QBConfig.MinimumDrugSalePolice) then return end if not GetCops(QBConfig.MinimumDrugSalePolice) then return end
if inZone then Notify(Lang.Cornerselling.no, 'error') return end if inZone then Notify(Lang.Cornerselling.no, 'error') return end
local item, amount, price = lib.callback.await('md-drugs:server:cornerselling:getAvailableDrugs', false) local has = lib.callback.await('md-drugs:server:hasDrugs', false)
if item ~= 'nothing' then if has then
if sell then if sell then
TriggerServerEvent('md-drugs:server:cornerselling:stop')
Notify(Lang.Cornerselling.stop, 'error') Notify(Lang.Cornerselling.stop, 'error')
sell = false sell = false
active = false
else else
sell = true sell = true
Notify(Lang.Cornerselling.start, 'success') Notify(Lang.Cornerselling.start, 'success')
repeat repeat
Wait(1000) Wait(1000)
if not Cornersell() then end Cornersell()
until not sell until not sell
end end
else else
@@ -89,4 +108,8 @@ for k, v in pairs (QBConfig.NoSellZones) do
local box = lib.zones.box({ coords = v.loc, size = vec3(v.width, v.length, v.height), rotation = 180.0, debug = false, local box = lib.zones.box({ coords = v.loc, size = vec3(v.width, v.length, v.height), rotation = 180.0, debug = false,
onEnter = function() inZone = true end, onExit = function() inZone = false end}) onEnter = function() inZone = true end, onExit = function() inZone = false end})
end end
end)
RegisterNetEvent('md-drugs:client:cornerselling:remove', function(ped)
DeletePed(ped)
end) end)
+1 -7
View File
@@ -1,6 +1,3 @@
local QBCore = exports['qb-core']:GetCoreObject()
RegisterNetEvent("md-drugs:client:makecrackone", function(data) RegisterNetEvent("md-drugs:client:makecrackone", function(data)
if not ItemCheck('bakingsoda') then return end if not ItemCheck('bakingsoda') then return end
if not minigame() then TriggerServerEvent("md-drugs:server:failcrackone", data.data) return end if not minigame() then TriggerServerEvent("md-drugs:server:failcrackone", data.data) return end
@@ -8,11 +5,8 @@ RegisterNetEvent("md-drugs:client:makecrackone", function(data)
TriggerServerEvent("md-drugs:server:makecrackone", data.data) TriggerServerEvent("md-drugs:server:makecrackone", data.data)
end) end)
RegisterNetEvent("md-drugs:client:bagcrack", function(data) RegisterNetEvent("md-drugs:client:bagcrack", function(data)
if not ItemCheck('empty_weed_bag') then return end if not ItemCheck('empty_weed_bag') then return end
if not progressbar(Lang.Crack.bagcrack, 4000, 'uncuff') then return end if not progressbar(Lang.Crack.bagcrack, 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:bagcrack", data.data) TriggerServerEvent("md-drugs:server:bagcrack", data.data)
end) end)
+28 -23
View File
@@ -1,5 +1,5 @@
local QBCore = exports['qb-core']:GetCoreObject()
local isActive = false local isActive = false
local dealer = {}
RegisterNetEvent('md-drugs:client:opendealermenu', function() RegisterNetEvent('md-drugs:client:opendealermenu', function()
local rep = GetRep() local rep = GetRep()
@@ -7,31 +7,36 @@ RegisterNetEvent('md-drugs:client:opendealermenu', function()
lib.showContext('dealermenu') lib.showContext('dealermenu')
end) end)
CreateThread(function() local function SpawnDealer()
local dealer = {}
local getDealers = lib.callback.await('md-drugs:server:getDealers', false) local getDealers = lib.callback.await('md-drugs:server:getDealers', false)
for k,v in pairs(getDealers) do for k,v in pairs(getDealers) do
local Ped = "g_m_y_famdnf_01" local Ped = "g_m_y_famdnf_01"
lib.requestModel(Ped, Config.RequestModelTime) lib.requestModel(Ped, Config.RequestModelTime)
local loc = json.decode(v.coords) local loc = json.decode(v.coords)
dealer[k] = CreatePed(0, Ped,loc.x,loc.y, loc.z-1, loc.h, false, false) dealer[k] = CreatePed(0, Ped,loc.x,loc.y, loc.z-1, loc.h, false, false)
Freeze(dealer[k], true, loc.h) Freeze(dealer[k], true, loc.h)
local options = { AddMultiModel(dealer[k], {
{ icon = 'fas fa-user-secret', label = string.format(Lang.targets.Delivery.Deliver, v.name), { icon = 'fas fa-user-secret', label = string.format(Lang.targets.Delivery.Deliver, v.name),
action = function() action = function()
local bool, item, amount, coords = lib.callback.await('md-drugs:server:GetDeliveryItem', false, k) local bool, item, amount, coords = lib.callback.await('md-drugs:server:GetDeliveryItem', false, k)
if bool then if bool then
Email(Lang.Delivery.emailn, Lang.Delivery.emailsub, string.format(Lang.Delivery.emailcon, amount, GetLabel(item))) Email(Lang.Delivery.emailn, Lang.Delivery.emailsub, string.format(Lang.Delivery.emailcon, amount, GetLabel(item)))
TriggerEvent('md-drugs:client:setLocation', {bool = bool, item = item, amount = amount, coords = coords}) TriggerEvent('md-drugs:client:setLocation', {bool = bool, item = item, amount = amount, coords = coords})
end end
end, end,
}, },
{ icon = "fa-solid fa-store", label = string.format(Lang.targets.Delivery.open, v.name), { icon = "fa-solid fa-store", label = string.format(Lang.targets.Delivery.open, v.name),
action = function() TriggerEvent('md-drugs:client:opendealermenu') end, action = function() TriggerEvent('md-drugs:client:opendealermenu') end,
} }}, dealer[k])
} end
AddMultiModel(dealer[k], options) end
end
RegisterNetEvent('md-drugs:client:RefreshDealers', function()
SpawnDealer()
end)
CreateThread(function()
SpawnDealer()
end) end)
RegisterNetEvent('md-drugs:client:setLocation', function(data) RegisterNetEvent('md-drugs:client:setLocation', function(data)
@@ -39,8 +44,8 @@ RegisterNetEvent('md-drugs:client:setLocation', function(data)
SetNewWaypoint(coord.x, coord.y) SetNewWaypoint(coord.x, coord.y)
if isActive then return end if isActive then return end
isActive = true isActive = true
local Buyer = CreatePed(0, "g_m_y_famdnf_01",coord.x, coord.y, coord.z-1, 180.0, false, false) local Buyer = CreatePed(0, "g_m_y_famdnf_01",coord.x, coord.y, coord.z-1, coord.w, false, false)
Freeze(Buyer, true, 180) Freeze(Buyer, true, coord.w)
AddSingleModel(Buyer, { AddSingleModel(Buyer, {
icon = 'fas fa-user-secret', icon = 'fas fa-user-secret',
label = Lang.targets.Delivery.hand, label = Lang.targets.Delivery.hand,
@@ -56,4 +61,4 @@ RegisterNetEvent('md-drugs:client:setLocation', function(data)
end end
end end
}, nil) }, nil)
end) end)
+144 -53
View File
@@ -5,6 +5,14 @@ local minigametype = Config.minigametype
local notifytype = Config.Notify local notifytype = Config.Notify
local dispatch = Config.Dispatch local dispatch = Config.Dispatch
function getJobType()
return QBCore.Functions.GetPlayerData().job.type
end
function getJobName()
return QBCore.Functions.GetPlayerData().job.name
end
function progressbar(text, time, anim) function progressbar(text, time, anim)
TriggerEvent('animations:client:EmoteCommandStart', {anim}) TriggerEvent('animations:client:EmoteCommandStart', {anim})
if progressbartype == 'oxbar' then if progressbartype == 'oxbar' then
@@ -84,24 +92,28 @@ function minigame()
exports['ps-ui']:Maze(function(success) exports['ps-ui']:Maze(function(success)
check = success check = success
end, game['ps_maze'].timelimit) end, game['ps_maze'].timelimit)
repeat Wait(10) until check ~= nil
return check return check
elseif minigametype == 'ps_scrambler' then elseif minigametype == 'ps_scrambler' then
local check local check
exports['ps-ui']:Scrambler(function(success) exports['ps-ui']:Scrambler(function(success)
check = success check = success
end, game['ps_scrambler'].type, game['ps_scrambler'].time, game['ps_scrambler'].mirrored) end, game['ps_scrambler'].type, game['ps_scrambler'].time, game['ps_scrambler'].mirrored)
repeat Wait(10) until check ~= nil
return check return check
elseif minigametype == 'ps_var' then elseif minigametype == 'ps_var' then
local check local check
exports['ps-ui']:VarHack(function(success) exports['ps-ui']:VarHack(function(success)
check = success check = success
end, game['ps_var'].numBlocks, game['ps_var'].time) end, game['ps_var'].numBlocks, game['ps_var'].time)
repeat Wait(10) until check ~= nil
return check return check
elseif minigametype == 'ps_thermite' then elseif minigametype == 'ps_thermite' then
local check local check
exports['ps-ui']:Thermite(function(success) exports['ps-ui']:Thermite(function(success)
check = success check = success
end, game['ps_thermite'].time, game['ps_thermite'].gridsize, game['ps_thermite'].incorrect) end, game['ps_thermite'].time, game['ps_thermite'].gridsize, game['ps_thermite'].incorrect)
repeat Wait(10) until check ~= nil
return check return check
elseif minigametype == 'ox' then elseif minigametype == 'ox' then
local success = lib.skillCheck(game['ox'], {'1', '2', '3', '4'}) local success = lib.skillCheck(game['ox'], {'1', '2', '3', '4'})
@@ -180,6 +192,7 @@ function minigame()
function GetImage(img) function GetImage(img)
if GetResourceState('ox_inventory') == 'started' then if GetResourceState('ox_inventory') == 'started' then
local Items = exports['ox_inventory']:Items() local Items = exports['ox_inventory']:Items()
if not Items[img] then print(' You Are Missing: ' .. img .. ' From Your ox items.lua') return end
local itemClient = Items[img] and Items[img]['client'] local itemClient = Items[img] and Items[img]['client']
if itemClient and itemClient['image'] then if itemClient and itemClient['image'] then
return itemClient['image'] return itemClient['image']
@@ -191,11 +204,12 @@ function GetImage(img)
['ps-inventory'] = "nui://ps-inventory/html/images/", ['ps-inventory'] = "nui://ps-inventory/html/images/",
['lj-inventory'] = "nui://lj-inventory/html/images/", ['lj-inventory'] = "nui://lj-inventory/html/images/",
['qb-inventory'] = "nui://qb-inventory/html/images/", ['qb-inventory'] = "nui://qb-inventory/html/images/",
['qs-inventory'] = "nui://qs-inventory/html/img/", ['qs-inventory'] = "nui://qs-inventory/html/imgages/",
['origen_inventory'] = "nui://origen_inventory/html/img/", ['origen_inventory'] = "nui://origen_inventory/html/img/",
['core_inventory'] = "nui://core_inventory/html/img/" ['core_inventory'] = "nui://core_inventory/html/img/"
} }
for k, v in pairs(invs) do for k, v in pairs(invs) do
if not QBCore.Shared.Items[img] then print(' You Are Missing: ' .. img .. ' From Your QB items.lua') return end
if GetResourceState(k) == 'started' then if GetResourceState(k) == 'started' then
return v .. QBCore.Shared.Items[img].image return v .. QBCore.Shared.Items[img].image
end end
@@ -205,8 +219,10 @@ end
function GetLabel(label) function GetLabel(label)
if GetResourceState('ox_inventory') == 'started' then if GetResourceState('ox_inventory') == 'started' then
local Items = exports['ox_inventory']:Items() local Items = exports['ox_inventory']:Items()
if not Items[label] then print(' You Are Missing: ' .. label .. ' From Your ox items.lua') return end
return Items[label]['label'] return Items[label]['label']
else else
if QBCore.Shared.Items[label] == nil then print("There Is No " .. label .. " In Your QB Items.lua") return end
return QBCore.Shared.Items[label]['label'] return QBCore.Shared.Items[label]['label']
end end
end end
@@ -254,12 +270,21 @@ end
function ItemCheck(item) function ItemCheck(item)
if GetResourceState('ox_inventory') == 'started' then if GetResourceState('ox_inventory') == 'started' then
if exports.ox_inventory:GetItemCount(item) >= 1 then return true else Notify('You Need ' .. GetLabel(item) .. " !", 'error') return false end if exports.ox_inventory:GetItemCount(item) >= 1 then return true else Notify('You Need ' .. GetLabel(item) .. " !", 'error') return false end
else else
if QBCore.Shared.Items[item] == nil then print("There Is No " .. item .. " In Your QB Items.lua") return end if QBCore.Shared.Items[item] == nil then print("There Is No " .. item .. " In Your QB Items.lua") return end
if QBCore.Functions.HasItem(item) then return true else Notify('You Need ' .. QBCore.Shared.Items[item].label .. " !", 'error') return false end if QBCore.Functions.HasItem(item) then return true else Notify('You Need ' .. QBCore.Shared.Items[item].label .. " !", 'error') return false end
end
end end
function hasItem(item)
if GetResourceState('ox_inventory') == 'started' then
if exports.ox_inventory:GetItemCount(item) >= 1 then return true else return false end
else
if QBCore.Shared.Items[item] == nil then print("There Is No " .. item .. " In Your QB Items.lua") return end
if QBCore.Functions.HasItem(item) then return true else return false end
end
end end
function ItemCheckMulti(item) function ItemCheckMulti(item)
@@ -331,10 +356,19 @@ function PoliceCall(chance)
exports["aty_dispatch"]:SendDispatch('Drug Sale', '420-69', 40, {'police'}) exports["aty_dispatch"]:SendDispatch('Drug Sale', '420-69', 40, {'police'})
elseif dispatch == 'qs' then elseif dispatch == 'qs' then
exports['qs-dispatch']:DrugSale() exports['qs-dispatch']:DrugSale()
elseif dispatch == 'codem' then
local Data = {
type = 'Drug Sale',
header = 'Someone Selling Drugs',
text = 'Hurry up and save the community',
code = '420-69',
}
exports['codem-dispatch']:CustomDispatch(Data)
else else
print('Congrats, You Choose 0 of the options :)') print('Congrats, You Choose 0 of the options :)')
end end
else else
return
end end
end end
@@ -346,11 +380,11 @@ end
function Freeze(entity, toggle, head) function Freeze(entity, toggle, head)
SetEntityInvincible(entity, toggle) SetEntityInvincible(entity, toggle)
SetEntityAsMissionEntity(entity, toggle, toggle) SetEntityAsMissionEntity(entity, toggle, toggle)
FreezeEntityPosition(entity, toggle) FreezeEntityPosition(entity, toggle)
SetEntityHeading(entity, head) SetEntityHeading(entity, head)
SetBlockingOfNonTemporaryEvents(entity, toggle) SetBlockingOfNonTemporaryEvents(entity, toggle)
end end
function tele(coords) function tele(coords)
@@ -370,7 +404,7 @@ function AddBoxZoneSingle(name, loc, data)
type = data.type or nil, type = data.type or nil,
event = data.event or nil, event = data.event or nil,
action = data.action or nil, action = data.action or nil,
icon = data.icon, icon = data.icon or "fa-solid fa-eye",
label = data.label, label = data.label,
data = data.data, data = data.data,
canInteract = data.canInteract, canInteract = data.canInteract,
@@ -385,16 +419,34 @@ function AddBoxZoneSingle(name, loc, data)
event = data.event or nil, event = data.event or nil,
onSelect = data.action or nil, onSelect = data.action or nil,
distance = 2.5, distance = 2.5,
icon = data.icon, icon = data.icon or "fa-solid fa-eye",
label = data.label, label = data.label,
data = data.data, data = data.data,
canInteract = data.canInteract, canInteract = data.canInteract,
} }
}, }) }, })
elseif Config.Target == 'interact' then
exports.interact:AddInteraction({
coords = vector3(loc.x, loc.y, loc.z),
distance = 2.5,
interactDst = 2,
id = name,
options = {
{
type = data.type or nil,
event = data.event or nil,
onSelect = data.action or nil,
distance = 2.5,
label = data.label,
data = data.data,
canInteract = data.canInteract,
},
}
})
end end
end end
function AddBoxZoneMulti(name, table, data) function AddBoxZoneMulti(name, table, data)
for k, v in pairs (table) do for k, v in pairs (table) do
if v.gang == nil or v.gang == '' or v.gang == "" then v.gang = 1 end if v.gang == nil or v.gang == '' or v.gang == "" then v.gang = 1 end
if Config.Target == 'qb' then if Config.Target == 'qb' then
@@ -404,7 +456,7 @@ function AddBoxZoneMulti(name, table, data)
type = data.type or nil, type = data.type or nil,
event = data.event or nil, event = data.event or nil,
action = data.action or nil, action = data.action or nil,
icon = data.icon, icon = data.icon or "fa-solid fa-eye",
label = data.label, label = data.label,
data = k, data = k,
canInteract = data.canInteract or function() canInteract = data.canInteract or function()
@@ -419,7 +471,7 @@ function AddBoxZoneMulti(name, table, data)
type = data.type or nil, type = data.type or nil,
event = data.event or nil, event = data.event or nil,
onSelect = data.action or nil, onSelect = data.action or nil,
icon = data.icon, icon = data.icon or "fa-solid fa-eye",
label = data.label, label = data.label,
data = k, data = k,
distance = 2.5, distance = 2.5,
@@ -427,35 +479,65 @@ function AddBoxZoneMulti(name, table, data)
if QBCore.Functions.GetPlayerData().gang.name == v.gang or v.gang == 1 then return true end end if QBCore.Functions.GetPlayerData().gang.name == v.gang or v.gang == 1 then return true end end
} }
}, }) }, })
elseif Config.Target == 'interact' then
exports.interact:AddInteraction({
coords = vector3(v.loc.x, v.loc.y, v.loc.z),
distance = 2.5,
interactDst = 2,
id = name,
options = {
{
type = data.type or nil,
event = data.event or nil,
action = data.action or nil,
distance = 2.5,
label = data.label or "fa-solid fa-eye",
data = k,
canInteract = data.canInteract or function()
if QBCore.Functions.GetPlayerData().gang.name == v.gang or v.gang == 1 then return true end end
},
}
})
end end
end end
end end
function AddBoxZoneMultiOptions(name, loc, data) function AddBoxZoneMultiOptions(name, loc, data)
if Config.Target == 'qb' then local options = {}
exports['qb-target']:AddBoxZone(name , loc, 1.5, 1.75, {name = name, minZ = loc.z-1.50,maxZ = loc.z +1.5}, for k, v in pairs (data) do
{ options = data, distance = 2.5}) table.insert(options, {
elseif Config.Target == 'ox' then icon = v.icon or "fa-solid fa-eye", label = v.label, event = v.event or nil, action = v.action or nil,
exports.ox_target:addBoxZone({coords = loc, size = vec3(1,1,1), options = data }) onSelect = v.action,data = v.data,canInteract = v.canInteract or nil, distance = 2.0,
end })
end end
if Config.Target == 'qb' then
exports['qb-target']:AddBoxZone(name , loc, 1.5, 1.75, {name = name, minZ = loc.z-1.50,maxZ = loc.z +1.5},
{ options = options, distance = 2.5})
elseif Config.Target == 'ox' then
exports.ox_target:addBoxZone({coords = loc, size = vec3(1,1,1), options = options })
elseif Config.Target == 'interact' then
exports.interact:AddInteraction({coords = vector3(loc.x, loc.y, loc.z),distance = 2.5,interactDst = 2,id = name,options = options})
end
end
function AddSingleModel(model, data, num) function AddSingleModel(model, data, num)
if Config.Target == 'qb' then if Config.Target == 'qb' then
exports['qb-target']:AddTargetEntity(model, {options = { exports['qb-target']:AddTargetEntity(model, {options = {
{icon = data.icon, label = data.label, event = data.event or nil, action = data.action or nil, data = num } {icon = data.icon or "fa-solid fa-eye", label = data.label, event = data.event or nil, action = data.action or nil, data = num }
}, distance = 2.5}) }, distance = 2.5})
elseif Config.Target == 'ox' then elseif Config.Target == 'ox' then
exports.ox_target:addLocalEntity(model, {icon = data.icon, label = data.label, event = data.event or nil, onSelect = data.action or nil, data = num, distance = 2.5 }) exports.ox_target:addLocalEntity(model, {icon = data.icon, label = data.label, event = data.event or nil, onSelect = data.action or nil, data = num, distance = 2.5 })
elseif Config.Target == 'interact' then
exports.interact:AddLocalEntityInteraction({entity = model,offset = vec3(0.0, 0.0, 1.0),id = 'mddrugs'..model,distance = 2.5,interactDst = 2.5, options = {label = data.label, event = data.event or nil, action = data.action or nil, data = num, distance = 2.5 }})
end end
end end
function AddMultiModel(model, data, num) function AddMultiModel(model, data, num)
local options = {} local options = {}
for k, v in pairs (data) do for k, v in pairs (data) do
table.insert(options,{ table.insert(options, {
icon = v.icon, label = v.label, event = v.event or nil, action = v.action or nil, icon = v.icon or "fa-solid fa-eye", label = v.label, event = v.event or nil, action = v.action or nil,
onSelect = v.action,data = v.data,canInteract = v.canInteract or nil, distance = 2.0, onSelect = v.action,data = v.data,canInteract = v.canInteract or nil, distance = 2.0,
}) })
end end
@@ -463,6 +545,9 @@ function AddMultiModel(model, data, num)
exports['qb-target']:AddTargetEntity(model, {options = options, distance = 2.5}) exports['qb-target']:AddTargetEntity(model, {options = options, distance = 2.5})
elseif Config.Target == 'ox' then elseif Config.Target == 'ox' then
exports.ox_target:addLocalEntity(model, options) exports.ox_target:addLocalEntity(model, options)
elseif Config.Target == 'interact' then
local loc = GetEntityCoords(model)
exports.interact:AddLocalEntityInteraction({entity = model,offset = vec3(0.0, 0.0, 1.0),id = 'mddrugss'..model,distance = 2.5,interactDst = 2.5, options = data})
end end
end end
@@ -471,6 +556,7 @@ local heading = 180.0
function StartRay() function StartRay()
local run = true local run = true
local pedcoord = GetEntityCoords(PlayerPedId()) local pedcoord = GetEntityCoords(PlayerPedId())
lib.requestModel('v_ret_ml_tablea', 30000)
local table = CreateObject('v_ret_ml_tablea', pedcoord.x, pedcoord.y, pedcoord.z+1, heading, false, false) local table = CreateObject('v_ret_ml_tablea', pedcoord.x, pedcoord.y, pedcoord.z+1, heading, false, false)
repeat repeat
local hit, entityHit, endCoords, surfaceNormal, matHash = lib.raycast.cam(511, 4, 10) local hit, entityHit, endCoords, surfaceNormal, matHash = lib.raycast.cam(511, 4, 10)
@@ -514,6 +600,7 @@ end
function StartRay2() function StartRay2()
local run = true local run = true
local pedcoord = GetEntityCoords(PlayerPedId()) local pedcoord = GetEntityCoords(PlayerPedId())
lib.requestModel('bkr_prop_coke_press_01aa', 30000)
local table = CreateObject('bkr_prop_coke_press_01aa', pedcoord.x, pedcoord.y, pedcoord.z+1, heading, false, false) local table = CreateObject('bkr_prop_coke_press_01aa', pedcoord.x, pedcoord.y, pedcoord.z+1, heading, false, false)
repeat repeat
local hit, entityHit, endCoords, surfaceNormal, matHash = lib.raycast.cam(511, 4, 10) local hit, entityHit, endCoords, surfaceNormal, matHash = lib.raycast.cam(511, 4, 10)
@@ -554,34 +641,38 @@ function StartRay2()
until run == false until run == false
end end
CreateThread(function()
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() LoadModel('prop_plant_01b')
Wait(3000) LoadModel('prop_plant_01a')
LoadModel('prop_plant_01b') TriggerEvent('heroin:init') LoadModel('prop_cactus_03')
LoadModel('prop_plant_01a') TriggerEvent('coke:init') LoadModel('prop_weed_01')
LoadModel('prop_cactus_03') TriggerEvent('Mescaline:init') TriggerEvent('weed:init')
LoadModel('mushroom') TriggerEvent('shrooms:init') TriggerEvent('heroin:init')
LoadModel('bkr_prop_weed_lrg_01b') TriggerEvent('weed:init') TriggerEvent('coke:init')
local check = lib.callback.await('md-drugs:server:GetRep', false) TriggerEvent('Mescaline:init')
TriggerEvent('shrooms:init')
return TriggerEvent('weed:init')
end) end)
AddEventHandler('onResourceStart', function(resource) lib.callback.register('md-drugs:client:uncuff', function(data)
if resource == GetCurrentResourceName() then if not progressbar(data, 4000, 'uncuff') then return end
LoadModel('prop_plant_01b') TriggerEvent('heroin:init') return true
LoadModel('prop_plant_01a') TriggerEvent('coke:init')
LoadModel('prop_cactus_03') TriggerEvent('Mescaline:init')
LoadModel('mushroom') TriggerEvent('shrooms:init')
LoadModel('bkr_prop_weed_lrg_01b') TriggerEvent('weed:init')
end
end) end)
local active = false
RegisterNetEvent('md-drugs:client:minusTier', function(data) RegisterCommand('DrugRep', function()
if active then return end if not Config.TierSystem then return end
if not data then return end local rep = lib.callback.await('md-drugs:server:GetRep', false)
active = true lib.registerContext({
if not progressbar('Cutting This ' ..GetLabel(data.item) .. ' More', 4000, 'uncuff') then return end id = 'DrugRep',
TriggerServerEvent('md-drugs:server:AddMas', data) title = 'Drug Reputation',
active = false options = {
end) {icon = "fa-solid fa-face-flushed", title = 'Cocaine: '..rep.coke},
{icon = "fa-solid fa-syringe", title = 'Heroin: '..rep.heroin},
{icon = "fa-solid fa-vial", title = 'LSD: '..rep.lsd},
{icon = "fa-solid fa-plug", title = 'Dealer: '..rep.dealerrep},
{icon = "fa-solid fa-money-bill", title = 'Corner Selling: ' .. rep.cornerselling.rep, description = 'Rank: ' .. rep.cornerselling.label }
}
})
lib.showContext('DrugRep')
end, false)
+15 -27
View File
@@ -1,16 +1,15 @@
local QBCore = exports['qb-core']:GetCoreObject()
local PoppyPlants = {} local PoppyPlants = {}
local herointable = false local herointable = false
local dirty = false
local function createLabKit(coord, head) local function createLabKit(coord, head)
local heroinlabkit = CreateObject("v_ret_ml_tablea", coord.x, coord.y, coord.z - 1, true, false,false) local heroinlabkit = CreateObject("v_ret_ml_tablea", coord.x, coord.y, coord.z - 1, true, false,false)
SetEntityHeading(heroinlabkit, head) SetEntityHeading(heroinlabkit, head)
PlaceObjectOnGroundProperly(heroinlabkit) PlaceObjectOnGroundProperly(heroinlabkit)
local options = { AddMultiModel(heroinlabkit, {
{ event = "md-drugs:client:heatliquidheroin", icon = "fa-solid fa-temperature-high", label = Lang.targets.heroin.cook, data = heroinlabkit}, {data = heroinlabkit, event = "md-drugs:client:heatliquidheroin", icon = "fa-solid fa-temperature-high", label = Lang.targets.heroin.cook, canInteract = function() if not dirty then return true end end},
{ event = "md-drugs:client:getheroinkitback", icon = "fas fa-box-circle-check", label = Lang.targets.heroin.up, data = heroinlabkit, canInteract = function() if herointable then return true end end}, {data = heroinlabkit, event = "md-drugs:client:getheroinkitback", icon = "fas fa-box-circle-check", label = Lang.targets.heroin.up, canInteract = function() if not dirty then return true end end},
} {data = heroinlabkit, event = "md-drugs:client:cleanheroinlabkit",icon = "fa-solid fa-hand-sparkles",label = Lang.targets.heroin.clean,canInteract = function() if dirty then return true end end}},heroinlabkit)
AddMultiModel(heroinlabkit, options, heroinlabkit)
end end
local function pickher(loc) local function pickher(loc)
@@ -18,15 +17,6 @@ local function pickher(loc)
TriggerServerEvent("heroin:pickupCane", loc) TriggerServerEvent("heroin:pickupCane", loc)
end end
CreateThread(function()
local Ped = "g_m_y_famdnf_01"
lib.requestModel("g_m_y_famdnf_01", Config.RequestModelTime)
local labkitlocation = Config.buyheroinlabkit
local heroinkitdealer = CreatePed(0, Ped, labkitlocation.x, labkitlocation.y, labkitlocation.z-1, labkitlocation.w, false, false)
Freeze(heroinkitdealer, true, labkitlocation.w)
AddSingleModel(heroinkitdealer, { label = Lang.targets.heroin.kit, icon = "fa-solid fa-money-bill", event = "md-drugs:client:buyheroinlabkit", distance = 2.0}, nil )
end)
RegisterNetEvent('heroin:respawnCane', function(loc) RegisterNetEvent('heroin:respawnCane', function(loc)
local v = GlobalState.PoppyPlants[loc] local v = GlobalState.PoppyPlants[loc]
local hash = GetHashKey(v.model) local hash = GetHashKey(v.model)
@@ -81,15 +71,17 @@ RegisterNetEvent("md-drugs:client:buyheroinlabkit", function()
TriggerServerEvent("md-drugs:server:getheroinlabkit") TriggerServerEvent("md-drugs:server:getheroinlabkit")
end) end)
RegisterNetEvent("md-drugs:client:setheroinlabkit", function() lib.callback.register("md-drugs:client:setheroinlabkit", function()
if herointable then if herointable then
Notify(Lang.Heroin.tableout, 'error') Notify(Lang.Heroin.tableout, 'error')
return false
else else
herointable = true herointable = true
local location, head = StartRay() local location, head = StartRay()
if not location then herointable = false TriggerServerEvent('md-drugs:server:getheroinlabkitback') return end if not location then herointable = false return end
if not progressbar(Lang.Heroin.table, 4000, 'uncuff') then TriggerServerEvent('md-drugs:server:getheroinlabkitback') return end if not progressbar(Lang.Heroin.table, 4000, 'uncuff') then return end
createLabKit(location, head) createLabKit(location, head)
return true, location
end end
end) end)
@@ -97,26 +89,22 @@ RegisterNetEvent("md-drugs:client:heatliquidheroin", function(data)
local loc, head = GetEntityCoords(data.data), GetEntityHeading(data.data) local loc, head = GetEntityCoords(data.data), GetEntityHeading(data.data)
if not ItemCheck('emptyvial') then return end if not ItemCheck('emptyvial') then return end
if not minigame() then if not minigame() then
dirty = true
TriggerServerEvent("md-drugs:server:failheatingheroin") TriggerServerEvent("md-drugs:server:failheatingheroin")
DeleteObject(data.data)
local dirtylabkitheroin = CreateObject("v_ret_ml_tablea", loc.x, loc.y, loc.z-1, true, false)
SetEntityHeading(dirtylabkitheroin, head)
PlaceObjectOnGroundProperly(dirtylabkitheroin)
loadParticle("core") loadParticle("core")
heroinkit = StartParticleFxLoopedOnEntity("exp_air_molotov", dirtylabkitheroin, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false) local heroinkit = StartParticleFxLoopedOnEntity("exp_air_molotov", data.data, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false)
SetParticleFxLoopedAlpha(heroinkit, 3.0) SetParticleFxLoopedAlpha(heroinkit, 3.0)
SetPedToRagdoll(PlayerPedId(), 1300, 1300, 0, 0, 0, 0) SetPedToRagdoll(PlayerPedId(), 1300, 1300, 0, 0, 0, 0)
AddMultiModel(dirtylabkitheroin, {{event = "md-drugs:client:cleanheroinlabkit",icon = "fa-solid fa-hand-sparkles",label = Lang.targets.heroin.clean, data = dirtylabkitheroin}}, nil )
return end return end
if not progressbar(Lang.Heroin.success, 4000, 'uncuff') then return end if not progressbar(Lang.Heroin.success, 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:heatliquidheroin") TriggerServerEvent("md-drugs:server:heatliquidheroin")
end) end)
RegisterNetEvent("md-drugs:client:cleanheroinlabkit", function(data) RegisterNetEvent("md-drugs:client:cleanheroinlabkit", function(data)
if not ItemCheck('cleaningkit') then return end if not ItemCheck('cleaningkit') then return end
if not progressbar(Lang.Heroin.clean, 4000, 'clean') then return end if not progressbar(Lang.Heroin.clean, 4000, 'clean') then return end
TriggerServerEvent("md-drugs:server:removecleaningkitheroin", data.data) local done = lib.callback.await('removeCleaningkit', false)
if done then dirty = false end
end) end)
RegisterNetEvent("md-drugs:client:deletedirtyheroin", function(data) RegisterNetEvent("md-drugs:client:deletedirtyheroin", function(data)
+2 -13
View File
@@ -1,17 +1,6 @@
local QBCore = exports['qb-core']:GetCoreObject()
CreateThread(function()
local current = "s_m_m_doctor_01"
lib.requestModel(current, Config.RequestModelTime)
local SyrupLocation = CreatePed(0, current,Config.SyrupVendor.x,Config.SyrupVendor.y,Config.SyrupVendor.z-1, Config.SyrupVendor.w, false, false)
Freeze(SyrupLocation, true, Config.SyrupVendor.w)
AddSingleModel(SyrupLocation, { type = "client", label = Lang.targets.lean.git, icon = "fa-solid fa-circle-info", event = "md-drugs:client:getsyruplocationtobuy", distance = 2.0}, nil )
end)
RegisterNetEvent("md-drugs:client:getsyruplocationtobuy", function() RegisterNetEvent("md-drugs:client:getsyruplocationtobuy", function()
Notify(Lang.Lean.marked, "success") Notify(Lang.Lean.marked, "success")
SpawnCarPedChase() SpawnCarPedChase()
end) end)
RegisterNetEvent('md-drugs:client:leancraft', function() RegisterNetEvent('md-drugs:client:leancraft', function()
+32 -45
View File
@@ -1,29 +1,29 @@
local QBCore = exports['qb-core']:GetCoreObject()
local tableout = false local tableout = false
local dirtylsd = false
local function createLabKit(coord, head) local function createLabKit(coord, head)
local labkit = CreateObject("v_ret_ml_tablea", coord.x, coord.y, coord.z - 1, true, false) local labkit = CreateObject("v_ret_ml_tablea", coord.x, coord.y, coord.z - 1, true, false)
SetEntityHeading(labkit, head) SetEntityHeading(labkit, head)
PlaceObjectOnGroundProperly(labkit) PlaceObjectOnGroundProperly(labkit)
local options = { local options = {
{ event = "md-drugs:client:heatliquid", icon = "fa-solid fa-temperature-high", label = Lang.targets.lsd.heat, data = labkit }, { event = "md-drugs:client:heatliquid", icon = "fa-solid fa-temperature-high", label = Lang.targets.lsd.heat, data = labkit, canInteract = function() if not dirtylsd then return true end end },
{ event = "md-drugs:client:refinequalityacid", icon = "fa-solid fa-temperature-high", label = Lang.targets.lsd.refine, data = labkit }, { event = "md-drugs:client:refinequalityacid", icon = "fa-solid fa-temperature-high", label = Lang.targets.lsd.refine, data = labkit,canInteract = function() if not dirtylsd then return true end end },
{ event = "md-drugs:client:maketabpaper", icon = "fa-regular fa-note-sticky", label = Lang.targets.lsd.dab, data = labkit }, { event = "md-drugs:client:maketabpaper", icon = "fa-regular fa-note-sticky", label = Lang.targets.lsd.dab, data = labkit, canInteract = function() if not dirtylsd then return true end end },
{ event = "md-drugs:client:getlabkitback", icon = "fas fa-box-circle-check", label = Lang.targets.lsd.back, data = labkit, canInteract = function() return tableout end } { event = "md-drugs:client:getlabkitback", icon = "fas fa-box-circle-check", label = Lang.targets.lsd.back, data = labkit, canInteract = function() if not dirtylsd then return true end end },
{icon = "fa-solid fa-hand-sparkles", label = Lang.targets.lsd.clean, data = labkit,
action = function()
if not ItemCheck('cleaningkit') then return end
if not progressbar(Lang.lsd.clean, 4000, 'clean') then return end
local check = lib.callback.await('md-drugs:server:removecleaningkit')
if check then
dirtylsd = false
end
end,
canInteract = function() if dirtylsd then return true end end
}
} }
AddMultiModel(labkit, options, labkit) AddMultiModel(labkit, options, labkit)
end end
CreateThread(function()
local Ped = "g_m_y_famdnf_01"
lib.requestModel(Ped, Config.RequestModelTime)
local tabdealer = CreatePed(0, Ped,Config.buylsdlabkit.x,Config.buylsdlabkit.y,Config.buylsdlabkit.z-1, Config.buylsdlabkit.w, false, false)
Freeze(tabdealer, true, Config.buylsdlabkit.w)
AddSingleModel(tabdealer,{ type = "client", label = Lang.targets.lsd.buy, icon = "fa-solid fa-money-bill", event = "md-drugs:client:buylabkit", distance = 2.0}, tabdealer )
end)
RegisterNetEvent("md-drugs:client:getlysergic", function(data) RegisterNetEvent("md-drugs:client:getlysergic", function(data)
if not minigame() then return end if not minigame() then return end
if not progressbar(Lang.lsd.steallys, 4000, 'uncuff') then return end if not progressbar(Lang.lsd.steallys, 4000, 'uncuff') then return end
@@ -37,17 +37,19 @@ RegisterNetEvent("md-drugs:client:getdiethylamide", function(data)
TriggerServerEvent('md-drugs:server:getdiethylamide', data.data) TriggerServerEvent('md-drugs:server:getdiethylamide', data.data)
end) end)
RegisterNetEvent("md-drugs:client:setlsdlabkit", function()
if tableout then lib.callback.register("md-drugs:client:setlsdlabkit", function()
Notify(Lang.lsd.tableout, 'error') if tableout then
TriggerServerEvent('md-drugs:server:getlabkitback') Notify(Lang.lsd.tableout, 'error')
else return false
tableout = true else
local loc, head = StartRay() tableout = true
if not loc then tableout = false TriggerServerEvent('md-drugs:server:getlabkitback') return end local loc, head = StartRay()
if not progressbar(Lang.lsd.place, 4000, 'uncuff') then TriggerServerEvent('md-drugs:server:getlabkitback') return end if not loc then tableout = false return end
createLabKit(loc, head) if not progressbar(Lang.lsd.place, 4000, 'uncuff') then return end
end createLabKit(loc, head)
return true, loc
end
end) end)
RegisterNetEvent("md-drugs:client:getlabkitback", function(data) RegisterNetEvent("md-drugs:client:getlabkitback", function(data)
@@ -63,13 +65,9 @@ RegisterNetEvent("md-drugs:client:heatliquid", function(data)
if not ItemCheck('lysergic_acid') then return end if not ItemCheck('lysergic_acid') then return end
if not ItemCheck('diethylamide') then return end if not ItemCheck('diethylamide') then return end
if not minigame() then if not minigame() then
TriggerServerEvent("md-drugs:server:failheating") dirtylsd = true
DeleteObject(data.data)
local dirtylabkit = CreateObject("v_ret_ml_tablea", PedCoords.x, PedCoords.y, PedCoords.z-1, true, false)
SetEntityHeading(dirtylabkit, head)
loadParticle(dict) loadParticle(dict)
exitPtfx = StartParticleFxLoopedOnEntity("scr_dst_cocaine", dirtylabkit, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false) local exitPtfx = StartParticleFxLoopedOnEntity("scr_dst_cocaine", data.data, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, false, false, false)
PlaceObjectOnGroundProperly(dirtylabkit)
SetParticleFxLoopedAlpha(exitPtfx, 3.0) SetParticleFxLoopedAlpha(exitPtfx, 3.0)
Wait(100) Wait(100)
AddMultiModel(dirtylabkit, {{event = "md-drugs:client:cleanlabkit", icon = "fa-solid fa-hand-sparkles", label = Lang.targets.lsd.clean, data = dirtylabkit}}, nil ) AddMultiModel(dirtylabkit, {{event = "md-drugs:client:cleanlabkit", icon = "fa-solid fa-hand-sparkles", label = Lang.targets.lsd.clean, data = dirtylabkit}}, nil )
@@ -78,16 +76,6 @@ RegisterNetEvent("md-drugs:client:heatliquid", function(data)
TriggerServerEvent("md-drugs:server:heatliquid") TriggerServerEvent("md-drugs:server:heatliquid")
end) end)
RegisterNetEvent("md-drugs:client:cleanlabkit", function(data)
if not ItemCheck('cleaningkit') then return end
if not progressbar(Lang.lsd.clean, 4000, 'clean') then return end
local check = lib.callback.await('md-drugs:server:removecleaningkit')
if check then
local coord, head = GetEntityCoords(data.data), GetEntityHeading(data.data)
DeleteObject(data.data)
createLabKit(coord, head)
end
end)
RegisterNetEvent("md-drugs:client:refinequalityacid", function() RegisterNetEvent("md-drugs:client:refinequalityacid", function()
if not ItemCheck('lsd_one_vial') then return end if not ItemCheck('lsd_one_vial') then return end
@@ -108,9 +96,8 @@ RegisterNetEvent("md-drugs:client:buytabs", function(data)
TriggerServerEvent("md-drugs:server:gettabpaper", data.data) TriggerServerEvent("md-drugs:server:gettabpaper", data.data)
end) end)
RegisterNetEvent("md-drugs:client:buylabkit", function() RegisterNetEvent("md-drugs:client:buylabkit", function()
if QBCore.Functions.HasItem('lsdlabkit') then Notify(Lang.lsd.hav, 'error') return end if hasItem('lsdlabkit') then Notify(Lang.lsd.hav, 'error') return end
if not progressbar(Lang.lsd.buykit, 4000, 'uncuff') then return end if not progressbar(Lang.lsd.buykit, 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:getlabkit") TriggerServerEvent("md-drugs:server:getlabkit")
end) end)
-1
View File
@@ -1,4 +1,3 @@
local QBCore = exports['qb-core']:GetCoreObject()
local Mescaline = {} local Mescaline = {}
local function pick(loc) local function pick(loc)
+12 -32
View File
@@ -1,8 +1,8 @@
local QBCore = exports['qb-core']:GetCoreObject()
local amonia = nil local amonia = nil
local tray = nil local tray = nil
local heated = nil local heated = nil
local active = nil local active = nil
local function startcook() local function startcook()
if not ItemCheck('empty_weed_bag') then return end if not ItemCheck('empty_weed_bag') then return end
if not ItemCheck('acetone') then return end if not ItemCheck('acetone') then return end
@@ -20,7 +20,7 @@ end
local function dials() local function dials()
if amonia == true then if amonia == true then
if not minigame() then if not minigame() then
AddExplosion(1005.773, -3200.402, -38.524, 49, 10, true, false, true, true) AddExplosion(1005.773, -3200.402, -38.524, 49, 10, true, false, true)
ClearPedTasks(PlayerPedId()) ClearPedTasks(PlayerPedId())
amonia = nil amonia = nil
active = nil active = nil
@@ -36,7 +36,7 @@ local function smash()
if tray then if tray then
tray = false tray = false
DeleteObject(trays) DeleteObject(trays)
local bucket = CreateObject(`bkr_prop_meth_bigbag_03a`, vector3(1012.85, -3194.29, -39.2), true, true, true) local bucket = CreateObject("bkr_prop_meth_bigbag_03a", vector3(1012.85, -3194.29, -39.2), true, true, true)
Freeze(bucket, true, 90.0) Freeze(bucket, true, 90.0)
SmashMeth() SmashMeth()
Wait(100) Wait(100)
@@ -82,10 +82,11 @@ CreateThread(function()
end) end)
CreateThread(function() CreateThread(function()
AddBoxZoneSingle("methTeleOut",Config.MethTeleIn, {name = 'teleout', icon = "fa-solid fa-door-open", label = Lang.targets.meth.enter, action = function() SetEntityCoords(PlayerPedId(), Config.MethTeleOut) end} ) local config = lib.callback.await('md-drugs:server:getLocs', false)
AddBoxZoneSingle("methtelein",Config.MethTeleOut, {name = 'teleout', icon = "fa-solid fa-door-closed", label = Lang.targets.meth.exit, action = function() SetEntityCoords(PlayerPedId(), Config.MethTeleIn) end} ) AddBoxZoneSingle("methTeleOut",config.singleSpot.MethTeleIn, {name = 'teleout', icon = "fa-solid fa-door-open", label = Lang.targets.meth.enter, action = function() SetEntityCoords(PlayerPedId(), config.singleSpot.MethTeleOut) end} )
AddBoxZoneSingle("methtelein",config.singleSpot.MethTeleOut, {name = 'teleout', icon = "fa-solid fa-door-closed", label = Lang.targets.meth.exit, action = function() SetEntityCoords(PlayerPedId(), config.singleSpot.MethTeleIn) end} )
local options = { local options = {
{ name = 'methcook', icon = "fa-solid fa-temperature-high", label = Lang.targets.meth.cook, distance = 2.5, action = function() startcook() end, { name = 'methcook', icon = "fa-solid fa-temperature-high", label = Lang.targets.meth.cook, distance = 2.5, action = function() startcook() end,
canInteract = function() canInteract = function()
if amonia == nil and active == nil then if amonia == nil and active == nil then
return true return true
@@ -99,40 +100,21 @@ CreateThread(function()
}, },
} }
AddBoxZoneMultiOptions("cookmeth",vector3(1005.72, -3200.33, -38.52), options ) AddBoxZoneMultiOptions("cookmeth",vector3(1005.72, -3200.33, -38.52), options )
AddBoxZoneSingle('boxmeth', vector3(1012.15, -3194.04, -39.20), {name = 'boxmeth',icon = "fas fa-sign-in-alt",label = Lang.targets.meth.box,action = function() smash()end, AddBoxZoneSingle('boxmeth', vector3(1012.15, -3194.04, -39.20), {name = 'boxmeth',icon = "fa-solid fa-weight-scale",label = Lang.targets.meth.box,action = function() smash()end,
canInteract = function() canInteract = function()
if tray then return true end if tray then return true end
end}) end})
AddBoxZoneSingle('adjustdials',vector3(1007.89, -3201.17, -38.99),{ name = 'adjustdials', icon = "fas fa-sign-in-alt", label = Lang.targets.meth.adjust, AddBoxZoneSingle('adjustdials',vector3(1007.89, -3201.17, -38.99),{ name = 'adjustdials', icon = "fa-solid fa-temperature-three-quarters", label = Lang.targets.meth.adjust,
distance = 5, action = function() dials() end, distance = 5, action = function() dials() end,
canInteract = function() canInteract = function()
if amonia and heated == nil then return true end end if amonia and heated == nil then return true end end
}) })
if Config.MethHeist == false then if Config.MethHeist == false then
AddBoxZoneMulti('methep', Config.MethEph, {icon = "fas fa-sign-in-alt", label = Lang.targets.meth.eph, event = 'md-drugs:client:stealeph'}) AddBoxZoneMulti('methep', config.MethEph, {icon = "fa-solid fa-bucket", label = Lang.targets.meth.eph, event = 'md-drugs:client:stealeph'})
AddBoxZoneMulti('methace', Config.Methace, {icon = "fas fa-sign-in-alt", label = Lang.targets.meth.ace, event = 'md-drugs:client:stealace'}) AddBoxZoneMulti('methace', config.Methace, {icon = "fa-solid fa-bucket", label = Lang.targets.meth.ace, event = 'md-drugs:client:stealace'})
end end
end) end)
CreateThread(function()
if not Config.MethHeist == false then
local current = "g_m_y_famdnf_01"
lib.requestModel(current, Config.RequestModelTime)
local CurrentLocation = Config.MethHeistStart
local methdealer = CreatePed(0, current, CurrentLocation.x, CurrentLocation.y, CurrentLocation.z - 1, false, false)
Freeze(methdealer, true, 220.0)
Wait(100)
AddSingleModel(methdealer,{
label = Lang.targets.meth.mission,
icon = "fas fa-eye",
action = function()
Notify(Lang.meth.mission, "success")
SpawnMethCarPedChase()
end,
},nil )
end
end)
RegisterNetEvent("md-drugs:client:stealeph", function(data) RegisterNetEvent("md-drugs:client:stealeph", function(data)
if not progressbar('Stealing Ephedrine', 4000, 'uncuff') then return end if not progressbar('Stealing Ephedrine', 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:geteph", data.data) TriggerServerEvent("md-drugs:server:geteph", data.data)
@@ -141,6 +123,4 @@ end)
RegisterNetEvent("md-drugs:client:stealace", function(data) RegisterNetEvent("md-drugs:client:stealace", function(data)
if not progressbar('Stealing Acetone', 4000, 'uncuff') then return end if not progressbar('Stealing Acetone', 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:getace", data.data) TriggerServerEvent("md-drugs:server:getace", data.data)
end) end)
+18 -25
View File
@@ -1,34 +1,33 @@
local QBCore = exports['qb-core']:GetCoreObject()
local carryPackage = nil local carryPackage = nil
RegisterNetEvent("md-drugs:client:GetOxyCar", function() RegisterNetEvent("md-drugs:client:GetOxyCar", function()
lib.requestModel("burrito3", Config.RequestModelTime) lib.requestModel("burrito3", Config.RequestModelTime)
local paid = lib.callback.await('md-drugs:server:payfortruck', false) local paid = lib.callback.await('md-drugs:server:payfortruck', false)
if not paid then return end if not paid then return end
local oxycar = CreateVehicle("burrito3",Config.truckspawn.x, Config.truckspawn.y,Config.truckspawn.z, Config.truckspawn.w, true, false) local loca = lib.callback.await('md-drugs:server:getLocs', false)
local loc = loca.singleSpot.truckspawn
local oxycar = CreateVehicle("burrito3",loc.x, loc.y,loc.z, loc.w, true, false)
exports[Config.Fuel]:SetFuel(oxycar, 100.0) exports[Config.Fuel]:SetFuel(oxycar, 100.0)
TriggerEvent("vehiclekeys:client:SetOwner", QBCore.Functions.GetPlate(oxycar)) TriggerEvent("vehiclekeys:client:SetOwner", GetVehicleNumberPlateText(oxycar))
Notify(Lang.oxy.truck, 'success') Notify(Lang.oxy.truck, 'success')
TriggerEvent("md-drugs:client:getoxylocationroute") TriggerEvent("md-drugs:client:getoxylocationroute")
AddSingleModel(oxycar, { event = "md-drugs:client:getfromtrunk", icon = "fas fa-box-circle-check", label = Lang.targets.oxy.pack}, nil ) AddSingleModel(oxycar, { event = "md-drugs:client:getfromtrunk", icon = "fa-solid fa-box", label = Lang.targets.oxy.pack}, nil )
end) end)
RegisterNetEvent("md-drugs:client:getoxylocationroute", function()
local config = lib.callback.await('md-drugs:server:getLocs', false)
RegisterNetEvent("md-drugs:client:getoxylocationroute", function() local loc = config.oxylocations[math.random(#config.oxylocations)]
local CurrentLocation = Config.oxylocations[math.random(#Config.oxylocations)] if loc ~= nil then
if CurrentLocation ~= nil then SetNewWaypoint(loc.x, loc.y)
SetNewWaypoint(CurrentLocation.x, CurrentLocation.y)
local current = "g_m_y_famdnf_01" local current = "g_m_y_famdnf_01"
lib.requestModel(current, Config.RequestModelTime) lib.requestModel(current, Config.RequestModelTime)
local oxybuyer = CreatePed(0, current,CurrentLocation.x,CurrentLocation.y,CurrentLocation.z-1, CurrentLocation.w, false, false) local oxybuyer = CreatePed(0, current,loc.x,loc.y,loc.z-1, loc.w, false, false)
Freeze(oxybuyer, true, CurrentLocation.w) Freeze(oxybuyer, true, loc.w)
repeat repeat
Wait(1000) Wait(1000)
until #(GetEntityCoords(PlayerPedId()) - vector3(CurrentLocation.x,CurrentLocation.y,CurrentLocation.z)) < 5.0 until #(GetEntityCoords(PlayerPedId()) - vector3(loc.x,loc.y,loc.z)) < 5.0
PoliceCall(Config.PoliceAlertOxy) PoliceCall(Config.PoliceAlertOxy)
AddSingleModel(oxybuyer, { type = "client", label = Lang.targets.oxy.talk, icon = "fas fa-eye", AddSingleModel(oxybuyer, { type = "client", label = Lang.targets.oxy.talk, icon = "fa-solid fa-dollar-sign",
action = function() action = function()
if carryPackage then if carryPackage then
if not progressbar(Lang.oxy.hand, 4000, 'uncuff') then return end if not progressbar(Lang.oxy.hand, 4000, 'uncuff') then return end
@@ -48,21 +47,15 @@ end)
RegisterNetEvent("md-drugs:client:getfromtrunk", function() RegisterNetEvent("md-drugs:client:getfromtrunk", function()
if carryPackage then if carryPackage then
Notify(Lang.oxy.cantcarry, "error") Notify(Lang.oxy.cantcarry, "error")
else else
local pos = GetEntityCoords(PlayerPedId(), true) local pos = GetEntityCoords(PlayerPedId(), true)
RequestAnimDict('anim@heists@box_carry@') lib.requestAnimDict('anim@heists@box_carry@')
while (not HasAnimDictLoaded('anim@heists@box_carry@')) do
Wait(7)
end
TaskPlayAnim(PlayerPedId(), 'anim@heists@box_carry@', 'idle', 5.0, -1, -1, 50, 0, false, false, false) TaskPlayAnim(PlayerPedId(), 'anim@heists@box_carry@', 'idle', 5.0, -1, -1, 50, 0, false, false, false)
RequestModel("hei_prop_drug_statue_box_big") lib.RequestModel("hei_prop_drug_statue_box_big")
while not HasModelLoaded("hei_prop_drug_statue_box_big") do
Wait(0)
end
local object = CreateObject("hei_prop_drug_statue_box_big", pos.x, pos.y, pos.z, true, true, true) local object = CreateObject("hei_prop_drug_statue_box_big", pos.x, pos.y, pos.z, true, true, true)
AttachEntityToEntity(object, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 57005), 0.05, 0.1, -0.3, 300.0, 250.0, 20.0, true, true, false, true, 1, true) AttachEntityToEntity(object, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 57005), 0.05, 0.1, -0.3, 300.0, 250.0, 20.0, true, true, false, true, 1, true)
carryPackage = object carryPackage = object
end end
end) end)
+27
View File
@@ -0,0 +1,27 @@
CreateThread(function()
local config = lib.callback.await('md-drugs:server:getLocs', false)
local num = lib.callback.await('md-drugs:server:GetMerchant', false)
local model = {"g_m_y_famdnf_01", 's_m_m_doctor_01', 'u_m_m_jesus_01', "prop_cooker_03"}
for k, v in pairs (model) do
lib.requestModel(v, Config.RequestModelTime)
end
local tabdealer = CreatePed(0, 'g_m_y_famdnf_01',config.singleSpot.buylsdlabkit.x,config.singleSpot.buylsdlabkit.y,config.singleSpot.buylsdlabkit.z-1,config.singleSpot.buylsdlabkit.w, false, false)
local heroinkitdealer = CreatePed(0,"g_m_y_famdnf_01",config.singleSpot.buyheroinlabkit.x, config.singleSpot.buyheroinlabkit.y, config.singleSpot.buyheroinlabkit.z-1, config.singleSpot.buyheroinlabkit.w, false, false)
local SyrupLocation = CreatePed(0, 's_m_m_doctor_01', config.singleSpot.SyrupVendor.x,config.singleSpot.SyrupVendor.y,config.singleSpot.SyrupVendor.z-1, config.singleSpot.SyrupVendor.w, false, false)
local WeedGuy = CreatePed(0,'u_m_m_jesus_01',config.singleSpot.WeedSaleman.x,config.singleSpot.WeedSaleman.y,config.singleSpot.WeedSaleman.z-1, config.singleSpot.WeedSaleman.w, false, false)
local methdealer = CreatePed(0, "g_m_y_famdnf_01", config.singleSpot.MethHeistStart.x, config.singleSpot.MethHeistStart.y, config.singleSpot.MethHeistStart.z - 1, false, false)
local travellingmerchant = CreatePed(0, "g_m_y_famdnf_01",num.x,num.y,num.z-1, num.w, false, false)
Freeze(tabdealer, true,config.singleSpot.buylsdlabkit.w)
Freeze(SyrupLocation, true, config.singleSpot.SyrupVendor.w)
Freeze(heroinkitdealer, true, config.singleSpot.buyheroinlabkit.w)
Freeze(WeedGuy, true, config.singleSpot.WeedSaleman.w)
Freeze(methdealer, true, 220.0)
Freeze(travellingmerchant, true, num.w)
AddSingleModel(tabdealer,{ type = "client", label = Lang.targets.lsd.buy, icon = "fa-solid fa-money-bill", event = "md-drugs:client:buylabkit", distance = 2.0}, tabdealer )
AddSingleModel(heroinkitdealer, { label = Lang.targets.heroin.kit, icon = "fa-solid fa-money-bill", event = "md-drugs:client:buyheroinlabkit", distance = 2.0}, nil )
AddSingleModel(SyrupLocation, { type = "client", label = Lang.targets.lean.git, icon = "fa-solid fa-circle-info", event = "md-drugs:client:getsyruplocationtobuy", distance = 2.0}, nil )
AddSingleModel(WeedGuy, {label = "Weed Shop",icon = "fa-solid fa-cannabis", action = function() makeMenu('WeedShop') lib.showContext('WeedShop')end}, nil)
AddSingleModel(methdealer,{label = Lang.targets.meth.mission, icon = "fa-solid fa-circle-info", action = function() Notify(Lang.meth.mission, "success") SpawnMethCarPedChase() end,},nil )
AddSingleModel(travellingmerchant, {label = Lang.targets.travel.travel, icon = "fa-solid fa-cart-shopping", action = function() makeMenu('travellingMerchant') lib.showContext('travellingMerchant') end}, nil)
end)
+10 -29
View File
@@ -1,27 +1,12 @@
local QBCore = exports['qb-core']:GetCoreObject()
RegisterNetEvent("md-drugs:client:prescriptionpad", function(args) lib.callback.register("md-drugs:client:prescriptionpad", function(data, op)
local icon, event = 'fa-solid fa-file-prescription', 'md-drugs:client:writeprescription' if getJobType() ~= 'ems' then return end
if QBCore.Functions.GetPlayerData().job.type == Config.PharmaJob then local input = lib.inputDialog('Who To Give A Prescription To?',{
lib.registerContext({ {type = 'select', label = 'Player Name', options = data},
id = 'prescriptionpad', {type = 'select', label = 'Prescription', options = op}})
title = "Prescription Pad", if not input[1] then return end
options = { if not progressbar(Lang.Pharma.write, 4000, 'notepad') then return end
{title = 'Give Vics', description = 'Give Vics ', icon = icon, event = event, args = {item = 'vicodin_prescription'}}, return {who = input[1], what = input[2]}
{title = 'Give Madderal', description = 'Give Madderal ', icon = icon, event = event, args = {item = 'adderal_prescription'}},
{title = 'Give Morphin', description = 'Give Morphin ', icon = icon, event = event, args = {item = 'morphine_prescription'}},
{title = 'Give Zany', description = 'Give Zany ', icon = icon, event = event, args = {item = 'xanax_prescription'} },
}
})
lib.showContext('prescriptionpad')
else
Notify(Lang.Pharma.notems, "error")
end
end)
RegisterNetEvent("md-drugs:client:writeprescription", function(args)
if not progressbar(Lang.Pharma.write, 4000, 'notepad') then return end
TriggerServerEvent("md-drugs:server:giveprescription", args.item)
end) end)
RegisterNetEvent("md-drugs:client:fillprescription", function(data) RegisterNetEvent("md-drugs:client:fillprescription", function(data)
@@ -29,11 +14,7 @@ RegisterNetEvent("md-drugs:client:fillprescription", function(data)
TriggerServerEvent("md-drugs:server:fillprescription", data.data) TriggerServerEvent("md-drugs:server:fillprescription", data.data)
end) end)
RegisterNetEvent("md-drugs:client:unbottle", function(item) lib.callback.register("md-drugs:client:unbottle", function()
if not progressbar(Lang.Pharma.open, 4000, 'uncuff') then return end if not progressbar(Lang.Pharma.open, 4000, 'uncuff') then return end
if item.name == 'vicodinbottle' then item = 'vicodin' end return true
if item.name == 'adderalbottle' then item = 'adderal' end
if item.name == 'morphinebottle' then item = 'morphine' end
if item.name == 'xanaxbottle' then item = 'xanax' end
TriggerServerEvent('md-drugs:server:unbottle', item)
end) end)
+11 -9
View File
@@ -1,18 +1,20 @@
local QBCore = exports['qb-core']:GetCoreObject()
local shrooms = {} local shrooms = {}
local function LoadModels(hash)
hash = GetHashKey(hash)
RequestModel(hash)
local timeout = GetGameTimer() + 5000 -- 5-second timeout
while not HasModelLoaded(hash) and GetGameTimer() < timeout do
Wait(10)
end
if HasModelLoaded(hash) then return true end
end
local function pick(loc) local function pick(loc)
if not progressbar(Lang.Shrooms.pick, 4000, 'uncuff') then return end if not progressbar(Lang.Shrooms.pick, 4000, 'uncuff') then return end
TriggerServerEvent("shrooms:pickupCane", loc) TriggerServerEvent("shrooms:pickupCane", loc)
end end
function LoadModel(hash)
RequestModel(hash)
while not HasModelLoaded(hash) do
Wait(0)
end
end
RegisterNetEvent('shrooms:respawnCane', function(loc) RegisterNetEvent('shrooms:respawnCane', function(loc)
local v = GlobalState.shrooms[loc] local v = GlobalState.shrooms[loc]
local hash = GetHashKey(v.model) local hash = GetHashKey(v.model)
@@ -42,7 +44,7 @@ end)
RegisterNetEvent("shrooms:init", function() RegisterNetEvent("shrooms:init", function()
for k, v in pairs (GlobalState.shrooms) do for k, v in pairs (GlobalState.shrooms) do
local hash = GetHashKey(v.model) local hash = GetHashKey(v.model)
lib.requestModel(v.model, Config.RequestModelTime) if not HasModelLoaded(hash) then LoadModels(hash) end
if not v.taken then if not v.taken then
shrooms[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z, false, true, true) shrooms[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z, false, true, true)
Freeze(shrooms[k], true, v.heading) Freeze(shrooms[k], true, v.heading)
+22 -21
View File
@@ -1,23 +1,24 @@
local QBCore = exports['qb-core']:GetCoreObject()
local icon = "fa solid fa-eye"
CreateThread(function() CreateThread(function()
AddBoxZoneSingle('telecokein', Config.CokeTeleIn, {action = function()tele(Config.CokeTeleOut)end, icon = 'fa-solid fa-door-open', label = Lang.targets.coke.enter}) -- coke local config = lib.callback.await('md-drugs:server:getLocs', false)
AddBoxZoneSingle('telecokeout', Config.CokeTeleOut, {action = function()tele(Config.CokeTeleIn) end, icon = "fa-solid fa-door-closed", label = Lang.targets.coke.exit}) -- coke if not config then print('Yo Dawg You Broke Your Locations.lua') return end
AddBoxZoneMulti('makepowder', Config.MakePowder, {event = "md-drugs:client:makepowder", icon = "fa-solid fa-scissors", label = Lang.targets.coke.chop}) -- coke AddBoxZoneSingle('telecokein', config.singleSpot.CokeTeleIn, {action = function()tele(config.singleSpot.CokeTeleOut)end, icon = 'fa-solid fa-door-open', label = Lang.targets.coke.enter}) -- coke
AddBoxZoneMulti('steallysergic', Config.lysergicacid, {event = "md-drugs:client:getlysergic", icon = icon, label = Lang.targets.lsd.lys}) -- lsd AddBoxZoneSingle('telecokeout', config.singleSpot.CokeTeleOut, {action = function()tele(config.singleSpot.CokeTeleIn) end, icon = "fa-solid fa-door-closed", label = Lang.targets.coke.exit}) -- coke
AddBoxZoneMulti('stealdiethylamide', Config.diethylamide, {event = "md-drugs:client:getdiethylamide", icon = icon, label = Lang.targets.lsd.die}) -- lsd AddBoxZoneMulti('makepowder', config.MakePowder, {event = "md-drugs:client:makepowder", icon = "fa-solid fa-scissors", label = Lang.targets.coke.chop}) -- coke
AddBoxZoneMulti('gettabs', Config.gettabs, {event = "md-drugs:client:buytabs", icon = icon, label = Lang.targets.lsd.buyt}) -- lsd AddBoxZoneMulti('steallysergic', config.lysergicacid, {event = "md-drugs:client:getlysergic", icon = "fa-solid fa-prescription-bottle", label = Lang.targets.lsd.lys}) -- lsd
AddBoxZoneMulti('dryheroin', Config.dryplant, {event = "md-drugs:client:dryplant", icon = icon, label = Lang.targets.heroin.dry}) -- heroin AddBoxZoneMulti('stealdiethylamide', config.diethylamide, {event = "md-drugs:client:getdiethylamide", icon = "fa-solid fa-prescription-bottle", label = Lang.targets.lsd.die}) -- lsd
AddBoxZoneMulti('cutheroin', Config.cutheroinone, {event = "md-drugs:client:cutheroin", icon = icon, label = Lang.targets.heroin.cut}) -- heroin AddBoxZoneMulti('gettabs', config.gettabs, {event = "md-drugs:client:buytabs", icon = "fa-solid fa-eye-dropper", label = Lang.targets.lsd.buyt}) -- lsd
AddBoxZoneMulti('fillneedle', Config.fillneedle, {event = "md-drugs:client:fillneedle", icon = icon, label = Lang.targets.heroin.fill}) -- heroin AddBoxZoneMulti('dryheroin', config.dryplant, {event = "md-drugs:client:dryplant", icon = "fa-solid fa-temperature-full", label = Lang.targets.heroin.dry}) -- heroin
AddBoxZoneMulti('makecrack', Config.makecrack, {event = "md-drugs:client:makecrackone", icon = icon, label = Lang.targets.crack.cook}) -- crack AddBoxZoneMulti('cutheroin', config.cutheroinone, {event = "md-drugs:client:cutheroin", icon = "fa-solid fa-flask", label = Lang.targets.heroin.cut}) -- heroin
AddBoxZoneMulti('bagcrack', Config.bagcrack, {event = "md-drugs:client:bagcrack", icon = icon, label = Lang.targets.crack.bag}) -- crack AddBoxZoneMulti('fillneedle', config.fillneedle, {event = "md-drugs:client:fillneedle", icon = "fa-solid fa-syringe", label = Lang.targets.heroin.fill}) -- heroin
AddBoxZoneMulti('fillprescription', Config.FillPrescription, {event = "md-drugs:client:fillprescription", icon = icon, label = Lang.targets.pha.fill}) -- pharma AddBoxZoneMulti('makecrack', config.makecrack, {event = "md-drugs:client:makecrackone", icon = "fa-solid fa-temperature-high", label = Lang.targets.crack.cook}) -- crack
AddBoxZoneSingle('payfortruck', Config.Payfortruck, {event = "md-drugs:client:GetOxyCar", icon = icon, label = Lang.targets.oxy.pay}) -- oxy runs AddBoxZoneMulti('bagcrack', config.bagcrack, {event = "md-drugs:client:bagcrack", icon = "fa-solid fa-weight-scale", label = Lang.targets.crack.bag}) -- crack
AddBoxZoneSingle('drymescaline', Config.DryOut, {event = "md-drugs:client:drymescaline", icon = icon, label = Lang.targets.mescaline.dry}) -- mescaline AddBoxZoneMulti('fillprescription', config.FillPrescription, {event = "md-drugs:client:fillprescription", icon = "fa-solid fa-prescription", label = Lang.targets.pha.fill}) -- pharma
AddBoxZoneMulti('stealisosafrole', Config.isosafrole, {event = "md-drugs:client:stealisosafrole", icon = icon, label = Lang.targets.xtc.iso}) -- xtc AddBoxZoneSingle('payfortruck', config.singleSpot.Payfortruck, {event = "md-drugs:client:GetOxyCar", icon = "fa-solid fa-truck-moving", label = Lang.targets.oxy.pay}) -- oxy runs
AddBoxZoneMulti('stealmdp2p', Config.mdp2p, {event = "md-drugs:client:stealmdp2p", icon = icon, label = Lang.targets.xtc.mdp}) -- xtc AddBoxZoneSingle('drymescaline', config.singleSpot.DryOut, {event = "md-drugs:client:drymescaline", icon = "fa-solid fa-temperature-full", label = Lang.targets.mescaline.dry}) -- mescaline
AddBoxZoneMulti('rawxtcloc', Config.rawxtcloc, {event = "md-drugs:client:makingrawxtc", icon = icon, label = Lang.targets.xtc.raw}) -- xtc AddBoxZoneMulti('stealisosafrole', config.isosafrole, {event = "md-drugs:client:stealisosafrole", icon = "fa-solid fa-vial", label = Lang.targets.xtc.iso}) -- xtc
AddBoxZoneSingle('buypress', Config.buypress, {event = "md-drugs:client:buypress", icon = icon, label = Lang.targets.xtc.press}) -- xtc AddBoxZoneMulti('stealmdp2p', config.mdp2p, {event = "md-drugs:client:stealmdp2p", icon = "fa-solid fa-vial", label = Lang.targets.xtc.mdp}) -- xtc
AddBoxZoneMulti('stamp', Config.stamp, {event = "md-drugs:client:stampwhite", icon = icon, label = Lang.targets.xtc.stamp}) -- xtc AddBoxZoneMulti('rawxtcloc', config.rawxtcloc, {event = "md-drugs:client:makingrawxtc", icon = "fa-solid fa-tablets", label = Lang.targets.xtc.raw}) -- xtc
AddBoxZoneSingle('buypress', config.singleSpot.buypress, {event = "md-drugs:client:buypress", icon = "fa-solid fa-mortar-pestle", label = Lang.targets.xtc.press}) -- xtc
AddBoxZoneMulti('stamp', config.stamp, {event = "md-drugs:client:stampwhite", icon = "fa-solid fa-tablets", label = Lang.targets.xtc.stamp}) -- xtc
end) end)
-15
View File
@@ -1,15 +0,0 @@
local QBCore = exports['qb-core']:GetCoreObject()
CreateThread(function()
local current = "g_m_y_famdnf_01"
lib.requestModel(current, Config.RequestModelTime)
local num = lib.callback.await('md-drugs:server:GetMerchant', false)
local CurrentLocation = Config.Travellingmerchant[num]
local travellingmerchant = CreatePed(0, current,CurrentLocation.x,CurrentLocation.y,CurrentLocation.z-1, CurrentLocation.w, false, false)
Freeze(travellingmerchant, true, CurrentLocation.w)
AddSingleModel(travellingmerchant, { label = Lang.targets.travel.travel, icon = "fas fa-eye",
action = function()
makeMenu('travellingMerchant')
lib.showContext('travellingMerchant')
end}, nil)
end)
+36 -61
View File
@@ -1,15 +1,19 @@
local QBCore = exports['qb-core']:GetCoreObject()
local WeedPlant = {} local WeedPlant = {}
local exploded, drying = false, false local exploded, drying = false, false
local function hasJob() local function hasJob()
if Config.Joblock then if Config.Joblock then
if QBCore.Functions.GetPlayerData().job.name == Config.weedjob then if getJobName() == Config.weedjob then
return true else return false end return true else return false end
else else
return true end return true end
end end
local function pick(loc)
if not progressbar(Lang.Weed.pick, 4000, 'uncuff') then return end
TriggerServerEvent("weed:pickupCane", loc)
end
RegisterNetEvent('weed:respawnCane', function(loc) RegisterNetEvent('weed:respawnCane', function(loc)
local v = GlobalState.WeedPlant[loc] local v = GlobalState.WeedPlant[loc]
local hash = GetHashKey(v.model) local hash = GetHashKey(v.model)
@@ -17,10 +21,7 @@ RegisterNetEvent('weed:respawnCane', function(loc)
if not WeedPlant[loc] then if not WeedPlant[loc] then
WeedPlant[loc] = CreateObject(hash, v.location.x, v.location.y, v.location.z-3.5, false, true, true) WeedPlant[loc] = CreateObject(hash, v.location.x, v.location.y, v.location.z-3.5, false, true, true)
Freeze(WeedPlant[loc],true, v.heading) Freeze(WeedPlant[loc],true, v.heading)
AddSingleModel(WeedPlant[loc], AddSingleModel(WeedPlant[loc], {icon = "fas fa-hand",label = Lang.targets.weed.pick, action = function() pick(loc) end}, loc)
{icon = "fas fa-hand",label = Lang.targets.weed.pick,
action = function()if not progressbar(Lang.Weed.pick, 4000, 'uncuff') then return end TriggerServerEvent("weed:pickupCane", loc) end},
loc)
end end
end) end)
@@ -32,14 +33,12 @@ end)
RegisterNetEvent("weed:init", function() RegisterNetEvent("weed:init", function()
for k, v in pairs (GlobalState.WeedPlant) do for k, v in pairs (GlobalState.WeedPlant) do
local hash = GetHashKey(v.model) local hash = GetHashKey(v.model)
if not HasModelLoaded(hash) then LoadModel(hash) end lib.requestModel('prop_weed_01', 1000)
if not v.taken then if not v.taken then
WeedPlant[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z-3.5, false, true, true) WeedPlant[k] = CreateObject(hash, v.location.x, v.location.y, v.location.z-3.5, false, true, true)
print(WeedPlant[k])
Freeze(WeedPlant[k],true, v.heading) Freeze(WeedPlant[k],true, v.heading)
AddSingleModel(WeedPlant[k], AddSingleModel(WeedPlant[k], {icon = "fas fa-hand",label = Lang.targets.weed.pick, action = function() pick(k) end}, k)
{icon = "fas fa-hand",label = Lang.targets.weed.pick,
action = function()if not progressbar(Lang.Weed.pick, 4000, 'uncuff') then return end TriggerServerEvent("weed:pickupCane", k) end},
k)
end end
end end
end) end)
@@ -56,7 +55,8 @@ AddEventHandler('onResourceStop', function(resourceName)
end) end)
CreateThread(function() CreateThread(function()
AddBoxZoneMulti('weeddry', Config.WeedDry, { local config = lib.callback.await('md-drugs:server:getLocs', false)
AddBoxZoneMulti('weeddry', config.WeedDry, {
name = 'dryweed', name = 'dryweed',
icon = "fas fa-sign-in-alt", icon = "fas fa-sign-in-alt",
label = Lang.targets.weed.dry, label = Lang.targets.weed.dry,
@@ -74,7 +74,7 @@ CreateThread(function()
Wait(math.random(1000,5000)) Wait(math.random(1000,5000))
Notify(Lang.Weed.take, "success") Notify(Lang.Weed.take, "success")
AddSingleModel(weedplant, { AddSingleModel(weedplant, {
icon = "fas fa-sign-in-alt", icon = "fa-solid fa-cannabis",
label = Lang.targets.weed.dpick, label = Lang.targets.weed.dpick,
action = function() action = function()
DeleteEntity(weedplant) DeleteEntity(weedplant)
@@ -90,40 +90,43 @@ CreateThread(function()
if hasJob() then return true end end if hasJob() then return true end end
}) })
AddBoxZoneSingle('teleinweedout', Config.Teleout, { name = 'teleout', icon = "fas fa-sign-in-alt", label = Lang.targets.coke.exit, distance = 2.0, action = function() SetEntityCoords(PlayerPedId(),Config.Telein) end, AddBoxZoneSingle('teleinweedout', config.singleSpot.weedTeleout, { name = 'teleout', icon = "fa-solid fa-door-closed", label = Lang.targets.coke.exit, distance = 2.0, action = function() SetEntityCoords(PlayerPedId(),config.singleSpot.weedTelein) end,
canInteract = function() if hasJob() then return true end end canInteract = function() if hasJob() then return true end end
}) })
AddBoxZoneSingle('teleinweedin', Config.Telein, { name = 'teleout', icon = "fas fa-sign-in-alt", label = Lang.targets.coke.enter, distance = 2.0, action = function() SetEntityCoords(PlayerPedId(),Config.Teleout) end, AddBoxZoneSingle('teleinweedin', config.singleSpot.weedTelein, { name = 'teleout', icon = "fa-solid fa-door-open", label = Lang.targets.coke.enter, distance = 2.0, action = function() SetEntityCoords(PlayerPedId(),config.singleSpot.weedTeleout) end,
canInteract = function() if hasJob() then return true end end canInteract = function() if hasJob() then return true end end
}) })
AddBoxZoneSingle('MakeButterCrafting', Config.MakeButter, {label = Lang.targets.weed.butt, action = function() lib.showContext('ButterCraft') end, icon = "fas fa-sign-in-alt", AddBoxZoneSingle('MakeButterCrafting', config.singleSpot.MakeButter, {label = Lang.targets.weed.butt, action = function() lib.showContext('ButterCraft') end, icon = "fa-solid fa-cookie",
canInteract = function() if hasJob() then return true end end canInteract = function() if hasJob() then return true end end
}) })
AddBoxZoneSingle('makeoil',Config.MakeOil, { AddBoxZoneSingle('makeoil',config.singleSpot.MakeOil, {
name = 'Oil', name = 'Oil',
icon = "fas fa-sign-in-alt", icon = "fa-solid fa-oil-can",
label = Lang.targets.weed.oil, label = Lang.targets.weed.oil,
action = function() action = function()
if not ItemCheckMulti({'butane', 'grindedweed'}) then return end if not ItemCheckMulti({'butane', 'grindedweed'}) then return end
if not minigame() then if not minigame() then
local explosion = math.random(1,100)
local loc = GetEntityCoords(PlayerPedId()) local loc = GetEntityCoords(PlayerPedId())
if explosion <= 99 then AddExplosion(loc.x, loc.y, loc.z, 49, 10, true, false, true)
AddExplosion(loc.x, loc.y, loc.z, 49, 10, true, false, true, true) exploded = true
exploded = true Notify(Lang.Weed.stovehot, "error")
Notify(Lang.Weed.stovehot, "error") Wait(1000 * 30)
Wait(1000 * 30) exploded = false
exploded = false
end
return end return end
if not progressbar(Lang.Weed.shat, 4000, 'uncuff') then return end if not progressbar(Lang.Weed.shat, 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:makeoil") TriggerServerEvent("md-drugs:server:makeoil")
end, end,
canInteract = function() canInteract = function()
if hasJob() and exploded == false then return true end if hasJob() and exploded == false then return true end
end, end,
} ) })
local stove = CreateObject("prop_cooker_03",config.singleSpot.MakeButter.x, config.singleSpot.MakeButter.y, config.singleSpot.MakeButter.z-1, true, false)
SetEntityHeading(stove, 270.00)
FreezeEntityPosition(stove, true)
local stove2 = CreateObject("prop_cooker_03",config.singleSpot.MakeOil.x,config.singleSpot.MakeOil.y, config.singleSpot.MakeOil.z-1, true, false)
SetEntityHeading(stove2, 90.00)
FreezeEntityPosition(stove2, true)
end) end)
CreateThread(function() CreateThread(function()
@@ -136,35 +139,11 @@ CreateThread(function()
BikerWeedFarm.Plant4.Clear(false) BikerWeedFarm.Plant5.Clear(false) BikerWeedFarm.Plant6.Clear(false) BikerWeedFarm.Plant4.Clear(false) BikerWeedFarm.Plant5.Clear(false) BikerWeedFarm.Plant6.Clear(false)
BikerWeedFarm.Plant7.Clear(false) BikerWeedFarm.Plant8.Clear(false) BikerWeedFarm.Plant9.Clear(false) BikerWeedFarm.Plant7.Clear(false) BikerWeedFarm.Plant8.Clear(false) BikerWeedFarm.Plant9.Clear(false)
RefreshInterior(BikerWeedFarm.interiorId) RefreshInterior(BikerWeedFarm.interiorId)
local stove = CreateObject("prop_cooker_03",vector3(1045.49, -3198.46, -38.15-1), true, false)
SetEntityHeading(stove, 270.00)
FreezeEntityPosition(stove, true)
local stove2 = CreateObject("prop_cooker_03",vector3(1038.90, -3198.66, -38.17-1), true, false)
SetEntityHeading(stove2, 90.00)
FreezeEntityPosition(stove2, true)
end)
RegisterNetEvent("md-drugs:client:rollanim", function()
if not progressbar(Lang.Weed.roll, 4000, 'uncuff') then return end
end)
RegisterNetEvent("md-drugs:client:grind", function()
if not progressbar("grinding", 4000, 'uncuff') then return end
end) end)
RegisterNetEvent("md-drugs:client:dodabs", function() RegisterNetEvent("md-drugs:client:dodabs", function()
if not progressbar('Doing Dabs', 4000, 'bong2') then return end if not progressbar('Doing Dabs', 4000, 'bong2') then AlienEffect() return end
AlienEffect() AlienEffect()
end)
CreateThread(function()
local current = "u_m_m_jesus_01"
lib.requestModel(current, Config.RequestModelTime)
local CurrentLocation = Config.WeedSaleman
local WeedGuy = CreatePed(0,current,CurrentLocation.x,CurrentLocation.y,CurrentLocation.z-1, CurrentLocation.w, false, false)
Freeze(WeedGuy, true, CurrentLocation.w)
AddSingleModel(WeedGuy, {label = "Weed Shop",icon = "fas fa-eye", action = function() makeMenu('WeedShop') lib.showContext('WeedShop')end}, nil)
end) end)
local function createBluntOptions(contextId, contextTitle, eventLabelPrefix, tableName) local function createBluntOptions(contextId, contextTitle, eventLabelPrefix, tableName)
@@ -190,11 +169,7 @@ local function createBluntOptions(contextId, contextTitle, eventLabelPrefix, tab
} }
end end
sorter(options, 'title') sorter(options, 'title')
lib.registerContext({ lib.registerContext({ id = contextId, title = contextTitle, options = options})
id = contextId,
title = contextTitle,
options = options
})
end end
CreateThread(function() CreateThread(function()
@@ -215,4 +190,4 @@ end)
RegisterNetEvent('md-drugs:client:rollBlunt', function(data) RegisterNetEvent('md-drugs:client:rollBlunt', function(data)
lib.showContext('mddrugsblunts') lib.showContext('mddrugsblunts')
end) end)
+32 -54
View File
@@ -1,70 +1,48 @@
local QBCore = exports['qb-core']:GetCoreObject()
local miss = false local miss = false
RegisterNetEvent("md-drugs:client:GetLocation", function(drug)
RegisterNetEvent("md-drugs:client:GetLocation", function(drug, notify)
if not GetCops(Config.PoliceCount) then return end if not GetCops(Config.PoliceCount) then return end
if miss then if miss then
Notify(Lang.Wholesale.al, 'error') Notify(Lang.Wholesale.al, 'error')
else else
TriggerServerEvent('md-drugs:server:RemoveBurner', drug) local loc = drug.location
Notify(notify, 'success') local timer = 0
local CurrentLocation = Config.oxylocations[math.random(#Config.oxylocations)] miss = true
local timer = 0 SetNewWaypoint(loc.x, loc.y)
miss = true lib.requestModel("g_m_y_famdnf_01", Config.RequestModelTime)
SetNewWaypoint(CurrentLocation.x, CurrentLocation.y) local current = "g_m_y_famdnf_01"
lib.requestModel("g_m_y_famdnf_01", Config.RequestModelTime) local drugdealer = CreatePed(0, current,loc.x,loc.y,loc.z-1, 90.0, false, false)
local current = "g_m_y_famdnf_01"
local drugdealer = CreatePed(0, current,CurrentLocation.x,CurrentLocation.y,CurrentLocation.z-1, 90.0, false, false)
FreezeEntityPosition(drugdealer, true) FreezeEntityPosition(drugdealer, true)
SetEntityInvincible(drugdealer, true) SetEntityInvincible(drugdealer, true)
AddSingleModel(drugdealer, { AddMultiModel(drugdealer, {{
type = "client", label = Lang.targets.Wholesale.talk,
label = Lang.Wholesale.talk,
icon = "fas fa-eye", icon = "fas fa-eye",
action = function() action = function()
local luck = math.random(1,100) local luck = math.random(1,100)
if luck >= Config.SuccessfulChance then if luck <= Config.SuccessfulChance then
TriggerEvent("md-drugs:client:SuccessSale", drug) if not progressbar("Wholesaling Drugs", 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:SuccessSale", drug)
else else
TriggerEvent("md-drugs:client:SetUp") progressbar("YOU FUCKED NOW", 4000, 'uncuff')
SetUpPeds()
end end
Wait(3000) Wait(3000)
DeleteEntity(drugdealer) DeleteEntity(drugdealer)
miss = false miss = false
end, end
},nil ) }},drugdealer )
repeat repeat
Wait(1000) Wait(1000)
timer = timer + 1 timer = timer + 1
until #(GetEntityCoords(PlayerPedId()) - vector3(CurrentLocation.x, CurrentLocation.y, CurrentLocation.z) ) < 4.0 or timer == Config.WholesaleTimeout + 1 until #(GetEntityCoords(PlayerPedId()) - vector3(loc.x, loc.y, loc.z) ) < 4.0 or timer == Config.WholesaleTimeout + 1
PoliceCall(Config.AlertPoliceWholesale) PoliceCall(Config.AlertPoliceWholesale)
if timer <= Config.WholesaleTimeout or #(GetEntityCoords(PlayerPedId()) - vector3(CurrentLocation.x, CurrentLocation.y, CurrentLocation.z) ) < 4.0 then if timer <= Config.WholesaleTimeout or #(GetEntityCoords(PlayerPedId()) - vector3(loc.x, loc.y, loc.z) ) < 4.0 then
timer = 0 timer = 0
else else
Notify('The Buyer Waited To Long') Notify('The Buyer Waited To Long', 'error')
DeleteEntity(drugdealer) DeleteEntity(drugdealer)
end end
end
end)
RegisterNetEvent("md-drugs:client:SuccessSale", function(drug)
if not progressbar("Wholesaling Drugs", 4000, 'uncuff') then return end
if drug == 'coke' then
TriggerServerEvent("md-drugs:server:wholesalecoke")
elseif drug == 'crack' then
TriggerServerEvent("md-drugs:server:wholesalecrack")
elseif drug == 'lsd' then
TriggerServerEvent("md-drugs:server:wholesalelsd")
elseif drug == 'heroin' then
TriggerServerEvent("md-drugs:server:wholesaleheroin")
elseif drug == 'xtc' then
TriggerEvent("md-drugs:client:wholesalextc")
end end
end) end)
RegisterNetEvent("md-drugs:client:SetUp", function()
progressbar("YOU FUCKED NOW", 4000, 'uncuff')
SetUpPeds()
end)
+25 -7
View File
@@ -1,4 +1,3 @@
local QBCore = exports['qb-core']:GetCoreObject()
local xtcpress = false local xtcpress = false
RegisterNetEvent("md-drugs:client:setpress", function(type) RegisterNetEvent("md-drugs:client:setpress", function(type)
@@ -10,7 +9,7 @@ RegisterNetEvent("md-drugs:client:setpress", function(type)
progressbar('Setting Press On The Ground', 4000, 'uncuff') progressbar('Setting Press On The Ground', 4000, 'uncuff')
local press = CreateObject("bkr_prop_coke_press_01aa", coords.x, coords.y, coords.z, true, false, false) local press = CreateObject("bkr_prop_coke_press_01aa", coords.x, coords.y, coords.z, true, false, false)
PlaceObjectOnGroundProperly(press) PlaceObjectOnGroundProperly(press)
SetEntityHeading(press, head) Freeze(press, true, head)
local options = { local options = {
{ icon = "fas fa-eye", label = Lang.targets.xtc.make, distance = 2.0, action = function() TriggerEvent("md-drugs:client:XTCMenu", type) end, { icon = "fas fa-eye", label = Lang.targets.xtc.make, distance = 2.0, action = function() TriggerEvent("md-drugs:client:XTCMenu", type) end,
canInteract = function() if xtcpress then return true end end canInteract = function() if xtcpress then return true end end
@@ -23,6 +22,30 @@ RegisterNetEvent("md-drugs:client:setpress", function(type)
end end
end) end)
lib.callback.register('md-drugs:client:setpress', function(type)
if xtcpress then
Notify(Lang.xtc.out, 'error')
return false
else
local coords, head = StartRay2()
xtcpress = true
progressbar('Setting Press On The Ground', 4000, 'uncuff')
local press = CreateObject("bkr_prop_coke_press_01aa", coords.x, coords.y, coords.z, true, false, false)
PlaceObjectOnGroundProperly(press)
Freeze(press, true, head)
local options = {
{ icon = "fa-solid fa-tablets", label = Lang.targets.xtc.make, distance = 2.0, action = function() TriggerEvent("md-drugs:client:XTCMenu", type) end,
canInteract = function() if xtcpress then return true end end
},
{icon = "fas fa-eye", label = Lang.targets.xtc.pick, action = function() TriggerEvent("md-drugs:client:GetPressBack", type, press) end, distance = 2.0,
canInteract = function() if xtcpress then return true end end
},
}
AddMultiModel(press, options, nil)
return true, GetEntityCoords(press)
end
end)
RegisterNetEvent("md-drugs:client:XTCMenu", function(type) RegisterNetEvent("md-drugs:client:XTCMenu", function(type)
local event = "md-drugs:client:MakeXTC" local event = "md-drugs:client:MakeXTC"
lib.registerContext({ lib.registerContext({
@@ -51,14 +74,12 @@ RegisterNetEvent("md-drugs:client:stealisosafrole", function(data)
TriggerServerEvent("md-drugs:server:stealisosafrole",data.data) TriggerServerEvent("md-drugs:server:stealisosafrole",data.data)
end) end)
RegisterNetEvent("md-drugs:client:stealmdp2p", function(data) RegisterNetEvent("md-drugs:client:stealmdp2p", function(data)
if not minigame() then Notify(Lang.xtc.fail, "error") return end if not minigame() then Notify(Lang.xtc.fail, "error") return end
if not progressbar(Lang.xtc.mdp2p, 4000, 'uncuff') then return end if not progressbar(Lang.xtc.mdp2p, 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:stealmdp2p", data.data) TriggerServerEvent("md-drugs:server:stealmdp2p", data.data)
end) end)
RegisterNetEvent("md-drugs:client:makingrawxtc", function(data) RegisterNetEvent("md-drugs:client:makingrawxtc", function(data)
if not ItemCheck('isosafrole') then return end if not ItemCheck('isosafrole') then return end
if not ItemCheck('mdp2p') then return end if not ItemCheck('mdp2p') then return end
@@ -72,8 +93,6 @@ RegisterNetEvent("md-drugs:client:MakeXTC", function(data)
TriggerServerEvent("md-drugs:server:makextc",data) TriggerServerEvent("md-drugs:server:makextc",data)
end) end)
------------------------------------------------------------------ Stamping
RegisterNetEvent("md-drugs:client:stampwhite", function(data) RegisterNetEvent("md-drugs:client:stampwhite", function(data)
lib.registerContext({ id = 'stampxtc', title = 'Stamp XTC Menu', lib.registerContext({ id = 'stampxtc', title = 'Stamp XTC Menu',
options = { options = {
@@ -110,7 +129,6 @@ RegisterNetEvent("md-drugs:client:stampwhite", function(data)
lib.showContext('stampxtc') lib.showContext('stampxtc')
end) end)
RegisterNetEvent("md-drugs:client:getsinglepress", function() RegisterNetEvent("md-drugs:client:getsinglepress", function()
if not progressbar(Lang.xtc.buyp, 4000, 'uncuff') then return end if not progressbar(Lang.xtc.buyp, 4000, 'uncuff') then return end
TriggerServerEvent("md-drugs:server:buypress") TriggerServerEvent("md-drugs:server:buypress")
+5 -7
View File
@@ -3,30 +3,28 @@ author "mustache_dom"
description "drugs by mustache dom" description "drugs by mustache dom"
fx_version "cerulean" fx_version "cerulean"
game "gta5" game "gta5"
version '3.8.0' version '3.9.0'
client_scripts { client_scripts {
'client/**.lua', 'client/**.lua',
} }
server_scripts { server_scripts {
'server/functions.lua',
'server/**.lua', 'server/**.lua',
'@oxmysql/lib/MySQL.lua', '@oxmysql/lib/MySQL.lua',
} }
shared_scripts { shared_scripts {
'shared/config.lua',
'@ox_lib/init.lua', '@ox_lib/init.lua',
'shared/**.lua', 'shared/**.lua',
} }
lua54 'yes' lua54 'yes'
dependency 'bob74_ipl'
files { files {
'stream/mushroom.ytyp' 'stream/mushroom.ytyp',
'stream/mushroom.ydr'
} }
data_file 'DLC_ITYP_REQUEST' 'stream/mushroom.ytyp' data_file 'DLC_ITYP_REQUEST' 'stream/mushroom.ytyp'
+19 -19
View File
@@ -1,19 +1,19 @@
CREATE TABLE IF NOT EXISTS `deliveriesdealer` ( CREATE TABLE IF NOT EXISTS `deliveriesdealer` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
`cid` varchar(50) NOT NULL, `cid` varchar(50) NOT NULL,
`itemdata` varchar(50) NOT NULL, `itemdata` varchar(50) NOT NULL,
`timestart` varchar(50) NOT NULL, `timestart` varchar(50) NOT NULL,
`timestop` varchar(50) DEFAULT NULL, `timestop` varchar(50) DEFAULT NULL,
`maxtime` varchar(50) NOT NULL, `maxtime` varchar(50) NOT NULL,
`location` varchar(255) DEFAULT NULL, `location` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
CREATE TABLE IF NOT EXISTS `drugrep` ( CREATE TABLE IF NOT EXISTS `drugrep` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
`cid` varchar(50) DEFAULT NULL, `cid` varchar(50) DEFAULT NULL,
`drugrep` varchar(255) DEFAULT NULL, `drugrep` varchar(255) DEFAULT NULL,
`name` varchar(50) DEFAULT NULL, `name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-103
View File
@@ -1,103 +0,0 @@
Notes from 3.5.2 -> 3.5.3
added easier calls for GetCops
added support for qs phone emails
added option for minigames 'none' so its not required
3.5.3 - > 3.5.4
1) Removed Config.imagelink - too tired of people not changing that and then asking me why images wont load.
- should work for qb, ps, lj, ox, qs, core, origen. if you use another inventory go to line 147 of the functions.lua in the client folder
- make this adjustment
```
elseif GetResourceState('yourinventoryname') == 'started' then
return "nui:/yourinventoryname/folder1/folder2/".. QBCore.Shared.Items[img].image
```
2 )small bug fixes in meth.lua client side
3) small bug fixes in pharma.lua server side
4) bug allowing to see target for drying weed when waiting for the weed to dry patched
3.5.4 - > 3.5.5
Updated small tweaks to client and server functions.lua
3.5.5 - > 3.5.6
updated mainly client/server functions.lua to include a check for if using scully emotes then use the export to cancel emote once done with progressbar, added support for a few other inventories and dispatch
added new item box events for additem and removeitem functions in the server/functions.lua
I left the original itembox event in, if you dont use the old event it will just trigger to a blank event and the next event will trigger, its a duct tape backwards compat method
3.5.6 - > 3.5.7
added a couple new functions to cut back on repeating natives needed ( Freeze() ) will now set an entitys heading, block temp events, freeze, and set invincible)
added better calls for GetImage and GetLabel for ox inventory
converted all callbacks to lib.callback to increase optimization
should be fully compatible with qbx without needing to make a couple edits now
3.5.7 - > 3.5.8
Added support for fivemerr logs
3.5.8 -> 3.5.9
added command /cornersell **you only need to update server/cornserselling.lua** from previous update
3.5.9 - > 3.7.0
im bad at numbers sue me kek
a lot has been changed with this version
The main thing to update from 3.5.9 to 3.7.0 is a couple things in your config
SAVE YOUR SHARED FOLDER AND COPY AND PASTE IT TO YOUR DESKTOP SO YOU HAVE A SECOND COPY
```
Config.oxtarget:
no longer exists in new version. Change it to
Config.Target = 'qb' -- qb or ox
Config.minigametype:
changed a little bit. you need to add this table to make things work now
Config.Minigames = {
ps = { amount = 2, speed = 8,},
ox = { 'easy', 'easy'}, --easy medium or hard each one corresponds to how many skillchecks and the difficulty
blcirprog = { amount = 2, speed = 50}, -- speed = 1-100
blprog = { amount = 1, speed = 50}, -- speed = 1-100
blkeyspam = { amount = 1, difficulty = 50}, -- difficulty = 1-100
blkeycircle = { amount = 1, difficulty = 50, keynumbers = 3},
blnumberslide = { amount = 1, difficulty = 50, keynumbers = 3},
blrapidlines = { amount = 1, difficulty = 50, numberofline = 3},
blcircleshake = { amount = 1, difficulty = 50, stages = 3},
glpath = { gridsize = 10, lives = 3, timelimit = 999999},
glspot = {gridSize = 6, timeLimit = 999999, charSet = "alphabet", required = 10},
glmath = {timeLimit = 300000},
}
what does this do, adds 10 more minigames than before you can use. How to set it, change Config.minigametype to the key of that table like ps ox blcirprog
```
Now thats the config changes so you dont need to reconfig everything as I do my best to not change much in the config and work around what has been done
Whats been added
```
i moved tier system to SQL as its better than using metadata
run the SQL and it will autopopulate your metadata for rep so people wont lose anything
I added a new sql table for deliveries
it not checks overall time for deliveries regardless if you crash or not.
Added new server file called recipes.lua
its what you imagine, about 80-90% of the recipes for md-drugs
```
Is there bugs, probably. But im tired of beta testing it over and over so please report bugs to my discord where i can see them and patch them quickly.
3.7.0 -> 3.7.1
slight bug fixes with ox items, meth targeting
+109 -55
View File
@@ -2,57 +2,41 @@
<div align="center"> <div align="center">
<a href="https://discord.gg/sAMzrB4DDx"> <a href="https://discord.gg/sAMzrB4DDx">
<img align="center" src="https://i.imgur.com/t65G9Z0.png" width="100"> <img align="center" src="https://i.imgur.com/t65G9Z0.png" width="200">
</a><br> </a><br>
<a href="https://discord.gg/sAMzrB4DDx">Mustache Scripts Discord</a><br> <a href="https://discord.gg/sAMzrB4DDx"><strong>Mustache Scripts Discord</strong></a><br>
</div> </div>
# Credits ## **Credits**
- I used [Samuel's development](https://fivem.samueldev.shop/) Christmas script global states and prop spawning (with permission obtained prior to release) in the development process. - **[Samuel's Development](https://fivem.samueldev.shop/):** Used their Christmas script global states and prop spawning (with permission).
- **[STACHY225](https://babiczind.tebex.io/category/2103836):** Meth network animations.
- Shout out to [STACHY225](https://babiczind.tebex.io/category/2103836) for working out the meth network animations! - **[Bostra](https://discord.gg/5ncbwMNq):** Free scripts, sanity checks, and those cute mushrooms!
- **[Feisty]():** Stunning visuals that make everything look amazing.
- Huge credit to [Bostra](https://discord.gg/5ncbwMNq) for sharing free scripts and providing sanity checks during moments of confusion. Those cute mushrooms? His creation! - **Beta Testers:** Your invaluable feedback made this possible.
- **[1of1 Servers](https://1of1servers.com/):** Top-notch hosting and support. Join their [Discord](https://discord.gg/1of1servers).
- Special thanks to [Feisty]() for the stunning visuals. If it looks good, she probably had a hand in it. - **[Kamaryn](https://discord.gg/KPRmZqFS):** For the [installation guide video](https://youtu.be/zvuYnUfrqaA?si=FGJuBO5krZMC14Nd).
- Special shoutout to [Beta Testers]()Your feedback has been invaluable!
- Big Credit to [Bostra](https://discord.gg/5ncbwMNq). if you have been around you may have seen him post some free scripts and help people, There was definetly times I dm'd him saying what the fuck am I doing and he helped keep me sane. He also made the cute mushrooms!
- [Jim's Tebex](https://jimathy666.tebex.io/) for putting out open source resources that I was able to break and fix and learn how to code
- [jixeltay](https://jixeltay.tebex.io/category/scripts) for putting out banger after banger. These people help the community learn so much more
- Our partner [1of1 Servers]( https://1of1servers.com/) and their [discord](https://discord.gg/1of1servers) for their amazing server hosting! absolutely top notch.
- Special Thanks To Kamaryn For The Preview
- Thanks to Kamaryn for this [install guide video](https://youtu.be/zvuYnUfrqaA?si=FGJuBO5krZMC14Nd)
- join their [discord](https://discord.gg/KPRmZqFS) for other videos updates.
# Dependencies
- [ox_lib](https://github.com/overextended/ox_lib/releases/tag/v3.12.0)
- [qb-target](https://github.com/qbcore-framework/qb-target) **or** [ox_target](https://github.com/overextended/ox_target)
- emote script that uses the animations event
- for example one of these
- [dpemotes](https://github.com/andristum/dpemotes) -- should use RP instead
- [rpemotes](https://github.com/alberttheprince/rpemotes-reborn)
- [scully_emotemenu](https://github.com/Scullyy/scully_emotemenu)
- [read](https://letters.hookedonphonics.com/us/read-guaranteed-G14.html?vc=HPG1&pc=SHPGBR&tracking_id=102917836048989658da259e8c83e6&url_id=5586&oid=707&vid=1855&cid=4194&hid=14509&utm_source=1855&aff_id2={aff_id2}&utm_campaign=PracticePackHOS&utm_medium=S&utm_content=BrandDollarPacks&gc_id=184380999&h_ad_id=374941048206&src=O&qid=3&msvid=v2)
- GAME BUILD 2944 OR LATER
# Preview ## **Dependencies**
### [Preview link](https://www.youtube.com/watch?v=I_x7_oz_SAU) - **[ox_lib](https://github.com/overextended/ox_lib/releases/tag/v3.12.0)**
- **[qb-target](https://github.com/qbcore-framework/qb-target)** or **[ox_target](https://github.com/overextended/ox_target)**
- **Emote Scripts (supports animations):**
- [dpemotes](https://github.com/andristum/dpemotes) <-- seriously just use rpemotes. this is old and outdated
- [rpemotes](https://github.com/alberttheprince/rpemotes-reborn)
- [scully_emotemenu](https://github.com/Scullyy/scully_emotemenu)
- **[Read](https://letters.hookedonphonics.com/us/read-guaranteed-G14.html)**
- **Game Build 2944 or Later**
# How to install like a fuckin boss
## **Preview**
- **[Watch Preview](https://www.youtube.com/watch?v=I_x7_oz_SAU)**
## **How to install like a fuckin boss**
### STEP 1 ### STEP 1
@@ -63,9 +47,75 @@
- delete `qb-drugs` - delete `qb-drugs`
### STEP 3 ### STEP 3
- Inside the config file change **all** the locations for everything.
- **ps: All locations have been changed to make a preview video easier and with how big of a script this is, Im not going to config it for every city. THESE LOCATION DO NOT DO WELL FOR A LIVE SERVER SO CHANGE THEM**
- all locations, shops, pricings, and recipes are in the server files now utilizing callbacks to build targets and retrieve data
- shops.lua
- travelling merchant
- Weed Store
- Dealer Shops
- locations.lua
- holds all old config options for locations. edit what you need in here
- if you previously had them in the config copy and paste the <strong> INTERIOR </strong> guts of the options. example below
```lua
Config.MakePowder = {
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1090.15, -3199.5, -39.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1093.09, -3199.53, -39.05), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
```
is now
```lua
local Target = {
MakePowder = {
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1090.15, -3199.5, -39.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1093.09, -3199.53, -39.05), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
}
```
- see its a simple change.
- recipes.lua
- handles the vast majority of remove X get Y
- Cornerselling.lua
- now the drug table is inserted into this file.
- copy and paste your data inside of the
```lua
local Drugs = { -- for example
["weed_white-widow"] = {rep = 1,min = 15, max = 24 },
["weed_og-kush"] = {rep = 1,min = 15, max = 28 },
}
```
- all plant locations i.e. coke, heroin, weed, shrooms, mescaline are in the respective server files
- check server files to see drug specific settings now.
- heroin/lsd/ and xtc will have a setting table now at the top
### HOW TO CONVERT FROM OLD
- its simple really
- copy the data from your Config and paste it in locations.lua
- if the previous config option was a single location ( Not designed for multiples) then check target.singleSpot
- shops.lua will now hold all shops for md-drugs so edit the data needed there
- this is simple but tedious, but will handle security better in the long run
- if you want to be lazy you can delete everything from
```lua
local Targt = {
}
```
**besides singleSpot**
and copy and paste your
```lua
Config.MakePowder = {
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1090.15, -3199.5, -39.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1093.09, -3199.53, -39.05), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
and change the Config to Target like this BELOW the local Target = {
Target.MakePowder = {
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1090.15, -3199.5, -39.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1093.09, -3199.53, -39.05), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
```
### STEP 4 ### STEP 4
- Head to your emote script search for **uncuff** if it's missing add it - Head to your emote script search for **uncuff** if it's missing add it
- if rpemotes do this - if rpemotes do this
@@ -163,12 +213,12 @@
# STEP 6 # STEP 6
- Run SQL - Run SQL
# OPTIONAL STEPS
# **OPTIONAL STEPS**
## Fivemerr ## Fivemerr
This is NOT a requirement but something I personally use and believe in. This is **NOT** a requirement but something I personally use and believe in.
- to integrate with fivemerr make sure you have ```set fivemerrLogs "API_KEY"``` in your server.cfg - to integrate with fivemerr make sure you have ```set fivemerrLogs "API_KEY"``` in your server.cfg
@@ -177,13 +227,17 @@ This is NOT a requirement but something I personally use and believe in.
- profit - profit
Why integrate with Fivemerr? Its a great place to store logs as it doesnt rely on discord webhooks and its far easier to search through <b>Why Integrate with Fivemerr?</b>
As well as a place to offload images and videos from fivem that doesnt rely on discord since discord API will be automatically deleting images and videos after a certain amount of time If you need an invite to their server look below - Efficient Logging: Unlike Discord webhooks, Fivemerr provides an organized and searchable log system.
- [Fivemerr Discord](https://discord.com/invite/fivemerr) - Media Storage: Easily store and access images or videos without relying on Discord. Discord's API often deletes media after a certain time, but Fivemerr keeps them secure and accessible.
- [Fivemerr Docs](https://docs.fivemerr.com/) - As well as a place to offload images and videos from fivem that doesnt rely on discord since discord API will be automatically deleting images and videos after a certain amount of time If you need an invite to their server look below
# Radial Menu [Fivemerr Discord](https://discord.com/invite/fivemerr)
[Fivemerr Docs](https://docs.fivemerr.com/)
## Radial Menu
- head to `qb-radial/config.lua` and search for the following event - head to `qb-radial/config.lua` and search for the following event
```lua ```lua
event = 'qb-drugs:client:cornerselling', event = 'qb-drugs:client:cornerselling',
@@ -194,7 +248,7 @@ As well as a place to offload images and videos from fivem that doesnt rely on d
``` ```
# For Qb-shops users ## For Qb-shops users
- Head to `qb-shops/config.lua` **Config.Products** and add the folowing items to OR anywhere else you want them. The Only way in this script to get them is to find the travelling merchant - Head to `qb-shops/config.lua` **Config.Products** and add the folowing items to OR anywhere else you want them. The Only way in this script to get them is to find the travelling merchant
@@ -204,7 +258,7 @@ As well as a place to offload images and videos from fivem that doesnt rely on d
{name = 'needle', price = 100, amount = 5000, info = {}, type = 'item'}, {name = 'needle', price = 100, amount = 5000, info = {}, type = 'item'},
``` ```
# Tier System ## Tier System
- Turn On Config.TierSystem after you run the sql file - Turn On Config.TierSystem after you run the sql file
[mlo i use](https://www.gta5-mods.com/maps/mlo-4x-drug-lab-interiors-sp-fivem) heres an option. use it or dont. [mlo i use](https://www.gta5-mods.com/maps/mlo-4x-drug-lab-interiors-sp-fivem) heres an option. use it or dont.
+58 -36
View File
@@ -1,9 +1,25 @@
local QBCore = exports['qb-core']:GetCoreObject()
GlobalState.CocaPlant = Config.CocaPlant local cokeplants = {
{ location = vector3(1474.25, -2643.87, 42.88), heading = 334.49, model = "prop_plant_01a" },
{ location = vector3(1472.35, -2649.3, 41.87), heading = 329.56, model = "prop_plant_01a" },
{ location = vector3(1475.7, -2652.9, 40.8), heading = 25.16, model = "prop_plant_01a" },
{ location = vector3(1481.0, -2654.99, 39.86), heading = 21.52, model = "prop_plant_01a" },
{ location = vector3(1480.9, -2660.63, 38.68), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1477.18, -2666.53, 38.19), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1477.58, -2670.82, 37.73), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1476.56, -2675.82, 37.46), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1474.8, -2680.19, 37.03), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1471.52, -2685.0, 36.82), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1462.82, -2676.58, 38.83), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1461.31, -2667.74, 39.67), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1456.3, -2647.61, 43.39), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1453.65, -2641.56, 45.0), heading = 202.97, model = "prop_plant_01a" },
}
GlobalState.CocaPlant = cokeplants
Citizen.CreateThread(function() Citizen.CreateThread(function()
for _, v in pairs(Config.CocaPlant) do for _, v in pairs(cokeplants) do
v.taken = false v.taken = false
end end
end) end)
@@ -11,52 +27,52 @@ end)
function CaneCooldown(loc) function CaneCooldown(loc)
CreateThread(function() CreateThread(function()
Wait(Config.respawnTime * 1000) Wait(Config.respawnTime * 1000)
Config.CocaPlant[loc].taken = false cokeplants[loc].taken = false
GlobalState.CocaPlant = Config.CocaPlant GlobalState.CocaPlant = cokeplants
Wait(1000) Wait(1000)
TriggerClientEvent('coke:respawnCane', -1, loc) TriggerClientEvent('coke:respawnCane', -1, loc)
Log('Coca Plant Respawned At ' .. Config.CocaPlant[loc].location, 'coke') Log('Coca Plant Respawned At ' .. cokeplants[loc].location, 'coke')
end) end)
end end
RegisterNetEvent("coke:pickupCane") RegisterNetEvent("coke:pickupCane")
AddEventHandler("coke:pickupCane", function(loc) AddEventHandler("coke:pickupCane", function(loc)
local src = source local src = source
if CheckDist(src, Config.CocaPlant[loc].location) then return end if CheckDist(src, cokeplants[loc].location) then return end
if not Config.CocaPlant[loc].taken then if not cokeplants[loc].taken then
Config.CocaPlant[loc].taken = true cokeplants[loc].taken = true
GlobalState.CocaPlant = Config.CocaPlant GlobalState.CocaPlant = cokeplants
TriggerClientEvent("coke:removeCane", -1, loc) TriggerClientEvent("coke:removeCane", -1, loc)
CaneCooldown(loc) CaneCooldown(loc)
AddItem(src, 'coca_leaf', 1) AddItem(src, 'coca_leaf', 1)
Log(GetName(src) .. ' Picked A Coca Leaf With a distance of ' .. dist(src, Config.CocaPlant[loc].location) .. ' vectors', 'coke')
end end
end) end)
RegisterServerEvent('md-drugs:server:makepowder', function(num) RegisterServerEvent('md-drugs:server:makepowder', function(num)
local src = source local src = source
if CheckDist(src, Config.MakePowder[num]['loc']) then return end if not checkLoc(src, 'MakePowder', num) then return end
local tier = 'tier1' local tier = 'tier1'
local logMessage = ' Made Raw Coke'
if Config.TierSystem then if Config.TierSystem then
local coke = getRep(src, 'coke') local coke = getRep(src, 'coke')
if coke > Config.Tier1 and coke <= Config.Tier2 then if coke > Config.Tier1 and coke <= Config.Tier2 then
tier = 'tier2' tier = 'tier2'
logMessage = ' Made Raw Coke tier 2'
elseif coke > Config.Tier2 then elseif coke > Config.Tier2 then
tier = 'tier3' tier = 'tier3'
logMessage = ' Made Raw Coke tier 3'
end end
end end
if not GetRecipe(src, 'cocaine', 'cokepowder', tier) then return end if not GetRecipe(src, 'cocaine', 'cokepowder', tier) then return end
Log(GetName(src) .. logMessage .. dist(src, Config.MakePowder[num]['loc']) .. ' vectors', 'coke')
end) end)
RegisterServerEvent('md-drugs:server:cutcokeone', function() RegisterServerEvent('md-drugs:server:cutcokeone', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local count = 0 local count = 0
if Config.TierSystem then if Config.FancyCokeAnims then
if not checkLoc(src, 'singleSpot', 'cutcoke') then return end
else
if not checkLoc(src, 'CuttingCoke', num) then return end
end
if Config.TierSystem then
local tier = '' local tier = ''
local cokeTiers = { local cokeTiers = {
{item = 'coke', tier = 'tier1', log = ' Cut Coke'}, {item = 'coke', tier = 'tier1', log = ' Cut Coke'},
@@ -65,24 +81,27 @@ RegisterServerEvent('md-drugs:server:cutcokeone', function()
} }
for _, v in ipairs(cokeTiers) do for _, v in ipairs(cokeTiers) do
if count >= 1 then break end if count >= 1 then break end
if Player.Functions.GetItemByName(v.item) then if Player.Functions.GetItemByName(v.item) then
tier = v.tier tier = v.tier
count = count + 1 count = count + 1
end end
end end
Notifys(src, Lang.Coke.nocutcoke, "error")
if not GetRecipe(src, 'cocaine', 'cutcoke', tier) then return end if not GetRecipe(src, 'cocaine', 'cutcoke', tier) then return end
else else
if not GetRecipe(src, 'cocaine', 'cutcoke', 'tier1') then return end if not GetRecipe(src, 'cocaine', 'cutcoke', 'tier1') then return end
Log(GetName(src) .. ' Cut Coke', 'coke')
end end
end) end)
RegisterServerEvent('md-drugs:server:bagcoke', function() RegisterServerEvent('md-drugs:server:bagcoke', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local count = 0 local count = 0
local tier = '' local tier = ''
if Config.FancyCokeAnims then
if not checkLoc(src, 'singleSpot', 'bagcokepowder') then return end
else
if not checkLoc(src, 'BaggingCoke', num) then return end
end
if Config.TierSystem then if Config.TierSystem then
local coke = getRep(src, 'coke') local coke = getRep(src, 'coke')
local cokeTiers = { local cokeTiers = {
@@ -92,28 +111,31 @@ RegisterServerEvent('md-drugs:server:bagcoke', function()
} }
for _, v in ipairs(cokeTiers) do for _, v in ipairs(cokeTiers) do
if Player.Functions.GetItemByName(v.item) then if Player.Functions.GetItemByName(v.item) then
if count >= 1 then break end if count >= 1 then break end
count = count + 1 count = count + 1
tier = v.tier tier = v.tier
end end
end end
if not GetRecipe(src, 'cocaine', 'bagcoke', tier) then return end if not GetRecipe(src, 'cocaine', 'bagcoke', tier) then return end
AddRep(src, 'coke') AddRep(src, 'coke')
Notifys(src, Lang.Coke.nobagcoke, "error")
else else
if not GetRecipe(src, 'cocaine', 'bagcoke', 'tier1') then return end if not GetRecipe(src, 'cocaine', 'bagcoke', 'tier1') then return end
Log(GetName(src) .. ' Bagged Coke', 'coke')
end end
end) end)
local cokecut = {loosecokestagetwo = 2, loosecokestagethree = 3} local cokecut = {loosecokestagetwo = 2, loosecokestagethree = 3}
for k, v in pairs (cokecut) do for k, v in pairs (cokecut) do
QBCore.Functions.CreateUseableItem(k, function(source, item) CUI(k, function(source, item)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if Player.Functions.GetItemByName(item.name) then if not Player.Functions.GetItemByName('bakingsoda') then Notifys(src, 'You Need Baking Soda For this', 'error') return end
if not Itemcheck(src, 'bakingsoda', 1) then return end if Player.Functions.GetItemByName(item.name) then
TriggerClientEvent('md-drugs:client:minusTier', src, {type = 'coke', xt = 'bakingsoda', item = k, amount = v,recieve = 'loosecoke'}) if not Itemcheck(src, 'bakingsoda', 1) then return end
end local check = lib.callback.await('md-drugs:client:uncuff', src, 'Cutting It Further')
if not check then return end
if RemoveItem(src, k, 1) and RemoveItem(src, 'bakingsoda', 1) then
AddItem(src, 'loosecoke', v)
end
end
end) end)
end end
+155 -14
View File
@@ -1,32 +1,173 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
--[[
effect options
alien
ecstacy
meth
coke
trevor
none
]]
for k, v in pairs(Consumables.Items) do --[[
QBCore.Functions.CreateUseableItem(k, function(source, item) add = {}
health = number -- amount of health to give
stress = number -- number of stress to give
speed = number -- number of seconds you a fast boi
hunger = number -- number of hunger to fill
thirst = number -- same shit
strength = number -- how long you are strong boi
]]
local Consume = {
-- meth
methbags = { time = 4000, effect = 'meth', anim = "smoke", progressbartext = "Injesting",
add = {health = -20, stress = -10, speed = 40, strength = 10, thirst = -30}},
cokebaggy = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
cokebaggystagetwo = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
cokebaggystagethree = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
-- heroin
heroin_ready = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
heroin_readystagetwo = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
heroin_readystagethree = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
-- crack
baggedcracked = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
baggedcrackedstagetwo = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
baggedcrackedstagethree = { anim = 'smell', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
-- xtc
white_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10, hunger = 10 }},
red_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_playboy2s = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
-- weed
specialbrownie = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
specialcookie = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
specialchocolate = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
specialmuffin = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
blunt = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
dextroblunts = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
leanblunts = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
chewyblunt = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
-- lean
cupofdextro = { anim = 'cup', effect = 'alien', add = { stress = -10 }},
cupoflean = { anim = 'cup', effect = 'alien', add = { stress = -10 }},
-- lsd
smiley_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
wildcherry_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
yinyang_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
pineapple_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
bart_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
gratefuldead_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
-- pharma
vicodin = { anim = 'pill', effect = 'none', add = { health = 20 }},
adderal = { anim = 'pill', effect = 'none', add = { stress = -20 }},
morphine = { anim = 'pill', effect = 'none', add = { health = 40 }},
xanax = { anim = 'pill', effect = 'none', add = { stress = -40 }},
}
for k, v in pairs(Consume) do
CUI(k, function(source, item)
if not Itemcheck(source, k, 1) then return end if not Itemcheck(source, k, 1) then return end
local time = v.time or Consumables.defaulttime local time = v.time or Consumables.defaulttime
local effect = v.effect or 0 local effect = v.effect or 0
local anim = v.anim or Consumables.defaultanim local anim = v.anim or Consumables.defaultanim
local progressbartext = v.progressbartext or Consumables.defaultprogresstext local progressbartext = v.progressbartext or Consumables.defaultprogresstext
local add = v.add or {hunger = 0} local add = v.add or {hunger = 0}
TriggerClientEvent("md-drugs:client:consumedrugs", source, time, effect, anim, progressbartext, add, k) local done = lib.callback.await('md-drugs:client:consumedrugs', source, time, effect, anim, progressbartext, add, k)
if done then
RemoveItem(source, k, 1)
end
end) end)
end end
RegisterNetEvent('md-drugs:server:removeconsum', function(item)
RemoveItem(source,item, 1)
Log(GetName(source) .. ' Got High With ' .. item .. '!', 'consuming')
end)
RegisterNetEvent('md-drugs:server:updatestatus', function(stat, statval) RegisterNetEvent('md-drugs:server:updatestatus', function(stat, statval)
local Player = getPlayer(source) local Player = getPlayer(source)
local hunger, thirst = Player.PlayerData.metadata.hunger, Player.PlayerData.metadata.thirst
if stat == "thirst" then if stat == "thirst" then
local value = Player.PlayerData.metadata.thirst + statval local value = thirst + statval
Player.Functions.SetMetaData('hunger', value)
TriggerClientEvent('hud:client:UpdateNeeds', source, Player.PlayerData.metadata.hunger, value)
elseif stat == "hunger" then
local value = Player.PlayerData.metadata.hunger + statval
Player.Functions.SetMetaData('thirst', value) Player.Functions.SetMetaData('thirst', value)
TriggerClientEvent('hud:client:UpdateNeeds', source, Player.PlayerData.metadata.thirst, value) TriggerClientEvent('hud:client:UpdateNeeds', source, hunger, value)
elseif stat == "hunger" then
local value = hunger + statval
Player.Functions.SetMetaData('hunger', value)
TriggerClientEvent('hud:client:UpdateNeeds', source, value, thirst)
elseif stat == "stress" then elseif stat == "stress" then
local value = Player.PlayerData.metadata.stress + statval local value = Player.PlayerData.metadata.stress + statval
Player.Functions.SetMetaData('stress', value) Player.Functions.SetMetaData('stress', value)
+179 -20
View File
@@ -1,47 +1,195 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
local DrugDeals = {}
local Drugs = {
["weed_white-widow"] = {rep = 1,min = 15, max = 24 },
["weed_og-kush"] = {rep = 1,min = 15, max = 28 },
["weed_skunk"] = {rep = 1,min = 15, max = 31 },
["weed_amnesia"] = {rep = 1,min = 18, max = 34 },
["weed_purple-haze"] = {rep = 1,min = 18, max = 37},
["weed_ak47"] = {rep = 1,min = 18, max = 40},
["crack_baggy"] = {rep = 1,min = 18, max = 34},
["cokebaggy"] = {rep = 1,min = 18, max = 37},
["cokebaggystagetwo"] = {rep = 1,min = 18, max = 40},
["cokebaggystagethree"] = {rep = 1,min = 18, max = 40},
["heroin_ready"] = {rep = 1,min = 18, max = 40},
["heroin_readystagetwo"] = {rep = 1,min = 18, max = 40},
["heroin_readystagethree"] = {rep = 1,min = 18, max = 40},
["baggedcracked"] = {rep = 1,min = 18, max = 40},
["baggedcrackedstagetwo"] = {rep = 1,min = 18, max = 40},
["baggedcrackedstagethree"] = {rep = 1,min = 18, max = 40},
["white_playboys"] = {rep = 1,min = 18, max = 40},
["white_playboys2"] = {rep = 1,min = 18, max = 40},
["white_playboys3"] = {rep = 1,min = 18, max = 40},
["white_playboys4"] = {rep = 1,min = 18, max = 40},
["blue_playboys"] = {rep = 1,min = 18, max = 40},
["blue_playboys2"] = {rep = 1,min = 18, max = 40},
["blue_playboys3"] = {rep = 1,min = 18, max = 40},
["blue_playboys4"] = {rep = 1,min = 18, max = 40},
["red_playboys"] = {rep = 1,min = 18, max = 40},
["red_playboys2"] = {rep = 1,min = 18, max = 40},
["red_playboys3"] = {rep = 1,min = 18, max = 40},
["red_playboys4"] = {rep = 1,min = 18, max = 40},
["orange_playboys"] = {rep = 1,min = 18, max = 40},
["orange_playboys2"] = {rep = 1,min = 18, max = 40},
["orange_playboys3"] = {rep = 1,min = 18, max = 40},
["orange_playboys4"] = {rep = 1,min = 18, max = 40},
["white_aliens"] = {rep = 1,min = 18, max = 40},
["white_aliens2"] = {rep = 1,min = 18, max = 40},
["white_aliens3"] = {rep = 1,min = 18, max = 40},
["white_aliens4"] = {rep = 1,min = 18, max = 40},
["blue_aliens"] = {rep = 1,min = 18, max = 40},
["blue_aliens2"] = {rep = 1,min = 18, max = 40},
["blue_aliens3"] = {rep = 1,min = 18, max = 40},
["blue_aliens4"] = {rep = 1,min = 18, max = 40},
["red_aliens"] = {rep = 1,min = 18, max = 40},
["red_aliens2"] = {rep = 1,min = 18, max = 40},
["red_aliens3"] = {rep = 1,min = 18, max = 40},
["red_aliens4"] = {rep = 1,min = 18, max = 40},
["orange_aliens"] = {rep = 1,min = 18, max = 40},
["orange_aliens2"] = {rep = 1,min = 18, max = 40},
["orange_aliens3"] = {rep = 1,min = 18, max = 40},
["orange_aliens4"] = {rep = 1,min = 18, max = 40},
["white_pl"] = {rep = 1,min = 18, max = 40},
["white_pl2"] = {rep = 1,min = 18, max = 40},
["white_pl3"] = {rep = 1,min = 18, max = 40},
["white_pl4"] = {rep = 1,min = 18, max = 40},
["blue_pl"] = {rep = 1,min = 18, max = 40},
["blue_pl2"] = {rep = 1,min = 18, max = 40},
["blue_pl3"] = {rep = 1,min = 18, max = 40},
["blue_pl4"] = {rep = 1,min = 18, max = 40},
["red_pl"] = {rep = 1,min = 18, max = 40},
["red_pl2"] = {rep = 1,min = 18, max = 40},
["red_pl3"] = {rep = 1,min = 18, max = 40},
["red_pl4"] = {rep = 1,min = 18, max = 40},
["orange_pl"] = {rep = 1,min = 18, max = 40},
["orange_pl2"] = {rep = 1,min = 18, max = 40},
["orange_pl3"] = {rep = 1,min = 18, max = 40},
["orange_pl4"] = {rep = 1,min = 18, max = 40},
["white_trolls"] = {rep = 1,min = 18, max = 40},
["white_trolls2"] = {rep = 1,min = 18, max = 40},
["white_trolls3"] = {rep = 1,min = 18, max = 40},
["white_trolls4"] = {rep = 1,min = 18, max = 40},
["blue_trolls"] = {rep = 1,min = 18, max = 40},
["blue_trolls2"] = {rep = 1,min = 18, max = 40},
["blue_trolls3"] = {rep = 1,min = 18, max = 40},
["blue_trolls4"] = {rep = 1,min = 18, max = 40},
["red_trolls"] = {rep = 1,min = 18, max = 40},
["red_trolls2"] = {rep = 1,min = 18, max = 40},
["red_trolls3"] = {rep = 1,min = 18, max = 40},
["red_trolls4"] = {rep = 1,min = 18, max = 40},
["orange_trolls"] = {rep = 1,min = 18, max = 40},
["orange_trolls2"] = {rep = 1,min = 18, max = 40},
["orange_trolls3"] = {rep = 1,min = 18, max = 40},
["orange_trolls4"] = {rep = 1,min = 18, max = 40},
["white_cats"] = {rep = 1,min = 18, max = 40},
["white_cats2"] = {rep = 1,min = 18, max = 40},
["white_cats3"] = {rep = 1,min = 18, max = 40},
["white_cats4"] = {rep = 1,min = 18, max = 40},
["blue_cats"] = {rep = 1,min = 18, max = 40},
["blue_cats2"] = {rep = 1,min = 18, max = 40},
["blue_cats3"] = {rep = 1,min = 18, max = 40},
["blue_cats4"] = {rep = 1,min = 18, max = 40},
["red_cats"] = {rep = 1,min = 18, max = 40},
["red_cats2"] = {rep = 1,min = 18, max = 40},
["red_cats3"] = {rep = 1,min = 18, max = 40},
["red_cats4"] = {rep = 1,min = 18, max = 40},
["orange_cats"] = {rep = 1,min = 18, max = 40},
["orange_cats2"] = {rep = 1,min = 18, max = 40},
["orange_cats3"] = {rep = 1,min = 18, max = 40},
["orange_cats4"] = {rep = 1,min = 18, max = 40},
["blunts"] = {rep = 1,min = 18, max = 40},
["leanblunts"] = {rep = 1,min = 18, max = 40},
["dextroblunts"] = {rep = 1,min = 18, max = 40},
["chewyblunt"] = {rep = 1,min = 18, max = 40},
["blunt"] = {rep = 1,min = 18, max = 40},
["specialchocolate"] = {rep = 1,min = 18, max = 40},
["specialbrownie"] = {rep = 1,min = 18, max = 40},
["specialcookie"] = {rep = 1,min = 18, max = 40},
["specialmuffin"] = {rep = 1,min = 18, max = 40},
["shatter"] = {rep = 1,min = 18, max = 40},
["ciggie"] = {rep = 1,min = 18, max = 40},
["methbags"] = {rep = 1,min = 18, max = 40},
["driedmescaline"] = {rep = 1,min = 18, max = 40},
["shrooms"] = {rep = 1,min = 18, max = 40},
["gratefuldead_tabs"] = {rep = 1,min = 18, max = 40},
["bart_tabs"] = {rep = 1,min = 18, max = 40},
["pineapple_tabs"] = {rep = 1,min = 18, max = 40},
["yinyang_tabs"] = {rep = 1,min = 18, max = 40},
["wildcherry_tabs"] = {rep = 1,min = 18, max = 40},
["smiley_tabs"] = {rep = 1,min = 18, max = 40},
["cupoflean"] = {rep = 1,min = 18, max = 40},
["cupofdextro"] = {rep = 1,min = 18, max = 40},
}
lib.callback.register('md-drugs:server:cornerselling:getAvailableDrugs', function(source, cb) lib.callback.register('md-drugs:server:cornerselling:getAvailableDrugs', function(source, ped)
local Player = getPlayer(source) local Player = getPlayer(source)
local rep = getRep(source, 'cornerselling') local rep = getRep(source, 'cornerselling')
if not Player then return nil end if not Player then return nil end
local type = 0 local type = 0
for k, v in pairs(QBConfig.DrugsPrice) do for k, v in pairs(Drugs) do
local item = Player.Functions.GetItemByName(k) local item = Player.Functions.GetItemByName(k)
if item and type == 0 then if item and type == 0 then
type = type + 1 type = type + 1
Log(GetName(source) .. ' Allowed To Sell ' .. item.name .. '!' , 'cornerselling') Log(GetName(source) .. ' Allowed To Sell ' .. item.name .. '!' , 'cornerselling')
local amount = math.random(1,item.amount) local amount = math.random(1,item.amount)
if amount >= 15 then amount = 15 end if amount >= 15 then amount = 15 end
local price = math.random(QBConfig.DrugsPrice[k]['min'], QBConfig.DrugsPrice[k]['max']) * amount local price = math.random(Drugs[k]['min'], Drugs[k]['max']) * amount
local result = math.floor(price * rep.price) local result = math.floor(price * rep.price)
return item.name, amount, result table.insert(DrugDeals, {item = item.name, amount = amount, price = result, cid = Player.PlayerData.citizenid, ped = ped})
return {item = item.name, amount = amount, price = result, ped = ped}
end end
end end
if type == 0 then if type == 0 then
return 'nothing', 0, 0 return {item = 'nothing', amount = 0, price = 0, ped = ped}
end end
end) end)
lib.callback.register('md-drugs:server:hasDrugs', function(source)
local Player = getPlayer(source)
for k, v in pairs(Drugs) do
local item = Player.Functions.GetItemByName(k)
if item then
return true
end
end
return false
end)
RegisterNetEvent('md-drugs:server:sellCornerDrugs', function(item, amount, price) RegisterNetEvent('md-drugs:server:sellCornerDrugs', function(item, amount, price)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if RemoveItem(src, item, amount) then local isIn = false
AddRep(src, 'cornerselling', QBConfig.DrugsPrice[item].rep * amount) for k, v in pairs (Drugs) do
Log(GetName(src) .. ' Sold ' .. amount .. ' Of ' .. item .. ' For A Price Of ' .. price .. '!' , 'cornerselling') if item == k then
if QBConfig.MarkedBills then isIn = true
if price >= QBConfig.DrugsPrice[item]['min'] * amount and price <= QBConfig.DrugsPrice[item]['max'] * amount then
local info = {
worth = price
}
Player.Functions.AddItem('markedbills', 1, false, info )
end
elseif QBConfig.CustomDirtyMoney then
AddItem(src, QBConfig.CustomDirtyMoneyitem, price)
else
Player.Functions.AddMoney('cash', price)
end end
end end
if not isIn then return end
for k, v in pairs (DrugDeals) do
if v.cid == Player.PlayerData.citizenid then
if v.item == item then
if v.amount == amount then
if v.price == price then
if RemoveItem(src, item, amount) then
if QBConfig.MarkedBills then
local info = {
worth = price
}
Player.Functions.AddItem('markedbills', 1, false, info )
elseif QBConfig.CustomDirtyMoney == true then
AddItem(src, QBConfig.CustomDirtyMoneyitem, price)
else
Player.Functions.AddMoney('cash', price)
end
AddRep(src, 'cornerselling', Drugs[item].rep * amount)
Log(GetName(src) .. ' Sold ' .. amount .. ' Of ' .. item .. ' For A Price Of ' .. price .. '!' , 'cornerselling')
table.remove(DrugDeals, k)
end
end
end
end
end
end
end) end)
lib.addCommand('cornersell', { lib.addCommand('cornersell', {
@@ -54,3 +202,14 @@ lib.addCommand('cornersell', {
Log(GetName(source) .. ' Used Command cornersell!' , 'cornerselling') Log(GetName(source) .. ' Used Command cornersell!' , 'cornerselling')
TriggerClientEvent('md-drugs:client:cornerselling', src) TriggerClientEvent('md-drugs:client:cornerselling', src)
end) end)
RegisterServerEvent('md-drugs:server:cornerselling:stop', function()
local src = source
local Player = getPlayer(src)
for k, v in pairs (DrugDeals) do
if v.cid == Player.PlayerData.citizenid then
TriggerClientEvent('md-drugs:client:cornerselling:remove', src, DrugDeals[k].ped)
table.remove(DrugDeals, k)
end
end
end)
+8 -7
View File
@@ -4,7 +4,7 @@ RegisterServerEvent('md-drugs:server:makecrackone', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local count,type, tier = 0, 'cookcrack', 'tier1' local count,type, tier = 0, 'cookcrack', 'tier1'
if CheckDist(src, Config.makecrack[num]['loc']) then return end if not checkLoc(src, 'makecrack', num) then return end
if Config.TierSystem then if Config.TierSystem then
local crackTiers = { local crackTiers = {
{item = 'loosecoke', tier = 'tier1', log = ' Cut Crack'}, {item = 'loosecoke', tier = 'tier1', log = ' Cut Crack'},
@@ -13,15 +13,12 @@ RegisterServerEvent('md-drugs:server:makecrackone', function(num)
} }
for _, v in ipairs(crackTiers) do for _, v in ipairs(crackTiers) do
if count >= 1 then break end if count >= 1 then break end
print(v.item)
if Player.Functions.GetItemByName(v.item) then if Player.Functions.GetItemByName(v.item) then
tier = v.tier tier = v.tier
count = count + 1 count = count + 1
Log(GetName(src) .. v.log, 'crack')
end end
end end
end end
print(tier)
if not GetRecipe(src, 'crack', type, tier) then return end if not GetRecipe(src, 'crack', type, tier) then return end
end) end)
@@ -30,6 +27,7 @@ RegisterServerEvent('md-drugs:server:bagcrack', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local count,type, tier = 0, 'bagcrack', 'tier1' local count,type, tier = 0, 'bagcrack', 'tier1'
if not checkLoc(src, 'bagcrack', num) then return end
if Config.TierSystem then if Config.TierSystem then
local crackTiers = { local crackTiers = {
{item = 'crackrock', tier = 'tier1', log = ' Bagged Crack'}, {item = 'crackrock', tier = 'tier1', log = ' Bagged Crack'},
@@ -41,7 +39,6 @@ RegisterServerEvent('md-drugs:server:bagcrack', function(num)
if Player.Functions.GetItemByName(v.item) then if Player.Functions.GetItemByName(v.item) then
tier = v.tier tier = v.tier
count = count + 1 count = count + 1
Log(GetName(src) .. v.log, 'crack')
end end
end end
end end
@@ -50,12 +47,16 @@ end)
local cokecut = {crackrockstagetwo = 2, crackrockstagethree = 3} local cokecut = {crackrockstagetwo = 2, crackrockstagethree = 3}
for k, v in pairs (cokecut) do for k, v in pairs (cokecut) do
QBCore.Functions.CreateUseableItem(k, function(source, item) CUI(k, function(source, item)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if Player.Functions.GetItemByName(item.name) then if Player.Functions.GetItemByName(item.name) then
if not Itemcheck(src, 'bakingsoda', 1) then return end if not Itemcheck(src, 'bakingsoda', 1) then return end
TriggerClientEvent('md-drugs:client:minusTier', src, {type = 'crack', xt = 'bakingsoda', item = k, amount = v,recieve = 'crackrock'}) local check = lib.callback.await('md-drugs:client:uncuff', src, 'Cutting Crack Rock Further')
if not check then return end
if RemoveItem(src, k, 1) and RemoveItem(src, 'bakingsoda', 1) then
AddItem(src, 'crackrock', v)
end
end end
end) end)
end end
+139 -56
View File
@@ -1,7 +1,85 @@
QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
local dloc = {
-- Callbacks {coords = vector4(282.48, -1814.32, 27.23, 145.11)},
{coords = vector4(-296.11, -1300.65, 31.31, 270.87)},
{coords = vector4(-36.64, -1492.04, 31.22, 151.91)},
{coords = vector4(282.48, -1814.32, 27.23, 232.19)},
{coords = vector4(54.54, -1873.22, 22.81, 131.47)},
{coords = vector4(-269.34, -2437.25, 6.40, 252.67)},
{coords = vector4(269.19, -3248.55, 5.79, 252.67)},
{coords = vector4(632.94, -3015.44, 7.34, 3.44)},
{coords = vector4(1049.55, -2427.88, 30.30, 79.52)},
{coords = vector4(853.16, -2207.32, 30.68, 284.88)},
{coords = vector4(903.10, -1721.98, 32.25, 168.71)},
{coords = vector4(1289.30, -1710.49, 55.48, 208.57)},
{coords = vector4(1412.01, -1490.53, 60.66, 132.46)},
{coords = vector4(734.26, -1311.26, 27.01, 102.99)},
{coords = vector4(1231.60, -1083.06, 38.53, 102.99)},
{coords = vector4(1143.55, -1000.19, 45.32, 257.05)},
{coords = vector4(1264.82, -702.87, 64.72, 257.05)},
{coords = vector4(1119.65, -639.76, 56.81, 284.53)},
{coords = vector4(1129.59, -462.59, 66.49, 79.23)},
{coords = vector4(42.80, -811.45, 31.43, 79.23)},
{coords = vector4(-509.48, -1001.66, 23.55, 79.23)},
{coords = vector4(-830.97, -862.41, 20.69, 13.72)},
{coords = vector4(-1320.26, -1177.34, 4.89, 74.29)},
{coords = vector4(-1097.63, -1673.24, 8.40, 136.51)},
{coords = vector4(-1147.61, -1452.10, 4.60, 51.50)},
{coords = vector4(-1241.69, -1208.39, 8.52, 107.56)},
{coords = vector4(-1876.92, -584.44, 11.85, 329.54)},
{coords = vector4(-1303.94, -441.39, 35.22, 128.73)},
{coords = vector4(-1705.48, -433.46, 42.17, 128.73)},
{coords = vector4(-1305.99, 336.35, 65.50, 35.13)},
{coords = vector4(-741.80, 484.84, 109.47, 110.85)},
{coords = vector4(-409.57, 341.49, 108.91, 270.45)},
{coords = vector4(-126.44, 588.18, 204.71, 8.12)},
{coords = vector4(211.42, -101.42, 73.28, 174.10)},
{coords = vector4(490.61, -95.04, 66.44, 273.57)},
{coords = vector4(387.19, -993.59, 29.42, 273.57)},
{coords = vector4(-500.47, -712.37, 33.21, 273.57)},
{coords = vector4(2572.20, 479.97, 108.68, 80.27)},
{coords = vector4(-430.10, 1205.41, 325.76, 169.25)},
{coords = vector4(-126.06, 1896.58, 197.33, 169.25)},
{coords = vector4(-2521.08, 2310.31, 33.22, 276.87)},
{coords = vector4(1129.01, 2125.14, 55.55, 276.87)},
{coords = vector4(1546.64, 2166.56, 78.72, 100.37)},
{coords = vector4(404.34, 2584.54, 43.52, 100.37)},
{coords = vector4(180.15, 2792.99, 45.66, 283.04)},
{coords = vector4(287.67, 2843.89, 44.70, 118.41)},
{coords = vector4(2030.23, 3184.42, 45.13, 146.06)},
{coords = vector4(2175.33, 3321.92, 46.13, 214.53)},
{coords = vector4(2389.61, 3340.98, 47.34, 214.52)},
{coords = vector4(1716.25, 3295.08, 41.26, 196.21)},
{coords = vector4(1779.38, 3640.83, 34.50, 24.16)},
{coords = vector4(1894.59, 3715.34, 32.75, 127.89)},
{coords = vector4(1861.90, 3857.15, 36.27, 293.45)},
{coords = vector4(996.38, 3575.07, 34.61, 328.30)},
{coords = vector4(387.45, 3584.73, 33.29, 351.41)},
{coords = vector4(68.08, 3693.22, 40.66, 63.98)},
{coords = vector4(15.55, 3688.70, 39.81, 230.89)},
{coords = vector4(2566.59, 4283.34, 41.97, 348.53)},
{coords = vector4(2570.82, 4667.95, 34.08, 135.30)},
{coords = vector4(2882.05, 4511.72, 48.02, 66.58)},
{coords = vector4(2243.78, 5154.02, 57.89, 139.42)},
{coords = vector4(1642.91, 4846.08, 45.51, 109.83)},
{coords = vector4(1308.87, 4362.17, 41.55, 256.01)},
{coords = vector4(-1090.27, 4940.57, 214.13, 256.01)},
{coords = vector4(-552.37, 5348.37, 74.76, 62.18)},
{coords = vector4(-679.02, 5834.27, 17.33, 137.18)},
{coords = vector4(-481.97, 6276.93, 13.35, 323.16)},
{coords = vector4(-24.92, 6472.60, 31.49, 144.42)},
{coords = vector4(36.03, 6549.18, 31.43, 287.85)},
{coords = vector4(406.08, 6526.43, 27.75, 97.45)},
{coords = vector4(1522.39, 6329.23, 24.61, 331.71)},
{coords = vector4(1741.39, 6419.62, 35.04, 331.71)},
{coords = vector4(3426.72, 5174.42, 7.40, 112.64)},
{coords = vector4(2525.99, 2586.62, 38.94, 257.02)},
{coords = vector4(2696.29, 1664.44, 24.52, 70.12)},
{coords = vector4(106.24, -1280.32, 29.24, 350.89)},
{coords = vector4(223.98, 121.53, 102.76, 259.68)},
{coords = vector4(102.19, -255.02, 50.05, 83.59)},
}
lib.callback.register('md-drugs:server:getDealers', function(data) lib.callback.register('md-drugs:server:getDealers', function(data)
local check = MySQL.query.await('SELECT * FROM dealers', {}) local check = MySQL.query.await('SELECT * FROM dealers', {})
local loc = json.encode({x = 899.98, y = -2603.24, z = 6.11, h = 176.12 }) local loc = json.encode({x = 899.98, y = -2603.24, z = 6.11, h = 176.12 })
@@ -14,31 +92,38 @@ lib.callback.register('md-drugs:server:getDealers', function(data)
return check return check
end end
end) end)
local DeliveryItems = {
{ item = "weed_brick", minrep = 0, payout = {min = 10, max = 50}},
{ item = "coke_brick", minrep = 0, payout = {min = 10, max = 50}},
}
lib.callback.register('md-drugs:server:GetDeliveryItem', function(data) lib.callback.register('md-drugs:server:GetDeliveryItem', function(data)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local item = math.random(1, #QBConfig.DeliveryItems) local itemnum = math.random(1, #DeliveryItems)
local item = DeliveryItems[itemnum].item
local amount = math.random(1,4) local amount = math.random(1,4)
local check = MySQL.query.await('SELECT * FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) local check = MySQL.query.await('SELECT * FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid})
local locnum = math.random(1, #QBConfig.DeliveryLocations) local locnum = math.random(1, #dloc)
local coord = json.encode({ local coord = json.encode({
x = math.floor(QBConfig.DeliveryLocations[locnum].coords.x * 100) / 100, x = dloc[locnum].coords.x,
y = math.floor(QBConfig.DeliveryLocations[locnum].coords.y * 100) / 100, y = dloc[locnum].coords.y,
z = math.floor(QBConfig.DeliveryLocations[locnum].coords.z * 100) / 100, z = dloc[locnum].coords.z ,
w = dloc[locnum].coords.w
}) })
if not check[1] then if not check[1] then
MySQL.insert('INSERT INTO deliveriesdealer SET cid = ?, itemdata = ?, timestart = ?, maxtime = ?, location = ?', MySQL.insert('INSERT INTO deliveriesdealer SET cid = ?, itemdata = ?, timestart = ?, maxtime = ?, location = ?',
{Player.PlayerData.citizenid, json.encode({item = QBConfig.DeliveryItems[item].item, amount = amount}), os.time(), os.time() + (15 * 60), coord }) {Player.PlayerData.citizenid, json.encode({item = item, amount = amount}), os.time(), os.time() + (15 * 60), coord })
AddItem(Player.PlayerData.source, QBConfig.DeliveryItems[item].item, amount) AddItem(Player.PlayerData.source, item, amount)
return true, QBConfig.DeliveryItems[item].item, amount, coord return true, item, amount, coord
else else
local time = os.time() local time = os.time()
local timeout = math.floor(os.difftime(time, check[1].maxtime) / 60) local timeout = math.floor(os.difftime(time, check[1].maxtime) / 60)
if timeout > 15 then MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) Notifys(src, 'You Failed To Make It In Time!', 'error' ) return false end if timeout > 15 then MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) Notifys(src, 'You Failed To Make It In Time!', 'error' ) return false end
Notifys(src,'You Already Have A Delivery To Make', 'error' ) return false, QBConfig.DeliveryItems[item].item, amount, coord Notifys(src,'You Already Have A Delivery To Make', 'error' ) return false, item, amount, coord
end end
end) end)
@@ -54,7 +139,7 @@ RegisterNetEvent('md-drugs:server:giveDeliveryItems', function(item, amount)
if item ~= itemData.item then return end if item ~= itemData.item then return end
if amount ~= itemData.amount then return end if amount ~= itemData.amount then return end
if RemoveItem(src, item, amount) then if RemoveItem(src, item, amount) then
for k, v in pairs (QBConfig.DeliveryItems) do for k, v in pairs (DeliveryItems) do
if v.item == item then if v.item == item then
local income = math.random(v.payout.min, v.payout.max) local income = math.random(v.payout.min, v.payout.max)
Player.Functions.AddMoney('cash', income) Player.Functions.AddMoney('cash', income)
@@ -65,62 +150,60 @@ RegisterNetEvent('md-drugs:server:giveDeliveryItems', function(item, amount)
end end
end) end)
-- Commands lib.addCommand("newdealer", {
QBCore.Commands.Add("newdealer", "Place a dealer (Admin Only)", {{ name = "name", help = "Dealer name"}, { name = "min", help = "Minimum Time"}, {name = "max", help = "Maximum Time"}}, true, function(source, args) help = "Place a dealer (Admin Only)",
params = {
{ name = "name", help = "Dealer Name", type = "string" },
{ name = "min", help = "Minimum Time", type = "number" },
{ name = "max", help = "Maximum Time", type = "number" }
},
restricted = "admin"
}, function(source, args)
local ped = GetPlayerPed(source) local ped = GetPlayerPed(source)
local coords = GetEntityCoords(ped) local coords = GetEntityCoords(ped)
local Player = getPlayer(source) local Player = getPlayer(source)
if not Player then return end if not Player then return end
local dealerName = args[1]
local minTime = tonumber(args[2]) local dealerName = args.name
local maxTime = tonumber(args[3])
local time = json.encode({min = minTime, max = maxTime})
local pos = json.encode({x = coords.x, y = coords.y, z = coords.z}) local pos = json.encode({x = coords.x, y = coords.y, z = coords.z})
local result = MySQL.scalar.await('SELECT name FROM dealers WHERE name = ?', {dealerName})
if result then return TriggerClientEvent('QBCore:Notify', source, "Already Exists", "error") end local result = MySQL.scalar.await('SELECT name FROM dealers WHERE name = ?', { dealerName })
MySQL.insert('INSERT INTO dealers (name, coords, time, createdby) VALUES (?, ?, ?, ?)', {dealerName, pos, time, Player.PlayerData.citizenid}, function() if result then
return Notifys(source,"Already Exists", "error")
end
MySQL.insert('INSERT INTO dealers (name, coords, time, createdby) VALUES (?, ?, ?, ?)', {
dealerName, pos, 'nil', Player.PlayerData.citizenid
}, function()
QBConfig.Dealers[dealerName] = { QBConfig.Dealers[dealerName] = {
["name"] = dealerName, name = dealerName,
["coords"] = { coords = {
["x"] = coords.x, x = coords.x,
["y"] = coords.y, y = coords.y,
["z"] = coords.z, z = coords.z,
h = GetEntityHeading(ped)
}, },
["time"] = {
["min"] = minTime,
["max"] = maxTime
},
["products"] = QBConfig.Products
} }
TriggerClientEvent('md-drugs:client:RefreshDealers', -1, QBConfig.Dealers) TriggerClientEvent('md-drugs:client:RefreshDealers', -1, QBConfig.Dealers)
end) end)
end, "admin") end)
lib.addCommand("deletedealer", {
help = "Delete a dealer (Admin Only)",
params = {
{ name = "name", help = "Dealer Name", type = "string" }
},
restricted = 'group.admin'
}, function(source, args)
local dealerName = args.name
local result = MySQL.scalar.await('SELECT * FROM dealers WHERE name = ?', { dealerName })
QBCore.Commands.Add("deletedealer", "Delete a dealer (Admin Only)", {{
name = "name",
help = "Dealer Name"
}}, true, function(source, args)
local dealerName = args[1]
local result = MySQL.scalar.await('SELECT * FROM dealers WHERE name = ?', {dealerName})
if result then if result then
MySQL.query('DELETE FROM dealers WHERE name = ?', {dealerName}) MySQL.query('DELETE FROM dealers WHERE name = ?', { dealerName })
QBConfig.Dealers[dealerName] = nil QBConfig.Dealers[dealerName] = nil
TriggerClientEvent('md-drugs:client:RefreshDealers', -1, QBConfig.Dealers) TriggerClientEvent('md-drugs:client:RefreshDealers', -1, QBConfig.Dealers)
TriggerClientEvent('QBCore:Notify', source, "Dealer Deleted" , "success") TriggerClientEvent('QBCore:Notify', source, "Dealer Deleted", "success")
else else
TriggerClientEvent('QBCore:Notify', source, "Who You Tryna Delete", "error") TriggerClientEvent('QBCore:Notify', source, "Who You Tryna Delete", "error")
end end
end, "admin") end)
RegisterServerEvent("md-drugs:server:Dealershop", function(amount, value, item, info)
local src = source
local Player = getPlayer(src)
local balance = Player.Functions.GetMoney(tostring(value))
if Player.Functions.RemoveMoney(tostring(value), tonumber(info) * tonumber(amount)) then
TriggerClientEvent('inventory:client:ItemBox', src, item.name, "add", amount)
Player.Functions.AddItem(item, amount)
else
TriggerClientEvent('QBCore:Notify', source, "Can't give item!", "error")
end
end)
+22 -57
View File
@@ -1,6 +1,6 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
local notify = Config.Notify -- qb or ox local notify = Config.Notify -- qb or ox
local inventory = Config.Inventory -- qb or ox
------------------------------------------ logging stuff ------------------------------------------ logging stuff
local logs = false local logs = false
local logapi = GetConvar("fivemerrLogs", "") local logapi = GetConvar("fivemerrLogs", "")
@@ -48,23 +48,13 @@ end
---------------------------------------------------- inventory catcher ---------------------------------------------------- inventory catcher
local invname = '' local invname = ''
CreateThread(function() CreateThread(function()
if GetResourceState('ps-inventory') == 'started' then if GetResourceState('ps-inventory') == 'started' then
invname = 'ps-inventory' invname = 'ps-inventory'
elseif GetResourceState('qb-inventory') == 'started' then elseif GetResourceState('qb-inventory') == 'started' then
invname = 'qb-inventory' invname = 'qb-inventory'
else else
invname = 'inventory' invname = 'inventory'
end end
end)
local inventory = ''
CreateThread(function()
if GetResourceState('ox_inventory') == 'started' then
inventory = 'ox'
else
inventory = 'qb'
end
end) end)
------------------------------------ Player Stuff functions ------------------------------------ Player Stuff functions
function getPlayer(source) function getPlayer(source)
@@ -114,7 +104,7 @@ function Notifys(source, text, type)
TriggerClientEvent('okokNotify:Alert', src, '', text, 4000, type, false) TriggerClientEvent('okokNotify:Alert', src, '', text, 4000, type, false)
else else
print"^1 Look At The Config For Proper Alert Options" print"^1 Look At The Config For Proper Alert Options"
end end
end end
function GetLabels(item) function GetLabels(item)
@@ -126,6 +116,10 @@ function GetLabels(item)
end end
end end
function CUI(item, useFunction)
QBCore.Functions.CreateUseableItem(item, useFunction)
end
function Itemcheck(source, item, amount) function Itemcheck(source, item, amount)
if inventory == 'qb' then if inventory == 'qb' then
local Player = getPlayer(source) local Player = getPlayer(source)
@@ -318,36 +312,15 @@ function sortTab(tbl, type)
end) end)
end end
function ChecknRemove(source, table) function getCops()
local Player = getPlayer(source) local amount = 0
local hass = 0 local players = QBCore.Functions.GetQBPlayers()
local need = 0 for k, v in pairs(players) do
for k, v in pairs (table) do if v.PlayerData.job.type == 'leo' and v.PlayerData.job.onduty then
need = need + 1 amount = amount + 1
if inventory == 'qb' then end
local itemchecks = Player.Functions.GetItemByName(k)
if itemchecks and itemchecks.amount >= v then
hass = hass + 1
else
Notifys(source, 'You Need ' .. v .. ' Of ' .. GetLabels(k) .. ' To Do this', 'error')
end
elseif inventory == 'ox' then
local items = exports.ox_inventory:GetItem(source, k, nil, false)
if items.count >= v then
hass = hass + 1
else
Notifys(source, 'You Need ' .. v .. ' Of ' .. GetLabels(k) .. ' To Do This', 'error')
end
end
end
if hass == need then
for k, v in pairs (table) do
RemoveItem(source, k, v)
end
return true
else
return false
end end
return amount
end end
lib.callback.register('md-drugs:server:GetCoppers', function(source, cb, args) lib.callback.register('md-drugs:server:GetCoppers', function(source, cb, args)
@@ -372,6 +345,7 @@ CreateThread(function()
print('^1 ox_lib Is A Depndancy, Not An Optional ') print('^1 ox_lib Is A Depndancy, Not An Optional ')
end end
end) end)
CreateThread(function() CreateThread(function()
local url = "https://raw.githubusercontent.com/Mustachedom/md-drugs/main/version.txt" local url = "https://raw.githubusercontent.com/Mustachedom/md-drugs/main/version.txt"
local version = GetResourceMetadata('md-drugs', "version" ) local version = GetResourceMetadata('md-drugs', "version" )
@@ -381,12 +355,3 @@ CreateThread(function()
end end
end, "GET", "", "") end, "GET", "", "")
end) end)
RegisterServerEvent('md-drugs:server:AddMas', function(data)
local src = source
if not data then return end
if not Itemcheck(src, data.xt, 1) then return end
if not RemoveItem(src, data.item, 1) then return end
RemoveItem(src, data.xt, 1)
AddItem(src, data.recieve, data.amount)
end)
+90 -62
View File
@@ -1,75 +1,86 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
GlobalState.PoppyPlants = Config.PoppyPlants local prices = {
heroinlabkitprice = 10000
}
local heroinLabKits = {}
local h = {
{ location = vector3(-2251.3, -99.18, 100.11), heading = 334.49, model = "prop_plant_01b"},
{ location = vector3(-2249.63, -92.97, 101.8), heading = 329.56, model = "prop_plant_01b"},
{ location = vector3(-2245.57, -85.12, 104.5), heading = 25.16, model = "prop_plant_01b"},
{ location = vector3(-2240.81, -88.48, 105.88), heading = 21.52, model = "prop_plant_01b"},
{ location = vector3(-2240.87, -93.36, 103.88), heading = 334.49, model = "prop_plant_01b"},
{ location = vector3(-2236.0, -95.34, 102.55), heading = 329.56, model = "prop_plant_01b"},
{ location = vector3(-2240.6, -100.01, 100.49), heading = 25.16, model = "prop_plant_01b"},
{ location = vector3(-2246.29, -104.92, 99.27), heading = 21.52, model = "prop_plant_01b"},
{ location = vector3(-2243.64, -107.99, 96.71), heading = 334.49, model = "prop_plant_01b"},
{ location = vector3(-2254.22, -108.76, 97.25), heading = 329.56, model = "prop_plant_01b"},
{ location = vector3(-2247.33, -108.92, 97.70), heading = 25.16, model = "prop_plant_01b"},
{ location = vector3(-2250.96, -111.22, 97.50), heading = 21.52, model = "prop_plant_01b"},
{ location = vector3(465.95, -1021.32, 31.78), heading = 21.52, model = "prop_plant_01b"},
}
GlobalState.PoppyPlants = h
Citizen.CreateThread(function() Citizen.CreateThread(function()
for _, v in pairs(Config.PoppyPlants) do for _, v in pairs(h) do
v.taken = false v.taken = false
end end
end) end)
function heroinCooldown(loc) function heroinCooldown(loc)
CreateThread(function() CreateThread(function()
Wait(Config.respawnTime * 1000) Wait(Config.respawnTime * 1000)
Config.PoppyPlants[loc].taken = false h[loc].taken = false
GlobalState.PoppyPlants = Config.PoppyPlants GlobalState.PoppyPlants = h
Wait(1000) Wait(1000)
TriggerClientEvent('heroin:respawnCane', -1, loc) TriggerClientEvent('heroin:respawnCane', -1, loc)
Log('Heroin Plant Respawned At ' .. Config.PoppyPlants[loc].location, 'heroin') Log('Heroin Plant Respawned At ' .. h[loc].location, 'heroin')
end) end)
end end
RegisterServerEvent('md-drugs:server:removecleaningkitheroin', function(data) lib.callback.register('removeCleaningkit', function(source)
local src = source local Player = getPlayer(source)
if RemoveItem(src,"cleaningkit", 1) then for k, v in pairs(heroinLabKits) do
TriggerClientEvent("md-drugs:client:deletedirtyheroin", src, data) if v.ownerid == Player.PlayerData.citizenid then
Log(GetName(src) .. ' Wiped Down Their Heroin Lab Kit!' , 'heroin') RemoveItem(source, 'cleaningkit', 1)
else return true
Notifys(src, "You cant clean it with spit alone", "error") end
end end
return false
end) end)
RegisterServerEvent("heroin:pickupCane", function(loc) RegisterServerEvent("heroin:pickupCane", function(loc)
if CheckDist(source, Config.PoppyPlants[loc].location) then return end if CheckDist(source, h[loc].location) then return end
if not Config.PoppyPlants[loc].taken then if not h[loc].taken then
Config.PoppyPlants[loc].taken = true h[loc].taken = true
GlobalState.PoppyPlants = Config.PoppyPlants GlobalState.PoppyPlants = h
TriggerClientEvent("heroin:removeCane", -1, loc) TriggerClientEvent("heroin:removeCane", -1, loc)
heroinCooldown(loc) heroinCooldown(loc)
AddItem(source, 'poppyresin', 1) AddItem(source, 'poppyresin', 1)
Log(GetName(source) .. ' Picked A Poppies With a distance of ' .. dist(source, Config.PoppyPlants[loc].location) .. ' vectors', 'heroin')
end end
end) end)
RegisterServerEvent('md-drugs:server:dryplant', function(num) RegisterServerEvent('md-drugs:server:dryplant', function(num)
local src = source local src = source
if CheckDist(source, Config.dryplant[num]['loc']) then return end if not checkLoc(source, 'dryplant', num) then return end
if not Itemcheck(source, 'poppyresin', 1) then return end if not Itemcheck(source, 'poppyresin', 1) then return end
if Config.TierSystem then if Config.TierSystem then
local heroin = getRep(src, 'heroin') local heroin = getRep(src, 'heroin')
if heroin <= Config.Tier1 then if heroin <= Config.Tier1 then
if not GetRecipe(src, 'heroin', 'dryheroin', 'tier1') then return end if not GetRecipe(src, 'heroin', 'dryheroin', 'tier1') then return end
Log(GetName(src) ..' Made Heroin Powder With a distance of ' .. dist(source, Config.dryplant[num]['loc']) .. ' vectors', 'heroin')
elseif heroin >= Config.Tier1 and heroin <= Config.Tier2 then elseif heroin >= Config.Tier1 and heroin <= Config.Tier2 then
if not GetRecipe(src, 'heroin', 'dryheroin', 'tier2') then return end if not GetRecipe(src, 'heroin', 'dryheroin', 'tier2') then return end
Log(GetName(src) ..' Made Heroin Powder Tier 2 With a distance of ' .. dist(source, Config.dryplant[num]['loc']) .. ' vectors', 'heroin')
else else
if not GetRecipe(src, 'heroin', 'dryheroin', 'tier3') then return end if not GetRecipe(src, 'heroin', 'dryheroin', 'tier3') then return end
Log(GetName(src) ..' Made Heroin Powder Tier 3 With a distance of ' .. dist(source, Config.dryplant[num]['loc']) .. ' vectors', 'heroin')
end end
else else
if not GetRecipe(src, 'heroin', 'dryheroin', 'tier1') then return end if not GetRecipe(src, 'heroin', 'dryheroin', 'tier1') then return end
Log(GetName(src) ..' Made Heroin Powder With a distance of ' .. dist(source, Config.dryplant[num]['loc']) .. ' vectors', 'heroin')
end end
end) end)
RegisterServerEvent('md-drugs:server:cutheroin', function(num) RegisterServerEvent('md-drugs:server:cutheroin', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if CheckDist(source, Config.cutheroinone[num]['loc']) then return end if not checkLoc(source, 'cutheroinone', num) then return end
if not Itemcheck(src, 'bakingsoda', 1) then return end if not Itemcheck(src, 'bakingsoda', 1) then return end
if Config.TierSystem then if Config.TierSystem then
local rawh = Player.Functions.GetItemByName('heroin') local rawh = Player.Functions.GetItemByName('heroin')
@@ -77,58 +88,76 @@ RegisterServerEvent('md-drugs:server:cutheroin', function(num)
local rawh3 = Player.Functions.GetItemByName('heroinstagethree') local rawh3 = Player.Functions.GetItemByName('heroinstagethree')
if rawh then if rawh then
if not GetRecipe(src, 'heroin', 'cutheroin', 'tier1') then return end if not GetRecipe(src, 'heroin', 'cutheroin', 'tier1') then return end
Log(GetName(src) ..' Cut Heroin With a distance of ' .. dist(source, Config.cutheroinone[num]['loc']) .. ' vectors', 'heroin')
elseif rawh2 then elseif rawh2 then
if not GetRecipe(src, 'heroin', 'cutheroin', 'tier2') then return end if not GetRecipe(src, 'heroin', 'cutheroin', 'tier2') then return end
Log(GetName(src) ..' Cut Heroin Tier 2 With a distance of ' .. dist(source, Config.cutheroinone[num]['loc']) .. ' vectors', 'heroin')
elseif rawh3 then elseif rawh3 then
if not GetRecipe(src, 'heroin', 'cutheroin', 'tier3') then return end if not GetRecipe(src, 'heroin', 'cutheroin', 'tier3') then return end
Log(GetName(src) .. ' Cut Heroin Tier 3 With a distance of ' .. dist(source, Config.cutheroinone[num]['loc']) .. ' vectors', 'heroin')
else else
Notifys(src, Lang.Heroin.noheroin, "error") Notifys(src, Lang.Heroin.noheroin, "error")
end end
else else
if not GetRecipe(src, 'heroin', 'cutheroin', 'tier1') then return end if not GetRecipe(src, 'heroin', 'cutheroin', 'tier1') then return end
Log(GetName(src) ..' Cut Heroin With a distance of ' .. dist(source, Config.cutheroinone[num]['loc']) .. ' vectors', 'heroin')
end end
end) end)
RegisterServerEvent('md-drugs:server:getheroinlabkit', function() RegisterServerEvent('md-drugs:server:getheroinlabkit', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if not checkLoc(source, 'singleSpot', 'buyheroinlabkit') then return end
if CheckDist(source, vector3(Config.buyheroinlabkit.x,Config.buyheroinlabkit.y,Config.buyheroinlabkit.z)) then return end local has = Player.Functions.GetItemByName('heroinlabkit')
if Player.Functions.RemoveMoney('cash', Config.heroinlabkitprice) then if has then Notifys(src, Lang.Heroin.haskit, 'error') return end
if Player.Functions.RemoveMoney('cash', prices.heroinlabkitprice) then
AddItem(src, 'heroinlabkit', 1) AddItem(src, 'heroinlabkit', 1)
Log(GetName(src) ..' Bought A Heroin lab Kit ' .. dist(source, vector3(Config.buyheroinlabkit.x,Config.buyheroinlabkit.y,Config.buyheroinlabkit.z)) .. ' vectors', 'heroin')
else else
Notifys(src, 'You Need '.. Config.heroinlabkitprice .. ' In Cash For This', 'error') Notifys(src, 'You Need '.. prices.heroinlabkitprice .. ' In Cash For This', 'error')
end end
end) end)
local function hasHKit(src)
local src = source
local Player = getPlayer(src)
for k, v in pairs(heroinLabKits) do
if v.ownerid == Player.PlayerData.citizenid then
return true
end
end
return false
end
RegisterServerEvent('md-drugs:server:getheroinlabkitback', function() RegisterServerEvent('md-drugs:server:getheroinlabkitback', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if AddItem(src, "heroinlabkit", 1) then if not hasHKit(src) then return end
Log(GetName(src) ..' Picked Up Their Heroin Lab Kit Back At ' .. GetCoords(src) .. '!', 'heroin') for k, v in pairs (heroinLabKits) do
if v.ownerid == Player.PlayerData.citizenid then
table.remove(heroinLabKits, k)
AddItem(src, 'heroinlabkit', 1)
end
end end
end) end)
QBCore.Functions.CreateUseableItem('heroinlabkit', function(source, item)
local src = source CUI('heroinlabkit', function(source, item)
local Player = getPlayer(src) local src = source
local Player = getPlayer(src)
if not Itemcheck(source, 'heroinlabkit', 1) then return end if not Itemcheck(source, 'heroinlabkit', 1) then return end
if TriggerClientEvent("md-drugs:client:setheroinlabkit", src) then local placed, loc = lib.callback.await('md-drugs:client:setheroinlabkit', src)
RemoveItem(src, "heroinlabkit", 1) if placed then
Log(GetName(src) ..' Placed Their Heroin Lab Kit Back At ' .. GetCoords(src) .. '!', 'heroin') RemoveItem(src, 'heroinlabkit', 1)
table.insert(heroinLabKits, {
src = src,
ownerid = Player.PlayerData.citizenid,
coords = loc,
name = GetName(src)
})
Notifys(src, Lang.Heroin.placed, "success")
end end
end) end)
RegisterServerEvent('md-drugs:server:heatliquidheroin', function() RegisterServerEvent('md-drugs:server:heatliquidheroin', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if not hasHKit(src) then return end
if not Itemcheck(source, 'emptyvial', 1) then return end if not Itemcheck(source, 'emptyvial', 1) then return end
if Config.TierSystem then if Config.TierSystem then
local cuth = Player.Functions.GetItemByName('heroincut') local cuth = Player.Functions.GetItemByName('heroincut')
@@ -136,29 +165,25 @@ local Player = getPlayer(src)
local cuth3 = Player.Functions.GetItemByName('heroincutstagethree') local cuth3 = Player.Functions.GetItemByName('heroincutstagethree')
if cuth then if cuth then
if not GetRecipe(src, 'heroin', 'fillvial', 'tier1') then return end if not GetRecipe(src, 'heroin', 'fillvial', 'tier1') then return end
Log(GetName(src) ..' Made A Vial Of Heroin', 'heroin')
elseif cuth2 then elseif cuth2 then
if not GetRecipe(src, 'heroin', 'fillvial', 'tier2') then return end if not GetRecipe(src, 'heroin', 'fillvial', 'tier2') then return end
Log(GetName(src) ..' Made A Vial Of Heroin Tier 2', 'heroin')
elseif cuth3 then elseif cuth3 then
if not GetRecipe(src, 'heroin', 'fillvial', 'tier3') then return end if not GetRecipe(src, 'heroin', 'fillvial', 'tier3') then return end
Log(GetName(src) ..' Made A Vial Of Heroin Tier 3', 'heroin')
else else
Notifys(src, 'no cut heroin', "error") Notifys(src, 'no cut heroin', "error")
end end
else else
if not GetRecipe(src, 'heroin', 'fillvial', 'tier1') then return end if not GetRecipe(src, 'heroin', 'fillvial', 'tier1') then return end
Log(GetName(src) ..' Made A Vial Of Heroin', 'heroin')
end end
end) end)
RegisterServerEvent('md-drugs:server:failheatingheroin', function() RegisterServerEvent('md-drugs:server:failheatingheroin', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if not hasHKit(src) then return end
local cuth = Player.Functions.GetItemByName('heroincut') local cuth = Player.Functions.GetItemByName('heroincut')
local cuth2 = Player.Functions.GetItemByName('heroincutstagetwo') local cuth2 = Player.Functions.GetItemByName('heroincutstagetwo')
local cuth3 = Player.Functions.GetItemByName('heroincutstagethree') local cuth3 = Player.Functions.GetItemByName('heroincutstagethree')
Log(GetName(src) ..' Sucks And Burned Their Heroin', 'heroin')
if cuth then if cuth then
RemoveItem(src, 'heroincut', 1) RemoveItem(src, 'heroincut', 1)
Notifys(src,Lang.Heroin.fail, "error") Notifys(src,Lang.Heroin.fail, "error")
@@ -171,11 +196,10 @@ Log(GetName(src) ..' Sucks And Burned Their Heroin', 'heroin')
end end
end) end)
RegisterServerEvent('md-drugs:server:fillneedle', function(num) RegisterServerEvent('md-drugs:server:fillneedle', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if CheckDist(source, Config.fillneedle[num]['loc']) then return end if not checkLoc(source, 'fillneedle', num) then return end
if not Itemcheck(src, 'needle', 1) then return end if not Itemcheck(src, 'needle', 1) then return end
if Config.TierSystem then if Config.TierSystem then
local heroin = getRep(src, 'heroin') local heroin = getRep(src, 'heroin')
@@ -185,26 +209,20 @@ RegisterServerEvent('md-drugs:server:fillneedle', function(num)
if vh then if vh then
if not GetRecipe(src, 'heroin', 'fillneedle', 'tier1') then return end if not GetRecipe(src, 'heroin', 'fillneedle', 'tier1') then return end
AddRep(src, 'heroin') AddRep(src, 'heroin')
Log(GetName(src) ..' Filled A Needle Of Heroin And Now Has A Rep Of ' .. heroin + 1 .. '!' , 'heroin')
elseif vh2 then elseif vh2 then
if not GetRecipe(src, 'heroin', 'fillneedle', 'tier2') then return end if not GetRecipe(src, 'heroin', 'fillneedle', 'tier2') then return end
AddRep(src, 'heroin') AddRep(src, 'heroin')
Log(GetName(src) ..' Filled A Needle Of Heroin Tier 2 And Now Has A Rep Of ' .. heroin + 1 .. '!' , 'heroin')
elseif vh3 then elseif vh3 then
if not GetRecipe(src, 'heroin', 'fillneedle', 'tier3') then return end if not GetRecipe(src, 'heroin', 'fillneedle', 'tier3') then return end
AddRep(src, 'heroin') AddRep(src, 'heroin')
Log(GetName(src) ..' Filled A Needle Of Heroin Tier 3 And Now Has A Rep Of ' .. heroin + 1 .. '!' , 'heroin')
else else
Notifys(src,Lang.Heroin.nofill, "error") Notifys(src,Lang.Heroin.nofill, "error")
end end
else else
if not GetRecipe(src, 'heroin', 'fillneedle', 'tier1') then return end if not GetRecipe(src, 'heroin', 'fillneedle', 'tier1') then return end
Log(GetName(src) ..' Filled A Needle Of Heroin!' , 'heroin')
end end
end) end)
RegisterServerEvent('md-drugs:server:failheroin', function() RegisterServerEvent('md-drugs:server:failheroin', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
@@ -222,3 +240,13 @@ RegisterServerEvent('md-drugs:server:failheroin', function()
end end
end) end)
AddEventHandler('playerDropped', function()
local src = source
local Player = getPlayer(src)
for k, v in pairs(heroinLabKits) do
if v.src == src then
table.remove(heroinLabKits, k)
AddItem(src, 'heroinlabkit', 1)
end
end
end)
+1 -1
View File
@@ -16,7 +16,7 @@ RegisterServerEvent('md-drugs:server:givelean', function()
end end
end) end)
QBCore.Functions.CreateUseableItem('leancup', function(source, item) CUI('leancup', function(source, item)
if Itemcheck(source, 'leancup', 1) then if Itemcheck(source, 'leancup', 1) then
TriggerClientEvent('md-drugs:client:leancraft', source) TriggerClientEvent('md-drugs:client:leancraft', source)
end end
+147
View File
@@ -0,0 +1,147 @@
local Target = {
MakePowder = { -- where you chop your coca leaves to make powder
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1090.15, -3199.5, -39.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1093.09, -3199.53, -39.05), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
CuttingCoke = { -- only active if Config.FancyCokeAnims = false
{loc = vector3(1095.61, -3195.62, -39.13), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
BaggingCoke = { -- only active if Config.FancyCokeAnims = false
{loc = vector3(1093.16, -3195.78, -39.19), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
makecrack = { -- make crack with baking soda with cut coke 1-3
{loc = vector3(2433.47, 4970.02, 42.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
bagcrack = { --- bag crack 1-3 stages
{loc = vector3(2436.55, 4964.96, 42.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
lysergicacid = { -- get lysergic acid
{loc = vector3(-1381.21, -327.75, 39.85), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(2405.53, 5008.39, 46.02), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
diethylamide = { -- get diethylamide
{loc = vector3(-1371.71, -316.02, 39.53), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(2408.38, 5011.18, 46.08), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
gettabs = { -- buy tab paper
{loc = vector3(-1370.77, -314.51, 39.58), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(2409.59, 5012.45, 46.09), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
dryplant = { -- turn resin into powder
{loc = vector3(-1353.77, -335.58, 43.92), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
cutheroinone = { -- cut heroin stage 1-3 with baking soda
{loc = vector3(-1360.14, -337.03, 43.92), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
fillneedle = { -- fill needles with heroin
{loc = vector3(-1366.32, -334.40, 44.44), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
isosafrole = { -- where to steal isosafrole
{loc = vector3(844.39, -902.92, 25.42), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
mdp2p = { -- where to steal mdp2p
{loc = vector3(844.4, -898.79, 25.23), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
rawxtcloc = { -- where to combine the 2 ingridents to make raw xtc
{loc = vector3(844.71, -910.33, 25.37), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
stamp = { -- where to stamp pills
{loc = vector3(844.71, -900.56, 25.43), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
FillPrescription = { -- where to fill out your prescription
{loc = vector3(2855.62, 4446.73, 48.53), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
singleSpot = {
cutcoke = vector3(1093.17, -3195.74, -39.19),
bagcokepowder = vector3(1090.28, -3195.65, -39.19),
CokeTeleIn = vector3(198.16, -1276.92, 29.33), -- where you target to go inside coke
CokeTeleOut = vector3(1088.81, -3187.57, -38.99), -- where you target to leave coke
buylsdlabkit = vector4(2598.47, 5033.06, 105.86, 283.51), -- buy lab kit for lsd
buyheroinlabkit = vector4(-1358.77, -339.12, 43.92, 302.13), -- buy lab kit for heroin
buypress = vector3(845.82, -884.79, 25.18), -- buy lab kit for xtc
DryOut = vector3(2638.22, 4237.93, 44.78), -- Place to dry out mescaline into usuable drug
SyrupVendor = vector4(365.21, -578.77, 39.30, 347.23), -- where the mission ped starts
weedTelein = vector3(244.74, 374.54, 105.74), -- where you target to tele in
weedTeleout = vector3(1066.31, -3183.36, -39.16), -- where you target to tele out
MakeButter = vector3(1045.48, -3198.49, -38.22), -- where you make cannabutter and baked edibles
MakeOil = vector3(1038.90, -3198.66, -38.17), -- where you make shatter
WeedSaleman = vector4(1030.77, -3203.18, -38.2, 262.37), -- where the weed saleman is
MethTeleIn = vector3(-2222.04, 303.99, 174.6), -- where you target to tele in meth
MethTeleOut = vector3(996.91, -3200.83, -36.39), -- where you target to tele out meth
MethHeistStart = vector4(-1520.84, 827.72, 181.66, 184.13), -- where you get the mission to get ingridients if meth heist = true
truckspawn = vector4(1450.87, -1482.13, 63.22, 69.95), --- where the truck will spawn when you pay for it
Payfortruck = vector3(1437.64, -1491.91, 63.62), --- where you pay for the truck
},
MethEph = { -- get ephedrine
{loc = vector3(3559.86, 3673.9, 28.13), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
Methace = { -- get acetone
{loc = vector3(3535.41, 3661.05, 28.12), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
StartLoc = { -- where truck spawns for lean and meth missions
vector3(-2307.22, 434.77, 174.47),
vector3(614.75, 1786.26, 199.39),
vector3(-224.89, 6388.32, 31.59)
},
WeedDry = {
{loc = vector3(1043.0, -3191.59, -38.39),},
{loc = vector3(1041.0, -3191.59, -38.39),},
{loc = vector3(1045.0, -3191.59, -38.39),},
{loc = vector3(1039.0, -3191.59, -38.39),},
},
Travellingmerchant = { -- where the travelling merchant can spawn
vector4(-119.66, -977.43, 304.25, 88.21),
vector4(-1522.93, 1476.01, 111.45, 41.25),
vector4(-3278.98, 973.38, 5.35, 101.53),
},
oxylocations = {
vector4(-2352.32, 266.78, 165.3, 23.46),
vector4(-1467.49, 874.01, 183.59, 298.45),
vector4(-856.71, 874.26, 202.85, 205.3),
vector4(950.58, -128.49, 74.42, 205.3),
vector4(1152.71, -328.43, 69.21, 205.3),
vector4(112.66, -1955.67, 20.75, 37.94),
vector4(-544.4, -1684.8, 19.89, 252.07),
vector4(-1185.02, -1805.4, 3.91, 184.83),
vector4(-1641.4, -981.99, 7.58, 35.38),
vector4(-1827.93, 782.36, 138.29, 219.99),
vector4(-320.84, 2818.73, 59.45, 337.22),
vector4(474.88, 2609.56, 44.48, 357.0),
}
}
function checkLoc(source, event, num)
local ped = source
local pos = GetPlayerPed(ped)
local coord = GetEntityCoords(pos)
local loc
if type(num) == 'string' then
loc = vector3(Target[event][num].x, Target[event][num].y, Target[event][num].z)
else
loc = Target[event][num].loc
end
local dist = #(coord - loc)
if dist < 2.5 then
Log(GetName(source) .. ' Triggered the table ' .. event .. ' Within The Correct Distance', 'locations')
return true
else
Log(GetName(source) .. ' Triggered the table ' .. event .. ' Not Within The Correct Distance', 'locations')
Notifys(source, 'You are not in the correct location', 'error')
return false
end
end
local loc = Target.Travellingmerchant[math.random(1, #Target.Travellingmerchant)]
lib.callback.register('md-drugs:server:getLocs', function()
return Target
end)
lib.callback.register('md-drugs:server:GetMerchant', function(source)
return loc
end)
function getRandW(src)
local rand = math.random(1, #Target.oxylocations)
return Target.oxylocations[rand]
end
+60 -23
View File
@@ -1,56 +1,81 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
local prices = {
tabcost = 100, -- price per piece of tab paper event does 10 at a time
lsdlabkitcost = 10000 -- price of the lsd lab kit
}
local lsdTables = {}
RegisterServerEvent('md-drugs:server:getlysergic', function(num) RegisterServerEvent('md-drugs:server:getlysergic', function(num)
local src = source local src = source
if CheckDist(src, Config.lysergicacid[num]['loc']) then return end if not checkLoc(src, 'lysergicacid', num) then return end
if AddItem(src,'lysergic_acid', 2) then if AddItem(src,'lysergic_acid', 2) then
Log(GetName(src) ..' Got Lysergic acid with a distance of ' .. dist(source, Config.lysergicacid[num]['loc']) .. '!', 'lsd')
end end
end) end)
RegisterServerEvent('md-drugs:server:getdiethylamide', function(num) RegisterServerEvent('md-drugs:server:getdiethylamide', function(num)
local src = source local src = source
if CheckDist(src, Config.diethylamide[num]['loc']) then return end if not checkLoc(src, 'diethylamide', num) then return end
if AddItem(src,'diethylamide', 2) then if AddItem(src,'diethylamide', 2) then
Log(GetName(src) ..' Got Diethylamide with a distance of ' .. dist(source, Config.diethylamide[num]['loc']) .. '!', 'lsd')
end end
end) end)
QBCore.Functions.CreateUseableItem('lsdlabkit', function(source, item) CUI('lsdlabkit', function(source, item)
local src = source local src = source
if TriggerClientEvent("md-drugs:client:setlsdlabkit", src) then local Player = getPlayer(src)
RemoveItem(src, "lsdlabkit", 1) local placed, loc = lib.callback.await('md-drugs:client:setlsdlabkit', src)
Log(GetName(src) ..' Placed Their LSD Lab Kit Back At ' .. GetCoords(src) .. '!', 'lsd') if placed then
if RemoveItem(src, 'lsdlabkit', 1) then
table.insert(lsdTables, {
owner = GetName(src),
ownerid = Player.PlayerData.citizenid,
src = src,
loc = loc
})
end
end end
end) end)
local function hasLabKit(source)
local src = source
local Player = getPlayer(src)
for k, v in pairs (lsdTables) do
if v.ownerid == Player.PlayerData.citizenid then
return true
end
end
end
lib.callback.register('md-drugs:server:removecleaningkit', function(source) lib.callback.register('md-drugs:server:removecleaningkit', function(source)
local src = source local src = source
if not Itemcheck(src, 'cleaningkit', 1) then return end if not Itemcheck(src, 'cleaningkit', 1) then return end
if RemoveItem(src,"cleaningkit", 1) then if RemoveItem(src,"cleaningkit", 1) then
Log(GetName(src) ..' Wiped Down Their LSD Lab Kit!' , 'lsd')
return true return true
end end
end) end)
RegisterServerEvent('md-drugs:server:getlabkitback', function() RegisterServerEvent('md-drugs:server:getlabkitback', function()
local src = source local src = source
if AddItem(src,"lsdlabkit", 1) then local Player = getPlayer(src)
Log(GetName(src) ..' Picked Up Their LSD Lab Kit Back At ' .. GetCoords(src) .. '!', 'lsd') for k, v in pairs (lsdTables) do
if v.ownerid == Player.PlayerData.citizenid then
table.remove(lsdTables, k)
AddItem(src, 'lsdlabkit', 1)
end
end end
end) end)
RegisterServerEvent('md-drugs:server:heatliquid', function() RegisterServerEvent('md-drugs:server:heatliquid', function()
local src = source local src = source
if not hasLabKit(src) then return end
if not GetRecipe(src, 'lsd', 'vial', 'heat') then return end if not GetRecipe(src, 'lsd', 'vial', 'heat') then return end
Log(GetName(src) ..' Heated Basic LSD!', 'lsd')
end) end)
RegisterServerEvent('md-drugs:server:failheating', function() RegisterServerEvent('md-drugs:server:failheating', function()
local src = source local src = source
if not ChecknRemove(source, {lysergic_acid = 1, diethylamide = 1}) then return end if not hasLabKit(src) then return end
RemoveItem(src, 'lysergic_acid', 1)
RemoveItem(src, 'diethylamide', 1)
Notifys(src,Lang.lsd.failed, "error") Notifys(src,Lang.lsd.failed, "error")
Log(GetName(src) ..' Failed Basic LSD Like An Idiot!', 'lsd') Log(GetName(src) ..' Failed Basic LSD Like An Idiot!', 'lsd')
end) end)
@@ -58,6 +83,7 @@ end)
RegisterServerEvent('md-drugs:server:refinequalityacid', function() RegisterServerEvent('md-drugs:server:refinequalityacid', function()
local src = source local src = source
if not hasLabKit(src) then return end
if not Itemcheck(src, 'lsd_one_vial', 1) then return end if not Itemcheck(src, 'lsd_one_vial', 1) then return end
if Config.TierSystem then if Config.TierSystem then
local lsd = getRep(src, 'lsd') local lsd = getRep(src, 'lsd')
@@ -97,6 +123,7 @@ end)
RegisterServerEvent('md-drugs:server:failrefinequality', function() RegisterServerEvent('md-drugs:server:failrefinequality', function()
local src = source local src = source
if not hasLabKit(src) then return end
if not Itemcheck(src, 'lsd_one_vial', 1) then return end if not Itemcheck(src, 'lsd_one_vial', 1) then return end
RemoveItem(src,'lsd_one_vial', 1) RemoveItem(src,'lsd_one_vial', 1)
end) end)
@@ -105,10 +132,9 @@ end)
RegisterServerEvent('md-drugs:server:gettabpaper', function(num) RegisterServerEvent('md-drugs:server:gettabpaper', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if CheckDist(source, Config.gettabs[num]['loc']) then return end if not checkLoc(src, 'gettabs', num) then return end
if Player.Functions.RemoveMoney('cash', Config.tabcost * 10) then if Player.Functions.RemoveMoney('cash', prices.tabcost * 10) then
AddItem(src,'tab_paper', 10) AddItem(src,'tab_paper', 10)
Log(GetName(src) ..' Bought Tab Paper!', 'lsd')
else else
Notifys(Lang.lsd.broke, "error") Notifys(Lang.lsd.broke, "error")
end end
@@ -117,10 +143,9 @@ end)
RegisterServerEvent('md-drugs:server:getlabkit', function() RegisterServerEvent('md-drugs:server:getlabkit', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if CheckDist(source, vector3(Config.buylsdlabkit.x, Config.buylsdlabkit.y, Config.buylsdlabkit.z)) then return end if not checkLoc(src,'singleSpot', 'buylsdlabkit') then return end
if Player.Functions.RemoveMoney('cash', Config.lsdlabkitcost) then if Player.Functions.RemoveMoney('cash', prices.lsdlabkitcost) then
AddItem(src,'lsdlabkit', 1) AddItem(src,'lsdlabkit', 1)
Log(GetName(src) ..' Bought A LSD Lab Kit!', 'lsd')
else else
Notifys(src, Lang.lsd.broke, "error") Notifys(src, Lang.lsd.broke, "error")
end end
@@ -129,6 +154,7 @@ end)
RegisterServerEvent('md-drugs:server:maketabpaper', function() RegisterServerEvent('md-drugs:server:maketabpaper', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if not hasLabKit(src) then return end
if not Itemcheck(src,'tab_paper', 1) then return end if not Itemcheck(src,'tab_paper', 1) then return end
local count = 0 local count = 0
local items, recieve = nil, nil local items, recieve = nil, nil
@@ -148,8 +174,8 @@ RegisterServerEvent('md-drugs:server:maketabpaper', function()
if check and check.amount >= 1 then if check and check.amount >= 1 then
items = v.vial items = v.vial
recieve = v.sheet recieve = v.sheet
Log(GetName(src) ..' ' .. v.log, 'lsd')
count = count + 1 count = count + 1
break
end end
end end
if count >= 1 then if count >= 1 then
@@ -169,7 +195,7 @@ local sheets = {
} }
for k, v in pairs (sheets) do for k, v in pairs (sheets) do
QBCore.Functions.CreateUseableItem(v.item, function(source) CUI(v.item, function(source)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local math = math.random(1,10) local math = math.random(1,10)
@@ -178,4 +204,15 @@ for k, v in pairs (sheets) do
Log(GetName(src) ..' Made ' .. math .. 'Tabs of ' .. v.recieve .. '!', 'lsd') Log(GetName(src) ..' Made ' .. math .. 'Tabs of ' .. v.recieve .. '!', 'lsd')
end end
end) end)
end end
AddEventHandler('playerDropped', function()
local src = source
local Player = getPlayer(src)
for k, v in pairs (lsdTables) do
if v.ownerid == Player.PlayerData.citizenid then
table.remove(lsdTables, k)
AddItem(src, 'lsdlabkit', 1)
end
end
end)
+30 -13
View File
@@ -1,8 +1,27 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
GlobalState.Mescaline = Config.Mescaline
local m = {
{ location = vector3(2598.73, 4207.89, 41.02), heading = 334.49, model = "prop_cactus_03"},
{ location = vector3(2601.46, 4199.34, 40.62), heading = 329.56, model = "prop_cactus_03"},
{ location = vector3(2611.63, 4194.18, 41.18), heading = 25.16, model = "prop_cactus_03"},
{ location = vector3(2620.18, 4202.69, 41.5), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2624.26, 4211.75, 42.34), heading = 334.49, model = "prop_cactus_03"},
{ location = vector3(2635.21, 4207.5, 42.49), heading = 329.56, model = "prop_cactus_03"},
{ location = vector3(2644.97, 4193.51, 42.11), heading = 25.16, model = "prop_cactus_03"},
{ location = vector3(2654.21, 4195.31, 41.23), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2653.32, 4206.49, 41.62), heading = 334.49, model = "prop_cactus_03"},
{ location = vector3(2647.45, 4213.94, 42.49), heading = 329.56, model = "prop_cactus_03"},
{ location = vector3(2636.3, 4218.49, 43.03), heading = 25.16, model = "prop_cactus_03"},
{ location = vector3(2627.37, 4223.2, 42.88), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2617.86, 4230.38, 42.63), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2609.8, 4222.12, 41.19), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2602.96, 4194.05, 41.01), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2614.39, 4188.3, 41.68), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2623.82, 4189.97, 41.44), heading = 21.52, model = "prop_cactus_03"},
}
GlobalState.Mescaline = m
Citizen.CreateThread(function() Citizen.CreateThread(function()
for _, v in pairs(Config.Mescaline) do for _, v in pairs(m) do
v.taken = false v.taken = false
end end
end) end)
@@ -10,34 +29,32 @@ end)
function MescalineCooldown(loc) function MescalineCooldown(loc)
CreateThread(function() CreateThread(function()
Wait(Config.respawnTime * 1000) Wait(Config.respawnTime * 1000)
Config.Mescaline[loc].taken = false m[loc].taken = false
GlobalState.Mescaline = Config.Mescaline GlobalState.Mescaline = m
Wait(1000)
TriggerClientEvent('Mescaline:respawnCane', -1, loc) TriggerClientEvent('Mescaline:respawnCane', -1, loc)
Log('Cactus Respawned At ' .. Config.Mescaline[loc].location, 'mescaline') Log('Cactus Respawned At ' ..m[loc].location, 'mescaline')
end) end)
end end
RegisterNetEvent("Mescaline:pickupCane", function(loc) RegisterNetEvent("Mescaline:pickupCane", function(loc)
if CheckDist(source, Config.Mescaline[loc].location) then return end if CheckDist(source, m[loc].location) then return end
if not Config.Mescaline[loc].taken then if not m[loc].taken then
Config.Mescaline[loc].taken = true m[loc].taken = true
GlobalState.Mescaline = Config.Mescaline GlobalState.Mescaline = m
TriggerClientEvent("Mescaline:removeCane", -1, loc) TriggerClientEvent("Mescaline:removeCane", -1, loc)
MescalineCooldown(loc) MescalineCooldown(loc)
AddItem(source,'cactusbulb', 1) AddItem(source,'cactusbulb', 1)
Log(GetName(source) .. ' Picked Cactus Bulbs With a distance of ' .. dist(source, Config.Mescaline[loc].location) .. ' vectors', 'mescaline')
end end
end) end)
RegisterNetEvent("md-drugs:server:drymescaline", function() RegisterNetEvent("md-drugs:server:drymescaline", function()
local src = source local src = source
if not checkLoc(src, 'singleSpot', 'DryOut') then return end
if not GetRecipe(src, 'mescaline', 'dry', 'dried') then return end if not GetRecipe(src, 'mescaline', 'dry', 'dried') then return end
Log(GetName(source) .. ' Dried Mescaline', 'mescaline')
end) end)
QBCore.Functions.CreateUseableItem("driedmescaline", function(source, item) CUI("driedmescaline", function(source, item)
local src = source local src = source
if RemoveItem(src, "driedmescaline", 1) then if RemoveItem(src, "driedmescaline", 1) then
TriggerClientEvent("md-drugs:client:takemescaline", src) TriggerClientEvent("md-drugs:client:takemescaline", src)
+2 -6
View File
@@ -4,7 +4,6 @@ RegisterServerEvent('md-drugs:server:startcook', function()
local src = source local src = source
if not GetRecipe(source, 'meth', 'cook', 'heat') then return end if not GetRecipe(source, 'meth', 'cook', 'heat') then return end
Notifys(src, "Adding Things To The Mix", "success") Notifys(src, "Adding Things To The Mix", "success")
Log(GetName(source) .. ' Started A Meth Batch', 'Meth')
end) end)
RegisterServerEvent('md-drugs:server:givemethingridients', function() RegisterServerEvent('md-drugs:server:givemethingridients', function()
@@ -25,23 +24,20 @@ end)
RegisterServerEvent('md-drugs:server:getmeth', function() RegisterServerEvent('md-drugs:server:getmeth', function()
local src = source local src = source
if not GetRecipe(src, 'meth', 'bag', 'bags') then return end if not GetRecipe(src, 'meth', 'bag', 'bags') then return end
Log(GetName(src) .. ' Bagged 5 Of Meth', 'Meth')
end) end)
RegisterServerEvent('md-drugs:server:geteph', function(num) RegisterServerEvent('md-drugs:server:geteph', function(num)
local src = source local src = source
if CheckDist(src, Config.MethEph[num]['loc']) then return end if not checkLoc(src, 'MethEph', num) then return end
if AddItem(src, 'ephedrine', 1) then if AddItem(src, 'ephedrine', 1) then
Notifys(src, 'Got Ephedrine!', "success") Notifys(src, 'Got Ephedrine!', "success")
Log(GetName(src) .. ' Got ' .. 1 .. 'Of Ephedrine', 'Meth')
end end
end) end)
RegisterServerEvent('md-drugs:server:getace', function(num) RegisterServerEvent('md-drugs:server:getace', function(num)
local src = source local src = source
if CheckDist(src, Config.Methace[num]['loc']) then return end if not checkLoc(src, 'Methace', num) then return end
if AddItem(src, 'acetone', 1) then if AddItem(src, 'acetone', 1) then
Log(GetName(src) .. ' Got ' .. 1 .. 'Of Acetone', 'Meth') Log(GetName(src) .. ' Got ' .. 1 .. 'Of Acetone', 'Meth')
Notifys(src, 'Got Acetone!', "success")
end end
end) end)
+17 -12
View File
@@ -1,9 +1,13 @@
QBCore = exports['qb-core']:GetCoreObject() QBCore = exports['qb-core']:GetCoreObject()
local prices = {
payfortruck = 500,
hotchance = 30,
itemChance = 20,
}
lib.callback.register('md-drugs:server:payfortruck', function() lib.callback.register('md-drugs:server:payfortruck', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if Player.Functions.RemoveMoney('cash', Config.TruckPrice ) or Player.Functions.RemoveMoney('bank', Config.TruckPrice ) then if Player.Functions.RemoveMoney('cash', prices.payfortruck) or Player.Functions.RemoveMoney('bank', prices.payfortruck) then
Log(GetName(src) .. ' Rented A Van For OxyRuns', 'oxy') Log(GetName(src) .. ' Rented A Van For OxyRuns', 'oxy')
return true return true
else else
@@ -17,24 +21,25 @@ RegisterServerEvent('md-drugs:server:giveoxybox', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local chance = math.random(1,100) local chance = math.random(1,100)
local cash = Config.OxyRunCompleteCash local cash = 200
local itemchance = math.random(1,100) local itemchance = math.random(1,100)
local item = Config.OxyRandItems[math.random(1, #Config.OxyRandItems)] local itemList = {
{item = 'oxy', amount = 2},
if chance <= Config.OxyRunDitchChance then {item = 'houselockpick', amount = 1},
}
local item = itemList[math.random(1, #itemList)]
if chance <= prices.hotchance then
Notifys(src, Lang.oxy.hot, "error") Notifys(src, Lang.oxy.hot, "error")
Player.Functions.AddMoney("cash", cash * 0.5) Player.Functions.AddMoney("cash", cash * 0.5)
if itemchance <= Config.OxyItemChance then if itemchance <= prices.itemChance then
AddItem(src, item, Config.OxyItemAmount) AddItem(src, item.item, item.amount)
Log(GetName(source) .. ' Got ' .. Config.OxyItemAmount .. ' Of ' .. item .. ' For This Drop Off', 'oxy')
end end
else else
Notifys(Lang.oxy.next, "success") Notifys(Lang.oxy.next, "success")
TriggerClientEvent("md-drugs:client:getoxylocationroute", src) TriggerClientEvent("md-drugs:client:getoxylocationroute", src)
Player.Functions.AddMoney("cash", cash) Player.Functions.AddMoney("cash", cash)
if itemchance <= Config.OxyItemChance then if itemchance <= prices.itemChance then
AddItem(src, item, Config.OxyItemAmount) AddItem(src, item.item, item.amount)
Log(GetName(source) .. ' Got ' .. Config.OxyItemAmount .. ' Of ' .. item .. ' For This Drop Off', 'oxy')
end end
end end
+49 -45
View File
@@ -2,72 +2,76 @@ local QBCore = exports['qb-core']:GetCoreObject()
local function GetJob(source) local function GetJob(source)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if Player.PlayerData.job.type == 'ems' then if Player.PlayerData.job.type == 'ems' then
return true return true
else else
Notifys(src, 'You Must Be EMS To Do This', 'error')
return false return false
end end
end end
QBCore.Functions.CreateUseableItem('prescription_pad', function(source, item) CUI('prescription_pad', function(source, item)
local src = source local src = source
local near = {}
if GetJob(src) then if GetJob(src) then
TriggerClientEvent("md-drugs:client:prescriptionpad", src, item) for k, v in pairs (QBCore.Functions.GetQBPlayers()) do
end local targ = QBCore.Functions.GetPlayerByCitizenId(v.PlayerData.citizenid)
end) local tname = GetName(v.PlayerData.source)
local ped, tped = GetPlayerPed(src), GetPlayerPed(v.PlayerData.source)
RegisterServerEvent('md-drugs:server:giveprescription', function(item) local dist = #(GetEntityCoords(ped) - GetEntityCoords(tped))
local src = source if dist < 5.0 then
if GetJob(src) then table.insert(near, {label = tname, value = targ.PlayerData.citizenid})
AddItem(src, item, 1) end
Log(GetName(src) .. ' Made A Prescription Of ' .. item .. '!', 'pharma') end
local options = { {label = 'Vicodin', value = 'vicodin_prescription'}, {label = 'Adderal', value = 'adderal_prescription'}, {label = 'Morphine', value = 'morphine_prescription'},{label = 'Xanax', value = 'xanax_prescription'}}
local data = lib.callback.await('md-drugs:client:prescriptionpad', src, near, options)
if type(data) == 'table' then
local give = QBCore.Functions.GetPlayerByCitizenId(data.who)
for i = 1, #options do
if data.what == options[i].value then
AddItem(give.PlayerData.source, data.what, 1)
end
end
end
end end
end) end)
RegisterServerEvent('md-drugs:server:unbottle', function(item)
local src = source
local amount = math.random(10,30)
AddItem(src, item, amount)
Log(GetName(src) .. ' Unbottled '.. amount .. ' Of ' .. item .. '!', 'pharma')
end)
local pharmabottle = {'vicodinbottle', 'adderalbottle','morphinebottle','xanaxbottle'} local pharmabottle = {'vicodinbottle', 'adderalbottle','morphinebottle','xanaxbottle'}
for m, d in pairs (pharmabottle) do for m, d in pairs (pharmabottle) do
QBCore.Functions.CreateUseableItem(d, function(source, item) CUI(d, function(source, item)
local src = source local src = source
if RemoveItem(src, d, 1) then local Player = getPlayer(src)
TriggerClientEvent("md-drugs:client:unbottle", src, item) local check = lib.callback.await("md-drugs:client:unbottle", src)
end if check then
local get = {
['vicodinbottle'] = 'vicodin',
['adderalbottle'] = 'adderal',
['morphinebottle'] = 'morphine',
['xanaxbottle'] = 'xanax'
}
for k, v in pairs (get) do
if d == k then
RemoveItem(src, d, 1)
AddItem(src, v, math.random(10,30))
Notifys(src,Lang.Pharma.unbottle, "success")
Log(GetName(src) .. ' Unbottled 30 Of ' .. v .. '!', 'pharma')
end
end
end
end) end)
end end
RegisterServerEvent('md-drugs:server:fillprescription', function() RegisterServerEvent('md-drugs:server:fillprescription', function()
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local vic = Player.Functions.GetItemByName('vicodin_prescription') local pres = {vicodin_prescription = 'vicodinbottle', adderal_prescription = 'adderalbottle', morphine_prescription = 'morphinebottle', xanax_prescription = 'xanaxbottle'}
local add = Player.Functions.GetItemByName('adderal_prescription') for k, v in pairs (pres) do
local mor = Player.Functions.GetItemByName('morphine_prescription') if Player.Functions.GetItemByName(k) then
local xan = Player.Functions.GetItemByName('xanax_prescription') RemoveItem(src, k, 1 )
if vic then AddItem(src,v, 1)
RemoveItem(src,'vicodin_prescription', 1 ) break
AddItem(src,'vicodinbottle', 1) end
Notifys(src,Lang.Pharma.pills, "success")
elseif add then
RemoveItem(src,'adderal_prescription', 1 )
AddItem(src,'adderalbottle', 1)
Notifys(src,Lang.Pharma.pills, "success")
elseif mor then
RemoveItem(src,'morphine_prescription', 1 )
AddItem(src,'morphinebottle', 1)
Notifys(src,Lang.Pharma.pills, "success")
elseif xan then
RemoveItem(src,'xanax_prescription', 1 )
AddItem(src,'xanaxbottle', 1)
Notifys(src,Lang.Pharma.pills, "success")
else
Notifys(src,Lang.Pharma.no, "error")
end end
Log(GetName(src) .. ' Filled A Prescription!', 'pharma') Log(GetName(src) .. ' Filled A Prescription!', 'pharma')
end) end)
+23 -23
View File
@@ -140,30 +140,30 @@ function GetRecipe(source, type, method, tier)
local Player = getPlayer(source) local Player = getPlayer(source)
local has = 0 local has = 0
local need = 0 local need = 0
for k, v in pairs (recipe[type][method][tier].take) do for k, v in pairs (recipe[type][method][tier].take) do
local item = Player.Functions.GetItemByName(k) local item = Player.Functions.GetItemByName(k)
if item and item.amount >= v then if item and item.amount >= v then
has = has + 1 has = has + 1
else
Notifys(src, ' You Need ' .. v .. ' Of ' .. GetLabels(k) .. ' To Do This', 'error')
end
need = need + 1
end
if has == need then
for k, v in pairs (recipe[type][method][tier].take) do
RemoveItem(src, k, v)
end
for k,v in pairs (recipe[type][method][tier].give) do
AddItem(src, k, v)
end
return true
else else
return false Notifys(src, ' You Need ' .. v .. ' Of ' .. GetLabels(k) .. ' To Do This', 'error')
end end
end need = need + 1
end
if has == need then
for k, v in pairs (recipe[type][method][tier].take) do
RemoveItem(src, k, v)
end
for k,v in pairs (recipe[type][method][tier].give) do
AddItem(src, k, v)
Log(GetName(src) .. ' Made ' .. GetLabels(k) .. '!', 'drugMaking')
end
return true
else
return false
end
end
lib.callback.register('md-drugs:server:GetRecipe', function(source, type, cat) lib.callback.register('md-drugs:server:GetRecipe', function(source, type, cat)
if not source then return false end if not source then return false end
return recipe[type][cat] return recipe[type][cat]
end) end)
@@ -1,84 +1,80 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
local loc = math.random(1, #Config.Travellingmerchant)
local stores = { local stores = {
travel = { travel = {
{name = "tab_paper", price = 50, amount = 50, }, {name = "tab_paper", price = 50, amount = 50, },
{name = "bakingsoda", price = 25, amount = 50, }, {name = "bakingsoda", price = 25, amount = 50, },
{name = "isosafrole", price = 25, amount = 50, }, {name = "isosafrole", price = 25, amount = 50, },
{name = "mdp2p", price = 25, amount = 50, }, {name = "mdp2p", price = 25, amount = 50, },
{name = "lysergic_acid", price = 25, amount = 50, }, {name = "lysergic_acid", price = 25, amount = 50, },
{name = "diethylamide", price = 25, amount = 50, }, {name = "diethylamide", price = 25, amount = 50, },
{name = "lockpick", price = 2, amount = 1000, }, {name = "lockpick", price = 2, amount = 1000, },
{name = "emptyvial", price = 2, amount = 1000, }, {name = "emptyvial", price = 2, amount = 1000, },
{name = "needle", price = 2, amount = 1000, }, {name = "needle", price = 2, amount = 1000, },
{name = "cokeburner", price = 25, amount = 50, }, {name = "cokeburner", price = 25, amount = 50, },
{name = "crackburner", price = 2, amount = 50, }, {name = "crackburner", price = 2, amount = 50, },
{name = "lsdburner", price = 2, amount = 50, }, {name = "lsdburner", price = 2, amount = 50, },
{name = "heroinburner", price = 2, amount = 50, }, {name = "heroinburner", price = 2, amount = 50, },
{name = "mdlean", price = 50, amount = 50, }, {name = "mdlean", price = 50, amount = 50, },
{name = "weedgrinder", price = 25, amount = 50, }, {name = "weedgrinder", price = 25, amount = 50, },
{name = "mdbutter", price = 25, amount = 50, }, {name = "mdbutter", price = 25, amount = 50, },
{name = "flour", price = 25, amount = 50, }, {name = "flour", price = 25, amount = 50, },
{name = "chocolate", price = 25, amount = 50, }, {name = "chocolate", price = 25, amount = 50, },
{name = "butane", price = 25, amount = 50, }, {name = "butane", price = 25, amount = 50, },
{name = "butanetorch", price = 2, amount = 1000, }, {name = "butanetorch", price = 2, amount = 1000, },
{name = "dabrig", price = 2, amount = 1000, }, {name = "dabrig", price = 2, amount = 1000, },
{name = "mdwoods", price = 2, amount = 1000, }, {name = "mdwoods", price = 2, amount = 1000, },
{name = "leancup", price = 25, amount = 50, }, {name = "leancup", price = 25, amount = 50, },
{name = "xtcburner", price = 25, amount = 50, }, {name = "xtcburner", price = 25, amount = 50, },
}, },
Weed = { Weed = {
{name = "weedgrinder", price = 25, amount = 50, }, {name = "weedgrinder", price = 25, amount = 50, },
{name = "mdbutter", price = 25, amount = 50, }, {name = "mdbutter", price = 25, amount = 50, },
{name = "flour", price = 25, amount = 50, }, {name = "flour", price = 25, amount = 50, },
{name = "chocolate", price = 25, amount = 50, }, {name = "chocolate", price = 25, amount = 50, },
{name = "butane", price = 25, amount = 50, }, {name = "butane", price = 25, amount = 50, },
{name = "butanetorch", price = 2, amount = 1000,}, {name = "butanetorch", price = 2, amount = 1000,},
{name = "dabrig", price = 2, amount = 1000,}, {name = "dabrig", price = 2, amount = 1000,},
{name = "mdwoods", price = 2, amount = 1000}, {name = "mdwoods", price = 2, amount = 1000},
}, },
Products = { Products = {
{name = "weed_white-widow_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_white-widow_seed", price = 15, amount = 150, minrep = 0},
{name = "weed_skunk_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_skunk_seed", price = 15, amount = 150, minrep = 0},
{name = "weed_purple-haze_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_purple-haze_seed", price = 15, amount = 150, minrep = 0},
{name = "weed_og-kush_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_og-kush_seed", price = 15, amount = 150, minrep = 0},
{name = "weed_amnesia_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_amnesia_seed", price = 15, amount = 150, minrep = 0},
}, },
ProductsStupidNameRewrite = { ProductsStupidNameRewrite = {
{name = "weed_whitewidow_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_whitewidow_seed", price = 15, amount = 150, minrep = 0},
{name = "weed_skunk_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_skunk_seed", price = 15, amount = 150, minrep = 0},
{name = "weed_purplehaze_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_purplehaze_seed", price = 15, amount = 150, minrep = 0},
{name = "weed_ogkush_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_ogkush_seed", price = 15, amount = 150, minrep = 0},
{name = "weed_amnesia_seed", price = 15, amount = 150, minrep = 0}, {name = "weed_amnesia_seed", price = 15, amount = 150, minrep = 0},
} }
} }
lib.callback.register('md-drugs:server:menu', function(source, data) lib.callback.register('md-drugs:server:menu', function(source, data)
local src = source local src = source
if data == 'travellingMerchant' then if data == 'travellingMerchant' then
return {table = stores.travel, des = '$', id = 'travellingMerchant', title = 'travelling Merchant'} return {table = stores.travel, des = '$', id = 'travellingMerchant', title = 'travelling Merchant'}
elseif data == 'dealermenu' then elseif data == 'dealermenu' then
local table local table
if Config.StupidassNewQbItemName then table = stores.ProductsStupidNameRewrite else table = stores.Products end if Config.StupidassNewQbItemName then table = stores.ProductsStupidNameRewrite else table = stores.Products end
return {table = table, id = 'dealermenu', title = "Dealer Menu"} return {table = table, id = 'dealermenu', title = "Dealer Menu"}
elseif data == 'WeedShop' then elseif data == 'WeedShop' then
return {table = stores.Weed, id = 'WeedShop', title = "Weed Shop"} return {table = stores.Weed, id = 'WeedShop', title = "Weed Shop"}
end end
end) end)
RegisterServerEvent("md-drugs:server:purchaseGoods", function(amount, money, item, price,table,num) RegisterServerEvent("md-drugs:server:purchaseGoods", function(amount, money, item, price,table,num)
local src = source local Player = getPlayer(src) local src = source local Player = getPlayer(src)
for i = 1, #table do for i = 1, #table do
if table[i].name == item then if table[i].name == item then
if not table[i].price == price then return end if not table[i].price == price then return end
if Player.Functions.RemoveMoney(tostring(money), tonumber(table[i].price) * tonumber(amount)) then if Player.Functions.RemoveMoney(tostring(money), tonumber(table[i].price) * tonumber(amount)) then
AddItem(src, item, amount) AddItem(src, item, amount)
Log(GetName(src) .. ' Bought ' .. amount .. ' Of ' .. item .. ' For ' .. tonumber(price) * tonumber(amount) .. '!', 'merchant') Log(GetName(src) .. ' Bought ' .. amount .. ' Of ' .. item .. ' For ' .. tonumber(price) * tonumber(amount) .. '!', 'merchant')
end end
end end
end end
end) end)
lib.callback.register('md-drugs:server:GetMerchant', function(source)
return loc
end)
+30 -12
View File
@@ -1,9 +1,27 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
GlobalState.shrooms = Config.shrooms
local s = {
{ location = vector3(2185.14, 5183.81, 57.48), heading = 334.49, model = "mushroom"},
{ location = vector3(2174.45, 5187.85, 57.43), heading = 329.56, model = "mushroom"},
{ location = vector3(2166.22, 5196.56, 58.0), heading = 25.16, model = "mushroom"},
{ location = vector3(2166.82, 5204.83, 58.63), heading = 21.52, model = "mushroom"},
{ location = vector3(2174.84, 5205.82, 59.19), heading = 334.49, model = "mushroom"},
{ location = vector3(2184.46, 5201.23, 59.2), heading = 329.56, model = "mushroom"},
{ location = vector3(2192.45, 5194.89, 58.86), heading = 25.16, model = "mushroom"},
{ location = vector3(2207.53, 5187.81, 58.95), heading = 21.52, model = "mushroom"},
{ location = vector3(2213.46, 5191.11, 59.81), heading = 334.49, model = "mushroom"},
{ location = vector3(2218.31, 5180.0, 58.18), heading = 329.56, model = "mushroom"},
{ location = vector3(2212.75, 5172.35, 57.2), heading = 25.16, model = "mushroom"},
{ location = vector3(2208.56, 5167.06, 56.34), heading = 21.52, model = "mushroom"},
{ location = vector3(2196.9, 5158.59, 54.84), heading = 21.52, model = "mushroom"},
{ location = vector3(2191.62, 5174.91, 56.68), heading = 21.52, model = "mushroom"},
{ location = vector3(2190.18, 5182.54, 57.47), heading = 21.52, model = "mushroom"},
{ location = vector3(2185.85, 5190.49, 58.1), heading = 21.52, model = "mushroom"},
{ location = vector3(2179.95, 5194.19, 58.26), heading = 21.52, model = "mushroom"},
}
GlobalState.shrooms = s
Citizen.CreateThread(function() Citizen.CreateThread(function()
for _, v in pairs(Config.shrooms) do for _, v in pairs(s) do
v.taken = false v.taken = false
end end
end) end)
@@ -12,27 +30,27 @@ end)
function shroomsCooldown(loc) function shroomsCooldown(loc)
CreateThread(function() CreateThread(function()
Wait(Config.respawnTime * 1000) Wait(Config.respawnTime * 1000)
Config.shrooms[loc].taken = false s[loc].taken = false
GlobalState.shrooms = Config.shrooms GlobalState.shrooms = s
Wait(1000) Wait(1000)
TriggerClientEvent('shrooms:respawnCane', -1, loc) TriggerClientEvent('shrooms:respawnCane', -1, loc)
Log('Cactus Respawned At ' .. Config.shrooms[loc].location, 'shrooms') Log('Cactus Respawned At ' .. s[loc].location, 'shrooms')
end) end)
end end
RegisterNetEvent("shrooms:pickupCane", function(loc) RegisterNetEvent("shrooms:pickupCane", function(loc)
if CheckDist(source, Config.shrooms[loc].location) then return end if CheckDist(source, s[loc].location) then return end
if not Config.shrooms[loc].taken then if not s[loc].taken then
Config.shrooms[loc].taken = true s[loc].taken = true
GlobalState.shrooms = Config.shrooms GlobalState.shrooms = s
TriggerClientEvent("shrooms:removeCane", -1, loc) TriggerClientEvent("shrooms:removeCane", -1, loc)
shroomsCooldown(loc) shroomsCooldown(loc)
AddItem(source, 'shrooms', 1) AddItem(source, 'shrooms', 1)
Log(GetName(source) .. ' Picked A Shroom With a distance of ' .. dist(source, Config.shrooms[loc].location) .. ' vectors', 'shrooms') Log(GetName(source) .. ' Picked A Shroom With a distance of ' .. dist(source,s[loc].location) .. ' vectors', 'shrooms')
end end
end) end)
QBCore.Functions.CreateUseableItem('shrooms', function(source, item) CUI('shrooms', function(source, item)
local src = source local src = source
if TriggerClientEvent('md-drugs:client:takeshrooms', src, item.name) then if TriggerClientEvent('md-drugs:client:takeshrooms', src, item.name) then
RemoveItem(src, 'shrooms', 1) RemoveItem(src, 'shrooms', 1)
+70 -41
View File
@@ -1,10 +1,43 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
local weedPlant = {
GlobalState.WeedPlant = Config.WeedPlant { location = vector3(1049.63, -3202.12, -36.75), heading = 334.49, model = "prop_weed_01"},
{ location = vector3(1050.85, -3202.15, -36.75), heading = 329.56, model = "prop_weed_01"},
{ location = vector3(1052.01, -3202.22, -36.75), heading = 25.16, model = "prop_weed_01"},
{ location = vector3(1052.99, -3202.15, -36.75), heading = 21.52, model = "prop_weed_01"},
{ location = vector3(1053.08, -3201.11, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1052.91, -3199.99, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1053.02, -3198.97, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1051.95, -3198.93, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1051.96, -3199.86, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1051.93, -3201.17, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1050.98, -3201.13, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1050.89, -3200.07, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1050.89, -3198.95, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1049.72, -3198.95, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1049.98, -3200.1, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1049.82, -3201.01, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1053.07, -3194.51, -36.75), heading = 334.49, model = "prop_weed_01"},
{ location = vector3(1052.97, -3195.55, -36.75), heading = 329.56, model = "prop_weed_01"},
{ location = vector3(1052.82, -3196.58, -36.75), heading = 25.16, model = "prop_weed_01"},
{ location = vector3(1052.94, -3197.59, -36.75), heading = 21.52, model = "prop_weed_01"},
{ location = vector3(1051.92, -3197.54, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1051.88, -3196.61, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1051.82, -3195.52, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1051.95, -3194.38, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1050.88, -3194.31, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1050.78, -3195.29, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1050.76, -3196.49, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1050.77, -3197.62, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1049.64, -3197.61, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1049.64, -3196.59, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1049.62, -3195.51, -36.75), heading = 202.97, model = "prop_weed_01"},
{ location = vector3(1049.66, -3194.36, -36.75), heading = 202.97, model = "prop_weed_01"},
}
GlobalState.WeedPlant = weedPlant
Citizen.CreateThread(function() Citizen.CreateThread(function()
for _, v in pairs(Config.WeedPlant) do for _, v in pairs(weedPlant) do
v.taken = false v.taken = false
end end
end) end)
@@ -12,23 +45,23 @@ end)
function WeedCooldown(loc) function WeedCooldown(loc)
CreateThread(function() CreateThread(function()
Wait(Config.respawnTime * 1000) Wait(Config.respawnTime * 1000)
Config.WeedPlant[loc].taken = false weedPlant[loc].taken = false
GlobalState.WeedPlant = Config.WeedPlant GlobalState.WeedPlant = weedPlant
Wait(1000) Wait(1000)
TriggerClientEvent('weed:respawnCane', -1, loc) TriggerClientEvent('weed:respawnCane', -1, loc)
Log('Weed Plant Respawned At ' .. Config.WeedPlant[loc].location, 'weed') Log('Weed Plant Respawned At ' .. weedPlant[loc].location, 'weed')
end) end)
end end
RegisterNetEvent("weed:pickupCane", function(loc) RegisterNetEvent("weed:pickupCane", function(loc)
local src = source if CheckDist(source, weedPlant[loc].location) then return end
if not Config.WeedPlant[loc].taken then if not weedPlant[loc].taken then
Config.WeedPlant[loc].taken = true weedPlant[loc].taken = true
GlobalState.WeedPlant = Config.WeedPlant GlobalState.WeedPlant = weedPlant
TriggerClientEvent("weed:removeCane", -1, loc) TriggerClientEvent("weed:removeCane", -1, loc)
WeedCooldown(loc) WeedCooldown(loc)
AddItem(src, 'wetcannabis', 1) AddItem(source, 'wetcannabis', 1)
Log(GetName(source) .. ' Picked Weed With a distance of ' .. dist(source, Config.WeedPlant[loc].location) .. ' vectors', 'weed') Log(GetName(source) .. ' Picked Weed With a distance of ' .. dist(source, weedPlant[loc].location) .. ' vectors', 'weed')
end end
end) end)
--------------- events --------------- events
@@ -46,19 +79,13 @@ end)
local bluntwrap = {'mdreddextro','mdlean'} local bluntwrap = {'mdreddextro','mdlean'}
for k, v in pairs (bluntwrap) do for k, v in pairs (bluntwrap) do
QBCore.Functions.CreateUseableItem(v, function(source, item) CUI(v, function(source, item) TriggerClientEvent('md-drugs:client:makeBluntWrap', source) end)
local src = source
TriggerClientEvent('md-drugs:client:makeBluntWrap', src)
end)
end end
local bluntwraps = {'leanbluntwrap', 'dextrobluntwrap', 'bluntwrap'} local bluntwraps = {'leanbluntwrap', 'dextrobluntwrap', 'bluntwrap'}
for k, v in pairs (bluntwraps) do for k, v in pairs (bluntwraps) do
QBCore.Functions.CreateUseableItem(v, function(source, item) CUI(v, function(source, item) TriggerClientEvent('md-drugs:client:rollBlunt', source) end)
local src = source
TriggerClientEvent('md-drugs:client:rollBlunt', source)
end)
end end
@@ -76,37 +103,39 @@ RegisterServerEvent('md-drugs:server:makeoil', function(data)
if not GetRecipe(src, 'weed', 'oil', 'shatter') then return end if not GetRecipe(src, 'weed', 'oil', 'shatter') then return end
end) end)
QBCore.Functions.CreateUseableItem("dabrig", function(source, item)
local src = source
local Player = getPlayer(src)
if Player.Functions.GetItemByName("butanetorch") then CUI("dabrig", function(source, item)
if RemoveItem(src, "shatter", 1) then local src = source
Notifys(src, 'test', 'success') local Player = getPlayer(src)
TriggerClientEvent("md-drugs:client:dodabs", src)
if Player.Functions.GetItemByName("butanetorch") then
if RemoveItem(src, "shatter", 1) then
TriggerClientEvent("md-drugs:client:dodabs", src)
end
else
Notifys(src, 'You Need A Butane Torch', 'error')
end end
end
end) end)
QBCore.Functions.CreateUseableItem("weedgrinder", function(source, item) CUI("weedgrinder", function(source, item)
local src = source local src = source
if RemoveItem(src, "drycannabis",1 ) then local Player = getPlayer(src)
AddItem(src, "grindedweed", 1) local has = Player.Functions.GetItemByName("drycannabis")
TriggerClientEvent("md-drugs:client:grind", src) if not has then Notifys(src, 'You Need Dried Cannabis', 'error') return end
else local check = lib.callback.await('md-drugs:client:uncuff', src, 'Grinding Weed')
Notifys(src,'You Need Dried Weed', 'error') if not check then return end
end if RemoveItem(src, "drycannabis",1 ) then
AddItem(src, "grindedweed", 1)
end
end) end)
QBCore.Functions.CreateUseableItem("mdwoods", function(source, item) CUI("mdwoods", function(source, item)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
TriggerClientEvent("md-drugs:client:rollanim", src) local check = lib.callback.await('md-drugs:client:uncuff', src, 'Breaking Blunt Open')
Wait(4000) if not check then return end
if RemoveItem(src, "mdwoods",1 ) then if RemoveItem(src, "mdwoods",1 ) then
AddItem(src, "bluntwrap", 5) AddItem(src, "bluntwrap", 5)
AddItem(src, "tobacco", 5) AddItem(src, "tobacco", 5)
end end
end) end)
+57 -146
View File
@@ -1,157 +1,68 @@
local QBCore = exports['qb-core']:GetCoreObject()
local coke = { "cokebaggy", "cokebaggystagethree", "cokebaggystagetwo"} local coke = { "cokebaggy", "cokebaggystagethree", "cokebaggystagetwo"}
local crack = {"baggedcracked", "baggedcrackedstagetwo", "baggedcrackedstagethree"} local crack = {"baggedcracked", "baggedcrackedstagetwo", "baggedcrackedstagethree"}
local lsd = {'smiley_tabs', 'yinyang_tabs', 'wildcherry_tabs', 'pineapple_tabs', 'bart_tabs', 'gratefuldead_tabs'} local lsd = {'smiley_tabs', 'yinyang_tabs', 'wildcherry_tabs', 'pineapple_tabs', 'bart_tabs', 'gratefuldead_tabs'}
local heroin = {'heroin_ready', 'heroin_readystagetwo', 'heroin_readystagethree'} local heroin = {'heroin_ready', 'heroin_readystagetwo', 'heroin_readystagethree'}
local xtc = {"white_playboys", "white_playboys2", "white_playboys3", "white_playboys4", "blue_playboys", "blue_playboys2", "blue_playboys3", "blue_playboys4", "red_playboys", "red_playboys2", "red_playboys3", "red_playboys4", "orange_playboys", "orange_playboy2s", "orange_playboys3", "orange_playboys4", "white_aliens", "white_aliens2", "white_aliens3", "white_aliens4", "blue_aliens", "blue_aliens2", "blue_aliens3", "blue_aliens4", "red_aliens", "red_aliens3", "red_aliens2", "red_aliens4", "orange_aliens", "orange_aliens2", "orange_aliens3", "orange_aliens4", "white_pl", "white_pl2", "white_pl3", "white_pl4", "blue_pl", "blue_pl2", "blue_pl3", "blue_pl4", "red_pl", "red_pl2", "red_pl3", "red_pl4", "orange_pl", "orange_pl2", "orange_pl3", "orange_pl4", "white_trolls", "white_trolls2", "white_trolls3", "white_trolls4", "blue_trolls", "blue_trolls2", "blue_trolls3", "blue_trolls4", "red_trolls", "red_trolls2", "red_trolls3", "red_trolls4", "orange_trolls", "orange_trolls2", "orange_trolls3", "orange_trolls4", "white_cats2", "white_cats3", "white_cats4", "white_cats", "blue_cats", "blue_cats3", "blue_cats2", "blue_cats4", "red_cats", "red_cats2", "red_cats3", "red_cats4", "orange_cats", "orange_cats2", "orange_cats3", "orange_cats4" } local xtc = {"white_playboys", "white_playboys2", "white_playboys3", "white_playboys4", "blue_playboys", "blue_playboys2", "blue_playboys3", "blue_playboys4", "red_playboys", "red_playboys2", "red_playboys3", "red_playboys4", "orange_playboys", "orange_playboy2s", "orange_playboys3", "orange_playboys4", "white_aliens", "white_aliens2", "white_aliens3", "white_aliens4", "blue_aliens", "blue_aliens2", "blue_aliens3", "blue_aliens4", "red_aliens", "red_aliens3", "red_aliens2", "red_aliens4", "orange_aliens", "orange_aliens2", "orange_aliens3", "orange_aliens4", "white_pl", "white_pl2", "white_pl3", "white_pl4", "blue_pl", "blue_pl2", "blue_pl3", "blue_pl4", "red_pl", "red_pl2", "red_pl3", "red_pl4", "orange_pl", "orange_pl2", "orange_pl3", "orange_pl4", "white_trolls", "white_trolls2", "white_trolls3", "white_trolls4", "blue_trolls", "blue_trolls2", "blue_trolls3", "blue_trolls4", "red_trolls", "red_trolls2", "red_trolls3", "red_trolls4", "orange_trolls", "orange_trolls2", "orange_trolls3", "orange_trolls4", "white_cats2", "white_cats3", "white_cats4", "white_cats", "blue_cats", "blue_cats3", "blue_cats2", "blue_cats4", "red_cats", "red_cats2", "red_cats3", "red_cats4", "orange_cats", "orange_cats2", "orange_cats3", "orange_cats4" }
local burners = {cokeburner = coke, crackburner = crack, lsdburner = lsd, heroinburner = heroin, xtcburner = xtc}
local active = {}
QBCore.Functions.CreateUseableItem("cokeburner", function(source, item) local Price = {
local src = source coke = {min = 20, max = 60},
local Player = getPlayer(source) crack = {min = 20, max = 60},
TriggerClientEvent("md-drugs:client:GetLocation", src, 'coke', "Bring Me All The Coke You Have") lsd = {min = 20, max = 60},
end) heroin = {min = 20, max = 60},
xtc = {min = 20, max = 60},
}
RegisterServerEvent('md-drugs:server:wholesalecoke', function() for k, v in pairs (burners) do
local src = source CUI(k, function(source, item)
local src = source
local Player = getPlayer(src)
if getCops() < Config.PoliceCount then return Notifys(src, Lang.Wholesale.na, 'error') end
for m, d in pairs (active) do
if d.cid == Player.PlayerData.citizenid then
return Notifys(src, Lang.Wholesale.al, 'error' )
end
end
local tab = ''
if k == 'cokeburner' then tab = 'coke' end
if k == 'crackburner' then tab = 'crack' end
if k == 'lsdburner' then tab = 'lsd' end
if k == 'heroinburner' then tab = 'heroin' end
if k == 'xtcburner' then tab = 'xtc' end
if RemoveItem(src, k, 1) then
table.insert(active, {
src = src,
item = k,
location = getRandW(src),
cid = Player.PlayerData.citizenid,
type = v,
price = Price[tab]
})
for m, d in pairs (active) do
if d.cid == Player.PlayerData.citizenid then
TriggerClientEvent("md-drugs:client:GetLocation", src, active[m])
end
end
end
end)
end
RegisterNetEvent('md-drugs:server:SuccessSale', function(data)
local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
local price = math.random(Config.Wcoke.min, Config.Wcoke.max) for k, v in pairs (active) do
for k, v in pairs(coke) do if v.cid == Player.PlayerData.citizenid then
local item = Player.Functions.GetItemByName(v) local payout = math.random(v.price.min, v.price.max)
for m, d in pairs (v.type) do
if item and item.amount > 0 then local git = Player.Functions.GetItemByName(d)
local removed = Player.Functions.RemoveItem(v, item.amount) if git and git.amount >= 1 then
Player.Functions.AddMoney("cash", item.amount * price) RemoveItem(src, d, git.amount)
Notifys("You received " .. item.amount * price .. " Dollars!" , "success") Player.Functions.AddMoney('cash', git.amount * payout)
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale') end
table.remove(active, k)
end
end end
end end
end) end)
QBCore.Functions.CreateUseableItem("crackburner", function(source, item)
local src = source
local Player = getPlayer(source)
TriggerClientEvent("md-drugs:client:GetLocation", src, 'crack', "Bring Me All The Crack You Have")
end)
RegisterServerEvent('md-drugs:server:wholesalecrack', function()
local src = source
local Player = getPlayer(src)
local price = math.random(Config.Wcrack.min, Config.Wcrack.max)
for k, v in pairs(crack) do
local item = Player.Functions.GetItemByName(v)
if item and item.amount > 0 then
local removed = Player.Functions.RemoveItem(v, item.amount)
Player.Functions.AddMoney("cash", item.amount * price)
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
end
end
end)
----------------- lsd
QBCore.Functions.CreateUseableItem("lsdburner", function(source, item)
local src = source
local Player = getPlayer(source)
TriggerClientEvent("md-drugs:client:GetLocation", src, 'lsd', "Bring Me All The lsd You Have")
end)
RegisterServerEvent('md-drugs:server:wholesalelsd', function()
local src = source
local Player = getPlayer(src)
local price = math.random(Config.Wlsd.min, Config.Wlsd.max)
for k, v in pairs(lsd) do
local item = Player.Functions.GetItemByName(v)
if item and item.amount > 0 then
local removed = Player.Functions.RemoveItem(v, item.amount)
Player.Functions.AddMoney("cash", item.amount * price)
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
end
end
end)
----------------- heroin
QBCore.Functions.CreateUseableItem("heroinburner", function(source, item)
local src = source
local Player = getPlayer(source)
TriggerClientEvent("md-drugs:client:GetLocation", src, 'heroin', "Bring Me All The Heroin You Have")
end)
RegisterServerEvent('md-drugs:server:wholesaleheroin', function()
local src = source
local Player = getPlayer(src)
local price = math.random(Config.WHeroin.min, Config.WHeroin.max)
for k, v in pairs(heroin) do
local item = Player.Functions.GetItemByName(v)
if item and item.amount > 0 then
local removed = Player.Functions.RemoveItem(v, item.amount)
Player.Functions.AddMoney("cash", item.amount * price)
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
end
end
end)
---- xtc
QBCore.Functions.CreateUseableItem("xtcburner", function(source, item)
local src = source
local Player = getPlayer(source)
TriggerClientEvent("md-drugs:client:GetLocation", src, 'xtc', "Bring Me All The xtc You Have")
end)
RegisterServerEvent('md-drugs:server:wholesalextc', function()
local src = source
local Player = getPlayer(src)
local price = math.random(Config.WXTC.min, Config.WXTC.max)
for k, v in pairs(xtc) do
local item = Player.Functions.GetItemByName(v)
if item and item.amount > 0 then
local removed = Player.Functions.RemoveItem(v, item.amount)
Player.Functions.AddMoney("cash", item.amount * price)
Notifys("You received " .. item.amount * price .. " Dollars!" , "success")
Log(GetName(source) .. ' Wholesaled Drugs ', 'wholesale')
end
end
end)
RegisterServerEvent('md-drugs:server:RemoveBurner', function(item)
local src = source
local Player = getPlayer(src)
if item == 'coke' then
if Player.Functions.RemoveItem('cokeburner', 1) then
else
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
end
elseif item == 'crack' then
if Player.Functions.RemoveItem('crackburner', 1) then
else
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
end
elseif item == 'heroin' then
if Player.Functions.RemoveItem('heroinburner', 1) then
else
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
end
elseif item == 'lsd' then
if Player.Functions.RemoveItem('lsdburner', 1) then
else
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
end
elseif item == 'xtc' then
if Player.Functions.RemoveItem('xtcburner', 1) then
else
DropPlayer(src, 'How Did You Trigger The Event Without The Item?')
end
end
end)
+82 -114
View File
@@ -1,20 +1,19 @@
local QBCore = exports['qb-core']:GetCoreObject() local QBCore = exports['qb-core']:GetCoreObject()
-------------------- stealing ingridients -------------------- stealing ingridients
local activePresses = {}
RegisterServerEvent('md-drugs:server:stealisosafrole', function(num) RegisterServerEvent('md-drugs:server:stealisosafrole', function(num)
local src = source local src = source
local Player = getPlayer(src) if not checkLoc(src, 'isosafrole',num) then return end
if CheckDist(source, Config.isosafrole[num]['loc']) then return end
if AddItem(src, "isosafrole", 1) then if AddItem(src, "isosafrole", 1) then
Log(GetName(source) .. ' Stole isosafrole with a distance of ' .. dist(source, Config.isosafrole[num]['loc']) .. ' vectors!', 'xtc')
end end
end) end)
RegisterServerEvent('md-drugs:server:stealmdp2p', function(num) RegisterServerEvent('md-drugs:server:stealmdp2p', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if CheckDist(source, Config.mdp2p[num]['loc']) then return end if not checkLoc(src, 'mdp2p',num) then return end
if AddItem(src,"mdp2p", 1) then if AddItem(src,"mdp2p", 1) then
Log(GetName(source) .. ' Stole MDP2P with a distance of ' .. dist(source, Config.mdp2p[num]['loc']) .. ' vectors!', 'xtc')
end end
end) end)
@@ -25,12 +24,21 @@ local presses = {
{item = 'quadpress', data = 'quad'}, {item = 'quadpress', data = 'quad'},
} }
for k, v in pairs (presses) do for k, v in pairs (presses) do
QBCore.Functions.CreateUseableItem(v.item, function(source, item) CUI(v.item, function(source, item)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if TriggerClientEvent("md-drugs:client:setpress", src, v.data) then local check, loc = lib.callback.await('md-drugs:client:setpress', src, v.data)
RemoveItem(src, v.item, 1) if check then
Log(GetName(source) .. ' Placed A ' .. v.item .. ' At ' .. GetCoords(source) .. '!', 'xtc') if RemoveItem(src, v.item, 1) then
table.insert(activePresses, {
press = v.data,
get = v.item,
owner = GetName(src),
ownerid = Player.PlayerData.citizenid,
src = src,
loc = loc
})
end
end end
end) end)
end end
@@ -38,85 +46,75 @@ end
RegisterServerEvent('md-drugs:server:getpressback', function(type) RegisterServerEvent('md-drugs:server:getpressback', function(type)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if type == 'single' then for k, v in pairs (activePresses) do
if Player.Functions.GetItemByName('singlepress') then Notifys(src, 'You Already Have A Kit') return end if v.ownerid == Player.PlayerData.citizenid then
AddItem(src, 'singlepress', 1) if v.press == type then
Log(GetName(source) .. ' Picked Their Single Press At ' .. GetCoords(source) .. '!', 'xtc') table.remove(activePresses, k)
elseif type == 'dual' then AddItem(src, v.get, 1)
if Player.Functions.GetItemByName('dualpress') then Notifys(src, 'You Already Have A Kit') return end end
AddItem(src, 'dualpress', 1) end
Log(GetName(source) .. ' Picked Their Dual Press At ' .. GetCoords(source) .. '!', 'xtc') end
elseif type == 'triple' then
if Player.Functions.GetItemByName('triplepress') then Notifys(src, 'You Already Have A Kit') return end
AddItem(src, 'triplepress', 1)
Log(GetName(source) .. ' Picked Their Triple Press At ' .. GetCoords(source) .. '!', 'xtc')
elseif type == 'quad' then
if Player.Functions.GetItemByName('quadpress') then Notifys(src, 'You Already Have A Kit') return end
AddItem(src, 'quadpress', 1)
Log(GetName(source) .. ' Picked Their Quad Press At ' .. GetCoords(source) .. '!', 'xtc')
end
end) end)
local function pressout(source)
local src = source
local Player = getPlayer(src)
local ped = GetPlayerPed(src)
local coords = GetEntityCoords(ped)
for k, v in pairs (activePresses) do
if v.ownerid == Player.PlayerData.citizenid then
if #(coords - v.loc) < 3.0 then
return v.press
end
end
end
return 'none'
end
RegisterServerEvent('md-drugs:server:makextc', function(data) RegisterServerEvent('md-drugs:server:makextc', function(data)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if not Itemcheck(src, 'raw_xtc', 1) then return end if not Itemcheck(src, 'raw_xtc', 1) then return end
if data.data == 'single' then if pressout(src) == 'none' then return end
if pressout(src) == 'single' then
if data.color == 'white' then if data.color == 'white' then
if not GetRecipe(src, 'xtc', 'singlestack', 'white') then return end if not GetRecipe(src, 'xtc', 'singlestack', 'white') then return end
Log(GetName(source) .. ' Made A Single Stack White Pill!', 'xtc')
elseif data.color == 'red' then elseif data.color == 'red' then
if not GetRecipe(src, 'xtc', 'singlestack', 'red') then return end if not GetRecipe(src, 'xtc', 'singlestack', 'red') then return end
Log(GetName(source) .. ' Made A Single Stack Red Pill!', 'xtc')
elseif data.color == 'orange' then elseif data.color == 'orange' then
if not GetRecipe(src, 'xtc', 'singlestack', 'orange') then return end if not GetRecipe(src, 'xtc', 'singlestack', 'orange') then return end
Log(GetName(source) .. ' Made A Single Stack Orange Pill!', 'xtc')
elseif data.color == 'blue' then elseif data.color == 'blue' then
if not GetRecipe(src, 'xtc', 'singlestack', 'blue') then return end if not GetRecipe(src, 'xtc', 'singlestack', 'blue') then return end
Log(GetName(source) .. ' Made A Single Stack Blue Pill!', 'xtc')
end end
elseif data.data == 'dual' then elseif pressout(src) == 'dual' then
if data.color == 'white' then if data.color == 'white' then
if not GetRecipe(src, 'xtc', 'dualstack', 'white') then return end if not GetRecipe(src, 'xtc', 'dualstack', 'white') then return end
Log(GetName(source) .. ' Made A Dual Stack White Pill!', 'xtc')
elseif data.color == 'red' then elseif data.color == 'red' then
if not GetRecipe(src, 'xtc', 'dualstack', 'red') then return end if not GetRecipe(src, 'xtc', 'dualstack', 'red') then return end
Log(GetName(source) .. ' Made A Dual Stack Red Pill!', 'xtc')
elseif data.color == 'orange' then elseif data.color == 'orange' then
if not GetRecipe(src, 'xtc', 'dualstack', 'orange') then return end if not GetRecipe(src, 'xtc', 'dualstack', 'orange') then return end
Log(GetName(source) .. ' Made A Dual Stack Orange Pill!', 'xtc')
elseif data.color == 'blue' then elseif data.color == 'blue' then
if not GetRecipe(src, 'xtc', 'dualstack', 'blue') then return end if not GetRecipe(src, 'xtc', 'dualstack', 'blue') then return end
Log(GetName(source) .. ' Made A Dual Stack Blue Pill!', 'xtc')
end end
elseif data.data == 'triple' then elseif pressout(src) == 'triple' then
if data.color == 'white' then if data.color == 'white' then
if not GetRecipe(src, 'xtc', 'triplestack', 'white') then return end if not GetRecipe(src, 'xtc', 'triplestack', 'white') then return end
Log(GetName(source) .. ' Made A Triple Stack White Pill!', 'xtc')
elseif data.color == 'red' then elseif data.color == 'red' then
if not GetRecipe(src, 'xtc', 'triplestack', 'red') then return end if not GetRecipe(src, 'xtc', 'triplestack', 'red') then return end
Log(GetName(source) .. ' Made A Triple Stack Red Pill!', 'xtc')
elseif data.color == 'orange' then elseif data.color == 'orange' then
if not GetRecipe(src, 'xtc', 'triplestack', 'orange') then return end if not GetRecipe(src, 'xtc', 'triplestack', 'orange') then return end
Log(GetName(source) .. ' Made A Triple Stack Orange Pill!', 'xtc')
elseif data.color == 'blue' then elseif data.color == 'blue' then
if not GetRecipe(src, 'xtc', 'triplestack', 'blue') then return end if not GetRecipe(src, 'xtc', 'triplestack', 'blue') then return end
Log(GetName(source) .. ' Made A Triple Stack Blue Pill!', 'xtc')
end end
elseif data.data == 'quad' then elseif pressout(src) == 'quad' then
if data.color == 'white' then if data.color == 'white' then
if not GetRecipe(src, 'xtc', 'quadstack', 'white') then return end if not GetRecipe(src, 'xtc', 'quadstack', 'white') then return end
Log(GetName(source) .. ' Made A Quad Stack White Pill!', 'xtc')
elseif data.color == 'red' then elseif data.color == 'red' then
if not GetRecipe(src, 'xtc', 'quadstack', 'red') then return end if not GetRecipe(src, 'xtc', 'quadstack', 'red') then return end
Log(GetName(source) .. ' Made A Quad Stack Red Pill!', 'xtc')
elseif data.color == 'orange' then elseif data.color == 'orange' then
if not GetRecipe(src, 'xtc', 'quadstack', 'orange') then return end if not GetRecipe(src, 'xtc', 'quadstack', 'orange') then return end
Log(GetName(source) .. ' Made A Quad Stack Orange Pill!', 'xtc')
elseif data.color == 'blue' then elseif data.color == 'blue' then
if not GetRecipe(src, 'xtc', 'quadstack', 'blue') then return end if not GetRecipe(src, 'xtc', 'quadstack', 'blue') then return end
Log(GetName(source) .. ' Made A Quad Stack Blue Pill!', 'xtc')
end end
end end
end) end)
@@ -135,17 +133,12 @@ RegisterServerEvent('md-drugs:server:buypress', function()
RegisterServerEvent('md-drugs:server:upgradepress', function(data) RegisterServerEvent('md-drugs:server:upgradepress', function(data)
local src = source local src = source
if CheckDist(source, Config.buypress) then return end
if data == 'dual' then if data == 'dual' then
if not GetRecipe(src, 'xtc', 'press', 'dual') then return end if not GetRecipe(src, 'xtc', 'press', 'dual') then return end
Log(GetName(source) .. ' Upgraded Press To Dual Press', 'xtc')
elseif data == 'triple' then elseif data == 'triple' then
if not GetRecipe(src, 'xtc', 'press', 'triple') then return end if not GetRecipe(src, 'xtc', 'press', 'triple') then return end
Log(GetName(source) .. ' Upgraded Press To Triple Press', 'xtc')
elseif data == 'quad' then elseif data == 'quad' then
if not GetRecipe(src, 'xtc', 'press', 'quad') then return end if not GetRecipe(src, 'xtc', 'press', 'quad') then return end
Log(GetName(source) .. ' Upgraded Press To Quad Press', 'xtc')
else else
Notifys(src, 'huh', 'error') Notifys(src, 'huh', 'error')
end end
@@ -153,38 +146,29 @@ end)
------------- making powder ------------- making powder
RegisterServerEvent('md-drugs:server:makingrawxtc', function(num) RegisterServerEvent('md-drugs:server:makingrawxtc', function(num)
local src = source local src = source
local Player = getPlayer(src) local Player = getPlayer(src)
if CheckDist(source, Config.rawxtcloc[num]['loc']) then return end if not checkLoc(src, 'rawxtcloc',num) then return end
if not GetRecipe(src, 'xtc', 'raw', 'raw_xtc') then return end if not GetRecipe(src, 'xtc', 'raw', 'raw_xtc') then return end
Log(GetName(source) .. ' Made Raw XTC With A Distance Of ' .. dist(source, Config.rawxtcloc[num]['loc']) .. '!', 'xtc')
end) end)
RegisterServerEvent('md-drugs:server:stampwhite', function(num) RegisterServerEvent('md-drugs:server:stampwhite', function(num)
local src = source local src = source
local Player = getPlayer(src) local one = {'white_playboys', 'white_aliens', 'white_pl', 'white_trolls', 'white_cats'}
local one = {'white_playboys', 'white_aliens', 'white_pl', 'white_trolls', 'white_cats'} local chance = math.random(#one)
local chance = math.random(#one) local two = {'white_playboys2', 'white_aliens2', 'white_pl2', 'white_trolls2', 'white_cats2'}
local two = {'white_playboys2', 'white_aliens2', 'white_pl2', 'white_trolls2', 'white_cats2'} local three = {'white_playboys3', 'white_aliens3', 'white_pl3', 'white_trolls3', 'white_cats3'}
local chance2 = math.random(#one) local four = {'white_playboys4', 'white_aliens4', 'white_pl4', 'white_trolls4', 'white_cats4'}
local three = {'white_playboys3', 'white_aliens3', 'white_pl3', 'white_trolls3', 'white_cats3'} if not checkLoc(src, 'stamp', num) then return end
local chance3 = math.random(#one)
local four = {'white_playboys4', 'white_aliens4', 'white_pl4', 'white_trolls4', 'white_cats4'}
local chance4 = math.random(#one)
if CheckDist(source, Config.stamp[num]['loc']) then return end
if RemoveItem(src, "white_xtc", 1) then if RemoveItem(src, "white_xtc", 1) then
AddItem(src, one[chance], 1) AddItem(src, one[chance], 1)
Log(GetName(source) .. ' Stamped A Single White Pill And Got ' .. one[chance] .. '!', 'xtc')
elseif RemoveItem(src, "white_xtc2", 1) then elseif RemoveItem(src, "white_xtc2", 1) then
AddItem(src, two[chance2], 1) AddItem(src, two[chance], 1)
Log(GetName(source) .. ' Stamped A Dual White Pill And Got ' .. two[chance2] .. '!', 'xtc')
elseif RemoveItem(src, "white_xtc3", 1) then elseif RemoveItem(src, "white_xtc3", 1) then
AddItem(src, three[chance3], 1) AddItem(src, three[chance], 1)
Log(GetName(source) .. ' Stamped A Triple White Pill And Got ' .. three[chance3] .. '!', 'xtc')
elseif RemoveItem(src, "white_xtc4", 1) then elseif RemoveItem(src, "white_xtc4", 1) then
AddItem(src, four[chance4], 1) AddItem(src, four[chance], 1)
Log(GetName(source) .. ' Stamped A Quad White Pill And Got ' .. four[chance4] .. '!', 'xtc')
else else
Notifys('You Dont Have Unstamped White Pills', 'error') Notifys('You Dont Have Unstamped White Pills', 'error')
end end
@@ -192,30 +176,21 @@ end)
RegisterServerEvent('md-drugs:server:stampred', function(num) RegisterServerEvent('md-drugs:server:stampred', function(num)
local src = source local src = source
local Player = getPlayer(src)
local one = {'red_playboys', 'red_aliens', 'red_pl', 'red_trolls', 'red_cats'} local one = {'red_playboys', 'red_aliens', 'red_pl', 'red_trolls', 'red_cats'}
local chance = math.random(#one) local chance = math.random(#one)
local two = {'red_playboys2', 'red_aliens2', 'red_pl2', 'red_trolls2', 'red_cats2'} local two = {'red_playboys2', 'red_aliens2', 'red_pl2', 'red_trolls2', 'red_cats2'}
local chance2 = math.random(#one)
local three = {'red_playboys3', 'red_aliens3', 'red_pl3', 'red_trolls3', 'red_cats3'} local three = {'red_playboys3', 'red_aliens3', 'red_pl3', 'red_trolls3', 'red_cats3'}
local chance3 = math.random(#one)
local four = {'red_playboys4', 'red_aliens4', 'red_pl4', 'red_trolls4', 'red_cats4'} local four = {'red_playboys4', 'red_aliens4', 'red_pl4', 'red_trolls4', 'red_cats4'}
local chance4 = math.random(#one) if not checkLoc(src, 'stamp', num) then return end
local playerPed = GetPlayerPed(source)
if CheckDist(source, Config.stamp[num]['loc']) then return end
if RemoveItem(src, "red_xtc", 1) then if RemoveItem(src, "red_xtc", 1) then
AddItem(src, one[chance], 1) AddItem(src, one[chance], 1)
Log(GetName(source) .. ' Stamped A Single Red Pill And Got ' .. one[chance] .. '!', 'xtc')
elseif RemoveItem(src, "red_xtc2", 1) then elseif RemoveItem(src, "red_xtc2", 1) then
AddItem(src, two[chance2], 1) AddItem(src, two[chance], 1)
Log(GetName(source) .. ' Stamped A Dual Red Pill And Got ' .. two[chance2] .. '!', 'xtc')
elseif RemoveItem(src, "red_xtc3", 1) then elseif RemoveItem(src, "red_xtc3", 1) then
AddItem(src, three[chance3], 1) AddItem(src, three[chance], 1)
Log(GetName(source) .. ' Stamped A Triple Red Pill And Got ' .. three[chance3] .. '!', 'xtc')
elseif RemoveItem(src, "red_xtc4", 1) then elseif RemoveItem(src, "red_xtc4", 1) then
AddItem(src, four[chance4], 1) AddItem(src, four[chance], 1)
Log(GetName(source) .. ' Stamped A Quad Red Pill And Got ' .. four[chance4] .. '!', 'xtc')
else else
Notifys('You Dont Have Unstamped red Pills', 'error') Notifys('You Dont Have Unstamped red Pills', 'error')
end end
@@ -223,30 +198,21 @@ end)
RegisterServerEvent('md-drugs:server:stamporange', function(num) RegisterServerEvent('md-drugs:server:stamporange', function(num)
local src = source local src = source
local Player = getPlayer(src)
local one = {'orange_playboys', 'orange_aliens', 'orange_pl', 'orange_trolls', 'orange_cats'} local one = {'orange_playboys', 'orange_aliens', 'orange_pl', 'orange_trolls', 'orange_cats'}
local chance = math.random(#one)
local two = {'orange_playboys2', 'orange_aliens2', 'orange_pl2', 'orange_trolls2', 'orange_cats2'} local two = {'orange_playboys2', 'orange_aliens2', 'orange_pl2', 'orange_trolls2', 'orange_cats2'}
local chance2 = math.random(#one)
local three = {'orange_playboys3', 'orange_aliens3', 'orange_pl3', 'orange_trolls3', 'orange_cats3'} local three = {'orange_playboys3', 'orange_aliens3', 'orange_pl3', 'orange_trolls3', 'orange_cats3'}
local chance3 = math.random(#one)
local four = {'orange_playboys4', 'orange_aliens4', 'orange_pl4', 'orange_trolls4', 'orange_cats4'} local four = {'orange_playboys4', 'orange_aliens4', 'orange_pl4', 'orange_trolls4', 'orange_cats4'}
local chance4 = math.random(#one) local chance = math.random(#one)
local playerPed = GetPlayerPed(source) if not checkLoc(src, 'stamp', num) then return end
if CheckDist(source, Config.stamp[num]['loc']) then return end
if RemoveItem(src, "orange_xtc", 1) then if RemoveItem(src, "orange_xtc", 1) then
AddItem(src, one[chance], 1) AddItem(src, one[chance], 1)
Log(GetName(source) .. ' Stamped A Single Orange Pill And Got ' .. one[chance] .. '!', 'xtc')
elseif RemoveItem(src, "orange_xtc2", 1) then elseif RemoveItem(src, "orange_xtc2", 1) then
AddItem(src, two[chance2], 1) AddItem(src, two[chance], 1)
Log(GetName(source) .. ' Stamped A Dual Orange Pill And Got ' .. two[chance2] .. '!', 'xtc')
elseif RemoveItem(src, "orange_xtc3", 1) then elseif RemoveItem(src, "orange_xtc3", 1) then
AddItem(src, three[chance3], 1) AddItem(src, three[chance], 1)
Log(GetName(source) .. ' Stamped A Triple Orange Pill And Got ' .. three[chance3] .. '!', 'xtc')
elseif RemoveItem(src, "orange_xtc4", 1) then elseif RemoveItem(src, "orange_xtc4", 1) then
AddItem(src, four[chance4], 1) AddItem(src, four[chance], 1)
Log(GetName(source) .. ' Stamped A Quad Orange Pill And Got ' .. four[chance4] .. '!', 'xtc')
else else
Notifys('You Dont Have Unstamped orange Pills', 'error') Notifys('You Dont Have Unstamped orange Pills', 'error')
end end
@@ -254,30 +220,32 @@ end)
RegisterServerEvent('md-drugs:server:stampblue', function(num) RegisterServerEvent('md-drugs:server:stampblue', function(num)
local src = source local src = source
local Player = getPlayer(src)
local one = {'blue_playboys', 'blue_aliens', 'blue_pl', 'blue_trolls', 'blue_cats'} local one = {'blue_playboys', 'blue_aliens', 'blue_pl', 'blue_trolls', 'blue_cats'}
local chance = math.random(#one) local chance = math.random(#one)
local two = {'blue_playboys2', 'blue_aliens2', 'blue_pl2', 'blue_trolls2', 'blue_cats2'} local two = {'blue_playboys2', 'blue_aliens2', 'blue_pl2', 'blue_trolls2', 'blue_cats2'}
local chance2 = math.random(#one)
local three = {'blue_playboys3', 'blue_aliens3', 'blue_pl3', 'blue_trolls3', 'blue_cats3'} local three = {'blue_playboys3', 'blue_aliens3', 'blue_pl3', 'blue_trolls3', 'blue_cats3'}
local chance3 = math.random(#one)
local four = {'blue_playboys4', 'blue_aliens4', 'blue_pl4', 'blue_trolls4', 'blue_cats4'} local four = {'blue_playboys4', 'blue_aliens4', 'blue_pl4', 'blue_trolls4', 'blue_cats4'}
local chance4 = math.random(#one) if not checkLoc(src, 'stamp', num) then return end
local playerPed = GetPlayerPed(source)
if CheckDist(source, Config.stamp[num]['loc']) then return end
Log(GetName(source) .. ' Stamped A Single Blue Pill And Got ' .. one[chance] .. '!', 'xtc')
if RemoveItem(src, "blue_xtc", 1) then if RemoveItem(src, "blue_xtc", 1) then
AddItem(src, one[chance], 1) AddItem(src, one[chance], 1)
elseif RemoveItem(src, "blue_xtc2", 1) then elseif RemoveItem(src, "blue_xtc2", 1) then
AddItem(src, two[chance2], 1) AddItem(src, two[chance], 1)
Log(GetName(source) .. ' Stamped A Dual Blue Pill And Got ' .. two[chance2] .. '!', 'xtc')
elseif RemoveItem(src, "blue_xtc3", 1) then elseif RemoveItem(src, "blue_xtc3", 1) then
AddItem(src, three[chance3], 1) AddItem(src, three[chance], 1)
Log(GetName(source) .. ' Stamped A Triple Blue Pill And Got ' .. three[chance3] .. '!', 'xtc')
elseif RemoveItem(src, "blue_xtc4", 1) then elseif RemoveItem(src, "blue_xtc4", 1) then
AddItem(src, four[chance4], 1) AddItem(src, four[chance], 1)
Log(GetName(source) .. ' Stamped A Quad Blue Pill And Got ' .. four[chance4] .. '!', 'xtc')
else else
Notifys('You Dont Have Unstamped blue Pills', 'error') Notifys('You Dont Have Unstamped blue Pills', 'error')
end end
end)
AddEventHandler('playerDropped', function()
local src = source
local Player = getPlayer(src)
for k, v in pairs (activePresses) do
if v.ownerid == Player.PlayerData.citizenid then
table.remove(activePresses, k)
AddItem(src, v.get, 1)
end
end
end) end)
+15 -300
View File
@@ -1,11 +1,21 @@
Config = {} --Ignore. Config = {} --Ignore.
Config.Target = 'ox' -- qb or ox
Config.respawnTime = 150 -- Seconds Config.respawnTime = 150 -- Seconds
Config.Fuel = "LegacyFuel" -- type the name of script you use i.e. ps-fuel, cdn-fuel, LegacyFuel Config.Fuel = "LegacyFuel" -- type the name of script you use i.e. ps-fuel, cdn-fuel, LegacyFuel
Config.TierSystem = true -- allows for three tiers of certain drugs ( coke, heroin, crack, lsd) Config.TierSystem = true -- allows for three tiers of certain drugs ( coke, heroin, crack, lsd)
Config.StupidassNewQbItemName = true -- true if you have updated your items.lua from base qb after november 2023 because changing item names this far in a framework is 3 IQ points total Config.StupidassNewQbItemName = true -- true if you have updated your items.lua from base qb after november 2023 because changing item names this far in a framework is 3 IQ points total
Config.RequestModelTime = 30000 -- if you need more time than this, uhhhh wow Config.RequestModelTime = 30000 -- if you need more time than this, uhhhh wow
Config.FancyCokeAnims = true -- if you want multi location this needs to be false
Config.Joblock = false -- if you want weed to be a job
Config.weedjob = "" -- what the job name is
Config.Badtrip = 20 -- number means % chance to spawn a clone that chases and attacks while on mescaline
Config.MethHeist = false
Config.SuccessfulChance = 90 --- this is the chance of a Success wholesale 1-100
Config.AlertPoliceWholesale = 90 -- 1-100 of how often it will alert police
Config.WholesaleTimeout = 600 -- time in seconds to get to the location
Config.PoliceCount = 0 -- Amount of police required
Config.PoliceAlertOxy = 90 -- This is a % out of 100 to alert police
----------------------------------- TierSystem levels ** ONLY IN USE IF CONFIG.TIERSYTEM IS TRUE ----------------------------------- TierSystem levels ** ONLY IN USE IF CONFIG.TIERSYTEM IS TRUE
Config.Tier1 = 100 -- amount to hit for level 2 Config.Tier1 = 100 -- amount to hit for level 2
@@ -16,7 +26,8 @@ Config.progressbartype = 'oxcir' -- either 'qb', 'oxcir', 'oxbar'
Config.Notify = 'ox' -- -- either 'qb' or 'ox' or 'okok' Config.Notify = 'ox' -- -- either 'qb' or 'ox' or 'okok'
Config.Phone = 'qb' -- either 'qb' or 'yflip' or 'qs' Config.Phone = 'qb' -- either 'qb' or 'yflip' or 'qs'
Config.Dispatch = 'ps' -- either 'ps', 'cd', 'core', 'aty' Config.Dispatch = 'ps' -- either 'ps', 'cd', 'core', 'aty'
Config.Target = 'ox' -- qb or ox
Config.Inventory = 'ox' -- qb or ox, other if you dont use ox just mark as qb
Config.Minigames = { Config.Minigames = {
ps_circle = {amount = 2, speed = 8,}, ps_circle = {amount = 2, speed = 8,},
ps_maze = {timelimit = 15}, ps_maze = {timelimit = 15},
@@ -34,304 +45,8 @@ Config.Minigames = {
glpath = {gridSize = 19, lives = 3, timelimit = 10000}, glpath = {gridSize = 19, lives = 3, timelimit = 10000},
glspot = {gridSize = 6, timeLimit = 999999, charSet = "alphabet", required = 10}, glspot = {gridSize = 6, timeLimit = 999999, charSet = "alphabet", required = 10},
glmath = {timeLimit = 300000}, glmath = {timeLimit = 300000},
} }
Config.minigametype = 'ox' -- look above for options or choose none if you dont want any minigames Config.minigametype = 'ox' -- look above for options or choose none if you dont want any minigames
------------- you can either set a gang or leave it blank, if blank it will autopopulate data to not require it :) -------- Woah Where did like all the locations go?
------------- Cocaine -- new animations require to be in a certain spot or they get fucky. uses bob74 ipl if you turn Config.FancyCokeAnims you can put it anywhere :) --- read the readme to find out
Config.FancyCokeAnims = true -- if you want multi location this needs to be false
Config.CokeTeleIn = vector3(198.16, -1276.92, 29.33)-- where you target to go inside
Config.CokeTeleOut = vector3(1088.81, -3187.57, -38.99) -- where you target to leave
Config.MakePowder = { -- where you chop your coca leaves to make powder
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1090.15, -3199.5, -39.18), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(1093.09, -3199.53, -39.05), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.CuttingCoke = { -- only active if Config.FancyCokeAnims = false
{loc = vector3(1095.61, -3195.62, -39.13), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.BaggingCoke = { -- only active if Config.FancyCokeAnims = false
{loc = vector3(1100.3, -3199.42, -39.19), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
---------------- Crack locations
Config.makecrack = { -- make crack with baking soda with cut coke 1-3
{loc = vector3(2434.07, 4969.39, 42.35), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.bagcrack = { --- bag crack 1-3 stages
{loc = vector3(2435.85, 4965.3, 42.35), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
------------------------- LSD Locations
Config.lysergicacid = { -- get lysergic acid
{loc = vector3(-1381.21, -327.75, 39.85), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(2405.53, 5008.39, 46.02), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.diethylamide = { -- get diethylamide
{loc = vector3(-1371.71, -316.02, 39.53), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(2408.38, 5011.18, 46.08), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.gettabs = { -- buy tab paper
{loc = vector3(-1370.77, -314.51, 39.58), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
{loc = vector3(2409.59, 5012.45, 46.09), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.buylsdlabkit = vector4(2598.47, 5033.06, 105.86, 283.51)-- buy lab kit
Config.tabcost = 100 -- price per piece of tab paper event does 10 at a time
Config.lsdlabkitcost = 10000 -- price of the lsd lab kit
------------------------- Heroin Locations
Config.dryplant = { -- turn resin into powder
{loc = vector3(-1353.77, -335.58, 43.92), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.cutheroinone = { -- cut heroin stage 1-3 with baking soda
{loc = vector3(-1360.14, -337.03, 43.92), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.fillneedle = { -- fill needles with heroin
{loc = vector3(-1366.32, -334.40, 44.44), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.buyheroinlabkit = vector4(-1358.77, -339.12, 43.92, 302.13) -- buy heroin lab kit
Config.heroinlabkitprice = 10000 -- price of the lsd lab kit
------------ XTC
Config.isosafrole = { -- where to steal isosafrole
{loc = vector3(844.39, -902.92, 25.42), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.mdp2p = { -- where to steal mdp2p
{loc = vector3(844.4, -898.79, 25.23), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.rawxtcloc = { -- where to combine the 2 ingridents to make raw xtc
{loc = vector3(844.71, -910.33, 25.37), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.stamp = { -- where to stamp pills
{loc = vector3(844.71, -900.56, 25.43), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.buypress = vector3(845.82, -884.79, 25.18)-- Where you buy your presses
----- mescaline
Config.DryOut = vector3(2638.22, 4237.93, 44.78) -- Place to dry out mescaline into usuable drug
Config.Badtrip = 20 -- number means % chance to spawn a clone that chases and attacks while on mescaline
-------------- lean
Config.SyrupVendor = vector4(365.21, -578.77, 39.30, 347.23) -- where the mission ped starts
Config.StartLoc = {
vector3(-2307.22, 434.77, 174.47), -- where the truck spawns
vector3(614.75, 1786.26, 199.39),
vector3(-224.89, 6388.32, 31.59)
}
---------- Pharma
Config.FillPrescription = {---------- this is where you want people to take their prescription to get a bottle of pills. They use bottle to get a random amount of prescription pills
{loc = vector3(2432.89, 4252.2, 36.35), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.PharmaJob = "ems" -- what TYPE role you need to be on to get the command
-------------- weed
Config.Teleout = vector3(1066.31, -3183.36, -39.16) -- where you target to tele in
Config.Telein = vector3(244.74, 374.54, 105.74) -- where you target to tele out
Config.MakeButter = vector3(1045.48, -3198.49, -38.22) -- where you make cannabutter and baked edibles
Config.MakeOil = vector3(1038.90, -3198.66, -38.17) -- where you make shatter
Config.WeedSaleman = vector4(1030.77, -3203.18, -38.2, 262.37)
Config.WeedDry = { -- where you dry leaves
{loc = vector3(1043.0, -3191.59, -38.39),},
{loc = vector3(1041.0, -3191.59, -38.39),},
{loc = vector3(1045.0, -3191.59, -38.39),},
{loc = vector3(1039.0, -3191.59, -38.39),},
}
Config.Joblock = false -- if you want weed to be a job
Config.weedjob = "" -- what the job name is
----------------- Wholesale
Config.SuccessfulChance = 90 --- this is the chance of a Success wholesale 1-100
Config.AlertPoliceWholesale = 90 -- 1-100 of how often it will alert police
Config.WholesaleTimeout = 600 -- time in seconds to get to the location
Config.PoliceCount = 0 -- Amount of police required
Config.Wcoke = { min = 20, max = 60} -- pricings per item
Config.Wcrack = { min = 20, max = 60} -- pricings per item
Config.Wlsd = { min = 20, max = 60} -- pricings per item
Config.WXTC = { min = 20, max = 60} -- pricings per item
--- travelling merchant
Config.Travellingmerchant = { ------------ these are the random locations the merchant can spawn on script start. whatever you want for the merchant is in Config.Items right below
vector4(-119.66, -977.43, 304.25, 88.21),
vector4(-1522.93, 1476.01, 111.45, 41.25),
vector4(-3278.98, 973.38, 5.35, 101.53),
}
--------------------------------------- oxy runs
---- How oxyruns work. You pay for a truck, you get in it and it gives a route. There is a 20% chance that the car will be "hot" and you have to ditch it. No Routes will spawn if that pops up
----- when you get to the drop off point third eye the truck. You will carry a box to the ped. He will give you cash, some oxy and maybe a random item. Rinse and repeat
Config.truckspawn = vector4(1450.87, -1482.13, 63.22, 69.95) --- where the truck will spawn when you pay for it
Config.Payfortruck = vector3(1437.64, -1491.91, 63.62) --- where you pay for the truck
Config.TruckPrice = 500 -- amount the truck will cost to rent
Config.OxyRunCompleteCash = 200 -- base price you get for completeing a run. 50% if the car needs to be ditched
Config.OxyRunDitchChance = 20 -- % of a fail mission and having to ditch the car and not get a new order
Config.OxyItemChance = 50 -- chance to recieve an item from the OxyRandItems list below
Config.OxyItemAmount = 1 -- amount of the item you recieve when you get an item from OxyRandItems
Config.PoliceAlertOxy = 90 -- This is a % out of 100 to alert police
Config.oxylocations = { -- These are different locations where a ped spawns.
vector4(-2352.32, 266.78, 165.3, 23.46),
vector4(-1467.49, 874.01, 183.59, 298.45),
vector4(-856.71, 874.26, 202.85, 205.3),
vector4(950.58, -128.49, 74.42, 205.3),
vector4(1152.71, -328.43, 69.21, 205.3),
vector4(112.66, -1955.67, 20.75, 37.94),
vector4(-544.4, -1684.8, 19.89, 252.07),
vector4(-1185.02, -1805.4, 3.91, 184.83),
vector4(-1641.4, -981.99, 7.58, 35.38),
vector4(-1827.93, 782.36, 138.29, 219.99),
vector4(-320.84, 2818.73, 59.45, 337.22),
vector4(474.88, 2609.56, 44.48, 357.0),
}
Config.OxyRandItems = { -- random items you get for completing the mission
"oxy",
"lockpick",
"cryptostick",
}
---------------------- Meth Config
Config.MethTeleIn = vector3(-2222.04, 303.99, 174.6) -- where you target to tele in
Config.MethTeleOut = vector3(996.91, -3200.83, -36.39) -- where you target to tele out
Config.MethHeist = false
Config.MethHeistStart = vector3(-1102.93, -3066.76, 14.00) -- where you get the mission to get ingridients if meth heist = true
Config.MethEph = {
{loc = vector3(3559.86, 3673.9, 28.13), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
Config.Methace = {
{loc = vector3(3535.41, 3661.05, 28.12), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
----------------------------- these are the locations where props will be spawned to be picked
Config.CocaPlant = {
{ location = vector3(1474.25, -2643.87, 42.88), heading = 334.49, model = "prop_plant_01a" },
{ location = vector3(1472.35, -2649.3, 41.87), heading = 329.56, model = "prop_plant_01a" },
{ location = vector3(1475.7, -2652.9, 40.8), heading = 25.16, model = "prop_plant_01a" },
{ location = vector3(1481.0, -2654.99, 39.86), heading = 21.52, model = "prop_plant_01a" },
{ location = vector3(1480.9, -2660.63, 38.68), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1477.18, -2666.53, 38.19), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1477.58, -2670.82, 37.73), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1476.56, -2675.82, 37.46), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1474.8, -2680.19, 37.03), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1471.52, -2685.0, 36.82), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1462.82, -2676.58, 38.83), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1461.31, -2667.74, 39.67), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1456.3, -2647.61, 43.39), heading = 202.97, model = "prop_plant_01a" },
{ location = vector3(1453.65, -2641.56, 45.0), heading = 202.97, model = "prop_plant_01a" },
}
Config.WeedPlant = {
{ location = vector3(1049.63, -3202.12, -39.15), heading = 334.49, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1050.85, -3202.15, -39.15), heading = 329.56, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1052.01, -3202.22, -39.13), heading = 25.16, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1052.99, -3202.15, -39.15), heading = 21.52, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1053.08, -3201.11, -39.13), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1052.91, -3199.99, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1053.02, -3198.97, -39.11), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1051.95, -3198.93, -39.11), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1051.96, -3199.86, -39.12), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1051.93, -3201.17, -39.12), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1050.98, -3201.13, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1050.89, -3200.07, -39.12), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1050.89, -3198.95, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1049.72, -3198.95, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1049.98, -3200.1, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1049.82, -3201.01, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1053.07, -3194.51, -39.15), heading = 334.49, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1052.97, -3195.55, -39.15), heading = 329.56, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1052.82, -3196.58, -39.15), heading = 25.16, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1052.94, -3197.59, -39.15), heading = 21.52, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1051.92, -3197.54, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1051.88, -3196.61, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1051.82, -3195.52, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1051.95, -3194.38, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1050.88, -3194.31, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1050.78, -3195.29, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1050.76, -3196.49, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1050.77, -3197.62, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1049.64, -3197.61, -39.14), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1049.64, -3196.59, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1049.62, -3195.51, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
{ location = vector3(1049.66, -3194.36, -39.15), heading = 202.97, model = "bkr_prop_weed_lrg_01b"},
}
Config.PoppyPlants = {
{ location = vector3(-2251.3, -99.18, 100.11), heading = 334.49, model = "prop_plant_01b"},
{ location = vector3(-2249.63, -92.97, 101.8), heading = 329.56, model = "prop_plant_01b"},
{ location = vector3(-2245.57, -85.12, 104.5), heading = 25.16, model = "prop_plant_01b"},
{ location = vector3(-2240.81, -88.48, 105.88), heading = 21.52, model = "prop_plant_01b"},
{ location = vector3(-2240.87, -93.36, 103.88), heading = 334.49, model = "prop_plant_01b"},
{ location = vector3(-2236.0, -95.34, 102.55), heading = 329.56, model = "prop_plant_01b"},
{ location = vector3(-2240.6, -100.01, 100.49), heading = 25.16, model = "prop_plant_01b"},
{ location = vector3(-2246.29, -104.92, 99.27), heading = 21.52, model = "prop_plant_01b"},
{ location = vector3(-2243.64, -107.99, 96.71), heading = 334.49, model = "prop_plant_01b"},
{ location = vector3(-2254.22, -108.76, 97.25), heading = 329.56, model = "prop_plant_01b"},
{ location = vector3(-2247.33, -108.92, 97.70), heading = 25.16, model = "prop_plant_01b"},
{ location = vector3(-2250.96, -111.22, 97.50), heading = 21.52, model = "prop_plant_01b"},
{ location = vector3(465.95, -1021.32, 31.78), heading = 21.52, model = "prop_plant_01b"},
}
Config.shrooms = {
{ location = vector3(2185.14, 5183.81, 57.48), heading = 334.49, model = "mushroom"},
{ location = vector3(2174.45, 5187.85, 57.43), heading = 329.56, model = "mushroom"},
{ location = vector3(2166.22, 5196.56, 58.0), heading = 25.16, model = "mushroom"},
{ location = vector3(2166.82, 5204.83, 58.63), heading = 21.52, model = "mushroom"},
{ location = vector3(2174.84, 5205.82, 59.19), heading = 334.49, model = "mushroom"},
{ location = vector3(2184.46, 5201.23, 59.2), heading = 329.56, model = "mushroom"},
{ location = vector3(2192.45, 5194.89, 58.86), heading = 25.16, model = "mushroom"},
{ location = vector3(2207.53, 5187.81, 58.95), heading = 21.52, model = "mushroom"},
{ location = vector3(2213.46, 5191.11, 59.81), heading = 334.49, model = "mushroom"},
{ location = vector3(2218.31, 5180.0, 58.18), heading = 329.56, model = "mushroom"},
{ location = vector3(2212.75, 5172.35, 57.2), heading = 25.16, model = "mushroom"},
{ location = vector3(2208.56, 5167.06, 56.34), heading = 21.52, model = "mushroom"},
{ location = vector3(2196.9, 5158.59, 54.84), heading = 21.52, model = "mushroom"},
{ location = vector3(2191.62, 5174.91, 56.68), heading = 21.52, model = "mushroom"},
{ location = vector3(2190.18, 5182.54, 57.47), heading = 21.52, model = "mushroom"},
{ location = vector3(2185.85, 5190.49, 58.1), heading = 21.52, model = "mushroom"},
{ location = vector3(2179.95, 5194.19, 58.26), heading = 21.52, model = "mushroom"},
}
Config.Mescaline = {
{ location = vector3(2598.73, 4207.89, 41.02), heading = 334.49, model = "prop_cactus_03"},
{ location = vector3(2601.46, 4199.34, 40.62), heading = 329.56, model = "prop_cactus_03"},
{ location = vector3(2611.63, 4194.18, 41.18), heading = 25.16, model = "prop_cactus_03"},
{ location = vector3(2620.18, 4202.69, 41.5), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2624.26, 4211.75, 42.34), heading = 334.49, model = "prop_cactus_03"},
{ location = vector3(2635.21, 4207.5, 42.49), heading = 329.56, model = "prop_cactus_03"},
{ location = vector3(2644.97, 4193.51, 42.11), heading = 25.16, model = "prop_cactus_03"},
{ location = vector3(2654.21, 4195.31, 41.23), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2653.32, 4206.49, 41.62), heading = 334.49, model = "prop_cactus_03"},
{ location = vector3(2647.45, 4213.94, 42.49), heading = 329.56, model = "prop_cactus_03"},
{ location = vector3(2636.3, 4218.49, 43.03), heading = 25.16, model = "prop_cactus_03"},
{ location = vector3(2627.37, 4223.2, 42.88), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2617.86, 4230.38, 42.63), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2609.8, 4222.12, 41.19), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2602.96, 4194.05, 41.01), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2614.39, 4188.3, 41.68), heading = 21.52, model = "prop_cactus_03"},
{ location = vector3(2623.82, 4189.97, 41.44), heading = 21.52, model = "prop_cactus_03"},
}
-142
View File
@@ -3,145 +3,3 @@ Consumables.defaulttime = 4000
Consumables.defaultanim = 'pflag2' Consumables.defaultanim = 'pflag2'
Consumables.defaultprogresstext = 'Consuming ' -- it will always show the label of the item being used after what you put here, make sure to keep the space at the end :) Consumables.defaultprogresstext = 'Consuming ' -- it will always show the label of the item being used after what you put here, make sure to keep the space at the end :)
Consumables.defaultstatval = 0 Consumables.defaultstatval = 0
--[[
effect options
alien
ecstacy
meth
coke
trevor
none
]]
--[[
add = {}
health = number -- amount of health to give
stress = number -- number of stress to give
speed = number -- number of seconds you a fast boi
hunger = number -- number of hunger to fill
thirst = number -- same shit
strength = number -- how long you are strong boi
]]
Consumables.Items = {
-- meth
methbags = { time = 4000, effect = 'meth', anim = "smoke", progressbartext = "Injesting",
add = {health = -20, stress = -10, speed = 40, strength = 10, thirst = -30}},
cokebaggy = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
cokebaggystagetwo = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
cokebaggystagethree = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
-- heroin
heroin_ready = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
heroin_readystagetwo = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
heroin_readystagethree = { anim = 'shootup', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
-- crack
baggedcracked = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
baggedcrackedstagetwo = { anim = 'smell', time = 1000, effect = 'coke', add = { stress = -10 }},
baggedcrackedstagethree = { anim = 'smell', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
-- xtc
white_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_playboys2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_playboys = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_playboy2s = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_playboys3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_playboys4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_aliens = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_aliens2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_aliens3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_aliens4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_pl = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_pl2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_pl3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_pl4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_trolls = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_trolls2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_trolls3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_trolls4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
white_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
blue_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
red_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_cats = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_cats2 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_cats3 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
orange_cats4 = { anim = 'edible', time = 1000, effect = 'ecstacy', add = { stress = -10 }},
-- weed
specialbrownie = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
specialcookie = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
specialchocolate = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
specialmuffin = { anim = 'edible', effect = 'alien', add = { hunger = 10, stress = -10 }},
blunt = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
dextroblunts = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
leanblunts = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
chewyblunt = { anim = 'smokeweed', effect = 'alien', add = { stress = -10 }},
-- lean
cupofdextro = { anim = 'cup', effect = 'alien', add = { stress = -10 }},
cupoflean = { anim = 'cup', effect = 'alien', add = { stress = -10 }},
-- lsd
smiley_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
wildcherry_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
yinyang_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
pineapple_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
bart_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
gratefuldead_tabs = { anim = 'edible', effect = 'trevor', add = { stress = -10 }},
-- pharma
vicodin = { anim = 'pill', effect = 'none', add = { health = 20 }},
adderal = { anim = 'pill', effect = 'none', add = { stress = -20 }},
morphine = { anim = 'pill', effect = 'none', add = { health = 40 }},
xanax = { anim = 'pill', effect = 'none', add = { stress = -40 }},
}
+8 -4
View File
@@ -35,7 +35,8 @@ Lang.targets = {
vial = 'Make Vial', vial = 'Make Vial',
}, },
lean = { lean = {
git = 'Get Task' git = 'Get Task',
st = 'Steal From Car'
}, },
lsd = { lsd = {
buy = 'Buy LSD Lab Kit', buy = 'Buy LSD Lab Kit',
@@ -172,7 +173,8 @@ Lang.Heroin = {
novial = "How Can You Make Heroin Vials Without Heroin Idiot", novial = "How Can You Make Heroin Vials Without Heroin Idiot",
fail = 'You Over Heated Them Idiot', fail = 'You Over Heated Them Idiot',
fill = 'Filled The Syringe', fill = 'Filled The Syringe',
nofill = 'How Are You Going To Fill Needles Of Heroin Without Heroin' nofill = 'How Are You Going To Fill Needles Of Heroin Without Heroin',
haskit = 'You Already Have A Heroin Lab Kit'
} }
Lang.Lean = { Lang.Lean = {
marked = ' Car Has Been Marked On Your Map', marked = ' Car Has Been Marked On Your Map',
@@ -288,5 +290,7 @@ Lang.xtc = {
} }
Lang.Wholesale = { Lang.Wholesale = {
al = 'Already Called Someone!' al = 'You Already Have A Delivery To Make',
} na = 'No One Answered, Try Again Later',
}
+3 -221
View File
@@ -1,233 +1,15 @@
QBConfig = {} QBConfig = {}
----------- qb-drugs update built in here below ----------- qb-drugs update built in here below
----------- Everything is now a target and not displaytext. Dealers are no longer just doors, they will spawn peds where you place your dealer. This is a literally qb-drugs with SLIGHT edits. mainly added peds for deliveries, made everything a target ----------- Everything is now a target and not displaytext. Dealers are no longer just doors, they will spawn peds where you place your dealer. This is a literally qb-drugs with SLIGHT edits. mainly added peds for deliveries, made everything a target
------------ and changed the range a ped will walk up to you to be a bigger radius.
QBConfig.MinimumDrugSalePolice = 0 QBConfig.MinimumDrugSalePolice = 0
QBConfig.MarkedBills = true -- if false on both options below then it auto converts selling to give cash QBConfig.MarkedBills = false -- if false on both options below then it auto converts selling to give cash
QBConfig.CustomDirtyMoney = false QBConfig.CustomDirtyMoney = false
QBConfig.CustomDirtyMoneyitem = '' QBConfig.CustomDirtyMoneyitem = ''
QBConfig.DrugsPrice = {
-- base qb
["weed_white-widow"] = {rep = 1,min = 15, max = 24 },
["weed_og-kush"] = {rep = 1,min = 15, max = 28 },
["weed_skunk"] = {rep = 1,min = 15, max = 31 },
["weed_amnesia"] = {rep = 1,min = 18, max = 34 },
["weed_purple-haze"] = {rep = 1,min = 18, max = 37},
["weed_ak47"] = {rep = 1,min = 18, max = 40},
["crack_baggy"] = {rep = 1,min = 18, max = 34},
["cokebaggy"] = {rep = 1,min = 18, max = 37},
-- cokerep = 1,
["cokebaggystagetwo"] = {rep = 1,min = 18, max = 40},
["cokebaggystagethree"] = {rep = 1,min = 18, max = 40},
-- heroin rep = 1,
["heroin_ready"] = {rep = 1,min = 18, max = 40},
["heroin_readystagetwo"] = {rep = 1,min = 18, max = 40},
["heroin_readystagethree"] = {rep = 1,min = 18, max = 40},
-- crackrep = 1,
["baggedcracked"] = {rep = 1,min = 18, max = 40},
["baggedcrackedstagetwo"] = {rep = 1,min = 18, max = 40},
["baggedcrackedstagethree"] = {rep = 1,min = 18, max = 40},
-- xtc rep = 1,
["white_playboys"] = {rep = 1,min = 18, max = 40},
["white_playboys2"] = {rep = 1,min = 18, max = 40},
["white_playboys3"] = {rep = 1,min = 18, max = 40},
["white_playboys4"] = {rep = 1,min = 18, max = 40},
["blue_playboys"] = {rep = 1,min = 18, max = 40},
["blue_playboys2"] = {rep = 1,min = 18, max = 40},
["blue_playboys3"] = {rep = 1,min = 18, max = 40},
["blue_playboys4"] = {rep = 1,min = 18, max = 40},
["red_playboys"] = {rep = 1,min = 18, max = 40},
["red_playboys2"] = {rep = 1,min = 18, max = 40},
["red_playboys3"] = {rep = 1,min = 18, max = 40},
["red_playboys4"] = {rep = 1,min = 18, max = 40},
["orange_playboys"] = {rep = 1,min = 18, max = 40},
["orange_playboys2"] = {rep = 1,min = 18, max = 40},
["orange_playboys3"] = {rep = 1,min = 18, max = 40},
["orange_playboys4"] = {rep = 1,min = 18, max = 40},
["white_aliens"] = {rep = 1,min = 18, max = 40},
["white_aliens2"] = {rep = 1,min = 18, max = 40},
["white_aliens3"] = {rep = 1,min = 18, max = 40},
["white_aliens4"] = {rep = 1,min = 18, max = 40},
["blue_aliens"] = {rep = 1,min = 18, max = 40},
["blue_aliens2"] = {rep = 1,min = 18, max = 40},
["blue_aliens3"] = {rep = 1,min = 18, max = 40},
["blue_aliens4"] = {rep = 1,min = 18, max = 40},
["red_aliens"] = {rep = 1,min = 18, max = 40},
["red_aliens2"] = {rep = 1,min = 18, max = 40},
["red_aliens3"] = {rep = 1,min = 18, max = 40},
["red_aliens4"] = {rep = 1,min = 18, max = 40},
["orange_aliens"] = {rep = 1,min = 18, max = 40},
["orange_aliens2"] = {rep = 1,min = 18, max = 40},
["orange_aliens3"] = {rep = 1,min = 18, max = 40},
["orange_aliens4"] = {rep = 1,min = 18, max = 40},
["white_pl"] = {rep = 1,min = 18, max = 40},
["white_pl2"] = {rep = 1,min = 18, max = 40},
["white_pl3"] = {rep = 1,min = 18, max = 40},
["white_pl4"] = {rep = 1,min = 18, max = 40},
["blue_pl"] = {rep = 1,min = 18, max = 40},
["blue_pl2"] = {rep = 1,min = 18, max = 40},
["blue_pl3"] = {rep = 1,min = 18, max = 40},
["blue_pl4"] = {rep = 1,min = 18, max = 40},
["red_pl"] = {rep = 1,min = 18, max = 40},
["red_pl2"] = {rep = 1,min = 18, max = 40},
["red_pl3"] = {rep = 1,min = 18, max = 40},
["red_pl4"] = {rep = 1,min = 18, max = 40},
["orange_pl"] = {rep = 1,min = 18, max = 40},
["orange_pl2"] = {rep = 1,min = 18, max = 40},
["orange_pl3"] = {rep = 1,min = 18, max = 40},
["orange_pl4"] = {rep = 1,min = 18, max = 40},
["white_trolls"] = {rep = 1,min = 18, max = 40},
["white_trolls2"] = {rep = 1,min = 18, max = 40},
["white_trolls3"] = {rep = 1,min = 18, max = 40},
["white_trolls4"] = {rep = 1,min = 18, max = 40},
["blue_trolls"] = {rep = 1,min = 18, max = 40},
["blue_trolls2"] = {rep = 1,min = 18, max = 40},
["blue_trolls3"] = {rep = 1,min = 18, max = 40},
["blue_trolls4"] = {rep = 1,min = 18, max = 40},
["red_trolls"] = {rep = 1,min = 18, max = 40},
["red_trolls2"] = {rep = 1,min = 18, max = 40},
["red_trolls3"] = {rep = 1,min = 18, max = 40},
["red_trolls4"] = {rep = 1,min = 18, max = 40},
["orange_trolls"] = {rep = 1,min = 18, max = 40},
["orange_trolls2"] = {rep = 1,min = 18, max = 40},
["orange_trolls3"] = {rep = 1,min = 18, max = 40},
["orange_trolls4"] = {rep = 1,min = 18, max = 40},
["white_cats"] = {rep = 1,min = 18, max = 40},
["white_cats2"] = {rep = 1,min = 18, max = 40},
["white_cats3"] = {rep = 1,min = 18, max = 40},
["white_cats4"] = {rep = 1,min = 18, max = 40},
["blue_cats"] = {rep = 1,min = 18, max = 40},
["blue_cats2"] = {rep = 1,min = 18, max = 40},
["blue_cats3"] = {rep = 1,min = 18, max = 40},
["blue_cats4"] = {rep = 1,min = 18, max = 40},
["red_cats"] = {rep = 1,min = 18, max = 40},
["red_cats2"] = {rep = 1,min = 18, max = 40},
["red_cats3"] = {rep = 1,min = 18, max = 40},
["red_cats4"] = {rep = 1,min = 18, max = 40},
["orange_cats"] = {rep = 1,min = 18, max = 40},
["orange_cats2"] = {rep = 1,min = 18, max = 40},
["orange_cats3"] = {rep = 1,min = 18, max = 40},
["orange_cats4"] = {rep = 1,min = 18, max = 40},
-- weed stuffrep = 1,
["blunts"] = {rep = 1,min = 18, max = 40},
["leanblunts"] = {rep = 1,min = 18, max = 40},
["dextroblunts"] = {rep = 1,min = 18, max = 40},
["chewyblunt"] = {rep = 1,min = 18, max = 40},
["blunt"] = {rep = 1,min = 18, max = 40},
["specialchocolate"] = {rep = 1,min = 18, max = 40},
["specialbrownie"] = {rep = 1,min = 18, max = 40},
["specialcookie"] = {rep = 1,min = 18, max = 40},
["specialmuffin"] = {rep = 1,min = 18, max = 40},
["shatter"] = {rep = 1,min = 18, max = 40},
["ciggie"] = {rep = 1,min = 18, max = 40},
-- methrep = 1,
["methbags"] = {rep = 1,min = 18, max = 40},
-- mescalinerep = 1,
["driedmescaline"] = {rep = 1,min = 18, max = 40},
-- shroomsrep = 1,
["shrooms"] = {rep = 1,min = 18, max = 40},
-- LSDrep = 1,
["gratefuldead_tabs"] = {rep = 1,min = 18, max = 40},
["bart_tabs"] = {rep = 1,min = 18, max = 40},
["pineapple_tabs"] = {rep = 1,min = 18, max = 40},
["yinyang_tabs"] = {rep = 1,min = 18, max = 40},
["wildcherry_tabs"] = {rep = 1,min = 18, max = 40},
["smiley_tabs"] = {rep = 1,min = 18, max = 40},
-- lean
["cupoflean"] = {rep = 1,min = 18, max = 40},
["cupofdextro"] = {rep = 1,min = 18, max = 40},
}
QBConfig.Dealers = {} QBConfig.Dealers = {}
QBConfig.DeliveryItems = { -- Delivery locations and items is now in server/deliveries.lua
{ item = "weed_brick", minrep = 0, payout = {min = 10, max = 50}}, -- cornerselling pricing and rep is now in server/cornerselling.lua
{ item = "coke_brick", minrep = 0, payout = {min = 10, max = 50}},
}
QBConfig.DeliveryLocations = {
[1] = { ["label"] = "Pork Factory", ["coords"] = vector3(-296.27, -1300.54, 31.31),},
[2] = { ["label"] = "Forum Drive Deli", ["coords"] = vector3(-36.69, -1492.13, 31.22),},
[3] = { ["label"] = "Hayes Autos South LS", ["coords"] = vector3(282.55, -1814.39, 27.1),},
[4] = { ["label"] = "Grove Street", ["coords"] = vector3(54.55, -1873.15, 22.8),},
[5] = { ["label"] = "Port1", ["coords"] = vector3(-269.4, -2437.15, 6.36),},
[6] = { ["label"] = "Port2", ["coords"] = vector3(269.16, -3248.54, 5.79),},
[7] = { ["label"] = "Port3", ["coords"] = vector3(632.9, -3015.42, 7.34),},
[8] = { ["label"] = "Industrial1", ["coords"] = vector3(1049.52, -2427.96, 30.3),},
[9] = { ["label"] = "Industrial2", ["coords"] = vector3(853.26, -2207.3, 30.68),},
[10] = { ["label"] = "Industrial3", ["coords"] = vector3(903.02, -1721.94, 32.18),},
[11] = { ["label"] = "EastLS1", ["coords"] = vector3(1289.33, -1710.47, 55.51),},
[12] = { ["label"] = "EastLS2", ["coords"] = vector3(1411.94, -1490.54, 60.66),},
[13] = { ["label"] = "Industrial4", ["coords"] = vector3(734.26, -1311.26, 27.01),},
[14] = { ["label"] = "Industrial5", ["coords"] = vector3(1231.6, -1083.06, 38.53),},
[15] = { ["label"] = "Mirror1", ["coords"] = vector3(1143.55, -1000.19, 45.32),},
[16] = { ["label"] = "Mirror2", ["coords"] = vector3(1264.82, -702.87, 64.72),},
[17] = { ["label"] = "Mirror3", ["coords"] = vector3(1119.65, -639.76, 56.81),},
[18] = { ["label"] = "Mirror4", ["coords"] = vector3(1129.59, -462.59, 66.49),},
[19] = { ["label"] = "City1", ["coords"] = vector3(42.8, -811.45, 31.43),},
[20] = { ["label"] = "City2", ["coords"] = vector3(-509.48, -1001.66, 23.55),},
[21] = { ["label"] = "City3", ["coords"] = vector3(-830.97, -862.41, 20.69),},
[22] = { ["label"] = "Vesp1", ["coords"] = vector3(-1320.26, -1177.34, 4.89),},
[23] = { ["label"] = "Vesp2", ["coords"] = vector3(-1097.63, -1673.24, 8.4),},
[24] = { ["label"] = "Vesp3", ["coords"] = vector3(-1147.61, -1452.1, 4.6),},
[25] = { ["label"] = "Vesp4", ["coords"] = vector3(-1241.69, -1208.39, 8.52),},
[26] = { ["label"] = "Vesp5", ["coords"] = vector3(-1876.92, -584.44, 11.85),},
[27] = { ["label"] = "City4", ["coords"] = vector3(-1303.94, -441.39, 35.22),},
[28] = { ["label"] = "City5", ["coords"] = vector3(-1705.48, -433.46, 42.17),},
[29] = { ["label"] = "City6", ["coords"] = vector3(-1305.99, 336.35, 65.5),},
[30] = { ["label"] = "Vinewood1", ["coords"] = vector3(-741.8, 484.84, 109.47),},
[31] = { ["label"] = "Vinewood2", ["coords"] = vector3(-409.57, 341.49, 108.91),},
[32] = { ["label"] = "Vinewood3", ["coords"] = vector3(-126.44, 588.18, 204.71),},
[33] = { ["label"] = "Vinewood4", ["coords"] = vector3(211.42, -101.42, 73.28),},
[34] = { ["label"] = "Vinewood5", ["coords"] = vector3(490.61, -95.04, 66.44),},
[35] = { ["label"] = "City7", ["coords"] = vector3(387.19, -993.59, 29.42),},
[36] = { ["label"] = "City8", ["coords"] = vector3(-500.47, -712.37, 33.21),},
[37] = { ["label"] = "EastHW", ["coords"] = vector3(2572.2, 479.97, 108.68),},
[38] = { ["label"] = "Vinewood6", ["coords"] = vector3(-430.1, 1205.41, 325.76),},
[39] = { ["label"] = "VinewoodHills1", ["coords"] = vector3(-126.06, 1896.58, 197.33),},
[40] = { ["label"] = "VinewoodHills2", ["coords"] = vector3(-2521.08, 2310.31, 33.22),},
[41] = { ["label"] = "RedwoodsCons", ["coords"] = vector3(1129.01, 2125.14, 55.55),},
[42] = { ["label"] = "RedwoodsFarm", ["coords"] = vector3(1546.64, 2166.56, 78.72),},
[43] = { ["label"] = "Harmony1", ["coords"] = vector3(404.34, 2584.54, 43.52),},
[44] = { ["label"] = "Harmony2", ["coords"] = vector3(180.15, 2792.99, 45.66),},
[45] = { ["label"] = "Harmony3", ["coords"] = vector3(287.67, 2843.89, 44.7),},
[46] = { ["label"] = "Sandy1", ["coords"] = vector3(2030.23, 3184.42, 45.13),},
[47] = { ["label"] = "Sandy2", ["coords"] = vector3(2175.33, 3321.92, 46.13),},
[48] = { ["label"] = "Sandy3", ["coords"] = vector3(2389.61, 3340.98, 47.34),},
[49] = { ["label"] = "Sandy4", ["coords"] = vector3(1716.25, 3295.08, 41.26),},
[50] = { ["label"] = "Sandy5", ["coords"] = vector3(1779.38, 3640.83, 34.5),},
[51] = { ["label"] = "Sandy6", ["coords"] = vector3(1894.59, 3715.34, 32.75),},
[52] = { ["label"] = "Sandy7", ["coords"] = vector3(1861.9, 3857.15, 36.27),},
[53] = { ["label"] = "Sandy8", ["coords"] = vector3(996.38, 3575.07, 34.61),},
[54] = { ["label"] = "Sandy9", ["coords"] = vector3(387.45, 3584.73, 33.29),},
[55] = { ["label"] = "Stab1", ["coords"] = vector3(68.08, 3693.22, 40.66),},
[56] = { ["label"] = "Stab2", ["coords"] = vector3(15.55, 3688.7, 39.81),},
[57] = { ["label"] = "Sandy10", ["coords"] = vector3(2566.59, 4283.34, 41.97),},
[58] = { ["label"] = "Grape1", ["coords"] = vector3(2570.82, 4667.95, 34.08),},
[59] = { ["label"] = "Grape2", ["coords"] = vector3(2882.05, 4511.72, 48.02),},
[60] = { ["label"] = "Grape3", ["coords"] = vector3(2243.78, 5154.02, 57.89),},
[61] = { ["label"] = "Grape4", ["coords"] = vector3(1642.91, 4846.08, 45.51),},
[62] = { ["label"] = "Grape5", ["coords"] = vector3(1308.87, 4362.17, 41.55),},
[63] = { ["label"] = "Paleto1", ["coords"] = vector3(-1090.27, 4940.57, 214.13),},
[64] = { ["label"] = "Paleto2", ["coords"] = vector3(-552.37, 5348.37, 74.76),},
[65] = { ["label"] = "Paleto3", ["coords"] = vector3(-679.02, 5834.27, 17.33),},
[66] = { ["label"] = "Paleto4", ["coords"] = vector3(-481.97, 6276.93, 13.35),},
[67] = { ["label"] = "Paleto5", ["coords"] = vector3(-24.92, 6472.6, 31.49),},
[68] = { ["label"] = "Paleto6", ["coords"] = vector3(36.03, 6549.18, 31.43),},
[69] = { ["label"] = "Paleto6", ["coords"] = vector3(406.08, 6526.43, 27.75),},
[70] = { ["label"] = "Paleto7", ["coords"] = vector3(1522.39, 6329.23, 24.61),},
[71] = { ["label"] = "Paleto8", ["coords"] = vector3(1741.39, 6419.62, 35.04),},
[72] = { ["label"] = "Lighthouse", ["coords"] = vector3(3426.72, 5174.42, 7.4),},
[73] = { ["label"] = "EastSandy", ["coords"] = vector3(2525.99, 2586.62, 38.94),},
[74] = { ["label"] = "Power Station", ["coords"] = vector3(2696.29, 1664.44, 24.52),},
[75] = { ["label"] = "Stripclub", ["coords"] = vector3(106.24, -1280.32, 29.24),},
[76] = { ["label"] = "Vinewood Video", ["coords"] = vector3(223.98, 121.53, 102.76),},
[77] = { ["label"] = "Taxi", ["coords"] = vector3(882.67, -160.26, 77.11),},
[78] = { ["label"] = "Resort", ["coords"] = vector3(-1245.63, 376.21, 75.34),},
[79] = { ["label"] = "Bahama Mamas", ["coords"] = vector3(-1383.1, -639.99, 28.67),},
}
QBConfig.NoSellZones = { QBConfig.NoSellZones = {
{loc = vector3(445.11, -991.3, 30.69), width = 10.0, length = 10.0, height = 10.0, rot = 180.0}, {loc = vector3(445.11, -991.3, 30.69), width = 10.0, length = 10.0, height = 10.0, rot = 180.0},
+1 -2
View File
@@ -1,2 +1 @@
3.8.0 3.9.0