Ce script FiveM permet aux groupes de personnel autorisés emprisonner de force les joueurs dans une zone restreinte où ils ne peut pas bouger ou s'échapper pour une durée déterminée.
C'est idéal pour serveurs RP semi-sérieux ou sérieux, permettant aux administrateurs d'envoyer les personnages décédés à un Prison administrative—les faire inutilisable pour le reste de la session — ou de placer les joueurs perturbateurs sur une délai d'attente temporaire.
La peine de prison est stocké dans la base de données et ne fait que diminuer pendant que le joueur est en ligne et en utilisant ce caractère spécifique.
Il existe de nombreuses options configurables pour utiliser la ressource à votre guise :
Groupes configurables pour avoir accès aux commandes.
Noms de texte/commande configurables (langue).
Emplacement de prison d'administration configurable.
Emplacement de libération de la prison administrative configurable.
Commande de liste de prison admin configurable : affiche tous les joueurs actuellement emprisonnés/ckés par l'administrateur.
Contrôles configurables à désactiver lorsque le joueur est emprisonné/bloqué par l'administrateur.
Menu pour afficher les utilisateurs qui sont emprisonnés/bloqués par l'administrateur.
Journalisation du webhook Discord (suivez qui emprisonne/libère et met à jour l'heure).
Configuration des buckets de routage optionnels lors du chargement / adminjail.
Autorisations Ace. (VOIR LA DOCUMENTATION).
Commandes:
> ./adminjail (playerID, reason, time) – emprisonner un joueur pendant x temps.
> ./adminjailtime – voir le temps qu’il vous reste actuellement.
> ./adminjailrelease (playerID) – libère un joueur de la prison d’administration.
-- ███████████████████████████████████████████████████████████████████████████ --
Config = {}
Config.Framework = 1 -- (ESX == 1), (QB == 2)
Config.FrameworkExport = 'es_extended' -- (ESX == 'es_extended'), (QB == 'qb-core')
Config.releaseLocation = vector3(187.1704, -919.8855, 29.8055-1) -- where do you want the player to be teleported when out of adminjail/ck?
Config.chatMessages = true -- do you want the adminjail to notify other players in chat when adminjailed etc?
Config.reduceTimeOffline = true -- set to true if you want admin jail time to decrease even when the player is offline.
Config.routingBucket = true -- do you want to enable routing buckets? (this will put players into a random session so they are likely not to be with another player, more so for trolls)
Config.AdminJailCommand = 'adminjail'
Config.AdminJailCommandRelease = 'unadminjail'
Config.AdminJailTime = 'adminjailtime'
Config.AdminJailList = 'adminjaillist'
Config.DistanceCheck = 20.0 -- how far they can go away from Config.jailLocation before they're teleported back.
Config.DistanceMessage = 'You were teleported back to admin-jail for trying to get away.'
Config.DisabledControls = {24, 257, 25, 263, 45, 22, 44, 37, 23, 288, 289, 170, 167, 73, 59, 71, 72, 36, 47, 264, 257, 140, 141, 142, 143, 75} -- 245 for T keybind (chat)
Config.ckToggle = true -- toggle CK
Config.ckCommand = 'ck' -- cmd to CK
Config.unckToggle = true -- toggle unCK
Config.unckCommand = 'unck' -- cmd to unCK
Config.ckAnnounce = true -- do you want to alert in that when someone is CKed?
-- Chat Messages IF ENABLED. -- (mainly for changing the RGBA colors & modifications -- don't touch if you don't know what you're doing)
Config.Admin_Jail_Updated = '<div style="color: rgba(255, 99, 71, 1); width: fit-content; max-width: 125%; word-break: break-word; "> {0} </div>'
Config.Admin_Jail_Sent = '<div style="color: rgba(255, 99, 71, 1); width: fit-content; max-width: 125%; word-break: break-word; "> {0} </div>'
Config.CK_Announce_Chat = '<div style="width: fit-content; max-width: 125%; word-break: break-word; "><span style="color: rgba(255, 99, 71, 1);">{0}</span> <span style="color: rgba(255, 255, 255, 1);">{1}</span></div>'
--
Config.AcePerm = false -- check readme
Config.AdminGroups = {
'god',
'admin',
'moderator',
'leadadmin',
'developer',
'management',
'owner'
}
-- to run /ck & /adminjail -- (don't have access to /unck & /adminjailrelease to avoid abuse from the job)
Config.Jobs = {
{ name = 'police', grade = 6 },
{ name = 'ambulance', grade = 6 },
}
Config.jailLocation = {
x = 3557.8950, -- x Coordinate
y = 3659.7058, -- y Coordinate
z = 28.1219-1 -- z Coordinate
}
Config.EnableWebhook = false -- (if true add webhook to server side) adminplus-adminjail/server/webhooks.lua
Config.Strings = {
adminjail = 'send an individual to Admin Jail',
adminjailrelease = 'release an individual from Admin Jail',
adminjailchecktime = 'check the time of a person in Admin Jail',
adminjailtimecommand = 'Check remaining jail time',
insufficientpermissions = 'insufficient permission to use this command',
invalid_player_id = 'invalid Player ID',
invalid_reason = 'invalid reason',
invalid_time = 'invalid time',
player_not_found = 'player not found',
usage_admin_release = 'Usage: /adminjailrelease [playerId]',
usage_admin_jail = 'Usage: /adminjail [playerId] [reason] [time]',
usage_admin_ck = 'Usage: /ck [playerId]',
admin_jail_fail_remove = 'Failed to remove Admin Jail record from the database',
admin_jail_fail_insert = 'Failed to insert admin jail record into the database',
admin_jail_fail_update = 'Failed to update admin jail record in the database',
admin_jail_released = 'You have been released from Admin Jail!',
admin_jail_sent = 'You have been sent to Admin Jail!',
time = ' \nTime: ',
admin_jail_updated = 'Your Admin Jail time has been updated! \nTime Updated: ',
remaining_jail_time = 'Your remaining jail time:',
remaining_jail_time_other = 'remaining jail time:',
minutes = ' minute(s) ',
seconds = ' seconds',
player = ' player ',
reason = ' \nReason: ',
staff = ' \nStaff: ',
active_admin_jail = 'You have an active Admin Jail sentence.',
no_active_admin_jail = 'You do not have an active jail sentence.',
no_active_admin_jail_other = 'does not have an active jail sentence.',
chat_message_sent_to_jail = '%s has sent %s to Admin Jail for %s minute(s). Reason: %s',
chat_message_has_updated = '%s has updated %s Admin Jail time to %s minute(s). Reason: %s',
--
ck = 'send an individiual to be CKed',
ckrelease = 'release an individual from being CKed',
usage_ck_admin_jail = 'Usage: /ck [playerId]',
chat_ck_message_sent_to_jail = '%s has has been sent to the morgue. Reason: %s',
chat_ck_message_has_updated = '%s has updated %s Admin Jail time to %s minute(s). Reason: %s',
admin_ck_fail_update = 'User is already in the morgue.',
admin_ck_fail_remove = 'Failed to remove CK record from the database',
admin_ck_sent = 'You have been sent to the Morgue!',
admin_ck_fail_insert = 'Failed to insert CK record into the database',
usage_ck_release = 'Usage: /unck [playerId]',
admin_ck_released = 'You have been released from the Morgue!',
-- client side menu notifications
admin_menu_name = 'Admin Jail Features',
admin_menu_list = 'Admin Jail List ',
admin_menu_reason = 'Reason: ',
admin_menu_jail_time = '\nJail Time: ',
admin_menu_update_user_time = 'Update admin-jail time',
admin_menu_update_user_time_desc = 'Update the admin-jail time of this individual.',
admin_menu_update_input_user_time = 'Update admin-jail time for "',
admin_menu_update_input_user_time_desc = 'How many minutes do you want this character to be admin-jailed for? ',
admin_menu_remove_admin_jail_title = 'Remove admin-jail',
admin_menu_remove_admin_jail_desc = 'Remove the admin-jail of this individual.',
admin_menu_remove_ck_title = 'Un Character Kill',
admin_menu_remove_ck_desc = 'Remove the character kill of this individual.',
admin_menu_remove_copy_title = 'Copy Identifier',
admin_menu_remove_copy_desc = 'Copy character\'s identifier.',
admin_menu_remove_back_title = 'Back',
admin_menu_remove_back_desc = 'Go back to admin-jail history.',
admin_menu_clipboard = 'Copied identifier to clipboard \n',
-- server side menu notifications
admin_menu_remove_admin_jail = 'Character Admin-Jail removed from database: ',
admin_menu_remove_admin_jail_online = 'Character is in the city and was successfully removed from admin-jail.',
admin_menu_remove_admin_jail_offline = 'Character is not in the city but was successfully removed from admin-jail.',
admin_menu_fail_remove_license = 'Failed to remove license from database: ',
admin_menu_ck_remove = 'Character-Kill removed from database: ',
admin_menu_remove_ck_online = 'Character is in the city and was successfully un-cked.',
admin_menu_remove_ck_offline = 'Character is not in the city but was successfully un-cked.',
admin_menu_update_time = 'Updated admin jail time for: ',
admin_menu_fail_update_time = 'Failed to update admin jail time for: ',
}
Config.Debug = false
-- ███████████████████████████████████████████████████████████████████████████ --
Installation
Exécutez le SQL
voir Config pour configurer votre framework.
—
AUTORISATIONS ACE :
> (utilisez celui que vous souhaitez, ajoutez-le à votre serveur.cfg )
si vous souhaitez autoriser un groupe spécifique avec des autorisations, utilisez la première
si vous êtes sur ESX et que vous souhaitez autoriser des identifiants spécifiques, utilisez le 2ème
si vous êtes sur ESX et que vous souhaitez autoriser des identifiants spécifiques, utilisez le 3ème
Le README livré contient des exemples SQL et ACE ; le guide ci-dessous conserve l'ordre requis sans publier d'espaces réservés d'identifiant.
Prérequis et préparation
ESX ou QBCore et le SQL inclus.
Un ACE à privilèges minimaux ou une politique de groupe de framework pour les commandes de prison.
Installation
Importez le SQL inclus et extrayez adminplus-adminjail.
Sélectionnez le comportement du framework/export, de l'emplacement de libération, du bucket de routage et du temps hors ligne dans config.lua.
Ajoutez des permissions ACE en utilisant les identifiants appartenant à votre serveur et démarrez la ressource.
Points de contrôle de configuration
Testez les commandes de prison, de libération, de temps restant et de liste avec des comptes autorisés et non autorisés.
Vérifiez le comportement de reconnexion, de compte à rebours hors ligne et de distance d'évasion.
Sécurité : Sauvegardez la ressource et les tables de base de données affectées, utilisez des identifiants appartenant à votre serveur, et effectuez un test de staging avant de remplacer une ressource en production. La configuration complète reste dans le package de téléchargement.