Aller au contenu principal

🧩 Création d'un Pont de Cadre Personnalisé

Dream Bridge prend en charge ESX, QBCore et QBX dès le départ. Si vous utilisez un cadre différent ou modifié, vous pouvez implémenter votre propre pont personnalisé pour assurer la compatibilité.

Ce guide vous explique comment créer un nouveau pont en utilisant le modèle custom intégré.

💡 Remarque: QBX (Qbox) est entièrement compatible avec le pont QBCore. Aucune implémentation séparée n'est nécessaire.


📁 Structure du Pont

Tous les ponts se trouvent dans le dossier bridge/. Chaque cadre (par exemple, esx, qbcore, custom) a son propre sous-dossier avec:

  • client.lua
  • server.lua
Structure du Pont

Le pont détecte automatiquement votre cadre actif via GetResourceState.

Important: Si votre ressource de cadre est renommée (par exemple, es_extendedroleplay_framework), la détection automatique peut échouer.


🚀 Comment Utiliser le Pont Personnalisé

Utilisez le pont custom:

  • Vous utilisez un cadre autonome ou non officiel/non pris en charge
    ➡️ Créez un nouveau pont basé sur le modèle custom.
  • Vous devez modifier/changer quelque chose dans un pont existant.
    ➡️ Essayez d'abord de modifier le pont existant. Par exemple, si votre table owned_vehicles est différente de celle par défaut, vous devez simplement modifier les fonctions liées aux véhicules dans le pont existant. Pas besoin d'en créer un nouveau ou de tout modifier.
  • Aucun cadre pris en charge n'est détecté par défaut.
    ➡️ Si vous avez renommé votre ressource de cadre, elle peut ne pas être détectée automatiquement (par exemple, es_extended -> roleplay_framework). Dans ce cas, vous devez ajouter GetResourceState à votre ressource renommée dans le fichier de pont correct. Pont Personnalisé GetResourceState

🛠️ Premiers Pas

  1. Copiez le dossier bridge/custom
    Renommez-le pour correspondre au nom de votre cadre personnalisé (par exemple, bridge/moncadre).
  2. Modifiez à la fois client.lua et server.lua
    Implémentez votre logique dans les fonctions fournies.
  3. Ajustez la logique de détection du cadre
    Remplacez ou étendez les vérifications GetResourceState pour détecter votre cadre personnalisé.

✅ Exemple: client.lua

Exemple client.lua
if GetResourceState('mon_cadre') ~= 'started' then return end

DreamFramework.ServerFramework = 'moncadre'
DreamFramework.ServerFrameworkLoaded = true

function DreamFramework.showHelpNotification(text)
-- Votre code d'affichage d'aide personnalisé
end

function DreamFramework.getPlayerJobName()
return exports['mon_cadre']:GetJobName()
end

✅ Exemple: server.lua

Exemple server.lua
if GetResourceState('mon_cadre') ~= 'started' then return end

DreamFramework.ServerFramework = 'moncadre'
DreamFramework.ServerFrameworkLoaded = true

function DreamFramework.getPlayerFromId(source)
return exports['mon_cadre']:GetPlayer(source)
end

function DreamFramework.getPlayerMoney(source, account)
local player = DreamFramework.getPlayerFromId(source)
return player.money or 0
end

🧠 Quelles Fonctions Implémenter?

Votre pont doit implémenter toutes les fonctions incluses dans le modèle custom et tous les autres ponts. Cela inclut:

  • Fonctions du joueur (par exemple, getPlayerFromId, getPlayerName)
  • Gestion des emplois
  • Inventaire & argent
  • Propriété des véhicules
  • Événements comme OnPlayerLoaded, OnPlayerJobChange
  • Toutes autres fonctions que le pont possède... Consultez les fichiers bridge/custom/client.lua et bridge/custom/server.lua pour la liste complète des fonctions requises.
⚠️ Les Fonctions Requises Sont Obligatoires

Chaque fonction du modèle de pont doit être implémentée dans votre pont personnalisé.
Si même une fonction est manquante, votre cadre risque de générer plusieurs erreurs, de casser les scripts qui dépendent de ces fonctions et de causer un comportement inattendu.

➡️ Vérifiez bridge/moncadre/client.lua et bridge/moncadre/server.lua pour assurer une couverture fonctionnelle complète.

Fonctions manquantes = expérience altérée.


⏰ Gestion des Événements

Certains événements doivent être déclenchés manuellement pour la compatibilité:

RegisterNetEvent('moncadre:joueurChargé', function(playerId)
OnPlayerLoaded(playerId)
end)

RegisterNetEvent('moncadre:changementEmploi', function(playerId, nouvelEmploi)
OnPlayerJobChange(playerId, nouvelEmploi.nom)
end)

💬 Conseils

  • Utilisez des journaux comme print("[Pont] Pont personnalisé chargé") pour un débogage plus facile.
  • Testez chaque fonction individuellement dans un environnement contrôlé.
  • Utilisez le dossier custom comme base — il est déjà pré-rempli avec toutes les fonctions requises.

🙌 Contribuez Votre Pont

Vous avez créé un pont fonctionnel pour votre propre cadre?
N'hésitez pas à le partager avec nous — aidez les autres à bénéficier de votre intégration!

🧠 Votre contribution peut devenir partie du projet officiel, et vous obtiendrez tout le crédit pour votre travail.
💡 Si vous avez des questions ou avez besoin d'aide, n'hésitez pas à nous contacter sur notre serveur Discord.


Bon codage! 🚀