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