Início › Documentação › Personalização · origen_reports
custom/
└── server.luacustom/** consta de escrow_ignore, pelo que é totalmente editável. Todas as funções correm no servidor e leem os valores detetados automaticamente de Config.Framework, Config.Inventory, Config.Clothing e Config.Ambulance. Adiciona um novo ramo quando o teu recurso não for compatível de origem.
Com ox_inventory, a listagem de itens, a entrega de itens e a abertura de inventários são tratadas internamente pelo recurso. Custom.getItemList, Custom.giveItem e Custom.openPlayerInventory nunca são chamadas nesse caso, pelo que editá-las não tem qualquer efeito.
Custom.getIdentifier(source) → string | nilDevolve o identificador único usado para guardar os reports e as estatísticas da staff. É chamada sempre que um jogador cria um report ou que um membro da staff é resolvido.
| Framework | Valor devolvido |
|---|---|
qb-core / qbx_core |
PlayerData.citizenid |
esx |
xPlayer.getIdentifier() |
| Nenhum | O identificador license |
Custom.getIdentifier = function(source)
local player = getFrameworkPlayer(source)
if Config.Framework == 'qb-core' or Config.Framework == 'qbx_core' then
return player and player.PlayerData and player.PlayerData.citizenid or nil
elseif Config.Framework == 'esx' then
return player and player.getIdentifier and player.getIdentifier() or nil
end
return GetPlayerIdentifierByType(source, 'license')
endAlterar o formato do identificador depois de o recurso já ter sido usado deixa órfãos os reports e as estatísticas da staff existentes, uma vez que são indexados por este valor.
Custom.hasConfigFullAccess(source) → booleanDevolve true quando o jogador coincide com alguma permissão de Config.StaffFullAccess.
Custom.hasConfigBasicAccess(source) → booleanDevolve true quando o jogador coincide com alguma permissão de Config.StaffBasicAccess.
Ambas passam pela mesma verificação interna, aplicada a cada permissão da lista:
<permission> ou group.<permission>.qbx_core — exports.qbx_core:HasPermission e GetPermission.qb-core — Framework.Functions.GetPermission.esx — xPlayer.getGroup() == permission.Substitui-as para integrar um sistema de permissões próprio:
Custom.hasConfigFullAccess = function(source)
return exports['my_admin']:IsAdmin(source)
end
Custom.hasConfigBasicAccess = function(source)
return exports['my_admin']:IsModerator(source)
end| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do jogador |
Custom.getStaffLevel(source) → 'full' | 'basic' | falseResolve o nível de acesso de um jogador a partir das duas funções anteriores. Se coincidirem ambas, prevalece o acesso total. Devolve false quando o jogador não é staff por configuração (ainda assim pode ser staff limitada se tiver sido adicionado com um grupo a partir do painel de administração).
Custom.getStaffLevel = function(source)
local hasBasic = Custom.hasConfigBasicAccess(source)
local hasFull = Custom.hasConfigFullAccess(source)
if hasBasic and hasFull then
return 'full'
end
if hasBasic then
return 'basic'
end
if hasFull then
return 'full'
end
return false
endCustom.getItemList() → tableDevolve todos os itens registados como { name, label }, ordenados por etiqueta. É usada para preencher o seletor de itens da ação rápida dar itens e a lista de itens permitidos dos grupos de staff.
| Inventário | Origem |
|---|---|
qb-inventory / ps-inventory |
Framework.Shared.Items |
codem-inventory |
exports['codem-inventory']:GetItemList() |
qs-inventory |
exports['qs-inventory']:GetItemList() |
origen_inventory |
exports.origen_inventory:Items() |
core_inventory |
Framework.Shared.Items, ou Framework.Items() em ESX |
tgiann-inventory |
exports['tgiann-inventory']:GetItemList() |
| Qualquer outro | Framework.Shared.Items, ou Framework.Items() em ESX |
Para adicionar um inventário, devolve a respetiva tabela de itens através da função auxiliar local mapItemTable:
elseif Config.Inventory == 'my_inventory' then
return mapItemTable(exports['my_inventory']:GetItemList())Custom.giveItem(source, item, count) → booleanDá um item ao jogador reportado. É chamada pela ação rápida dar itens. Por convenção devolve true em caso de sucesso, embora o recurso não leia o valor devolvido.
| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do jogador que recebe o item |
item |
string |
Nome do item |
count |
number |
Quantidade a dar |
qs-inventory e tgiann-inventory verificam primeiro CanCarryItem e devolvem false quando o jogador não o pode transportar. Os inventários sem ramo próprio recorrem à framework: Functions.AddItem em QB/Qbox e addInventoryItem em ESX.
elseif Config.Inventory == 'my_inventory' then
if not exports['my_inventory']:CanCarryItem(source, item, count) then return false end
return exports['my_inventory']:AddItem(source, item, count)Custom.openPlayerInventory(source, target) → booleanAbre ao membro da staff o inventário do jogador reportado. É chamada pela ação rápida inventário. Devolve false quando o inventário não é compatível.
| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do membro da staff |
target |
number |
ID de servidor do jogador cujo inventário é aberto |
| Inventário | Chamada |
|---|---|
qb-inventory |
OpenInventory(source, target) |
ps-inventory |
OpenInventoryById(source, target) |
origen_inventory |
OpenInventory(source, 'otherplayer', target) |
core_inventory |
openInventory(source, 'stash-<identifier>', 'stash', ...) |
tgiann-inventory |
OpenInventoryById(source, target) |
jpr-inventory |
OpenInventory(source, identifier) |
qs-inventory e codem-inventory não têm ramo aqui, pelo que a ação rápida inventário devolve false com eles. Adiciona a respetiva chamada de abertura se usares algum dos dois.
Custom.openClothingMenu(source) → booleanAbre o menu de roupa ao jogador reportado. É chamada pela ação rápida roupa.
| Roupa | Evento de cliente |
|---|---|
illenium-appearance |
illenium-appearance:client:openClothingShopMenu |
esx_skin |
esx_skin:openMenu |
qb-clothing / fivem-appearance / rcore_clothing |
qb-clothing:client:openMenu |
origen_clothing |
origen_clothing:client:openOutfitMenu |
elseif Config.Clothing == 'my_clothing' then
TriggerClientEvent('my_clothing:client:openMenu', source)
return trueCustom.revivePlayer(source) → booleanReanima o jogador reportado. É chamada pela ação rápida reanimar.
| Ambulância | Chamada |
|---|---|
qb-ambulancejob / qbx_medical |
Evento de cliente hospital:client:Revive |
esx_ambulancejob |
Evento de servidor esx_ambulancejob:revive |
wasabi_ambulance |
Evento de servidor wasabi_ambulance:revivePlayer |
| Nenhuma em ESX | Evento de servidor esx_ambulancejob:revive |
| Nenhuma em QB/Qbox | Evento de cliente hospital:client:Revive |
elseif Config.Ambulance == 'my_ambulance' then
TriggerClientEvent('my_ambulance:client:revive', source)
return true| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do jogador a reanimar |