Início › Documentação › Personalização · origen_reports

Personalização · origen_reports

text
custom/
└── server.lua

custom/** 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/server.lua

Custom.getIdentifier(source) → string | nil

Devolve 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
lua
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')
end

Alterar 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) → boolean

Devolve true quando o jogador coincide com alguma permissão de Config.StaffFullAccess.

Custom.hasConfigBasicAccess(source) → boolean

Devolve 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:

  1. ACE <permission> ou group.<permission>.
  2. qbx_core — exports.qbx_core:HasPermission e GetPermission.
  3. qb-core — Framework.Functions.GetPermission.
  4. esx — xPlayer.getGroup() == permission.

Substitui-as para integrar um sistema de permissões próprio:

lua
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' | false

Resolve 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).

lua
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
end

Custom.getItemList() → table

Devolve 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:

lua
elseif Config.Inventory == 'my_inventory' then
    return mapItemTable(exports['my_inventory']:GetItemList())

Custom.giveItem(source, item, count) → boolean

Dá 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.

lua
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) → boolean

Abre 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) → boolean

Abre 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
lua
elseif Config.Clothing == 'my_clothing' then
    TriggerClientEvent('my_clothing:client:openMenu', source)
    return true

Custom.revivePlayer(source) → boolean

Reanima 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
lua
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