Files
md-drugs/server/cocaine.lua
T
2026-01-22 02:08:35 -07:00

153 lines
5.1 KiB
Lua

Recipes = Recipes or {}
Locations = Locations or {}
Recipes.Cocaine = {
cokepowder = {
tier1 = {take = {coca_leaf = 1}, give = {coke = 1}},
tier2 = {take = {coca_leaf = 1}, give = {cokestagetwo = 1}},
tier3 = {take = {coca_leaf = 1}, give = {cokestagethree = 1}},
},
cutcoke = {
tier1 = {take = {coke = 1, bakingsoda = 1}, give = {loosecoke = 1}},
tier2 = {take = {cokestagetwo = 1, bakingsoda = 1}, give = {loosecokestagetwo = 1}},
tier3 = {take = {cokestagethree = 1, bakingsoda = 1}, give = {loosecokestagethree = 1}},
},
bagcoke = {
tier1 = {take = {loosecoke = 1, empty_weed_bag = 1}, give = {cokebaggy = 1}},
tier2 = {take = {loosecokestagetwo = 1, empty_weed_bag = 1}, give = {cokebaggystagetwo = 1}},
tier3 = {take = {loosecokestagethree = 1, empty_weed_bag = 1}, give = {cokebaggystagethree = 1}},
}
}
GlobalState.MDDrugsRecipes = Recipes
Locations.Cocaine = {
MakePowder = {
{loc = vector3(1086.20, -3195.30, -39.20), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
},
CuttingCoke = {
{loc = vector3(1095.61, -3195.62, -39.13), l = 1.0, w = 1.0, rot = 45.0, offset = vec3(-1.782227, 0.445068, -0.502701), rotation = vector3(0,0,0), gang = ""},
},
BaggingCoke = {
{loc = vector3(1093.16, -3195.78, -39.19), l = 1.0, w = 1.0, rot = 45.0,offset = vec3(4.515137, 2.542969, -0.814194), rotation = vector3(0,0,180.0), gang = ""},
},
cokeTele = {
{inside = vector3(1088.81, -3187.57, -38.99), outside = vector3(198.16, -1276.92, 29.33), l = 1.0, w = 1.0, rot = 45.0, gang = ""},
}
}
GlobalState.MDDrugsLocations = Locations
local function getTier(source)
if not Config.TierSystem then
return 'tier1'
end
local rep = tonumber(getRep(source, 'coke'))
if not rep then
return
end
if rep < Config.Tier1 then
return 'tier1'
end
if rep >= Config.Tier1 and rep <= Config.Tier2 then
return 'tier2'
end
if rep >= Config.Tier2 then
return 'tier3'
end
return nil
end
RegisterServerEvent('md-drugs:server:makepowder', function(num)
local src = source
if timeOut(src, 'md-drugs:server:makepowder') then return end
if not checkDistance(src, Locations.Cocaine.MakePowder[num].loc, 3.5, 'md-drugs:server:makepowder') then
return
end
local tier = getTier(src)
if not tier then
return
end
if not craft(src, Recipes.Cocaine.cokepowder[tier]) then
return
end
end)
RegisterServerEvent('md-drugs:server:cutcokeone', function(num)
local src = source
if timeOut(src, 'md-drugs:server:cutcokeone') then return end
if not checkDistance(src, Locations.Cocaine.CuttingCoke[num].loc, 2.5, 'md-drugs:server:cutcokeone') then
return
end
local tier = 'tier1'
local itemCheck = {
{check = Bridge.Inventory.HasItem(src,'loosecoke'), tier = 'tier1'},
{check = Bridge.Inventory.HasItem(src, 'loosecokestagetwo'), tier = 'tier2'},
{check = Bridge.Inventory.HasItem(src, 'loosecokestagethree'), tier = 'tier3'},
}
for i = 1, #itemCheck do
if itemCheck[i].check then
tier = itemCheck[i].tier
break
end
end
if not craft(src, Recipes.Cocaine.cutcoke[tier]) then
return
end
end)
RegisterServerEvent('md-drugs:server:bagcoke', function(num)
local src = source
if timeOut(src, 'md-drugs:server:bagcoke') then return end
if not checkDistance(src, Locations.Cocaine.BaggingCoke[num].loc, 2.5, 'md-drugs:server:bagcoke') then
return
end
local tier = 'tier1'
local itemCheck = {
{check = Bridge.Inventory.HasItem(src,'coke'), tier = 'tier1'},
{check = Bridge.Inventory.HasItem(src, 'cokestagetwo'), tier = 'tier2'},
{check = Bridge.Inventory.HasItem(src, 'cokestagethree'), tier = 'tier3'},
}
for i = 1, #itemCheck do
if itemCheck[i].check then
tier = itemCheck[i].tier
break
end
end
if not craft(src, Recipes.Cocaine.bagcoke[tier]) then
return
end
AddRep(src, 'coke', 1)
end)
local cokecut = {
loosecokestagetwo = {give = {loosecoke =2}, take = {loosecokestagetwo = 1, bakingsoda = 1}},
loosecokestagethree = {give = {loosecokestagetwo = 3}, take = {loosecokestagethree = 1, bakingsoda = 1}},
}
for k, v in pairs (cokecut) do
Bridge.Framework.RegisterUsableItem(k, function(source, item)
local src = source
local can = true
for k, v in pairs (v.take) do
local count = Bridge.Inventory.GetItemCount(src, k)
if count < v then
can = false
break
end
end
if not can then
return craft(src, v)
end
local progress = Bridge.Callback.Trigger("md-drugs:client:uncuff", src, Bridge.Language.Locale('coke.cutCokeAgain'))
if not progress then return end
craft(src, v)
end)
end