Docs DoorLock Creator

DoorLock Creator

Système de verrouillage de portes pour FiveM avec gestion des jobs, grades, whitelist, blacklist, historique d'accès et interface d'administration complète.

ESX QBCore Standalone

Compatibilité

FrameworkESX, QBCore, QBX, Standalone (auto-détecté)
Base de donnéesMySQL via mysql-async
FiveMfx_version 'bodacious'

Installation

1
Copie le dossier context dans ton dossier resources
2
Ajoute ensure context dans ton server.cfg
3
Importe le fichier SQL dans ta base de données :
SQL
source doorlock_migration.sql
4
Configure server/config.lua selon tes besoins
5
Redémarre le serveur

Configuration — server/config.lua

config.lua
DoorlockConfig = {
    enabled = true,

    -- Licences autorisées à utiliser le context menu, créer/supprimer des portes
    -- Formats : "steam:XXXXXXXXXXXXXXX" ou "license:XXXXXXXXXXXXXXX"
    -- Laisser vide {} = pas de restriction
    adminLicenses = {
        "steam:110000112345678",
    },

    defaultInteractDistance   = 2.0,   -- Distance d'interaction (mètres)
    defaultTempUnlockDuration = 30,    -- Durée déverrouillage temporaire (secondes)

    accessLog = {
        enabled  = true,
        keepDays = 30,  -- 0 = jamais supprimer
    },

    webhooks = {
        create     = "https://discord.com/api/webhooks/...",
        delete     = "https://discord.com/api/webhooks/...",
        toggle     = "",
        tempunlock = "",
    },
}
Pour trouver ton identifier Steam exact, tape dans la console serveur FiveM : print(GetPlayerIdentifiers(1))

Commandes

CommandeDescriptionRestriction
/doorlistOuvre l'interface de gestion de toutes les portesAdmin (config)

Touches

ToucheAction
§ (maintenu)Affiche le curseur contextuel pour interagir avec les entités
Clic droitOuvre le menu contextuel sur l'entité visée
EInteragir avec une porte (ouvrir / fermer)
SupprRetour au menu principal dans le doorlist

Créer une porte

1
Maintiens § et vise le prop de la porte
2
Clic droit → Créer un nouveau door lock
3
Entre le nom du job dans l'input (ex: police)
4
La porte est créée, verrouillée et assignée au job indiqué
Seuls les joueurs dont la license est dans adminLicenses peuvent créer des portes.

Menu Doorlist — /doorlist

Interface complète de gestion de toutes les portes enregistrées.

Liste principale

  • Bascule de langue : Français / English
  • Filtrer par job : affiche uniquement les portes d'un job spécifique
  • Chaque porte affiche : job, coordonnées, statut (Ouvert / Fermé)
  • Supprimer toutes les portes : suppression avec confirmation (oui / yes)

Détail d'une porte

ÉlémentAction
MétierClic → input pour changer le job assigné
GradesClic → sous-menu avec checkboxes par grade
StatutSlider Ouvert/Fermé + Enter pour appliquer
CoordsClic → input pour modifier les coordonnées manuellement
Blip sur la carteCheckbox → affiche/masque un blip sur la map (admins uniquement)
TéléporterSe téléporte sur la porte
Déverrouillage temporaireDéverrouille X secondes puis re-lock automatiquement
Masquer/Afficher texte 3DToggle l'affichage du texte "Appuyez sur E"
WhitelistGestion des joueurs autorisés spécifiquement
BlacklistGestion des joueurs bloqués sur cette porte
Historique20 dernières actions sur la porte
Supprimer la porteSuppression avec confirmation (oui / yes)

Système de grades

Par défaut, si aucun grade n'est assigné, tous les grades du job peuvent interagir. Dès qu'au moins un grade est coché, seuls les grades cochés ont accès.

Exemple : Job police, grades 0, 1, 2, 3 — si grades 2 et 3 cochés, seuls les grades 2 et 3 peuvent ouvrir la porte.

Whitelist / Blacklist

Whitelist

Si au moins un joueur est whitelisté sur une porte, seuls les joueurs whitelistés peuvent interagir, peu importe leur job/grade.

Blacklist

Un joueur blacklisté est toujours refusé, même s'il a le bon job/grade ou est whitelisté.

Priorité : Blacklist > Whitelist > Job/Grade

Déverrouillage temporaire

Déverrouille une porte pendant une durée définie (en secondes), puis la re-verrouille automatiquement. Accessible depuis le détail d'une porte dans le doorlist.

Blips

Depuis le détail d'une porte, une checkbox permet d'afficher un blip sur la carte :

  • Rouge = porte verrouillée
  • Vert = porte déverrouillée
Les blips sont visibles uniquement pour les joueurs dans adminLicenses et ne persistent pas après un redémarrage de la ressource.

Texte 3D en jeu

SituationTexte affiché
Bon job + bon grade + porte verrouilléeAppuyez sur ~g~E~s~ pour ouvrir
Bon job + bon grade + porte ouverteAppuyez sur ~r~E~s~ pour fermer
Mauvais job ou mauvais gradeRien (invisible)

Structure des fichiers

Structure
context/
├── client/
│   ├── context.lua           — Logique principale client
│   ├── contextManagement.lua — Gestion du context menu
│   ├── contextmenu.js        — Classe ContextMenu (raycast, hover, touche §)
│   ├── doorlist.lua          — Interface RageUI doorlist
│   ├── framework.lua         — Bridge framework côté client
│   ├── functions.lua         — Gestion du focus NUI
│   ├── locale.lua            — Traductions FR/EN
│   └── settings.lua
├── server/
│   ├── config.lua            — Configuration principale
│   ├── context.lua           — Logique serveur (DB, events, permissions)
│   └── framework.lua         — Bridge framework côté serveur
├── ui/
│   ├── index.html
│   ├── script.js
│   ├── doorlist.js
│   └── style.css / doorlist.css
├── rageui/                   — Librairie RageUI
├── doorlock_migration.sql    — Script SQL de migration
└── fxmanifest.lua

Base de données

Table principale — context_door_access

ColonneTypeDescription
modelintHash du modèle du prop
x, y, zfloatCoordonnées de la porte
lockedtinyint0 = ouvert, 1 = fermé
job_namevarcharJob assigné
gradevarcharGrades autorisés (ex: 0,1,2)
show_texttinyintAfficher le texte 3D
interact_distancefloatDistance d'interaction
scheduletextHoraires JSON
soundvarcharSon personnalisé
temp_unlock_untilintTimestamp fin déverrouillage temporaire

Tables secondaires

  • doorlock_whitelist — Joueurs whitelistés par porte
  • doorlock_blacklist — Joueurs blacklistés par porte
  • doorlock_access_log — Historique des accès

Langues supportées

  • Français
  • English

La langue est sélectionnable directement dans le menu doorlist et s'applique à toute l'interface.