[Tutorial] faire une base de systиme d'administration [I-ZCMD - SSCANF]
#1

Salut tout le monde :D

J'ouvre se sujet pour vous prйsenter un tutoriel , pour savoit comment faire une base de systиme d'administration :D je vais faire simple car sa n'est pas trиs compliquer une fois que les plugin/include son bien pris en main :D

Avent tout de chose vous devrez les tйlйcharger le plugin sscanf et l'include I-ZCMD

I-ZCMD : http://pastebin.com/cuSu7Uaf © - Yashas
SSCANF : https://dl.dropboxusercontent.com/u/1025...-2.8.2.zip © - Emmet_

et vous mettez tout sa dans les dossier approprier .
En suite vous mettez tout en haut de votre script c'est ligne :

PHP Code:
#incluse <sscanf>
#include <I-ZCMD> 

bien tout est prкt :D
alors commenзons :

nous allons commencer par faire une commande trиs simple que je vous expliquerez les fonction utilisй ensuite , je parle de la base de la base le /kick :D

Voici la command :

PHP Code:
CMD:kick(playerid,params[])
{
    new
        
ID,
        
NameID[MAX_PLAYER_NAME],
        
AdminName[MAX_PLAYER_NAME],
        
raison[50],
        
msg[150];

    if(
IsPlayerAdmin(playerid))
    {
        
GetPlayerName(playerid,AdminName,sizeof(AdminName));

        if(
sscanf(params,"is[50]",ID,raison)) return SendClientMessage(playerid,0xFF0000FF,"[UTILISATION :]/kick [ID] [raison]");

        if(!
IsPlayerConnected(ID)) return SendClientMessage(playerid,0xFF0000FF,"[ERREUR :] ID du joueur invalide !");

        
GetPlayerName(ID,NameID,sizeof(NameID));
        
format(msg,sizeof(msg),"[KICK :] l'admin %s a kickй le joueur %s pour la raison : %s",AdminName,NameID,raison);

        
SendClientMessageToAll(0xFF8000FF,msg);

        
Kick(ID);
    }
    else
    {
        
SendClientMessage(playerid,0xFF0000FF,"[ERREUR :] Vous n'кtes pas connecter en RCON !");
    }
    return 
1;


les explication :

Quote:CMD:kick(playerid,params[])
Avec le "CMD:" devant on indique au serveur que c'est une commande qui va s'appeler kick ,
donc ig sa donnera /kick :D jusque lа logique

Quote:new
ID,
NameID[MAX_PLAYER_NAME],
AdminName[MAX_PLAYER_NAME],
raison[50],
msg[150];

ici nous crйerons tout les variable nйcessaire je vais vous les йxpliquer quand mкme :D

ID : stockera l'id du joueur
NameID[MAX_PLAYER_NAME] : stockera le nom du joueur visйe par l'admin
AdminName[MAX_PLAYER_NAME] : stockera le nom de l'admin
raison[50] : stockera la raison du kick elle stockera 50 caractиre maximum
msg[150] : servira a rйunir tout c'est donnйe pour en faire un message que tout les joueur verrons :D

jusque ici sa doit кtre compris normalement

Quote:if(!IsPlayerAdmin(playerid))

on utilise cette fonction pour savoir si le joueur est bien connecter en RCON password

Quote:GetPlayerName(playerid,AdminName,sizeof(AdminName));

Ici on enregistre le nom de l'admin dans la variable AdminName

Quote:if(sscanf(params,"is[50]",ID,raison)) return SendClientMessage(playerid,0xFF0000FF,"[UTILISATION :]/kick [ID] [raison]");

Ici va faire l'entrйe de la fonction sscanf pourquoi on mais "if" devant ? tout simplement car c'est si le joueur йcrit quelque chose aprиs la commande sinnon il est renvoyйe au return , qui lui envoie un message disant comment utiliser la commande.

Quote:йxaminon de plus prиs celle ci :
(sscanf(params,"is[50]",ID,raison))

pourquoi mettons "is[50]" car tout simplement sa remplace le %i qui lui stock un chiffre donc dans se cas ici l'id et le "s" qui lui aussi remplace le %s qui stock une chaine de caractиres de [50] lettre car nous avons mis "[50]"

Quote:if(!IsPlayerConnected(ID)) return SendClientMessage(playerid,0xFF0000FF,"[ERREUR :] ID du joueur invalide !");

cette fonction qui est simple de comprйhension on vйrifie juste que le joueur est connecter rien de compliquйe la dedans

Aprиs tout les fonction en dessous je pense que vous les comprenez enfin c'est la base du langage pawno ;)

passons a une deuxiиme fonction qui va consister a convertir un chiffre en seconde pour le mettre en ms et le mettre dans un timer :)

pour faire je sais pas par exemple un /restart :D sa peut-кtre intйressent sa non ?

PHP Code:
CMD:restart(playerid,params[])
{
    new
        
temps,
        
convertMS,
        
name[MAX_PLAYER_NAME],
        
msg[150];

    if(
IsPlayerAdmin(playerid))
    {
        if(
sscanf(params,"d",temps)) return SendClientMessage(playerid,0xFF0000FF,"[UTILISATION :]/restart [temps]");

        
GetPlayerName(playerid,name,sizeof(name));

        
convertMS temps 1000;

        
SetTimer("restart",convertMS,false);
        
format(msg,sizeof(msg),"[REBOOT :] le serveur va redйmarer dans %d secondes , merci de vous dйconnecter !",temps);

        
SendClientMessageToAll(0xFF0000FF,msg);
    }
    else
    {
        
SendClientMessage(playerid,0xFF0000FF,"[ERREUR :] vous n'avez pas le droit a cette commande !");
    }
    return 
1;
}

forward restart();
public 
restart()
{
    
SendClientMessageToAll(-1,"[REBOOT :] le serveur redйmarre imйdiatement!");
    
SendRconCommand("gmx");
    return 
1;


Ici se sont tout des fonction dite plus en haut appart que la on fait un petit calcul pour convertire les seconde qui son stocker dans la variable temps pour faite une multiplication dans la variable convertMS.

je rappel que le signe "*" veut dire fois donc "temps x 1000" ;)

je pense ne rien avoir oubliйe , si vous voulez examiner de plus prиs les code vous pouvez dl la piиce jointe , dite moi se que vous pensez du tuto et si j'ai oubliйe des chose hйsitez pas :D

PS : beaucoup de faute d'orthographe dans le tuto dйsolйe

bon week-end a vous et pour les gens de se Pas-de-Calais aprиs je sais pas qui encore mais bonne vacance !
Reply
#2

Jolie tuto +1

Mais tu pourais avancer ton tuto avec Mysql ou Y_Ini :)
Reply
#3

Jabern;3596994 Wrote:Jolie tuto +1

Mais tu pourais avancer ton tuto avec Mysql ou Y_Ini :)

je compte en faire un autre sur un systиme d'enregistrement ^^
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)