# Jobs VIP

## Créer le groupe d'utilisateur (VIP)

Pour utiliser cela, vous devez tout d'abord avoir quelques joueurs connectés sur le serveur pour pouvoir tester les commandes et créer par la suite le groupe d'utilisateur (donateur, vip ou ce que vous voulez). Pour créer un groupe d'utilisateur sur ulx, la commande est "ulx adduser nom donateur" (avec le nom de la personne et votre groupe d'utilisateur au lieu de donateur). Vous pouvez aussi écrire "ulx adduserid steamid donateur".

* Assurez vous que vous êtes utilisateur (FAdmin setroot votrenom dans la console rcon/serveur)
* Avoir le donateur sur le serveur
* Après avoir appuyé sur TAB, cliquer sur le nom du joueur et sur "Set access" (premier bouton)
* Cliquer de nouveau
* Suivre les instructions à l'écran et appelez votre groupe d'utilisateur "donateur" ou "vip" ou ce que vous voulez. Assurez vous cependant de retenir le nom du groupe.
* Quand vous créez votre job, utilisez ceci:

```lua
TEAM_DONATORJOB = DarkRP.createJob("Cuisinier", { -- Nom
    color = Color(238, 99, 99, 255), -- Couleur de la team
    model = "models/player/mossman.mdl", -- Modèle du joueur
    description = [[En cuisinier, c'est votre responsabilite de nourrir les personnes de la ville. 
                            Vous pouvez acheter un micro onde et vendre votre nourriture: /Buymicrowave]],  -- Description du job
    weapons = {}, -- Armes additionnelles
    command = "Cuisinier", -- Commande pour devenir ce job
    max = 2, -- Nombre de joueurs pouvant avoir le job au maximum
    salary = 45, -- Salaire
    admin = 0, -- Faut-il être admin? 2 pour super-admin uniquement, 1 pour admin (et super-admin), 0 pour joueur standard.
    vote = false, -- Faut-il un vote? true pour oui, false pour non.
    hasLicense = false, -- A une licence
    customCheck = function(ply) return ply:GetNWString("usergroup") == "donateur" end -- La fonction customCheck. Mettez nil ou ne rien mettre pour ne pas en avoir.
})
```

* à la dernière partie (customCheck), changez "donateur" en "vip", en "special" ou votre groupe. Si c'est "donateur", vous pouvez laisser comme cela. Vérifiez qu'il y'a bien les guillemets (" ").
* Redémarrer le serveur
* Demandez au donateur de se mettre dans le job correspondant pour vérifier s'il peut y accéder.

### Notes

Si le customCheck dit "Only donators can get the job", alors les administrateurs et super-administrateurs ne pourront pas obtenir le métier car ils ne sont pas "donateur", il faut dans ce cas utiliser ce code pour qu'ils puissent obtenir le métier:

```lua
TEAM_DONATORJOB = DarkRP.createJob("Cuisinier", { -- Nom
    color = Color(238, 99, 99, 255), -- Couleur de la team
    model = "models/player/mossman.mdl", -- Modèle du joueur
    description = [[En cuisinier, c'est votre responsabilite de nourrir les personnes de la ville. 
                            Vous pouvez acheter un micro onde et vendre votre nourriture: /Buymicrowave]],  -- Description du job
    weapons = {}, -- Armes additionnelles
    command = "Cuisinier", -- Commande pour devenir ce job
    max = 2, -- Nombre de joueurs pouvant avoir le job au maximum
    salary = 45, -- Salaire
    admin = 0, -- Faut-il être admin? 2 pour super-admin uniquement, 1 pour admin (et super-admin), 0 pour joueur standard.
    vote = false, -- Faut-il un vote? true pour oui, false pour non.
    hasLicense = false, -- A une licence
    customCheck = function(ply) return ply:GetNWString("usergroup") == "donateur" or ply:IsAdmin() end, -- La fonction customCheck. Mettez nil ou ne rien mettre pour ne pas en avoir.
    CustomCheckFailMsg = "Ce métier est VIP uniquement!" -- Message qui s'affiche lorsque l'utilisateur essaie d'obtenir le job sans avoir le groupe d'utilisateur requis.
})
```

### ULX

