Attention : cet article a été écrit pour le SDK 2.2 d'Half-Life 1 ! Il se peut qu'il ne soit pas entièrement compatible avec des versions antérieures ou supérieures du Kit.

Introduction

Avant tout, qu'est ce que les skill cvars ? les skill cvars sont des variables qui varient selon le niveau de difficulté du jeu (le skill). Les valeurs des skill cvars leurs sont affectées dans le fichier skill.cfg dans le dossier de votre mod (d'où le « cvar » qui définie toutes la variables récupérée dans les fichiers de configurations et modifiables in-game dans la console).

Quels types de variables sont définies en skill cvar ? ben toutes celles qui devront changer suivant le niveau de difficulté du jeu : la puissance des armes, les points de vie des monstres, la puissance des medikits et batteries HEV, etc. Nous allons donc voir maintenant comment créer une nouvelle variable skill cvar.

Installation et initialisation

Pour commencer, on ne travaillera que dans la dll serveur. Ce qui signifie que les skill cvar ne sont pas utilisable côté client. Ouvrez le fichier skill.h. Il contient la définition d'une structure appelée skilldata_t. Cette structure contient toutes les variables skill cvars du jeu. Rajoutez-y donc la votre :

// ma variable perso
float maSkillCvar;

Notez qu'à la fin de la définition de cette structure, un objet global de cette structure est déclaré en extern (gSkillData). C'est par lui qu'on accédera à la variable.

À présent nous devons déclarer des objets de type cvar_t pour pouvoir récupérer notre variable depuis les fichiers *.cfg ou depuis la console. Déplacez vous dans game.cpp et ajoutez (après le commentaire « //CVARS FOR SKILL LEVEL SETTINGS » pour faire plus propre) le bout de code suivant :

// Mes Skill CVAR Perso
cvar_t sk_maSkillCvar1 = { "sk_maSkillCvar1", "0" };
cvar_t sk_maSkillCvar2 = { "sk_maSkillCvar2", "0" };
cvar_t sk_maSkillCvar3 = { "sk_maSkillCvar3", "0" };

Ici on crée trois cvars pour trois niveaux de difficulté. Gardez le même nom pour les trois en changeant juste le numéro de la fin. Maintenant nous allons « enregistrer » nos cvars. Toujours dans le même fichier mais dans sa deuxième moitié, dans la fonction GameDLLInit() (après le commentaire « // REGISTER CVARS FOR SKILL LEVEL STUFF »), ajoutez ceci :

// Mes Skill CVAR Perso
CVAR_REGISTER (&sk_maSkillCvar1);  // { "sk_maSkillCvar1", "0" };
CVAR_REGISTER (&sk_maSkillCvar2);  // { "sk_maSkillCvar2", "0" };
CVAR_REGISTER (&sk_maSkillCvar3);  // { "sk_maSkillCvar3", "0" };

Il ne nous reste plus qu'à initialiser maSkillCvar à partir de sk_maSkillCvar#. Dans CGameRules::RefreshSkillData() (gamerules.cpp), ajoutez cette ligne :

// Ma variable perso
gSkillData.maSkillCvar = GetSkillCvar ("sk_maSkillCvar");

Si votre variable maSkillCvar est aussi utilisée en multijoueur, il serait utile de la déclarer dans le code pour éviter toute triche et puis en multijoueur, les niveau de difficultés n'existent pas. Pour cela, rajoutez ce bout de code dans la fonction CHalfLifeMultiplay::RefreshSkillData() du fichier multiplay_gamerules.cpp en affectant à votre variable la valeur voulue pour le mode multijoueur :

// Ma variable perso
gSkillData.maSkillCvar = 20;

Et voilà, c'est déjà terminé pour leur installation dans le code ! Reste à les initialiser dans skill.cfg (les valeurs données sont des exemples) :

// Mes Skill CVAR Perso
sk_maSkillCvar1     "10"    // facile
sk_maSkillCvar2     "20"    // moyen
sk_maSkillCvar3     "30"    // difficile

Utilisation

Leur utilisation est vraiment très simple. Il vous suffit de l'appeler où vous voulez (vérifiez que skill.h est inclue directement ou par l'intermédiaire d'un autre fichier d'en-tête) par gSkillData.maSkillCvar. Par exemple, s'il s'agit des points de vie de votre entité, dans sa fonction Spawn(), procédez ainsi :

pev->health = gSkillData.maSkillCvar;
Creative Commons Logo Contrat Creative Commons

Cet article est mis à disposition sous un contrat Creative Commons (licence CC-BY-ND).