Files
esx_core/server/main.lua
T
2018-11-25 21:38:04 +01:00

675 lines
21 KiB
Lua

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 zone!'):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 zone!'):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 zone!'):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 zone!'):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 zone!'):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 zone!'):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 zone!'):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 zone!'):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 zone!'):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 zone!'):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 zone!'):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 zone!'):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)