51 files changed
+2050
-2205
No files matched your search
Vendored
+26
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,4 +1,3 @@
|
|||||||
local QBCore = exports['qb-core']:GetCoreObject()
|
|
||||||
local Mescaline = {}
|
local Mescaline = {}
|
||||||
|
|
||||||
local function pick(loc)
|
local function pick(loc)
|
||||||
|
|||||||
+12
-32
@@ -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
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
|
||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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"},
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -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
@@ -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
@@ -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
@@ -1,2 +1 @@
|
|||||||
3.8.0
|
3.9.0
|
||||||
|
|
||||||
Reference in new issue
Block a user