SA-MP Forums Archive
[Ajuda] Resolver problema em CMD e melhorar-lo! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Resolver problema em CMD e melhorar-lo! (/showthread.php?tid=470229)



Resolver problema em CMD e melhorar-lo! - Hiuship - 16.10.2013

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;
    }
}



Re: Resolver problema em CMD e melhorar-lo! - WLSF - 16.10.2013

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.


Re: Resolver problema em CMD e melhorar-lo! - Hiuship - 16.10.2013

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..


Re: Resolver problema em CMD e melhorar-lo! - WLSF - 16.10.2013

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.


Re: Resolver problema em CMD e melhorar-lo! - Juniiro3 - 16.10.2013

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.


Re: Resolver problema em CMD e melhorar-lo! - arakuta - 16.10.2013

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.


Re: Resolver problema em CMD e melhorar-lo! - Hiuship - 16.10.2013

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 ?


Re: Resolver problema em CMD e melhorar-lo! - Juniiro3 - 16.10.2013

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;
}



Re: Resolver problema em CMD e melhorar-lo! - Hiuship - 16.10.2013

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...