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.
Compatibilité
| Framework | ESX, QBCore, QBX, Standalone (auto-détecté) |
| Base de données | MySQL via mysql-async |
| FiveM | fx_version 'bodacious' |
Installation
context dans ton dossier resourcesensure context dans ton server.cfgsource doorlock_migration.sql
server/config.lua selon tes besoinsConfiguration — server/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 = "",
},
}
print(GetPlayerIdentifiers(1))
Commandes
| Commande | Description | Restriction |
|---|---|---|
/doorlist | Ouvre l'interface de gestion de toutes les portes | Admin (config) |
Touches
| Touche | Action |
|---|---|
§ (maintenu) | Affiche le curseur contextuel pour interagir avec les entités |
Clic droit | Ouvre le menu contextuel sur l'entité visée |
E | Interagir avec une porte (ouvrir / fermer) |
Suppr | Retour au menu principal dans le doorlist |
Créer une porte
§ et vise le prop de la portepolice)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ément | Action |
|---|---|
| Métier | Clic → input pour changer le job assigné |
| Grades | Clic → sous-menu avec checkboxes par grade |
| Statut | Slider Ouvert/Fermé + Enter pour appliquer |
| Coords | Clic → input pour modifier les coordonnées manuellement |
| Blip sur la carte | Checkbox → affiche/masque un blip sur la map (admins uniquement) |
| Téléporter | Se téléporte sur la porte |
| Déverrouillage temporaire | Déverrouille X secondes puis re-lock automatiquement |
| Masquer/Afficher texte 3D | Toggle l'affichage du texte "Appuyez sur E" |
| Whitelist | Gestion des joueurs autorisés spécifiquement |
| Blacklist | Gestion des joueurs bloqués sur cette porte |
| Historique | 20 dernières actions sur la porte |
| Supprimer la porte | Suppression 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.
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é.
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
adminLicenses et ne persistent pas après un redémarrage de la ressource.
Texte 3D en jeu
| Situation | Texte affiché |
|---|---|
| Bon job + bon grade + porte verrouillée | Appuyez sur ~g~E~s~ pour ouvrir |
| Bon job + bon grade + porte ouverte | Appuyez sur ~r~E~s~ pour fermer |
| Mauvais job ou mauvais grade | Rien (invisible) |
Structure des fichiers
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
| Colonne | Type | Description |
|---|---|---|
model | int | Hash du modèle du prop |
x, y, z | float | Coordonnées de la porte |
locked | tinyint | 0 = ouvert, 1 = fermé |
job_name | varchar | Job assigné |
grade | varchar | Grades autorisés (ex: 0,1,2) |
show_text | tinyint | Afficher le texte 3D |
interact_distance | float | Distance d'interaction |
schedule | text | Horaires JSON |
sound | varchar | Son personnalisé |
temp_unlock_until | int | Timestamp fin déverrouillage temporaire |
Tables secondaires
doorlock_whitelist— Joueurs whitelistés par portedoorlock_blacklist— Joueurs blacklistés par portedoorlock_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.