Garry's Mod

Garry's Mod

Florian's Script - Character System
 This topic has been pinned, so it's probably important
Florian #  [developer] Mar 6, 2020 @ 12:08pm
[FR] Comment ajouter des informations personnalisées aux personnages ?
Outre les données sauvegardées normalement par le script, vous avez la possibilité d'en ajouter pour une raison X ou Y.

Petite note : ces scripts devront exclusivement exécutés du côté serveur, donc devez l'inclure dans le dossier "lua/autorun/server" ou dans un dossier où vous serez sûr qu'il sera exécuté du bon côté.

D'abord, il va falloir la déclarer... Pour faire cela, nous allons utiliser l'événement "PlayerInitialSpawn" qui se déclenche lors de la première apparition du joueur sur le serveur, le code va se présenter comme ceci :

hook.Add("PlayerInitialSpawn", "AddCharacterInformation", function(ply) FScript.AddCharacterInformation("Endurance", function() return ply:getDarkRPVar("Endurance") end) end)

L'exemple ci-dessus montre que nous allons enregistrer une variable DarkRP à propos de l'endurance du joueur. Désormais, à chaque sauvegarde du personnage, le script prendra cette valeur et s'enregistrera comme toutes les autres dans le même fichier.

Une fois la déclaration terminée et donc à la configuration de la sauvegarde, nous allons passer à l'étape du chargement de cette valeur. A chaque chargement d'un personnage, l'événement "FScript.OnCharacterLoaded" va se déclencher, c'est à ce moment là que nous allons assigner cette valeur au personnage.

hook.Add("FScript.OnCharacterLoaded", "GetCharacterInformation", function(ply, data) local Endurance = data["Endurance"] if Endurance then -- Si la variable existe bien. ply:setDarkRPVar("Endurance", Endurance) end end)

Donc, le serveur assignera cette valeur si elle existe bien dans les données chargées. Mais il y a encore une dernière étape : la réinitialisation. En effet, à chaque changement de personnage, le joueur se réinitialise vers des valeurs par défaut pour permettre de recevoir de nouvelles valeurs.
Pour se faire, nous allons utiliser l'événement "FScript.OnResetPlayer" comme ci-dessous.

hook.Add("FScript.OnResetPlayer", "ResetCharacterInformation", function(ply) ply:setDarkRPVar("Endurance", 100) end)

Le code ci-dessous réinitialise donc la variable DarkRP entre chaque changement de personnage.

Et... c'est fini !

Vous pouvez réaliser cette opération autant de fois que vous le voulez sans abus évidemment... ☺
Last edited by Florian #; Mar 7, 2020 @ 7:32am