← Tous les articles

Configurer les shipments d armes DarkRP : guide complet 2026

Apres les jobs et les entites custom, les shipments d'armes sont la troisieme brique technique d'un serveur DarkRP qui tient debout. Un shipment, c'est ce qui permet a ton gun dealer, ton mafioso ou ton black market dealer d'acheter un lot d'armes (5, 10, 20 fusils dans une caisse) qu'il pourra ensuite revendre aux autres joueurs.

Sans shipments custom, ton gun dealer DarkRP n'a strictement rien a vendre — c'est l'erreur n°1 des nouveaux serveurs : les jobs sont crees mais ils n'ont aucun produit. Dans ce guide, on va voir les deux methodes pour creer des shipments (avec et sans GMod Panel), tous les champs disponibles, et les erreurs frequentes qui empechent les armes d'apparaitre ou cassent l'economie.

Ce qu'est un shipment DarkRP

Un shipment DarkRP, c'est une caisse contenant N exemplaires d'une arme, achetable depuis le menu F4 par certains jobs uniquement. Quand le joueur l'achete, il pose la caisse au sol, et chaque clic dessus lui donne une copie de l'arme dans son inventaire. Il peut ensuite la jeter au sol pour la vendre a un autre joueur (qui la ramasse avec E).

Techniquement, un shipment se distingue de :

  • Une arme directe (addCustomShipment avec seperate = false) : le joueur achete une caisse de plusieurs armes
  • Une vente a l'unite (addCustomShipment avec seperate = true) : le joueur peut acheter une seule arme directement, sans passer par la caisse
  • Une "pocket weapon" (weapon field) : l'arme va directement dans son inventaire sans caisse

Tu peux activer les deux modes simultanement : caisse ET vente a l'unite, ce qui donne au gun dealer plus de flexibilite commerciale.

Pre-requis

  • Un serveur GMod avec DarkRP + DarkRPModification
  • Au moins un job de gun dealer (TEAM_GUN, TEAM_BLACKMARKET, etc) — cf l'article jobs custom
  • Le ou les addons d'armes que tu veux vendre (M9K, CW2.0, FAS2, TFA, etc) — generalement depuis le Workshop
  • Le nom interne (weapon class) de chaque arme, accessible dans le code de l'addon (souvent m9k_ak47, cw_ak74, etc)
  • Optionnel mais fortement recommande : GMod Panel pour eviter les erreurs Lua

Methode 1 : creer un shipment via GMod Panel (sans Lua)

Le panel detecte automatiquement les armes installees dans tes addons et te les propose dans une liste avec preview.

Etape 1 : ouvrir l'editeur de shipments

Connecte-toi a GMod Panel, va sur ton serveur, puis clique sur Shipments dans la navigation. Tu vois la liste des shipments deja declares (souvent vide sur un nouveau serveur) avec leur prix, leur quantite et le job autorise.

Etape 2 : creer un nouveau shipment

Clique sur Nouveau shipment. Le formulaire :

  • Nom affiche : ce que voit le joueur dans le menu F4 (ex: "Caisse d'AK-47")
  • Class de l'arme : selecteur deroulant qui liste toutes les armes detectees dans tes addons. Le panel scanne lua/weapons/ au demarrage et te donne les classes valides — plus besoin de chercher dans les forums.
  • Modele : auto-detecte depuis l'addon, surchargeable
  • Prix de la caisse : prix total du shipment (la caisse complete)
  • Quantite par caisse : combien d'armes la caisse contient (typique : 5 a 20)
  • Vente a l'unite : case a cocher. Si activee, le gun dealer peut aussi vendre l'arme a la piece sans passer par la caisse.
  • Prix unitaire : prix d'une seule arme (n'apparait que si "vente a l'unite" coche)
  • Jobs autorises : selecteur multiple parmi tes jobs gun dealer existants
  • Categorie : Caisses d'armes legeres, Caisses d'armes lourdes, Black Market, etc

