Votre première commande
Sommaire :1) Introduction
2) Commande Simple
3) Commande avec paramètres
1 : IntroductionLa "fabrication" de commandes sur IV:MP est plus simple que sur SA:MP. Vous ne sentirez sûrement pas la différence lors du tuto pour les commandes simples (2e partie), mais cela va être grandement simplifié pour les commandes avec paramètres (Ce qui nécessitait strtok avant).
Nous allons donc voir ce qu'est la callback onPlayerCommand. Cette callback va être appelée, et donc exécutée dès qu'un joueur (playerid) tapera une commande. Elle prend donc comme paramètres "playerid" et "command".
2 : Commande SimplePour commencer, trouvez la callback "onPlayerCommand" dans votre script.
Grâce à la fonction split, nous allons séparer les différents paramètres de la commande. Ceux-ci seront mis dans un array.
Par exemple, la commande
/kick 3 Insulte sera présentée de cette façon :
cmd[0]cmd[1]cmd[2]Nous verrons cela plus tard.
Pour le moment, nous allons créer une commande /kill.
function onPlayerCommand(playerid,command)
{
local cmd = split(command, " "); // On sépare les paramètres, même si il n'y en a pas (Il faut quand même avoir cmd[0])
if(cmd[0] == "/kill")
{
setPlayerHealth(playerid,-1); // Il est préférable de mettre -1 : à 0, le joueur est encore en vie.
return 1;
}
return 0;
}
addEvent("playerCommand", onPlayerCommand);
Jusque là, rien de bien compliqué. if(cmd[0] == "/kill") remplace if(strcmp(cmdtext,"/kill") == 1)
3 : Des commandes avec paramètresMaintenant, nous allons faire une commande /kick avec ID et raison. Je pense que vous aurez compris, cmd[1] et cmd[2] prendront comme valeur un ID de joueur et une raison.
if(cmd[0] == "/kick")
{ // Je zappe ici la condition "si le joueur est admin"
if(cmd.len() == 3) // Si la commande a bien 3 paramètres : cmd[0], cmd[1] et cmd[2].
{
local id = cmd[1].tointeger(); // la méthode .tointeger transforme un chiffre contenu dans une chaîne de caractères en chiffre (Attention au fait que ce soit bien un chiffre !)
if(isPlayerConnected(id))
{
sendMessageToAll("Le joueur " + getPlayerName(id) + " a été kické du serveur par un admin ! (Raison : " + cmd[2] ")",0xFFFFFFFF,true); // On peut concaténer les phrases, plus besoin de formater.
kickPlayer(id,true); // On kicke le joueur.
}
else
{
sendPlayerMessage(playerid,"Le joueur dont vous avez demandé le kick n'est pas connecté.",0xFFFFFFFF,true);
}
}
}
return 1;