Si vous souhaitez utiliser ULX au lieu de FAdmin, remplacez:

```lua
ply:GetNWString("usergroup") == "donateur"
```

Par:

```lua
ply:GetUserGroup() == "donateur"
```

Ou si vous souhaitez autoriser les groupes inhérités, (ex: admin/superadmin), remplacer par:

```lua
ply:CheckGroup("donateur")
```

{% hint style="info" %}
Si vous utilisez ces fonctions, cela ne marchera pas si ULX n'est pas installé.
{% endhint %}

### customCheck sur plusieurs groupes

Voici un exemple de fonction customCheck. Cela fonctionne pour les shipments et les jobs et tout ce qui peut utiliser des fonctions customCheck.

**Donateurs et admins peuvent avoir le job**

```lua
function(ply) return ply:GetNWString("usergroup") == "donateur" or ply:IsAdmin() end
```

**Superadmin uniquement**

```lua
function(ply) return ply:IsSuperAdmin() end
```

**Plusieurs groupes**

**Exemple 1:**

```lua
function(ply) return ply:GetNWString("usergroup") == "donateur" or ply:GetNWString("usergroup") == "vip" end
```

On peut ensuite rajouter d'autres groupes.

**Exemple 2:**

```lua
function(ply) return table.HasValue({"donateur", "vip", "admin", "superadmin", "mingebag"}, ply:GetNWString("usergroup")) end
```

**Exemple 3:**

```lua
customCheck = function(ply) return ply:IsUserGroup("donateur") or ply:IsAdmin() end
```

\--C'est pour les donateurs FAdmin uniquement, et autorise un admin également.--

### Faire en sorte que les clients voient les entités même si ils ne peuvent pas l'acheter

C'est un paramètre par défaut depuis DarkRP 2.5.0. Pour désactiver ceci, mettez GM.Config.hideNonBuyable à true dans settings.lua.

### Messages si on ne passe pas le customCheck

Quand le customCheck dit à un joueur qu'il ne peut pas acheter / avoir quelque chose, Vous pouvez changer le message envoyé au joueur lors de l'échec. Voici comment faire:

```lua
customCheck = function(ply) return ply:IsUserGroup("donateur") end, -- Fonction customCheck
CustomCheckFailMsg = "Vous devez etre un donateur pour devenir un clochard." -- Le message envoyé au client
```

Ceci marche avec les shipments, jobs, munitions, vehicules et jobs personnalisés.

Exemple entier:

```lua
TEAM_HOBO = DarkRP.createJob("Clochard", {
	color = Color(80, 45, 0, 255),
	model = "models/player/corpse1.mdl",
	description = [[Le membre le plus faible de la societe. Tous les joueurs vous voient mal.
		Vous n'avez pas de maison.
		Mendiez pour la nourriture et l'argent.
		Chantez pour avoir de l'argent.
		Faites votre maison dans les bois.]],
	weapons = {"weapon_bugbait"},
	command = "clochard",
	max = 5,
	salary = 0,
	admin = 0,
	vote = false,
	hasLicense = false,
	customCheck = function(ply) return ply:IsUserGroup("donateur") end,
	CustomCheckFailMsg = "Vous devez etre un donateur pour devenir un clochard."
})
```

Vous voulez peut être faire en sorte que le message d'échec soit dynamique (afficher un message lorsque le joueur n'est pas donateur ou un autre lorsque le joueur a trop d'argent).

```lua
customCheck = function(ply) return ply:IsUserGroup("donateur") and ply:getDarkRPVar("money") < 1000 end, -- La fonction customCheck
CustomCheckFailMsg = function(ply) return ply:getDarkRPVar("money") >= 1000 and "Vous etes trop riche!" or not ply:IsUserGroup("donateur") and "Vous devez etre un donateur pour devenir clochard." end, -- The message it sends to the client
```

{% hint style="warning" %}
Ne pas utiliser d'accents (é,è,ê) dans la ligne de la commande (cmd) afin de ne pas faire planter votre métier. Vous devez également ne pas rajouter d'accents que ce soit dans le nom du job ou dans la description sauf si votre fichier est encodé en UTF8.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.garryhost.com/darkrp/jobs-vip.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
