Comando. -
HumildadeAgain - 14.02.2013
Quando utilizo este comando ele sу aceita acima de 6 numeros/letras mas nгo hб nada empatando.
Oque pode ser?
pawn Код:
CMD:login(playerid,cmdtext[])
{
if(IsPlayerConnected(playerid))
{
new tmppass[64];
if(gPlayerLogged[playerid] == 1)
{
MSG(playerid, COLOR_WHITE, "SERVER: Vocк jб estб logado.");
return 1;
}
tmp = strtok(cmdtext, idx_toxi);
if(!strlen(tmp))
{
MSG(playerid, COLOR_GRAD1, "USE: /login [senha]");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
Encrypt(tmppass);
OnPlayerLogin(playerid,tmppass);
}
return 1;
}
Comeзou a aparecer depois que converti de strcmp para zcmd.
Re: Comando. - Joao Pedro - 14.02.2013
Use sscanf invйs de strtok
Re: Comando. -
HumildadeAgain - 14.02.2013
Quote:
Originally Posted by Joao Pedro
Use sscanf invйs de strtok
|
Sу hб esta maneira?
Nгo tem como modificar o strtok para funcionar perfeitamente nгo?
pawn Код:
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Re: Comando. - Joao Pedro - 14.02.2013
Na verdade nгo sei se o erro й por este motivo, mas por questгo de organizaзгo e optimizaзгo do cуdigo e atй para seu crescimento em Pawn, use sscanf. Pode ser que resolva seu erro tambйm
Re: Comando. -
HumildadeAgain - 14.02.2013
Quote:
Originally Posted by Joao Pedro
Na verdade nгo sei se o erro й por este motivo, mas por questгo de organizaзгo e optimizaзгo do cуdigo e atй para seu crescimento em Pawn, use sscanf. Pode ser que resolva seu erro tambйm 
|
Jб tem comandos em sscanf, porйm, estou convertendo o the godfather.. Ai os comandos dele sгo todos em strtok. Imagina a trabalhera kk.
Me ajuda a identificar o erro? Nгo й sу neste comando nгo.. Sгo em todos que usam parametros!
@edit
Nгo a como fazer uma ediзгo na funзгo strtok para ela resultar no sscanf?
Simplificando:
A strtok seria como um atalho para a utilizaзгo do sscanf.
Re: Comando. - Joao Pedro - 14.02.2013
Quote:
Originally Posted by HumildadeAgain
Nгo a como fazer uma ediзгo na funзгo strtok para ela resultar no sscanf?
Simplificando:
A strtok seria como um atalho para a utilizaзгo do sscanf.
|
Nгo =x
Re: Comando. -
HumildadeAgain - 14.02.2013
Quote:
Originally Posted by Joao Pedro
Nгo =x
|
Vish, vou tentar fazer uma "macumba" para ver se da certo.
Qualquer coisa eu posto aqui se deu certo ou nгo!
@edit
Nгo sei por que este preconceito todo que a galera tem com o GF!
Baixei a versгo original dele, terminei de traduzir ontem e estou convertendo/atualizando as funзхes (sу a strtok que estou com preguiзa shuahusa) e parece ser uma boa base tanto para um gm como para estudos (principalmente para mim! Pois nгo tenho muito tempo com SA-MP, sу usava PHP - HTML - CSS).
Joгo Pedro, vocк й muito atencioso! Espero poder contar com vocк para caso de duvidas/sugestхes.
Re: Comando. -
Dwayne-Pheonix - 14.02.2013
Tente isso
pawn Код:
CMD:login(playerid, params[]) {
if(!IsPlayerConnected(playerid)) return 1;
if(gPlayerLogged[playerid] == 1) return MSG(playerid, COLOR_WHITE, "SERVER: Vocк jб estб logado.");
if(!strval(params)) return 1;
if(strval(params) < 6) return 1;
Encrypt(params);
OnPlayerLogin(playerid, params);
return 1;
}
Ele detecta os devidos 6 caracteres, e nгo utiliza strtok
Re: Comando. -
HumildadeAgain - 14.02.2013
Quote:
Originally Posted by Dwayne-Pheonix
Tente isso
pawn Код:
CMD:login(playerid, params[]) { if(!IsPlayerConnected(playerid)) return 1; if(gPlayerLogged[playerid] == 1) return MSG(playerid, COLOR_WHITE, "SERVER: Vocк jб estб logado."); if(!strval(params)) return 1; if(strval(params) < 6) return 1; Encrypt(params); OnPlayerLogin(playerid, params); return 1; }
Ele detecta os devidos 6 caracteres, e nгo utiliza strtok 
|
o problema nгo й esse amigo..
o problema й que o comando sу estб executando quando a senha possuн acima de 6 caracteres sendo que nгo hб nenhuma funзгo empatando o mesmo.
Re: Comando. -
Dwayne-Pheonix - 14.02.2013
Retire
pawn Код:
if(strval(params) < 6) return 1;
e verifique OnPlayerLogin