Créer un serveur DarkRP

Dans ce guide, nous allons voir comment créer un serveur DarkRP et plus particulièrement l'installation & la configuration.

DarkRP est l’un des gamemodes les plus connues et les plus joués de GMod. Il vous permet de vivre des aventures de façon RolePlay tout en incarnant le personnage que vous voulez.

Installation du gamemode DarkRP

Nous allons donc voir comment installer le gamemode sur votre serveur.

  1. Rendez vous sur votre panel de gestion.

  2. Allez dans Plugins.

  3. Installez DarkRP et DarkRP Modification.

  4. Redémarrez votre serveur.


Nous allons désormais configurer le gamemode. Pour cela rendez dans les fichiers du serveur, dans le répertoire srcds/garrysmod/addons/darkrpmodification/lua/.

Configuration du darkrp_config

Configurer le disabled_default.lua

C’est dans ce fichier que vous pourrez désactiver certaines fonctionnalités ainsi que les objets et autres paramètres de base dans le gamemode. (ex: désactiver les jobs par défaut)

Pour désactiver certaines choses par défaut il vous suffit de remplacer false par true.

Configurer le licenseweapons.lua

Ce fichier permet d’indiquer au gamemode quels armes n’ont pas besoin de licence d’arme.

Pour ajouter une arme, ajoutez une ligne de ce style, où class est l'ID de l’arme disponible en faisant un clique droit sur l’arme en jeu puis “Copier dans le presse-papiers” :

GM.NoLicense["class"]       = true

Configurer le mysql.lua

Ce fichier vous permet de sauvegarder les données en rapport avec le gamemode directement sur une base de donnée externe disponible ici.

Ne touchez pas au fichier si vous ne souhaitez pas utiliser une base de donnée externe.

RP_MySQLConfig.EnableMySQL = true
RP_MySQLConfig.Host = "sql.mtxserv.com"
RP_MySQLConfig.Username = "w_XXXXX"
RP_MySQLConfig.Password = "votre mot de passe" 
RP_MySQLConfig.Database_name = "XXXXX_sql"
RP_MySQLConfig.Database_port = 3306
RP_MySQLConfig.Preferred_module = "mysqloo" 
RP_MySQLConfig.MultiStatements = false


  1. Remplacez les XXXXX par les chiffres présent sur le dashboard de votre site web.

  2. Rendez vous sur le panel de gestion de votre serveur.

  3. Allez dans Plugins.

  4. Installez MySQLOO.

  5. Redémarrer votre serveur.

Configurer le settings.lua

Ce fichier vous permet de changer tous les paramètres du gamemodes. Comme par exemple, retirer les lois par défaut, activer le spawn des véhicules, des npcs, etc.

Configuration du darkrp_customthings

Configurer le agendas.lua

Ce fichier permet d’ajouter pour certain job la possibilité d’avoir un agenda en haut à gauche de l’écran. Dans l’exemple ci-dessous TEAM_CHIEF est le seul à pouvoir éditer l’agenda et TEAM_POLICE peut voir l’agenda.

Vous pouvez aussi autoriser l’accès de l’agenda de la police pour une autre TEAM que la TEAM_POLICE:

  1. Ajoutez à la suite du TEAM_POLICE, une virgule.

  2. Et pour finir, la TEAM que vous voulez mettre.

AddAgenda("Agenda de la police", TEAM_CHIEF, {TEAM_POLICE})

Vous pouvez utiliser ce site pour ne pas avoir d’erreur.

Configurer le ammo.lua

Ce fichier permet d’ajouter des munitions pour les armes. Il vous suffit de copier le code ci dessous, de le coller dans le ammo.lua.

  1. Vous devrez modifier le type de munition, disponible en allant dans le fichier de l’arme ayant besoin des munitions.

  2. Cherchez SWEP.Primary.Ammo et récupérez le type de munition entre guillemets.

  3. Modifiez le prix à votre guise.

  4. Modifiez le nombre de munitions donné.

DarkRP.createAmmoType("m9k_ammo_357", { -- Le type de munition
   name = "M9K 357 ammo", -- Le nom donné dans le F4
   model = "models/Items/357ammobox.mdl", -- Le modèle visible dans le F4
   price = 100, -- Le prix
   amountGiven = 20 --Le nombre de munition
})

