[Ajuda] Resolver problema em CMD e melhorar-lo!
#1

Tinha postado aqui pra ajudar a arrumar mais ja encontrei meu erro.. errei no sscanf... enfim..
Tem alguma sugestгo pra melhorar o comando ?
Por favor sem codigos prontos.. quero aprender!
pawn Код:
CMD:desban(playerid, params[])
{
    new playerid2[35], Motivo[100],Arquivinho[50];
    if(Admin[Nivel][playerid] <= 1) return SendClientMessage(playerid,Vermelho,NaoAdm2);
    if(sscanf(params, "ss",playerid2,Motivo)) return SendClientMessage(playerid,Vermelho,"Use: /desban [NomeCompleto] [Motivo]");
    else
    {
        format(Arquivinho, sizeof(Arquivinho), "Contas/%s.txt",playerid2);
        if(!DOF2_FileExists(Arquivinho)) return SendClientMessage(playerid, Rosa, "[ADM] Nome nгo encontrado.");
        if(DOF2_GetInt(Arquivinho, "Banido") == 0) return SendClientMessage(playerid, Rosa, "[ADM] Usuбrio nгo estб banido.");
        format(StringG, sizeof(StringG), "[ADM] %s desbaniu %s - Motivo: %s",PegarNome(playerid),playerid2, Motivo);
        WriteLog(BANS, StringG);
        MensagemAdmins(StringG);
        DOF2_SetInt(Arquivinho, "Banido", 0);
        return 1;
    }
}
Reply
#2

Vou dar as dicas entгo, jб que nгo queres o cуdigo pronto.(atй porque eu nгo ajudo dessa forma tambйm)

Jб fez um debug ?

Eu nгo cheguei a olhar o cуdigo direito, mas pelo que vocк citou, pode ser erro seu na hora do sscanf, a ler os parвmetros, etc...

tenta isso aqui:
pawn Код:
print(playerid2);
E vк oque ele imprime...

Se ele imprimir o nome direitinho, jб sabemos que o problema nгo estб ai.
Reply
#3

Willian_Luigi
- Resolvi o problema em...
pawn Код:
if(sscanf(params, "ss",playerid2,Motivo))
eu coloquei nos parвmetros.. U e S.. Como se o playerid2 fosse o id.. mais nгo era..
Reply
#4

Quote:
Originally Posted by Hiuship
Посмотреть сообщение
Willian_Luigi
- Resolvi o problema em...
pawn Код:
if(sscanf(params, "ss",playerid2,Motivo))
eu coloquei nos parвmetros.. U e S.. Como se o playerid2 fosse o id.. mais nгo era..
Bacana, como eu falei, imaginava que fosse no sscanf mesmo.

nesses casos tu pode utilizar debugs simples para entender o funcionamento do cуdigo, ai vocк vai conseguir notar oque ele estб fazendo de errado.

Abraзos.
Reply
#5

Nгo precisa do else depois do if (sscanf (...) ), porque esse if jб estб retornando o comando* caso a condiзгo seja atingida

*Retornar pode ser entendido, NESSE CASO, como finalizar.
Reply
#6

Coloque tambйm o tamanho da string, para evitar warnings no console:

pawn Код:
if(sscanf("MinhaString","s[12]",string))
O cуdigo fica mais legнvel se vocк nгo usar funзхes uma do lado da outra, mas sim embaixo, respeitando a indentaзгo:

pawn Код:
if(Algumacoisa == 5)
    return print("Alguma coisa й 5, e o arakuta й %s",random(1) ? ("gostoso") : ("gatao"));
Se vocк fizer isto no sscanf tambйm, nгo й necessбrio o else.
Reply
#7

pawn Код:
CMD:desban(playerid, params[])
{
    new playerid2[35], Motivo[100],Arquivinho[50];
    if(Admin[Nivel][playerid] <= 1) return SendClientMessage(playerid,Vermelho,NaoAdm2);
    if(sscanf(params, "s[35]s[100]",playerid2,Motivo))
        return SendClientMessage(playerid,Vermelho,"Use: /desban [NomeCompleto] [Motivo]");
    format(Arquivinho, sizeof(Arquivinho), "Contas/%s.txt",playerid2);
    if(!DOF2_FileExists(Arquivinho))
        return SendClientMessage(playerid, Rosa, "[ADM] Nome nгo encontrado.");
    if(DOF2_GetInt(Arquivinho, "Banido") == 0)
        return SendClientMessage(playerid, Rosa, "[ADM] Usuбrio nгo estб banido.");
    format(StringG, sizeof(StringG), "[ADM] %s desbaniu %s - Motivo: %s",PegarNome(playerid),playerid2, Motivo);
    WriteLog(BANS, StringG);
    MensagemAdmins(StringG);
    DOF2_SetInt(Arquivinho, "Banido", 0);
    return 1;
}
Assim ?
Reply
#8

Quote:
Originally Posted by Hiuship
Посмотреть сообщение
pawn Код:
CMD:desban(playerid, params[])
{
    new playerid2[35], Motivo[100],Arquivinho[50];
    if(Admin[Nivel][playerid] <= 1) return SendClientMessage(playerid,Vermelho,NaoAdm2);
    if(sscanf(params, "s[35]s[100]",playerid2,Motivo))
        return SendClientMessage(playerid,Vermelho,"Use: /desban [NomeCompleto] [Motivo]");
    format(Arquivinho, sizeof(Arquivinho), "Contas/%s.txt",playerid2);
    if(!DOF2_FileExists(Arquivinho))
        return SendClientMessage(playerid, Rosa, "[ADM] Nome nгo encontrado.");
    if(DOF2_GetInt(Arquivinho, "Banido") == 0)
        return SendClientMessage(playerid, Rosa, "[ADM] Usuбrio nгo estб banido.");
    format(StringG, sizeof(StringG), "[ADM] %s desbaniu %s - Motivo: %s",PegarNome(playerid),playerid2, Motivo);
    WriteLog(BANS, StringG);
    MensagemAdmins(StringG);
    DOF2_SetInt(Arquivinho, "Banido", 0);
    return 1;
}
Assim ?
Exato, se quiser deixar ainda mais legнvel:

pawn Код:
CMD:desban(playerid, params[])
{
    new   playerid2[35],
        Motivo[100],
        Arquivinho[50];
   
    if(Admin[Nivel][playerid] <= 1)
        return SendClientMessage(playerid,Vermelho,NaoAdm2);
       
    if(sscanf(params, "s[35]s[100]",playerid2,Motivo))
        return SendClientMessage(playerid,Vermelho,"Use: /desban [NomeCompleto] [Motivo]");
       
    format(Arquivinho, sizeof(Arquivinho), "Contas/%s.txt",playerid2);
   
    if(!DOF2_FileExists(Arquivinho))
        return SendClientMessage(playerid, Rosa, "[ADM] Nome nгo encontrado.");
       
    if(DOF2_GetInt(Arquivinho, "Banido") == 0)
        return SendClientMessage(playerid, Rosa, "[ADM] Usuбrio nгo estб banido.");
       
    format(StringG, sizeof(StringG), "[ADM] %s desbaniu %s - Motivo: %s",PegarNome(playerid),playerid2, Motivo);
    WriteLog(BANS, StringG);
    MensagemAdmins(StringG);
    DOF2_SetInt(Arquivinho, "Banido", 0);
   
    return 1;
}
Reply
#9

Juniiro3

Me dou melhor sem muitos espaзos rsrs..
Coloquei em todos meus sscanf do meu gm o tamanho da string, retirei os else invalidos..

Obrigado a todos...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)