Etape 3 : sauvegarder

Le panel regenere shipments.lua automatiquement, en validant que :

  • La class de l'arme existe bien dans tes addons installes
  • Le prix et la quantite sont des entiers positifs
  • Les TEAM_ references sont reels
  • Pas de duplication (deux shipments avec exactement la meme arme + meme prix)

Etape 4 : redemarrer

Telecharge le ZIP, relance ton start.bat, et le shipment apparait dans le menu F4 → Shipments. Total : moins de 2 minutes par shipment, avec zero risque d'erreur Lua.

Avantages de la methode panel

  • Detection automatique des classes d'armes installees (fini les heures de recherche dans les workshops)
  • Duplication d'un shipment en 1 clic (super pour creer une gamme : caisse de 5 / caisse de 10 / caisse de 20 d'une meme arme)
  • Categorisation visuelle drag and drop
  • Validation du job_dealer : impossible de creer un shipment sans allowed, contrairement au Lua manuel ou c'est une simple option

Methode 2 : creer un shipment en Lua manuel

Pour ceux qui veulent comprendre la mecanique sous le capot.

Etape 1 : trouver le bon fichier

Comme pour les jobs et entites, ne touche jamais au gamemode. Le bon fichier est :

garrysmod/addons/darkrpmodification/lua/darkrp_customthings/shipments.lua

Etape 2 : la structure d'un shipment

Voici un shipment classique pour un AK-47 M9K :

DarkRP.createShipment("Caisse d'AK-47", {
    model = "models/weapons/w_rif_ak47.mdl",
    entity = "m9k_ak47",
    price = 12500,
    amount = 10,
    separate = true,
    pricesep = 1500,
    noship = false,
    allowed = {TEAM_GUN, TEAM_MAFIABOSS},
    shipmodel = "models/Items/item_item_crate.mdl",
    category = "Caisses d'armes legeres",
})