Vous pouvez utiliser ce site pour ne pas avoir d’erreur.


Configurer le categories.lua

Ce fichier permet d’ajouter des catégories pour les jobs, les armes, les munitions, les entitées et pour les véhicules.

  1. Copiez le code ci-dessous.

  2. Collez le dans categories.lua.

  3. Modifiez le nom de la catégorie.

  4. Modifiez le type de catégorie.

  5. Modifiez la couleur.

  6. Modifiez l’ordre de la catégorie.

DarkRP.createCategory{
   name = "Citizens", -- Le nom de la catégorie.
   categorises = "jobs", -- Ce qu'il catégorise doit être l'un des ses mots: "jobs", "entities", "shipments", "weapons", "vehicles", "ammo".
   startExpanded = true, -- Indique si la catégorie est développé lorsque vous ouvrez le F4.
   color = Color(0, 107, 0, 255), -- La couleur de la catégorie.
   canSee = function(ply) return true end, -- Facultatif: si le joueur peut voir cette catégorie.
   sortOrder = 100, -- facultatif: avec cela, vous pouvez décider où se trouve votre catégorie. Des nombres bas pour le  mettre en haut, des nombres élevés pour le mettre en bas.
}


Vous pouvez utiliser ce site pour ne pas avoir d’erreur.

Configurer le demotegroups.lua

Ce fichier permet de faire en sorte que lorsqu’un membre d’un groupe est rétrogradé, il sera banni de chaque emploi dans le groupe.

Par exemple, si une personne est ban de la TEAM_1, il sera aussi banni de la TEAM_2.

Vous pouvez aussi rajouter une TEAM autre que la TEAM_1 ou la TEAM_2.

  1. Copiez le code ci dessous.

  2. Collez le dans demotegroups.lua.

  3. Modifiez le nom.

  4. Modifiez la TEAM.

DarkRP.createDemoteGroup("Test", {TEAM_1, TEAM_2})


Vous pouvez utiliser ce site pour ne pas avoir d’erreur.

Configurer le doorgroups.lua

Vous en avez marre d’ajouter un à un l’accès aux portes pour les jobs ?

Ce fichier est fait pour vous !

Il vous permet tout simplement de regrouper tous les jobs que vous souhaitez en un seul groupe pour les portes !

  1. Copiez le code ci dessous.

  2. Collez le dans doorgroups.lua.

  3. Modifiez le nom.

  4. Modifiez la TEAM.

AddDoorGroup("Police", TEAM_CHIEF, TEAM_POLICE)


Vous pouvez utiliser ce site pour ne pas avoir d’erreur.

Configurer le entities.lua

Ce fichier permet d’ajouter des entités dans le F4. Vous pouvez ajouter n’importe quelle entité tout en suivant le code et les indication ci dessous.

  1. Modifiez l’ID de l’entité, disponible en faisant un clique droit sur l’entité en jeu puis “Copier dans le presse-papiers”.

  2. Modifiez le modèle, que vous pourrez retrouver dans vos contents d’addons.

  3. Modifiez le prix à votre guise.

  4. Modifiez le nombre d’entité maximum que la personne peut acheter (applicable uniquement sur cet entité).

  5. Modifiez la commande de l’entité, elle doit être différente d’une autre commande d’une autre entité.

DarkRP.createEntity("Machine à cigarette", { -- Le nom de l'entité
   ent = "cf_cigarette_machine", -- L'ID de l'entité
   model = "models/props_wasteland/laundry_washer003.mdl", -- Le modèle de l'entité, visible dans le F4
   price = 596, -- Le prix de l'entité, visible dans le F4
   max = 1, -- Le nombre d'entité maximum que la personne peut acheter
   cmd = "buymachineciga", -- La commande exécuter quand une personne achète l'entité, elle doit être différente d'une autre commande d'entité
   allowed = {TEAM_1} -- facultatif: permet l'achat d'une entité pour qu'une seul TEAM
})


Vous pouvez utiliser le wiki DarkRP afin d’utiliser des fonctions avancées, mais aussi ce site pour ne pas avoir d’erreur.

