[Ajuda] Comando setadmin
#1

galera fiz um comando para setar admin com o DOF2
mas o problema eh que o comando nao esta funcionando corretamente, e fecha o server quando digitado
pawn Код:
CMD:setadmin(playerid, params[])
{
        if(IsPlayerAdmin(playerid)){
        new id;
        new level;
        new file[70], snd[MAX_PLAYER_NAME];
        GetPlayerName(id, snd, sizeof snd);
        format(file, sizeof file, "Contas/%s.ini", snd);
        if(isnull(params)) return SendClientMessage(playerid, -1, "[ERRO] Uso: /setadmin [playerid] [nivel]");
        if(pAdmin[playerid] > 6){
        SendClientMessage(playerid, -1, "(ERRO) O level Permitido para ADM e 0 a 5!");
}
        if(pAdmin[playerid] >= 1){
        DOF2_SetInt(file, "Admin", level); // irб setar na linha Admin o valor do nivel desejado.
        DOF2_SaveFile(); // salva e fecha o arquivo.
        pAdmin[id] = level;
        SendClientMessageToAll(-1,"o Rcon Admin %s tornou %s um Admin");
}
        if(pAdmin[playerid] == 0){
        DOF2_SetInt(file, "Admin", level); // irб setar na linha Admin o valor do nivel desejado.
        DOF2_SaveFile(); // salva e fecha o arquivo.
        pAdmin[id] = 0;
        SendClientMessageToAll(-1,"o Rcon Admin %s retirou admin do player %s");
}
        else
{
        SendClientMessage(playerid,-1,"Jogador nao conectado");
}
}
        return 1;
}
como podem ver meu comando deve estar cheio de falhas D: por que sou iniciante ainda mas acho que ja eh um comeзo isso dai kk
quem me ajudar dou rep +
@edit: nao sei se vo falar merda agora, como o comando nao funciona nao posso ver, mas acho que os meus SendClientMessageToAll devem estar errados ja que possuem dois %s, creio eu que so pode usar dois desses para dois nomes diferentes caso tenha string, nao sei posso estar falando merda =s
Reply
#2

Vocк nгo pode usar o SendClientMessageToAll assim (com esses %s...), vocк vai precisar 'formatar' o texto antes

https://sampwiki.blast.hk/wiki/Format
Reply
#3

Quote:
Originally Posted by Dark.Angel
Посмотреть сообщение
Vocк nгo pode usar o SendClientMessageToAll assim (com esses %s...), vocк vai precisar 'formatar' o texto antes

https://sampwiki.blast.hk/wiki/Format
eh eu editei antes ali parece que eu estava correto, mas o comando nao esta funcionando nem sem os message's
olha
pawn Код:
CMD:setadmin(playerid, params[])
{
        if(IsPlayerAdmin(playerid)){
        new id;
        new level;
        new file[70], snd[MAX_PLAYER_NAME];
        format(file, sizeof file, "Contas/%s.ini", snd);
        GetPlayerName(id, snd, sizeof snd);
        if(!DOF2_FileExists(file)) {
        DOF2_CreateFile(file);
}
        if(isnull(params)) return SendClientMessage(playerid, -1, "[ERRO] Uso: /setadmin [playerid] [nivel]");
        if(pAdmin[playerid] > 6){
        SendClientMessage(playerid, -1, "(ERRO) O level Permitido para ADM e 0 a 5!");
}
        if(pAdmin[playerid] >= 1){
        DOF2_SetInt(file, "Admin", level); // irб setar na linha Admin o valor do nivel desejado.
        DOF2_SaveFile(); // salva e fecha o arquivo.
        pAdmin[id] = level;
}
        if(pAdmin[playerid] == 0){
        DOF2_SetInt(file, "Admin", level); // irб setar na linha Admin o valor do nivel desejado.
        DOF2_SaveFile(); // salva e fecha o arquivo.
        pAdmin[id] = 0;
}
        else
{
        SendClientMessage(playerid,-1,"(ERRO) Jogador Inexistente");
}
}
        return 1;
}
eu consegui fazer funcionar ates se colocar todas essas restriзoes
ficou assim
pawn Код:
CMD:setadmin (playerid,params[])
{
            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, "Contas/%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.
            pAdmin[id] = nivel; // irб setar o nivel para ele!
            return true;
        }
soh que mesmo esse eu coloquei um SendClientMessage(playerid,-1,"mensagem"); e nao apareceu depois de executar o comando, to perdido demais ja :/
Reply
#4