Decortiquons les champs essentiels :

  • "Caisse d'AK-47" : le nom affiche dans le menu F4
  • model : modele 3D affiche dans le menu (souvent celui de l'arme en vue lointaine)
  • entity : la class technique de l'arme (le nom du dossier dans lua/weapons/)
  • price : prix de la caisse complete
  • amount : nombre d'armes contenues dans la caisse
  • separate = true : autorise aussi la vente a l'unite
  • pricesep : prix d'une arme vendue a l'unite (ignore si separate = false)
  • noship = false : si true, supprime la caisse et n'autorise QUE la vente a l'unite
  • allowed : table de TEAM_ autorises a acheter — OBLIGATOIRE sous peine de catastrophe
  • shipmodel : modele de la caisse au sol (defaut : caisse en bois verte de Garry's Mod)
  • category : categorie du menu F4

Etape 3 : creer une categorie de shipments (optionnel)

DarkRP.createCategory{
    name = "Caisses d'armes lourdes",
    categorises = "shipments",
    startExpanded = false,
    color = Color(180, 60, 30, 255),
    canSee = function(ply) return true end,
    sortOrder = 200,
}

Note categorises = "shipments" (et pas "jobs" ou "entities").

Etape 4 : redemarrer le serveur

Sauvegarde, redemarre, et regarde la console pour les erreurs au chargement.

Les erreurs a eviter absolument

Voici les pieges classiques qui plantent ou ruinent les serveurs DarkRP debutants quand ils ajoutent des shipments.

Erreur 1 : oublier allowed = {...}

Comme pour les entites, c'est catastrophique. Sans allowed, n'importe quel joueur peut acheter le shipment, y compris les Citizens. Un Citizen avec un AK-47 = serveur mort en 3 minutes.

-- DANGEREUX :
DarkRP.createShipment("Caisse AK", {
    entity = "m9k_ak47",
    price = 10000,
    amount = 10,
    -- pas de "allowed" => Citizen peut acheter !
})
-- CORRECT :
DarkRP.createShipment("Caisse AK", {
    entity = "m9k_ak47",
    price = 10000,
    amount = 10,
    allowed = {TEAM_GUN, TEAM_MAFIABOSS},
})

GMod Panel bloque la sauvegarde d'un shipment sans jobs autorises.

Erreur 2 : entity = "xxx" qui n'existe pas

C'est l'erreur n°2 la plus frequente. Si la class d'arme ne correspond a rien, le shipment apparait dans le menu, le joueur paye, mais la caisse contient... rien. Ou crash a l'ouverture.

-- CASSE :
entity = "m9k_aks47",  -- typo : "aks47" au lieu de "ak47"
entity = "tfa_ak74",   -- mauvais addon : tu utilises M9K, pas TFA

Solution : la class est exactement le nom du dossier dans addons/<addon>/lua/weapons/. Verifie a la main, ou utilise le selecteur du panel qui scanne automatiquement les armes detectees.

Erreur 3 : prix de la caisse < prix unitaire * quantite

Si le prix de la caisse est plus bas que prix_unitaire * amount, personne n'achete a l'unite (logique : autant prendre la caisse). C'est moins une erreur qu'un mauvais calibrage, mais ça rend l'option separate = true inutile.

Regle : pricesep > price / amount. Tu veux que la caisse soit plus avantageuse que la vente a l'unite, sinon ton gun dealer ne fait jamais de marge.

Exemple correct :

  • price = 10000 (caisse de 10 armes a 1000/piece)
  • pricesep = 1500 (vente a l'unite : 1500/piece)
  • Marge gun dealer = 50% par arme vendue separement

Erreur 4 : amount trop eleve ou nul

amount = 0,    -- caisse vide, ne sert a rien
amount = 100,  -- gun dealer peut spawn 100 AK avec une seule caisse

amount = 0 ne plante pas mais le shipment ne donne aucune arme. amount trop eleve casse l'economie (un gun dealer arme la moitie du serveur d'un seul achat). Reste entre 5 et 20 pour des armes standard.

Erreur 5 : referencer un TEAM_ qui n'existe pas

Meme erreur que pour les entites :

allowed = {TEAM_GUNDEALR},  -- typo : "GUNDEALR" au lieu de "GUNDEALER"

Resultat : crash au demarrage :

[ERROR] addons/darkrpmodification/lua/darkrp_customthings/shipments.lua:8:
attempt to index a nil value (global 'TEAM_GUNDEALR')

GMod Panel valide chaque reference TEAM_ avant la sauvegarde.

Erreur 6 : noship = true sans separate = true

-- CASSE :
noship = true,    -- pas de caisse
separate = false, -- pas de vente a l'unite non plus

Resultat : le shipment est inachetable. Soit separate = true (vente a l'unite OK), soit noship = false (caisse OK), soit les deux. Jamais aucun des deux.

Erreur 7 : modele d'arme qui n'existe pas

Si tu specifies un model qui n'est pas charge (mauvais chemin, addon non installe), le menu F4 affiche un cube ERROR rouge a la place de l'icone du shipment. Le shipment fonctionne quand meme, mais c'est moche.

Solution : utilise le modele defini par l'addon de l'arme (regarde dans lua/weapons/<class>/shared.lua, ligne SWEP.WorldModel), ou laisse le panel auto-detecter.

Erreur 8 : oublier de servir l'addon d'arme aux joueurs

Si l'addon d'arme est uniquement cote serveur, les joueurs voient ERROR a la place de l'arme quand ils la posent au sol. Ils ne peuvent pas la ramasser, et le shipment devient inutilisable.

Solution : assure-toi que l'addon d'arme est dans une collection Workshop liee au serveur ou servi via FastDL. Les armes doivent etre telechargees par chaque client qui rejoint.

Erreur 9 : meme arme dans plusieurs shipments

Tu peux avoir plusieurs shipments avec la meme entity, mais c'est generalement une mauvaise pratique : ça duplique les entrees dans le menu et confuse les joueurs.

Cas legitime : differentes quantites (caisse de 5, caisse de 10, caisse de 20 d'AK) — pratique pour donner des choix economiques au gun dealer. Cas illegitime : 3 lignes "AK-47" identiques avec juste un nom different.

Erreur 10 : virgules et accolades Lua

Les memes erreurs de syntaxe que pour les jobs et entites. Une virgule oubliee, une accolade en trop, et tout le fichier ne se charge pas.

-- CASSE (manque virgule apres "amount = 10") :
DarkRP.createShipment("Test", {
    entity = "m9k_ak47",
    price = 10000,
    amount = 10
    allowed = {TEAM_GUN},
})

Utilise un editeur Lua avec coloration syntaxique. Pas le Bloc-notes Windows.

Strategies de game design pour shipments

Quelques principes economiques pour ne pas casser ton serveur :

Marge raisonnable du gun dealer

Le prix unitaire (pricesep ou price/amount) doit etre inferieur au prix auquel le gun dealer revend l'arme aux joueurs. Marge typique : 2× a 4× le prix d'achat.

  • Cout d'achat unitaire : 1000 dollars
  • Prix de revente recommande : 2000 a 4000 dollars
  • Marge gun dealer : 100% a 300% par arme

Echelle de puissance vs prix

Plus l'arme est puissante, plus le shipment doit etre cher et plus il doit etre restreint a des jobs avances :

  • Pistolets / SMG : accessibles au gun dealer standard, prix ~5000-10000 par caisse
  • Fusils d'assaut : gun dealer ou mafioso, prix ~10000-20000
  • Snipers / armes lourdes : black market dealer uniquement, prix ~25000-50000
  • Armes explosives (RPG, grenades) : tres restreints, prix tres eleves, tres faible quantite

Frequence de respawn vs raid

Si tes shipments sont trop chers, les gun dealers se font raid par les criminels et perdent tout. Si ils sont trop pas chers, l'economie inflate. Trouve l'equilibre en surveillant combien de raid ont lieu par heure et combien d'armes circulent.

Verifier ses shipments avant prod

  1. Valider la syntaxe Lua (luac -p shipments.lua)
  2. Demarrer le serveur et regarder la console au chargement
  3. Joindre le serveur avec un compte gun dealer, ouvrir F4 → Shipments
  4. Acheter chaque shipment, poser la caisse, prendre une arme — verifier qu'elle apparait correctement et qu'elle est utilisable
  5. Acheter en mode unite (si separate = true) pour valider que pricesep est applique
  6. Joindre avec un compte non-autorise (Citizen) et verifier que les shipments restreints n'apparaissent pas dans son F4

GMod Panel fait ces validations automatiquement via "Verifier les erreurs" dans le menu serveur.

Conclusion

Les shipments d'armes sont le poumon commercial du gun dealer DarkRP — sans eux, le job n'a aucun sens et personne ne le joue. Bien configures (avec allowed, des prix coherents et une echelle de puissance), ils creent une economie d'armement realiste qui alimente toute la boucle gameplay : criminels qui s'arment, police qui reagit, gun dealer qui tire profit.

Mal configures (sans allowed, prix bidons, classes inexistantes), ils ruinent le serveur en quelques minutes : Citizens armes jusqu'aux dents, gun dealers ruines, balance gameplay morte.

La methode via GMod Panel elimine 100% des erreurs structurelles et te laisse te concentrer sur ce qui compte vraiment : l'equilibre et le game design de ton serveur.

Avec tes jobs, tes entites et tes shipments custom configures, tu as desormais les 3 piliers techniques d'un serveur DarkRP unique. La prochaine etape, c'est l'ajout de maps custom — qu'on verra dans un futur tutoriel.

Bon dev !