Configurer le food.lua

Ce fichier permet d’ajouter de la nourriture pour le cuisinier.

ATTENTION ! Le job cuisinier doit contenir le morceau de code cook = true. Sinon, le job cuisinier ne pourra pas voir la catégorie food dans votre menu F4.

  1. Modifiez le nom de la nourriture.

  2. Modifiez le modèle, que vous pourrez retrouver dans vos contents d’addons.

  3. Modifiez l’energy, c’est à dire: les points de faim donné par la nourriture.

  4. Modifiez le prix à votre guise.

  5. Modifiez l’accès de cette nourriture à une certaine TEAM.

DarkRP.createFood("Pizza", { -- Le nom de la nourriture
        model = "models/foodnhouseholditems/pizzabox.mdl", --Le modèle de la nourriture, visible dans le F4
        energy = 52, -- Les points de nourriture donné par la nourriture
        price = 3200, -- Le prix
        allowed = {TEAM_COOK} -- Facultatif: permet l'achat d'une entité pour qu'une seul TEAM
})


Vous pouvez utiliser ce site pour ne pas avoir d’erreur.

Configurer le groupchats.lua

Vous n’avez pas de radio pour les jobs de police et vous voulez que certains jobs puissent communiquer entre eux via le chat ?

Ce fichier est fait pour vous! Il vous permet tout simplement de regrouper tous les jobs que vous souhaitez en un seul groupe pour la communication via le chat.

  1. Copiez le code ci dessous.

  2. Collez le dans le fichier groupchats.lua.

  3. Modifiez les TEAM.

GAMEMODE:AddGroupChat(TEAM_1, TEAM_2)

Comme vous pouvez le voir, la TEAM_1 peut communiquer avec la TEAM_2, via le chat.

Vous pouvez utiliser ce site pour ne pas avoir d’erreur.

Configurer le jobs.lua

Ce fichier vous permet d’implémenter des jobs autre que ceux de base du DarkRP.

Les jobs que vous allez ajouter doivent être en dessous de la ligne 17 (strictement)

  1. Votre job doit disposer d’une TEAM et d’un nom UNIQUE.

  2. D’une couleur pour le job.

  3. Optionnel: d’une catégorie si vous en avez créé une auparavant.

  4. D’un playermodel, qu’on peut retrouver ici, en décompilant un addon de playermodel avec ce site, ou tout simplement, In Game, dans votre liste des contents. Les playermodels sont à mettre entre guillemets suivie d’une virgule.

  5. Il vous faudra aussi une description.

  6. De quelques armes, à mettre entre guillemets et en les séparants avec une virgule, si vous souhaitez en mettre plusieurs.

  7. D’une commande, qui doit ABSOLUMENT être unique, elle vous servira plus tard pour mettre des spawns de jobs.

  8. D’un nombre maximum de personnes qui peuvent rejoindre ce job.

  9. D’un salaire, qui est par défaut toutes les 2 minutes.

  10. De savoir si il a besoin d’un vote lors de la prise du job.

  11. De savoir si le job à une licence d’arme.

TEAM_POMPIER = DarkRP.createJob("Pompier", { --TEAM (doit toujours être unique) + Nom du job
       color = Color(255, 165, 51, 255), --Couleur du job
       category = "Other", -- Catégorie du job
       model = {"models/player/portal/male_02_fireman.mdl", --Modèle disponible pour le job
       "models/player/portal/male_04_fireman.mdl",
       "models/player/portal/male_05_fireman.mdl",
       "models/player/portal/male_05_fireman.mdl",
       "models/player/portal/male_06_fireman.mdl",
       "models/player/portal/male_08_fireman.mdl",
       "models/player/portal/male_09_fireman.mdl"},
       description = [[You have to turn off fires.]], --Description du job
       weapons = {"fire_extinguisher", "fire_axe"}, -- Arme pour le job
       command = "pompier", -- Commande du job (doit toujours être unique)
       max = 3, -- Nombre de joueurs maximum dans le job (0 = pas de limite)
       salary = 45, -- Salaire du job
       admin = 0, -- Job admin ? (0 = non, 1 = admin et +, 2 = superadmin)
       vote = false, -- Nécessite un vote pour prendre le job ?
       hasLicense = false, -- Possède une license d’arme de base ?
})