arrumei, agora so ta dando um erro que buga tudoo
pawn Код:
CMD:setadmin (playerid,params[])
{
            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];
            new targetid, amount;
            if(sscanf(params,"ui",targetid,amount))
{
            SendClientMessage(playerid, -1, "[ERRO] Uso: /setadmin [playerid] [nivel]");
}

            GetPlayerName(id, snd, sizeof snd);
            format(file, sizeof file, "Contas/%s.ini", snd);
            if(!DOF2_FileExists(file)) {
            DOF2_CreateFile(file); // caso o nome dele nгo esteja na pasta administradores.
}
            if(nivel > 5 && nivel < 0)
{
            SendClientMessage(playerid, -1, "(ERRO) O level Permitido para ADM e 0 a 5!");
            return 1;
}
            GetPlayerName(id, snd, sizeof snd);
            format(file, sizeof file, "Contas/%s.ini", snd);
            if(!DOF2_FileExists(file)) {
            DOF2_CreateFile(file); // caso o nome dele nгo esteja na pasta administradores.
}
            if(nivel >= 1){
            DOF2_SetInt(file, "Admin", nivel); // irб setar na linha Admin o valor do nivel desejado.
            DOF2_SaveFile(); // salva e fecha o arquivo.
            pAdmin[id] = nivel; // irб setar o nivel para ele!
            SendClientMessage(playerid,-1,"Conseguiu");
            return 1;
            }
            GetPlayerName(id, snd, sizeof snd);
            format(file, sizeof file, "Contas/%s.ini", snd);
            if(!DOF2_FileExists(file)) {
            DOF2_CreateFile(file); // caso o nome dele nгo esteja na pasta administradores.
}
            GetPlayerName(id, snd, sizeof snd);
            format(file, sizeof file, "Contas/%s.ini", snd);
            if(!DOF2_FileExists(file)) {
            DOF2_CreateFile(file); // caso o nome dele nгo esteja na pasta administradores.
}
            if(nivel == 0){
            DOF2_SetInt(file, "Admin", nivel); // irб setar na linha Admin o valor do nivel desejado.
            DOF2_SaveFile(); // salva e fecha o arquivo.
            pAdmin[id] = nivel; // irб setar o nivel para ele!
            SendClientMessage(playerid,-1,"retirou adm");
            }
            else
            {
            SendClientMessage(playerid,-1,"(ERRO) Jogador Inexistente");
            }
            return 1;
}
se eu digito /setadmin aparece assim:
Код:
[ERRO] Uso: /setadmin [playerid] [nivel]
retirou adm
se eu digito /setadmin (ID) aparece mesma coisa
e se eu digito /setadmin (id) (nivel) aparece
Код:
retirou adm
alguem me ajudaaaaa
@edit: sorry pelo double post
Reply
#5

Uma duvida , sou novo no pwn , mas isso aqui
pawn Код:
if(nivel == 0){
            DOF2_SetInt(file, "Admin", nivel); // irб setar na linha Admin o valor do nivel desejado.
            DOF2_SaveFile(); // salva e fecha o arquivo.
            pAdmin[id] = nivel; // irб setar o nivel para ele!
            SendClientMessage(playerid,-1,"retirou adm");
}
esta verificando se й 0 porque ? ele nao deveria verificar se o player fosse adm para poder retirar o adm ?!
Reply
#6

Quote:
Originally Posted by lKoDlFuLLaNNo
Посмотреть сообщение
Uma duvida , sou novo no pwn , mas isso aqui
pawn Код:
if(nivel == 0){
            DOF2_SetInt(file, "Admin", nivel); // irб setar na linha Admin o valor do nivel desejado.
            DOF2_SaveFile(); // salva e fecha o arquivo.
            pAdmin[id] = nivel; // irб setar o nivel para ele!
            SendClientMessage(playerid,-1,"retirou adm");
}
esta verificando se й 0 porque ? ele nao deveria verificar se o player fosse adm para poder retirar o adm ?!
verificando se eh 0 pois depois que eu conseguir efetuar o comando colocarei, "o administrador retirou admin do jogador tal" saca.
@edit: ah esta certo eu nem tinha percebido, obrigado, mas mesmo assim isso nao interfere em nada do erro :/
Reply
#7

Mas ali ele nao deveria verificar se и
pawn Код:
>=1
pra verificar se o player e adm para retirar o adm ?
Reply
#8

Quote:
Originally Posted by lKoDlFuLLaNNo
Посмотреть сообщение
Mas ali ele nao deveria verificar se и
pawn Код:
>=1
pra verificar se o player e adm para retirar o adm ?
sim ja coloquei depois do que vc falou para >= 1;
vc tem skype? para agente conversar melhor
Reply
#9

Quote:
Originally Posted by williamgato
Посмотреть сообщение
sim ja coloquei depois do que vc falou para >= 1;
vc tem skype? para agente conversar melhor
E funcionou ?
Reply
#10

Quote:
Originally Posted by lKoDlFuLLaNNo
Посмотреть сообщение
E funcionou ?
nao, nao funcionou , mas ja to dando um jeito aki
so tem um problema ve se da pra me ajudar...
quero que quando digitem /setadmin (id que nao esta online) (level) apareзa id inexistente
eu tentei por em
pawn Код:
}else{
SendClientMessage(playerid,-1,"id inexistente");
}
porem nao funcionou, se eu digito /setadmin (id que nao esta online) (level) o server reconhece como comando errado .-. estou pensando em colocar id falso tipo aki
pawn Код:
if(id == false)return SendClientMessage(playerid,-1,"Id Inexistente");
mas da um aviso que o false nao se coloca assim e eu nao consigo achar outro jeito
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)