[Tutorial] Como fazer um sistema de administrador usando DOF2, iCMD 7 e SSCANF2!
#1

Bom, sou iniciante em pawn e ainda nгo aprendi muita coisa.. Mas estou sempre tentando adquirir conhecimento e repassar o mesmo..

Entгo, eu vim hoje criar um simples tutorial de como comeзar a criar seu sistema de administraзгo no SA:MP.

Bom, para comeзar vocк precisa criar uma variavel do tipo global para armazenar o nivel de administrador do jogador.
pawn Код:
//No topo do script:
new iAdmin[MAX_PLAYERS];
/*
Explicaзгo:
new = Cria a variavel.
iAdmin = Nome da variavel.
MAX_PLAYERS = Total de jogadores.
; = Encerra a linha.
*/
Depois de ter feito isso vamos na callback OnPlayerConnect.
( Procure por public OnPlayerConnect )

Quando estiver nela vamos verificar se o jogador que se conectou й administrador ou nгo.
Para isso faзa o seguinte:
pawn Код:
public OnPlayerConnect(playerid) {
    new file[70], snd[MAX_PLAYER_NAME];
    GetPlayerName(playerid, snd, sizeof snd);
    format(file, sizeof file, "Administradores/%s.ini", snd);
/*
Explicaзгo do GetPlayerName:
playerid = ID Ъnico do jogador que se conectou.
snd = variavel local que foi criada para armazenar o nome do jogador.
*/

    if(DOF2_FileExists(file)) {
        iAdmin[playerid] = DOF2_GetInt(file, "Admin");
    }
/*
Explicaзгo:
DOF2_FileExists = Checa se o arquivo existe.
DOF2_GetInt = Geta o valor inteiro da linha Admin do arquivo definido pela format.
*/

    return true;
}
Isso irб checar se na pasta Administradores hб o nome do jogador que se conectou..
Se houver irб setar o valor na variavel iAdmin.

Mas ai vocк pergunta, como setar administrador?
Simples! Caso esteja usando iCMD procure a callback OnPlayerCommandText e siga os passos:
pawn Код:
public OnPlayerCommandText(playerid, commandid, params[]) { // Cria a callback.
    switch( commandid ) {
        case iscmd("s,e,t,a,d,m"): {
            new id; // Variavel que irб armazenar o id do jogador desejado!
            new nivel; // irб armazenar o nivel de administrador.
            new file[70], snd[MAX_PLAYER_NAME];
            if(sscanf(params,"ui",id,nivel))
                return SendClientMessage(playerid, 0xC0C0C0AA, "Use: /setadm [playerid] [nivel]");
               
            GetPlayerName(id, snd, sizeof snd);
            format(file, sizeof file, "Administradores/%s.ini", snd);
               
            if(!DOF2_FileExists(file)) {
                DOF2_CreateFile(file); // caso o nome dele nгo esteja na pasta administradores.
            }
            DOF2_SetInt(file, "Admin", nivel); // irб setar na linha Admin o valor do nivel desejado.
            DOF2_SaveFile(); // salva e fecha o arquivo.
           
            iAdmin[id] = nivel; // irб setar o nivel para ele!
            return true;
        }
    }
    return false;
}
A Base do seu sistema de administraзгo jб estб criada!
Nгo se esqueзa de criar a pasta Administradores na sua scriptfiles...

Hб, nгo sou bom com explicaзхes mas espero que o tutorial esteja legal!
pawn Код:
//----------------- COMANDOS QUE PODEM SER ЪTEIS -----------------------------//
case iscmd("a,d,m,i,n,s"): {
    new string[128],
        snd[MAX_PLAYER_NAME];
    SendClientMessage(playerid, 0xC0C0C0AA, "[ Administradores Online ]");
    for(new i = 0; i < GetMaxPlayers(); i++) {
        GetPlayerName(i, snd, sizeof snd);
        if(iAdmin[i] > 0) {
            format(string, sizeof string, "Administrador: %s Nivel: %d", snd, iAdmin[i]);
            SendClientMessage(playerid, 0xFFFFFFAA, string);
        }
    }
    return true;
}
case iscmd("k,i,c,k"): {
    new string[128],
        snd[MAX_PLAYER_NAME],
        snd2[MAX_PLAYER_NAME],
        id;
    if(iAdmin[playerid] == 0) return SendClientMessage(playerid, oxC0C0C0AA, "Apenas Administradores.");
    if(sscanf(params, "u", id)) return SendClientMessage(playerid, 0xC0C0CAA, "Use: /kick [playerid]");
    GetPlayerName(playerid, snd, sizeof snd);
    GetPlayerName(id, snd2, sizeof snd2);
    SendClientMessage(playerid, 0xC0C0C0AA, "[ Aviso da Administraзгo ]");
    format(string, sizeof string, "O Administrador %s acaba de kikar %s.", snd, snd2);
    SendClientMessageToAll(0xFFFFFFAA, string);
    return true;
}
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)