Chapitre 13: Création d'un plugin: AdminDeathSound
Dans ce chapitre, on va développer de A à Z un plugin qui a pour but de jouer un son lorsqu'un joueur tue un admin. C'est pas compliqué, vous allez voir, allez go: 1) Les étapes
Avant de se lancer tête baissée dans le code source du plugin, il faut d'abord réfléchir aux différentes étapes de celui-ci. Dans un premier temps, il faut récupérer l'événement "kill", c'est à dire à chaque fois qu'un joueur en tue un autre. Dans un deuxième temps, il faut identifier la victime: récupérer son ID.Troisième étape: effectuer un test sur cette victime afin de s'avoir si elle est admin du serveur ou non. Et enfin, quatrième étape: émettre un son sur le serveur.
2) Réalisation de la première étape
"Récupérer" un kill : une ligne dans le plugin_init [color=blue] register_event("DeathMsg","death_msg","a") [/color] Et voilà ! Dès qu'un joueur en tuera un autre, le plugin éxécutera la procédure "death_msg".- "DeathMsg": événement lié au kill- "death_msg": procédure appelée- "a": flag qui concerne un événements global
3) Réalisation de la deuxième étape
C'est qui qu'est mort ? Une fois dans la procédure "death_msg", il faut utiliser une fonction qui retournera l'ID du joueur qui vient de mourir. Pour cela, on utilise ceci: [color=blue] new victim_id = read_data(2) [/color]
Arf...trop dur, n'est-ce pas ? Sachez que si vous voulez récupérer l'ID du tueur, c'est "read_data(1)"
4) Réalisation de la troisième étape
La victime est-elle (était...) admin ? Pour le savoir, on va utiliser une "sous-fonction" de la fonction "cmd_access()", à savoir: "get_user_flags()". Voici la ligne de code qui nous intéresse: [color=blue] if (!(get_user_flags(victim_id)&ADMIN_LEVEL_A)) return PLUGIN_HANDLED [/color]
En gros, ça veut dire que "si la victime ne possède pas le niveau d'accès "m" (ADMIN_LEVEL_A) alors arrêter l'éxécution du plugin". Pour les joueurs sans droits, le code s'arrêtent ici. La suite de la procédure ne sera éxécutée que si la victime est admin.
J'ai mis le niveau d'accès "m" mais j'aurais pu mettre le niveau "a" (immunité), c'est à vous de voir quel type d'admin vous voulez identifier.
5) Réalisation de la quatrième étape
Et le son ? Et bien, c'est ici qu'on va le faire jouer. Encore une fois, nous allons retrouver une fonction que l'on a déjà vu dans les chapitres précédents: [color=blue] client_cmd(0,"spk misc/admindeath") [/color]
Ce code jouera le son "admindeath.wav" situé dans le répertoire "/sound/misc" et tous les joueurs l'entendront.
ATTENTION: Le son doit être précaché pour qu'il puisse être joué. Il faut donc pour ça, créer une nouvelle procédure: [color=blue] public plugin_precache() precache_sound("misc/admindeath.wav") [/color]
Le son pourra être téléchargé par tous les joueurs qui ne le posséderont pas déjà.
6) Plugin complet
Voyons ce que donne ce petit plugin au complet:[color=blue] #include
public death_msg() {
new victim_id = read_data(2)
if (!(get_user_flags(victim_id)&ADMIN_LEVEL_A)) return PLUGIN_HANDLED
client_cmd(0,"spk misc/admindeath")
return PLUGIN_CONTINUE }
public plugin_precache() precache_sound("misc/admindeath.wav")
public plugin_init() { register_plugin("AdminDeathSound", "1.0", "St3AmEr") register_event("DeathMsg","death_msg","a") return PLUGIN_CONTINUE } [/color] Bien entendu, pour que ce plugin fonctionne, vous devez nommer un fichier son "admindeath.wav" (8kHz).
On peut passer au chapitre suivant qui portera sur les événements. Je vous présenterai une liste d'événements pratiques.
Date de création : 13/12/2005 @ 16:37
Dernière modification : 13/05/2006 @ 18:33
Catégorie : 5- Les plugins
Page lue 1674 fois
Prévisualiser la page
Imprimer la page
|