0.0.1
This commit is contained in:
306
resources/[esx_addons]/esx_mechanicjob/server/main.lua
Normal file
306
resources/[esx_addons]/esx_mechanicjob/server/main.lua
Normal file
@@ -0,0 +1,306 @@
|
||||
|
||||
local PlayersHarvesting, PlayersHarvesting2, PlayersHarvesting3, PlayersCrafting, PlayersCrafting2, PlayersCrafting3 = {}, {}, {}, {}, {}, {}
|
||||
|
||||
if Config.MaxInService ~= -1 then
|
||||
TriggerEvent('esx_service:activateService', 'mechanic', Config.MaxInService)
|
||||
end
|
||||
|
||||
TriggerEvent('esx_phone:registerNumber', 'mechanic', TranslateCap('mechanic_customer'), true, true)
|
||||
TriggerEvent('esx_society:registerSociety', 'mechanic', 'mechanic', 'society_mechanic', 'society_mechanic', 'society_mechanic', {type = 'private'})
|
||||
|
||||
local function Harvest(source)
|
||||
SetTimeout(4000, function()
|
||||
|
||||
if PlayersHarvesting[source] == true then
|
||||
local xPlayer = ESX.Player(source)
|
||||
local GazBottleQuantity = xPlayer.getInventoryItem('gazbottle').count
|
||||
|
||||
if GazBottleQuantity >= 5 then
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('you_do_not_room'))
|
||||
else
|
||||
xPlayer.addInventoryItem('gazbottle', 1)
|
||||
Harvest(source)
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:startHarvest')
|
||||
AddEventHandler('esx_mechanicjob:startHarvest', function()
|
||||
local source = source
|
||||
PlayersHarvesting[source] = true
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('recovery_gas_can'))
|
||||
Harvest(source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:stopHarvest')
|
||||
AddEventHandler('esx_mechanicjob:stopHarvest', function()
|
||||
local source = source
|
||||
PlayersHarvesting[source] = false
|
||||
end)
|
||||
|
||||
local function Harvest2(source)
|
||||
SetTimeout(4000, function()
|
||||
|
||||
if PlayersHarvesting2[source] == true then
|
||||
local xPlayer = ESX.Player(source)
|
||||
local FixToolQuantity = xPlayer.getInventoryItem('fixtool').count
|
||||
|
||||
if FixToolQuantity >= 5 then
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('you_do_not_room'))
|
||||
else
|
||||
xPlayer.addInventoryItem('fixtool', 1)
|
||||
Harvest2(source)
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:startHarvest2')
|
||||
AddEventHandler('esx_mechanicjob:startHarvest2', function()
|
||||
local source = source
|
||||
PlayersHarvesting2[source] = true
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('recovery_repair_tools'))
|
||||
Harvest2(source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:stopHarvest2')
|
||||
AddEventHandler('esx_mechanicjob:stopHarvest2', function()
|
||||
local source = source
|
||||
PlayersHarvesting2[source] = false
|
||||
end)
|
||||
|
||||
local function Harvest3(source)
|
||||
SetTimeout(4000, function()
|
||||
|
||||
if PlayersHarvesting3[source] == true then
|
||||
local xPlayer = ESX.Player(source)
|
||||
local CaroToolQuantity = xPlayer.getInventoryItem('carotool').count
|
||||
if CaroToolQuantity >= 5 then
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('you_do_not_room'))
|
||||
else
|
||||
xPlayer.addInventoryItem('carotool', 1)
|
||||
Harvest3(source)
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:startHarvest3')
|
||||
AddEventHandler('esx_mechanicjob:startHarvest3', function()
|
||||
local source = source
|
||||
PlayersHarvesting3[source] = true
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('recovery_body_tools'))
|
||||
Harvest3(source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:stopHarvest3')
|
||||
AddEventHandler('esx_mechanicjob:stopHarvest3', function()
|
||||
local source = source
|
||||
PlayersHarvesting3[source] = false
|
||||
end)
|
||||
|
||||
local function Craft(source)
|
||||
SetTimeout(4000, function()
|
||||
|
||||
if PlayersCrafting[source] == true then
|
||||
local xPlayer = ESX.Player(source)
|
||||
local GazBottleQuantity = xPlayer.getInventoryItem('gazbottle').count
|
||||
|
||||
if GazBottleQuantity <= 0 then
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('not_enough_gas_can'))
|
||||
else
|
||||
xPlayer.removeInventoryItem('gazbottle', 1)
|
||||
xPlayer.addInventoryItem('blowpipe', 1)
|
||||
Craft(source)
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:startCraft')
|
||||
AddEventHandler('esx_mechanicjob:startCraft', function()
|
||||
local source = source
|
||||
PlayersCrafting[source] = true
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('assembling_blowtorch'))
|
||||
Craft(source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:stopCraft')
|
||||
AddEventHandler('esx_mechanicjob:stopCraft', function()
|
||||
local source = source
|
||||
PlayersCrafting[source] = false
|
||||
end)
|
||||
|
||||
local function Craft2(source)
|
||||
SetTimeout(4000, function()
|
||||
|
||||
if PlayersCrafting2[source] == true then
|
||||
local xPlayer = ESX.Player(source)
|
||||
local FixToolQuantity = xPlayer.getInventoryItem('fixtool').count
|
||||
|
||||
if FixToolQuantity <= 0 then
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('not_enough_repair_tools'))
|
||||
else
|
||||
xPlayer.removeInventoryItem('fixtool', 1)
|
||||
xPlayer.addInventoryItem('fixkit', 1)
|
||||
Craft2(source)
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:startCraft2')
|
||||
AddEventHandler('esx_mechanicjob:startCraft2', function()
|
||||
local source = source
|
||||
PlayersCrafting2[source] = true
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('assembling_repair_kit'))
|
||||
Craft2(source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:stopCraft2')
|
||||
AddEventHandler('esx_mechanicjob:stopCraft2', function()
|
||||
local source = source
|
||||
PlayersCrafting2[source] = false
|
||||
end)
|
||||
|
||||
local function Craft3(source)
|
||||
SetTimeout(4000, function()
|
||||
|
||||
if PlayersCrafting3[source] == true then
|
||||
local xPlayer = ESX.Player(source)
|
||||
local CaroToolQuantity = xPlayer.getInventoryItem('carotool').count
|
||||
|
||||
if CaroToolQuantity <= 0 then
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('not_enough_body_tools'))
|
||||
else
|
||||
xPlayer.removeInventoryItem('carotool', 1)
|
||||
xPlayer.addInventoryItem('carokit', 1)
|
||||
Craft3(source)
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
end
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:startCraft3')
|
||||
AddEventHandler('esx_mechanicjob:startCraft3', function()
|
||||
local source = source
|
||||
PlayersCrafting3[source] = true
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('assembling_body_kit'))
|
||||
Craft3(source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:stopCraft3')
|
||||
AddEventHandler('esx_mechanicjob:stopCraft3', function()
|
||||
local source = source
|
||||
PlayersCrafting3[source] = false
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:onNPCJobMissionCompleted')
|
||||
AddEventHandler('esx_mechanicjob:onNPCJobMissionCompleted', function()
|
||||
local source = source
|
||||
local xPlayer = ESX.Player(source)
|
||||
local total = math.random(Config.NPCJobEarnings.min, Config.NPCJobEarnings.max);
|
||||
|
||||
if xPlayer.getJob().grade >= 3 then
|
||||
total = total * 2
|
||||
end
|
||||
|
||||
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_mechanic', function(account)
|
||||
account.addMoney(total)
|
||||
end)
|
||||
|
||||
TriggerClientEvent("esx:showNotification", source, TranslateCap('your_comp_earned').. total)
|
||||
end)
|
||||
|
||||
ESX.RegisterUsableItem('blowpipe', function(source)
|
||||
local source = source
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
xPlayer.removeInventoryItem('blowpipe', 1)
|
||||
|
||||
TriggerClientEvent('esx_mechanicjob:onHijack', source)
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('you_used_blowtorch'))
|
||||
end)
|
||||
|
||||
ESX.RegisterUsableItem('fixkit', function(source)
|
||||
local source = source
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
xPlayer.removeInventoryItem('fixkit', 1)
|
||||
|
||||
TriggerClientEvent('esx_mechanicjob:onFixkit', source)
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('you_used_repair_kit'))
|
||||
end)
|
||||
|
||||
ESX.RegisterUsableItem('carokit', function(source)
|
||||
local source = source
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
xPlayer.removeInventoryItem('carokit', 1)
|
||||
|
||||
TriggerClientEvent('esx_mechanicjob:onCarokit', source)
|
||||
TriggerClientEvent('esx:showNotification', source, TranslateCap('you_used_body_kit'))
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:getStockItem')
|
||||
AddEventHandler('esx_mechanicjob:getStockItem', function(itemName, count)
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
TriggerEvent('esx_addoninventory:getSharedInventory', 'society_mechanic', function(inventory)
|
||||
local item = inventory.getItem(itemName)
|
||||
|
||||
-- is there enough in the society?
|
||||
if count > 0 and item.count >= count then
|
||||
|
||||
-- can the player carry the said amount of x item?
|
||||
if xPlayer.canCarryItem(itemName, count) then
|
||||
inventory.removeItem(itemName, count)
|
||||
xPlayer.addInventoryItem(itemName, count)
|
||||
xPlayer.showNotification(TranslateCap('have_withdrawn', count, item.label))
|
||||
else
|
||||
xPlayer.showNotification(TranslateCap('player_cannot_hold'))
|
||||
end
|
||||
else
|
||||
xPlayer.showNotification(TranslateCap('invalid_quantity'))
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_mechanicjob:getStockItems', function(source, cb)
|
||||
TriggerEvent('esx_addoninventory:getSharedInventory', 'society_mechanic', function(inventory)
|
||||
cb(inventory.items)
|
||||
end)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('esx_mechanicjob:putStockItems')
|
||||
AddEventHandler('esx_mechanicjob:putStockItems', function(itemName, count)
|
||||
local xPlayer = ESX.Player(source)
|
||||
|
||||
TriggerEvent('esx_addoninventory:getSharedInventory', 'society_mechanic', function(inventory)
|
||||
local item = inventory.getItem(itemName)
|
||||
local playerItemCount = xPlayer.getInventoryItem(itemName).count
|
||||
|
||||
if item.count >= 0 and count <= playerItemCount then
|
||||
xPlayer.removeInventoryItem(itemName, count)
|
||||
inventory.addItem(itemName, count)
|
||||
else
|
||||
xPlayer.showNotification(TranslateCap('invalid_quantity'))
|
||||
end
|
||||
|
||||
xPlayer.showNotification(TranslateCap('have_deposited', count, item.label))
|
||||
end)
|
||||
end)
|
||||
|
||||
ESX.RegisterServerCallback('esx_mechanicjob:getPlayerInventory', function(source, cb)
|
||||
local xPlayer = ESX.Player(source)
|
||||
local items = xPlayer.getInventory(false)
|
||||
|
||||
cb({items = items})
|
||||
end)
|
||||
Reference in New Issue
Block a user