ESX = nil local CopsConnected = 0 local PlayersHarvestingCoke = {} local PlayersTransformingCoke = {} local PlayersSellingCoke = {} local PlayersHarvestingMeth = {} local PlayersTransformingMeth = {} local PlayersSellingMeth = {} local PlayersHarvestingWeed = {} local PlayersTransformingWeed = {} local PlayersSellingWeed = {} local PlayersHarvestingOpium = {} local PlayersTransformingOpium = {} local PlayersSellingOpium = {} TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) function CountCops() local xPlayers = ESX.GetPlayers() CopsConnected = 0 for i=1, #xPlayers, 1 do local xPlayer = ESX.GetPlayerFromId(xPlayers[i]) if xPlayer.job.name == 'police' then CopsConnected = CopsConnected + 1 end end SetTimeout(120 * 1000, CountCops) end CountCops() --coke local function HarvestCoke(source) if CopsConnected < Config.RequiredCopsCoke then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsCoke)) return end SetTimeout(Config.TimeToFarm, function() if PlayersHarvestingCoke[source] then local xPlayer = ESX.GetPlayerFromId(source) local coke = xPlayer.getInventoryItem('coke') if coke.limit ~= -1 and coke.count >= coke.limit then TriggerClientEvent('esx:showNotification', source, _U('inv_full_coke')) else xPlayer.addInventoryItem('coke', 1) HarvestCoke(source) end end end) end RegisterServerEvent('esx_drugs:startHarvestCoke') AddEventHandler('esx_drugs:startHarvestCoke', function() local _source = source if not PlayersHarvestingCoke[_source] then PlayersHarvestingCoke[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('pickup_in_prog')) HarvestCoke(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopHarvestCoke') AddEventHandler('esx_drugs:stopHarvestCoke', function() local _source = source PlayersHarvestingCoke[_source] = false end) local function TransformCoke(source) if CopsConnected < Config.RequiredCopsCoke then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsCoke)) return end SetTimeout(Config.TimeToProcess, function() if PlayersTransformingCoke[source] then local xPlayer = ESX.GetPlayerFromId(source) local cokeQuantity = xPlayer.getInventoryItem('coke').count local pooch = xPlayer.getInventoryItem('coke_pooch') if pooch.limit ~= -1 and pooch.count >= pooch.limit then TriggerClientEvent('esx:showNotification', source, _U('too_many_pouches')) elseif cokeQuantity < 5 then TriggerClientEvent('esx:showNotification', source, _U('not_enough_coke')) else xPlayer.removeInventoryItem('coke', 5) xPlayer.addInventoryItem('coke_pooch', 1) TransformCoke(source) end end end) end RegisterServerEvent('esx_drugs:startTransformCoke') AddEventHandler('esx_drugs:startTransformCoke', function() local _source = source if not PlayersTransformingCoke[_source] then PlayersTransformingCoke[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('packing_in_prog')) TransformCoke(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopTransformCoke') AddEventHandler('esx_drugs:stopTransformCoke', function() local _source = source PlayersTransformingCoke[_source] = false end) local function SellCoke(source) if CopsConnected < Config.RequiredCopsCoke then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsCoke)) return end SetTimeout(Config.TimeToSell, function() if PlayersSellingCoke[source] then local xPlayer = ESX.GetPlayerFromId(source) local poochQuantity = xPlayer.getInventoryItem('coke_pooch').count if poochQuantity == 0 then TriggerClientEvent('esx:showNotification', source, _U('no_pouches_sale')) else xPlayer.removeInventoryItem('coke_pooch', 1) if CopsConnected == 0 then xPlayer.addAccountMoney('black_money', 198) TriggerClientEvent('esx:showNotification', source, _U('sold_one_coke')) elseif CopsConnected == 1 then xPlayer.addAccountMoney('black_money', 258) TriggerClientEvent('esx:showNotification', source, _U('sold_one_coke')) elseif CopsConnected == 2 then xPlayer.addAccountMoney('black_money', 308) TriggerClientEvent('esx:showNotification', source, _U('sold_one_coke')) elseif CopsConnected == 3 then xPlayer.addAccountMoney('black_money', 358) TriggerClientEvent('esx:showNotification', source, _U('sold_one_coke')) elseif CopsConnected == 4 then xPlayer.addAccountMoney('black_money', 396) TriggerClientEvent('esx:showNotification', source, _U('sold_one_coke')) elseif CopsConnected >= 5 then xPlayer.addAccountMoney('black_money', 428) TriggerClientEvent('esx:showNotification', source, _U('sold_one_coke')) end SellCoke(source) end end end) end RegisterServerEvent('esx_drugs:startSellCoke') AddEventHandler('esx_drugs:startSellCoke', function() local _source = source if not PlayersSellingCoke[_source] then PlayersSellingCoke[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('sale_in_prog')) SellCoke(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopSellCoke') AddEventHandler('esx_drugs:stopSellCoke', function() local _source = source PlayersSellingCoke[_source] = false end) --meth local function HarvestMeth(source) if CopsConnected < Config.RequiredCopsMeth then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsMeth)) return end SetTimeout(Config.TimeToFarm, function() if PlayersHarvestingMeth[source] then local xPlayer = ESX.GetPlayerFromId(source) local meth = xPlayer.getInventoryItem('meth') if meth.limit ~= -1 and meth.count >= meth.limit then TriggerClientEvent('esx:showNotification', source, _U('inv_full_meth')) else xPlayer.addInventoryItem('meth', 1) HarvestMeth(source) end end end) end RegisterServerEvent('esx_drugs:startHarvestMeth') AddEventHandler('esx_drugs:startHarvestMeth', function() local _source = source if not PlayersHarvestingMeth[_source] then PlayersHarvestingMeth[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('pickup_in_prog')) HarvestMeth(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopHarvestMeth') AddEventHandler('esx_drugs:stopHarvestMeth', function() local _source = source PlayersHarvestingMeth[_source] = false end) local function TransformMeth(source) if CopsConnected < Config.RequiredCopsMeth then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsMeth)) return end SetTimeout(Config.TimeToProcess, function() if PlayersTransformingMeth[source] then local xPlayer = ESX.GetPlayerFromId(source) local methQuantity = xPlayer.getInventoryItem('meth').count local pooch = xPlayer.getInventoryItem('meth_pooch') if pooch.limit ~= -1 and pooch.count >= pooch.limit then TriggerClientEvent('esx:showNotification', source, _U('too_many_pouches')) elseif methQuantity < 5 then TriggerClientEvent('esx:showNotification', source, _U('not_enough_meth')) else xPlayer.removeInventoryItem('meth', 5) xPlayer.addInventoryItem('meth_pooch', 1) TransformMeth(source) end end end) end RegisterServerEvent('esx_drugs:startTransformMeth') AddEventHandler('esx_drugs:startTransformMeth', function() local _source = source if not PlayersTransformingMeth[_source] then PlayersTransformingMeth[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('packing_in_prog')) TransformMeth(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopTransformMeth') AddEventHandler('esx_drugs:stopTransformMeth', function() local _source = source PlayersTransformingMeth[_source] = false end) local function SellMeth(source) if CopsConnected < Config.RequiredCopsMeth then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsMeth)) return end SetTimeout(Config.TimeToSell, function() if PlayersSellingMeth[source] then local xPlayer = ESX.GetPlayerFromId(source) local poochQuantity = xPlayer.getInventoryItem('meth_pooch').count if poochQuantity == 0 then TriggerClientEvent('esx:showNotification', source, _U('no_pouches_sale')) else xPlayer.removeInventoryItem('meth_pooch', 1) if CopsConnected == 0 then xPlayer.addAccountMoney('black_money', 276) TriggerClientEvent('esx:showNotification', source, _U('sold_one_meth')) elseif CopsConnected == 1 then xPlayer.addAccountMoney('black_money', 374) TriggerClientEvent('esx:showNotification', source, _U('sold_one_meth')) elseif CopsConnected == 2 then xPlayer.addAccountMoney('black_money', 474) TriggerClientEvent('esx:showNotification', source, _U('sold_one_meth')) elseif CopsConnected == 3 then xPlayer.addAccountMoney('black_money', 552) TriggerClientEvent('esx:showNotification', source, _U('sold_one_meth')) elseif CopsConnected == 4 then xPlayer.addAccountMoney('black_money', 616) TriggerClientEvent('esx:showNotification', source, _U('sold_one_meth')) elseif CopsConnected == 5 then xPlayer.addAccountMoney('black_money', 654) TriggerClientEvent('esx:showNotification', source, _U('sold_one_meth')) elseif CopsConnected >= 6 then xPlayer.addAccountMoney('black_money', 686) TriggerClientEvent('esx:showNotification', source, _U('sold_one_meth')) end SellMeth(source) end end end) end RegisterServerEvent('esx_drugs:startSellMeth') AddEventHandler('esx_drugs:startSellMeth', function() local _source = source if not PlayersSellingMeth[_source] then PlayersSellingMeth[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('sale_in_prog')) SellMeth(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopSellMeth') AddEventHandler('esx_drugs:stopSellMeth', function() local _source = source PlayersSellingMeth[_source] = false end) --weed local function HarvestWeed(source) if CopsConnected < Config.RequiredCopsWeed then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsWeed)) return end SetTimeout(Config.TimeToFarm, function() if PlayersHarvestingWeed[source] then local _source = source local xPlayer = ESX.GetPlayerFromId(_source) local weed = xPlayer.getInventoryItem('weed') if weed.limit ~= -1 and weed.count >= weed.limit then TriggerClientEvent('esx:showNotification', source, _U('inv_full_weed')) else xPlayer.addInventoryItem('weed', 1) HarvestWeed(source) end end end) end RegisterServerEvent('esx_drugs:startHarvestWeed') AddEventHandler('esx_drugs:startHarvestWeed', function() local _source = source if not PlayersHarvestingWeed[_source] then PlayersHarvestingWeed[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('pickup_in_prog')) HarvestWeed(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopHarvestWeed') AddEventHandler('esx_drugs:stopHarvestWeed', function() local _source = source PlayersHarvestingWeed[_source] = false end) local function TransformWeed(source) if CopsConnected < Config.RequiredCopsWeed then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsWeed)) return end SetTimeout(Config.TimeToProcess, function() if PlayersTransformingWeed[source] then local xPlayer = ESX.GetPlayerFromId(source) local weedQuantity = xPlayer.getInventoryItem('weed').count local pooch = xPlayer.getInventoryItem('weed_pooch') if pooch.limit ~= -1 and pooch.count >= pooch.limit then TriggerClientEvent('esx:showNotification', source, _U('too_many_pouches')) elseif weedQuantity < 5 then TriggerClientEvent('esx:showNotification', source, _U('not_enough_weed')) else xPlayer.removeInventoryItem('weed', 5) xPlayer.addInventoryItem('weed_pooch', 1) TransformWeed(source) end end end) end RegisterServerEvent('esx_drugs:startTransformWeed') AddEventHandler('esx_drugs:startTransformWeed', function() local _source = source if not PlayersTransformingWeed[_source] then PlayersTransformingWeed[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('packing_in_prog')) TransformWeed(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopTransformWeed') AddEventHandler('esx_drugs:stopTransformWeed', function() local _source = source PlayersTransformingWeed[_source] = false end) local function SellWeed(source) if CopsConnected < Config.RequiredCopsWeed then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsWeed)) return end SetTimeout(Config.TimeToSell, function() if PlayersSellingWeed[source] then local _source = source local xPlayer = ESX.GetPlayerFromId(_source) local poochQuantity = xPlayer.getInventoryItem('weed_pooch').count if poochQuantity == 0 then TriggerClientEvent('esx:showNotification', source, _U('no_pouches_sale')) else xPlayer.removeInventoryItem('weed_pooch', 1) if CopsConnected == 0 then xPlayer.addAccountMoney('black_money', 108) TriggerClientEvent('esx:showNotification', source, _U('sold_one_weed')) elseif CopsConnected == 1 then xPlayer.addAccountMoney('black_money', 128) TriggerClientEvent('esx:showNotification', source, _U('sold_one_weed')) elseif CopsConnected == 2 then xPlayer.addAccountMoney('black_money', 152) TriggerClientEvent('esx:showNotification', source, _U('sold_one_weed')) elseif CopsConnected == 3 then xPlayer.addAccountMoney('black_money', 165) TriggerClientEvent('esx:showNotification', source, _U('sold_one_weed')) elseif CopsConnected >= 4 then xPlayer.addAccountMoney('black_money', 180) TriggerClientEvent('esx:showNotification', source, _U('sold_one_weed')) end SellWeed(source) end end end) end RegisterServerEvent('esx_drugs:startSellWeed') AddEventHandler('esx_drugs:startSellWeed', function() local _source = source if not PlayersSellingWeed[_source] then PlayersSellingWeed[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('sale_in_prog')) SellWeed(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopSellWeed') AddEventHandler('esx_drugs:stopSellWeed', function() local _source = source PlayersSellingWeed[_source] = false end) --opium local function HarvestOpium(source) if CopsConnected < Config.RequiredCopsOpium then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsOpium)) return end SetTimeout(Config.TimeToFarm, function() if PlayersHarvestingOpium[source] then local _source = source local xPlayer = ESX.GetPlayerFromId(_source) local opium = xPlayer.getInventoryItem('opium') if opium.limit ~= -1 and opium.count >= opium.limit then TriggerClientEvent('esx:showNotification', _source, _U('inv_full_opium')) else xPlayer.addInventoryItem('opium', 1) HarvestOpium(_source) end end end) end RegisterServerEvent('esx_drugs:startHarvestOpium') AddEventHandler('esx_drugs:startHarvestOpium', function() local _source = source if not PlayersHarvestingOpium[_source] then PlayersHarvestingOpium[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('pickup_in_prog')) HarvestOpium(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopHarvestOpium') AddEventHandler('esx_drugs:stopHarvestOpium', function() local _source = source PlayersHarvestingOpium[_source] = false end) local function TransformOpium(source) if CopsConnected < Config.RequiredCopsOpium then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsOpium)) return end SetTimeout(Config.TimeToProcess, function() if PlayersTransformingOpium[source] then local xPlayer = ESX.GetPlayerFromId(source) local opiumQuantity = xPlayer.getInventoryItem('opium').count local pooch = xPlayer.getInventoryItem('opium_pooch') if pooch.limit ~= -1 and pooch.count >= pooch.limit then TriggerClientEvent('esx:showNotification', source, _U('too_many_pouches')) elseif opiumQuantity < 5 then TriggerClientEvent('esx:showNotification', source, _U('not_enough_opium')) else xPlayer.removeInventoryItem('opium', 5) xPlayer.addInventoryItem('opium_pooch', 1) TransformOpium(source) end end end) end RegisterServerEvent('esx_drugs:startTransformOpium') AddEventHandler('esx_drugs:startTransformOpium', function() local _source = source if not PlayersTransformingOpium[_source] then PlayersTransformingOpium[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('packing_in_prog')) TransformOpium(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopTransformOpium') AddEventHandler('esx_drugs:stopTransformOpium', function() local _source = source PlayersTransformingOpium[_source] = false end) local function SellOpium(source) if CopsConnected < Config.RequiredCopsOpium then TriggerClientEvent('esx:showNotification', source, _U('act_imp_police', CopsConnected, Config.RequiredCopsOpium)) return end SetTimeout(Config.TimeToSell, function() if PlayersSellingOpium[source] then local _source = source local xPlayer = ESX.GetPlayerFromId(_source) local poochQuantity = xPlayer.getInventoryItem('opium_pooch').count if poochQuantity == 0 then TriggerClientEvent('esx:showNotification', source, _U('no_pouches_sale')) else xPlayer.removeInventoryItem('opium_pooch', 1) if CopsConnected == 0 then xPlayer.addAccountMoney('black_money', 300) TriggerClientEvent('esx:showNotification', source, _U('sold_one_opium')) elseif CopsConnected == 1 then xPlayer.addAccountMoney('black_money', 500) TriggerClientEvent('esx:showNotification', source, _U('sold_one_opium')) elseif CopsConnected == 2 then xPlayer.addAccountMoney('black_money', 700) TriggerClientEvent('esx:showNotification', source, _U('sold_one_opium')) elseif CopsConnected == 3 then xPlayer.addAccountMoney('black_money', 800) TriggerClientEvent('esx:showNotification', source, _U('sold_one_opium')) elseif CopsConnected == 4 then xPlayer.addAccountMoney('black_money', 900) TriggerClientEvent('esx:showNotification', source, _U('sold_one_opium')) elseif CopsConnected >= 5 then xPlayer.addAccountMoney('black_money', 1000) TriggerClientEvent('esx:showNotification', source, _U('sold_one_opium')) end SellOpium(source) end end end) end RegisterServerEvent('esx_drugs:startSellOpium') AddEventHandler('esx_drugs:startSellOpium', function() local _source = source if not PlayersSellingOpium[_source] then PlayersSellingOpium[_source] = true TriggerClientEvent('esx:showNotification', _source, _U('sale_in_prog')) SellOpium(_source) else print(('esx_drugs: %s attempted to exploit the marker!'):format(GetPlayerIdentifiers(_source)[1])) end end) RegisterServerEvent('esx_drugs:stopSellOpium') AddEventHandler('esx_drugs:stopSellOpium', function() local _source = source PlayersSellingOpium[_source] = false end) RegisterServerEvent('esx_drugs:GetUserInventory') AddEventHandler('esx_drugs:GetUserInventory', function(currentZone) local _source = source local xPlayer = ESX.GetPlayerFromId(_source) TriggerClientEvent('esx_drugs:ReturnInventory', _source, xPlayer.getInventoryItem('coke').count, xPlayer.getInventoryItem('coke_pooch').count, xPlayer.getInventoryItem('meth').count, xPlayer.getInventoryItem('meth_pooch').count, xPlayer.getInventoryItem('weed').count, xPlayer.getInventoryItem('weed_pooch').count, xPlayer.getInventoryItem('opium').count, xPlayer.getInventoryItem('opium_pooch').count, xPlayer.job.name, currentZone ) end) ESX.RegisterUsableItem('weed', function(source) local _source = source local xPlayer = ESX.GetPlayerFromId(_source) xPlayer.removeInventoryItem('weed', 1) TriggerClientEvent('esx_drugs:onPot', _source) TriggerClientEvent('esx:showNotification', _source, _U('used_one_weed')) end)