[Ajuda] Como verificar se parametro SSCANF IsNumeric
#1

Galera eu tenho esse cуdigo de stock e tambйm tenho um comando de testes
O que eu quero fazer?
preciso achar uma maneira de saber se o parametro sscanf й um numero digitado.
Creio que com o %s isso nгo й possivel pq й sу pra frases textos.
Entгo se eu usasse 2 sscanf um pra letra e outro pra numero, pra verificar o id do player se tiver on, e Nick se tiver off
Код:
CMD:vernick(playerid, params[])
{
new tmp[34], arquivo[30];
if(sscanf(params,"s[23]",tmp)) return SendClientMessage(playerid, -1, "Digite: [vernick (id/nick)]");
printf("Digitou: %s",tmp);
format(arquivo, sizeof(arquivo), "Contas/%s.ini", tmp);
if(DOF2_FileExists(arquivo)) { SendClientMessage(playerid, -1, "Your account have been registered."); }else{ SendClientMessage(playerid, -1, "Your name isnt not found on our data"); }
return 1;
}
Код:
stock IsNumeric(const str[])
{
    for(new i, len = strlen(str); i < len; i++)
    {
        if(!('0' <= str[i] <= '9')) return false;
    }
    return true;
}
OBS. Jб tentei com o "u" mas ele sу carrega nъmeros, nem isso direito
Reply
#2

Ъnico jeito que achei:
Код:
CMD:vernick(playerid, params[])
{
	new id, arquivo[60];
	if(!sscanf(params,"d",id))
	{
	    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "ID invбlido!");
	    GetPlayerName(id, arquivo, sizeof(arquivo));
	    format(arquivo, sizeof(arquivo), "Contas/%s.ini", arquivo);
	}
	else if(!sscanf(params,"s[24]",arquivo))
	{
	    format(arquivo, sizeof(arquivo), "Contas/%s.ini", arquivo);
	}
	else return SendClientMessage(playerid, -1, "Digite: [vernick (id/nick)]");
	
	if(DOF2_FileExists(arquivo))
	{
		SendClientMessage(playerid, -1, "Your account have been registered.");
	}
	else
	{
		SendClientMessage(playerid, -1, "Your name isnt not found on our data");
	}
	return 1;
}
Reply
#3

PHP код:
stock bool:IsNumeric(const str[])

    new 
tmp;
    for(
sscanf(str,"d",tmp))return true;
    return 
false;     

Reply
#4

pode fazer assim tambйm:

PHP код:
CMD:vernick(playeridparams[])
{
    new 
tmp[34], arquivo[30], name[MAX_PLAYER_NAME];
    
    if(
sscanf(params,"s[23]",tmp))
    return 
SendClientMessage(playerid, -1"Digite: [vernick (id/nick)]");
    
    if(
IsNumeric(tmp))
    {
        if(
IsPlayerConnected(strval(tmp))
        {
            
GetPlayerName(strval(tmp), nameMAX_PLAYER_NAME);
            
format(arquivosizeof(arquivo), "Contas/%s.ini"name);
            
            if(
DOF2_FileExists(arquivo)) return SendClientMessage(playerid, -1"Your account have been registered.");
            
SendClientMessage(playerid, -1"Your name isnt not found on our data");
        }
        else return 
SendClientMessage(playerid, -1"ID invalido");
    }
    else
    {
        
format(arquivosizeof(arquivo), "Contas/%s.ini"tmp);
        
        if(
DOF2_FileExists(arquivo)) return SendClientMessage(playerid, -1"Your account have been registered.");
        
SendClientMessage(playerid, -1"Your name isnt not found on our data");
    }
    return 
1;
}

stock IsNumeric(text[])
{
    for(new 
astrlen(text); ++a)
    {
        if(
text[a] < '0' || text[a] > '9') return false;
    }
    return 
true;

Reply
#5

Olб.
%s identifica letras e nъmeros...

Quote:

new tmp[34], arquivo[30];
if(sscanf(params,"s[23]",tmp)) return SendClientMessage(playerid, -1, "Digite: [vernick (id/nick)]");

Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)