Accueil › Documentation › Personnalisation · origen_quests
Tous les fichiers personnalisables sont exclus du chiffrement CFX escrow et peuvent être modifiés sans risque.
custom/
├── cl_drawtext.lua -- Client: interaction text UI (key prompt at locations)
├── cl_framework.lua -- Client: framework, notifications, player data
└── sv_framework.lua -- Server: framework, admin, inventory, integrationsContrôle le texte d’invite affiché lorsqu’un joueur est proche d’un emplacement de quête.
DrawQuestText(key, text)Appelée lorsque le joueur entre dans le rayon d’interaction d’un emplacement. L’implémentation par défaut utilise le textUI de ox_lib.
function DrawQuestText(key, text)
lib.showTextUI("[" .. key .. "] - " .. text)
end| Paramètre | Type | Description |
|---|---|---|
key |
string |
Libellé de la touche à afficher (p. ex. E) |
text |
string |
Libellé d’interaction défini dans la configuration de l’emplacement |
HideQuestText()Appelée lorsque le joueur quitte le rayon d’interaction.
function HideQuestText()
lib.hideTextUI()
endRemplace ces fonctions pour utiliser n’importe quel système de drawtext ou de textUI.
Framework.GetLocalIdentifier() → string | nilRenvoie l’identifiant du joueur local (citizenid / license). Utilisé pour synchroniser l’XP.
function Framework.GetLocalIdentifier()
-- qbx / qb
local ok, p = pcall(function() return exports.qbx_core:GetPlayerData() end)
return (ok and p) and p.citizenid or nil
endFramework.GetPlayerData() → tableRenvoie l’objet complet des données du joueur issu du framework. Utilisé pour les métadonnées de l’interface.
function Framework.GetPlayerData()
local ok, p = pcall(function() return exports.qbx_core:GetPlayerData() end)
return (ok and p) and p or {}
endFramework.NotifyClient(message, notifyType)Envoie une notification au client local.
function Framework.NotifyClient(message, notifyType)
-- notifyType: 'inform' | 'success' | 'error' | 'warning'
lib.notify({ description = message, type = notifyType })
endAdapte cette fonction lorsque tu utilises Config.NotifySystem = 'custom' avec un événement client.
Framework.OnPlayerLoaded(callback)Enregistre un callback exécuté lorsque le joueur a fini de charger. Utilisé pour initialiser les données de quêtes.
function Framework.OnPlayerLoaded(callback)
AddEventHandler('QBCore:Client:OnPlayerLoaded', callback)
endFramework.TriggerCallback(name, cb, ...)Encapsule lib.callback pour les callbacks serveur. Tu n’as normalement pas besoin de la modifier.
Framework.GetPlayerGang() → stringRenvoie le nom du gang actuel du joueur ou "none".
Framework.GetPlayerBusinesses() → tableRenvoie les entreprises actives du joueur depuis le statebag.
Framework.GetPlayer(source) → table | nilRenvoie l’objet joueur du framework pour le source donné.
function Framework.GetPlayer(source)
local ok, p = pcall(function() return exports.qbx_core:GetPlayer(src) end)
return (ok and p) and p or nil
endFramework.GetIdentifier(source) → string | nilRenvoie l’identifiant unique du joueur (citizenid pour QB, license pour ESX/standalone).
Framework.HasAdminPermission(source) → booleanVérifie si un joueur a un accès administrateur. Ordre de résolution selon Config.AdminSystem :
origen_admin : vérifie la permission "origen_quests" de origen_adminace : vérifie IsPlayerAceAllowed(source, Config.AdminAceNode)license : vérifie la liste Config.AdminLicensescustom : appelle Config.AdminCustom.resource:Config.AdminCustom.hasPermission(source, permission)qb : vérifie le groupe du joueur (god, superadmin, admin)esx : vérifie le groupe du joueur (superadmin, admin)Framework.Notify(source, message, ntype)Envoie une notification à un joueur côté serveur.
Framework.HasItem(source, item, amount) → booleanVérifie si le joueur possède au moins amount unités de item. Détecte automatiquement le système d’inventaire.
Framework.AddItem(source, item, amount) → booleanAjoute des objets à l’inventaire du joueur. Renvoie true en cas de succès.
Framework.RemoveItem(source, item, amount) → booleanRetire des objets de l’inventaire du joueur. Renvoie true en cas de succès.
Framework.GetItems() → tableRenvoie tous les objets enregistrés dans le système d’inventaire actif. Utilisé pour remplir le sélecteur d’objets du panneau d’administration.
Framework.GetItemByName(source, itemName) → tableRenvoie les données d’un objet (avec count/amount) pour un joueur précis.
Framework.GetItemMetadata(itemName) → tableRenvoie les métadonnées d’un objet (name, label, image, description) à partir de son nom.
Le script principal appelle ces fonctions pour résoudre les intégrations. Remplace-les dans sv_framework.lua pour avoir un contrôle total.
Framework.GetPlayerAffiliationsCustom(source) → table | nilAppelée lorsque Config.Integrations.affiliations.mode = 'custom'. Doit renvoyer :
return {
gang = "mafia", -- string, gang name or "none"
businesses = { "auto_shop" } -- table of business IDs
}Framework.GetGangsCustom() → tableAppelée lorsque Config.Integrations.gangs.mode = 'custom'. Doit renvoyer un array :
return {
{ id = "mafia", label = "Mafia" },
{ id = "ballas", label = "Ballas" },
}Framework.GetBusinessesCustom() → tableAppelée lorsque Config.Integrations.businesses.mode = 'custom'. Doit renvoyer un array :
return {
{ id = "auto_shop", label = "Auto Shop", grades = { "owner", "manager" } },
}Framework.SendPoliceDispatchCustom(source, data) → booleanAppelée lorsque Config.Integrations.dispatch.mode = 'custom'. Reçoit :
-- data = { message = "...", title = "..." }
-- Return true if the alert was sent successfully.
function Framework.SendPoliceDispatchCustom(_source, _data)
exports['my_dispatch']:SendAlert(_source, _data)
return true
endFramework.CreateLog(data)Appelée en interne lorsque des actions d’administration sont effectuées. Transmet à origen_admin s’il est en cours d’exécution ; sinon, utilise l’événement SendDiscordLog.