Vous pouvez utiliser le wiki DarkRP afin d’utiliser des fonctions avancées mais aussi ce site pour ne pas avoir d’erreur.


Si vous utilisez une autre TEAM que TEAM_CITIZEN alors changer la TEAM du code ci-dessous (présent à la fin du fichier) par la nouvelle TEAM.

GAMEMODE.DefaultTeam = TEAM_CITIZEN


Le code suivant (présent à la fin du fichier) permet d’indiquer quels jobs font parties de la police.

GAMEMODE.CivilProtection = {
   [TEAM_POLICE] = true,
   [TEAM_CHIEF] = true,
   [TEAM_MAYOR] = true,
}


Maintenant que vous savez commenter ajouter des métiers sur votre serveur DarkRP, peut-être voulez-vous supprimer les jobs de base du jeu ?

  1. Éditez le fichier srcds/garrysmod/addons/darkrpmodification/lua/darkrp_config/disabled_defaults.lua.

  2. Recherchez dans le fichier la ligne DarkRP.disabledDefaults["jobs"] = {.

  3. Juste en dessous de cette ligne, vous trouverez la liste des métiers de base.

    Pour désactiver les jobs, passez la valeur false à true.

    DarkRP.disabledDefaults["jobs"] = {
        ["chief"]     = true,
        ["citizen"]   = true,
        ["cook"]      = true, --Hungermod only--
        ["cp"]        = true,
        ["gangster"]  = true,
        ["gundealer"] = true,
        ["hobo"]      = true,
        ["mayor"]     = true,
        ["medic"]     = true,
        ["mobboss"]   = true,
    }

  4. Sauvegardez le fichier et redémarrez votre serveur.

  5. Connectez-vous à votre serveur, vous ne devez plus voir les métiers de base DarkRP.

Configurer le shipments.lua

Ce fichier vous permet d'ajouter des armes achetables via le F4.

L’ID de l’arme est disponible en faisant un clique droit sur l’arme en jeu puis “Copier dans le presse-papiers”.

  1. Modifiez le nom de l’arme.

  2. Modifiez le modèle, que vous pourrez retrouver dans vos contents d’addons (le modèle doit être présent sur le serveur et quand vous le faîtes spawn il doit avoir de la physique).

  3. Modifiez l’id de l’arme.

  4. Optionnel: Ajoutez une catégorie.

  5. Modifiez le prix.

  6. Modifiez le nombre d’arme avec les shipment.

  7. Savoir si l’arme est vendu séparément.

  8. Modifiez le prix de l’arme vendu séparément.

  9. Ne pas faire apparaître une caisse contenant l’arme ?

  10. Optionnel: Ajoutez une TEAM qui peut seulement acheter une arme.

  11. Optionnel: Changez le model de la caisse d’arme.

DarkRP.createShipment("Grenade Aveuglante", { -- Nom de l’arme
   model = "models/shenesis/w_flashbang.mdl", -- Modèle de l’arme
   entity = "weapon_sh_flashbang", --ID de l’arme
   category = "Other", -- Catégorie de l’arme
   price = 9000, -- Le prix de l’arme (si noship = false et separate = false)
   amount = 1, -- Nombre d’arme avec le shipment (si noship = false et separate = false)
   separate = false, -- L’arme est vendu séparément ? (pas de caisse)
   pricesep = 1200, -- Le prix de l’arme vendu séparément
   noship = false, -- Pas de caisse d’arme ?
   allowed = {TEAM_GUN}, -- TEAM pouvant l’acheter
   shipmodel = "models/items/item_item_crate.mdl", --Modèle de la caisse d’arme
})


Vous pouvez utiliser le wiki DarkRP afin d’utiliser des fonctions avancées mais aussi ce site pour ne pas avoir d’erreur.

Configuration du darkrp_language

De base, le darkrpmodification n’est pas traduit. C’est pour cela que nous vous proposons une traduction, celle-ci sera à remplacer dans le darkrp_language. Vous devrez supprimer le fichier english.lua, et remplacer celui-ci par le fichier ci-joint.