ESX

Ready-made file

You can either directly use this file to replace the original or use the instructions below to make the changes yourself and maybe learn a thing here and there.

Integrations file ready-made for ESX

Initialization

Add the following at the top of the file:

local ESX = exports["es_extended"]:getSharedObject()


Register all commands

Replace the RegisterCommands function with the following:

function RegisterCommands()
	ESX.RegisterCommand(attachClampCommand, commandPermissions, function(xPlayer, args, showError)
		OnAttachClampCommand(xPlayer.source)
	end, false, { help = "Attach a clamp to the closest vehicle wheel." })

	ESX.RegisterCommand(removeClampCommand, commandPermissions, function(xPlayer, args, showError)
		OnRemoveClampCommand(xPlayer.source)
	end, false, { help = "Remove the clamp from the closest vehicle wheel." })
end


Register all items

Replace the RegisterItems function with the following:

function RegisterItems()
	if (clampItemName) then
		ESX.RegisterUsableItem(clampItemName, StartClampingProcess)
	end
	if (removalToolItemName) then
		ESX.RegisterUsableItem(removalToolItemName, StartRemovalProcess)
	end
	if (destroyItemName) then
		ESX.RegisterUsableItem(destroyItemName, StartDestructionProcess)
	end
end


Check if a player has an item

Replace the GetPlayerHasItem function with the following:

function GetPlayerHasItem(playerId, itemName)
	local playerData = ESX.GetPlayerFromId(playerId)
	assert(playerData ~= nil, ("\"PlayerData\" could not be found for player \"%s\""):format(GetPlayerName(playerId)))
	local item = playerData.getInventoryItem(itemName)
	return item ~= nil and item.count > 0
end


Add an item to player inventory

Replace the AddPlayerItem function with the following:

function AddPlayerItem(playerId, itemName)
	local playerData = ESX.GetPlayerFromId(playerId)
	assert(playerData ~= nil, ("\"PlayerData\" could not be found for player \"%s\""):format(GetPlayerName(playerId)))
	playerData.addInventoryItem(itemName, 1)
	return true
end


Remove an item from player inventory

Replace the RemovePlayerItem function with the following:

function RemovePlayerItem(playerId, itemName)
	local playerData = ESX.GetPlayerFromId(playerId)
	assert(playerData ~= nil, ("\"PlayerData\" could not be found for player \"%s\""):format(GetPlayerName(playerId)))
	playerData.removeInventoryItem(itemName, 1)
end

Last updated