Accueil › Documentation › Personnalisation · origen_banking

Personnalisation · origen_banking

text
custom/
├── client/
│   ├── framework.lua
│   └── notify.lua
├── server/
│   ├── framework.lua
│   └── inventory.lua
└── shared/
    └── notify.lua

Tous les fichiers de custom/ figurent dans escrow_ignore, ils sont donc entièrement modifiables. N’appelle jamais directement les exports du framework depuis ces fichiers lorsqu’une méthode existe déjà dans le bridge : étends plutôt bridge/framework/<name>/server.lua.


custom/server/framework.lua

Résolution des joueurs

Fines surcouches du bridge du framework actif. Elles ont rarement besoin d’être modifiées.

lua
Internal.GetPlayerData(source)        -- Framework player object
Internal.GetPlayerIdentifier(source)  -- citizenid / identifier
Internal.GetPlayername(source)        -- character display name

Internal.GetMoney(source, account) → number

Renvoie le solde du joueur pour le type de compte donné. Quand account vaut 'cash' et que l’argent liquide est un item de l’inventaire, lit la quantité de l’item au lieu du compte du framework.

lua
Internal.GetMoney = function(source, account)
    if account == 'cash' and Custom.CashIsInventoryItem() then
        return Custom.GetCashItem(source)
    end
    return Framework.GetAccountBalance(tonumber(source), account)
end
Paramètre Type Description
source number ID serveur du joueur
account string Type de compte. Seul 'cash' est personnalisé ici ; tout le reste passe au framework

Internal.AddMoney(source, account, amount, reason) → boolean

Donne de l’argent au joueur. Renvoie false si le montant est invalide ou non positif.

Paramètre Type Description
source number ID serveur du joueur
account string Type de compte
amount number Montant positif à ajouter
reason string Libellé facultatif pour les journaux et les frameworks étendus

Internal.RemoveMoney(source, account, amount, reason) → boolean

Retire de l’argent au joueur. Renvoie false quand le joueur n’en a pas assez.


Custom.IsJobBoss(source, jobName) → boolean

Renvoie true quand le joueur est le patron du métier indiqué. Appelée à chaque évaluation de l’accès au compte du métier.

lua
Custom.IsJobBoss = function(source, jobName)
    local src = tonumber(source)
    if not src or src <= 0 then return false end
    local jobData = Framework.GetPlayerJobData(src)
    if not jobData then return false end
    return jobData.jobName == jobName and jobData.boss == true
end

Pour restreindre l’accès selon le niveau de grade plutôt que selon l’indicateur isboss :

lua
Custom.IsJobBoss = function(source, jobName)
    local job = Framework.GetPlayerJobData(tonumber(source))
    return job ~= nil and job.jobName == jobName and job.gradeRank >= 3
end

Custom.HasJobBankAccess(source, jobName) → boolean

Renvoie true quand le joueur doit voir et utiliser le compte du métier. Par défaut, seul le patron y a accès. Les utilisateurs auxquels l’accès a été accordé manuellement sont gérés séparément via usersAccess.

Pour l’étendre à tous les employés :

lua
Custom.HasJobBankAccess = function(source, jobName)
    local job = Framework.GetPlayerJobData(tonumber(source))
    return job ~= nil and job.jobName == jobName
end

Custom.GetPlayerGangName(source) → string | nil

Renvoie le gang auquel appartient le joueur, ou nil. Lit PlayerData.gang sur QB/QBX. ESX n’a pas de gestion native des gangs et renvoie nil.

lua
Custom.GetPlayerGangName = function(source)
    return exports['my_gangs']:GetPlayerGang(source)
end

Custom.IsGangBoss(source, gangName) → boolean

Renvoie true quand le joueur est le chef du gang indiqué.

lua
Custom.IsGangBoss = function(source, gangName)
    local Player = Framework.GetPlayer(source)
    local gang = Player and Player.PlayerData.gang
    return gang and gang.name == gangName and gang.grade.level >= 2
end

Custom.HasGangBankAccess(source, gangName) → boolean

Renvoie true quand le joueur doit voir et utiliser le compte du gang. Par défaut, seul le chef y a accès.


custom/server/inventory.lua

Gère l’argent liquide en tant qu’item d’inventaire. Custom.CashItem vaut 'cash' sur origen_inventory hors ESX, et 'money' partout ailleurs.

Custom.CashIsInventoryItem() → boolean

Renvoie true quand le bridge d’inventaire actif gère l’argent liquide. Si false, toutes les opérations en liquide se rabattent sur le compte du framework.

Custom.GetCashItem(source) → number

Renvoie la quantité de l’item d’argent que le joueur porte. Se rabat sur le solde du framework quand le bridge n’a pas de GetItemCount.

Custom.AddCashItem(source, amount) → boolean

Donne de l’argent liquide au joueur sous forme d’item d’inventaire.

Custom.RemoveCashItem(source, amount) → boolean

Retire de l’argent liquide au joueur. Renvoie false quand le joueur n’en porte pas assez.


custom/shared/notify.lua

Custom.Notify(data)

Point d’entrée unique de toutes les notifications. S’exécute des deux côtés : côté serveur, elle la transmet au client ; côté client, elle délègue au bridge de notifications.

Champ Type Description
title string Titre de la notification
description string Texte du corps
type string Type de notification
duration number Durée en millisecondes
source number Joueur destinataire, côté serveur uniquement. -1 par défaut
lua
Custom.Notify = function(data)
    if isServer then
        TriggerClientEvent('ox_lib:notify', data.source or -1, data)
    else
        Notify.SendNotification(data.title, data.description, data.type, data.duration)
    end
end

custom/client/notify.lua

Custom.DrawText(text, key)

Affiche l’indication d’interaction près des banques et des distributeurs, au format [key] - text.

Custom.HideText()

Masque l’indication actuellement affichée.


custom/client/framework.lua

Internal.isPlayerLoaded() → boolean

Renvoie true une fois le personnage du joueur entièrement chargé. Vérifie citizenid sur QB/QBX et identifier sur ESX.

Internal.GetPlayerIdentifier() → string | nil

Renvoie l’identifiant du joueur local.