[AJUDA] Obrigatoriedade de @
#1

galera eu tenho um sistema de cadastro do email do palyer:

pawn Код:
if(dialogid == 10105) // Email
    {
        if (response)
        {

            new pemail[MAX_PLAYER_EMAIL], tamanho = 0;
            format(pemail,40, "%s", inputtext); tamanho = strlen(pemail);
            if (!strlen(inputtext))
            {
                format(strres, 128, "Digite o seu email:");
                ShowPlayerDialog(playerid, 10105, DIALOG_STYLE_INPUT,"Email", strres, "Confirmar", "");
                return 1;
            }
            if (tamanho < 10 || tamanho > 40)
            {
                format(strres, 128, "Digite o seu email:");
                ShowPlayerDialog(playerid, 10105, DIALOG_STYLE_INPUT,"Email", strres, "Confirmar", "");
                return 1;
            }
            if(strfind(pemail, "@", false) != 1)
            {
                format(strres, 128, "Digite o seu email:");
                ShowPlayerDialog(playerid, 10105, DIALOG_STYLE_INPUT,"Email", strres, "Confirmar", "");
                return 1;
            }
            bd_escrever_str(pName(playerid),"Email", pemail);
            SendClientMessage(playerid, COR_VERDE, "| Email cadastrado com sucesso!");
            OnPlayerCommandText(playerid, "/regras");
        }
        else
        {
            format(strres, 128, "Digite o seu email:");
            ShowPlayerDialog(playerid, 10105, DIALOG_STYLE_INPUT,"Email", strres, "Confirmar", "");
        }
        PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
        return 1;
    }
Ta tudo certo, menos a obrigatoriedade do @. da forma como ta agora "if(strfind(pemail, "@", false) != 1)" ele nao permite o player usar @ e sem @ ou seja retorna ao dialog... da forma: "if(strfind(pemail, "@", false) != -1)" faz com que ele possa usar sem e quando bota @ retorna ao dialog...

ja tentei de tantas formas que nem lembro...

Qual a forma mais correta que vcs fariam... ouvi falar sobre fazer com que o email tenha duas partes ___ @ ___
Mas nao sei como fazer.... enfim, o dialog sу nao vai retornar ao dialog se o player utilizar @. E mais, se ele usar mais de uma @ deve retornar tabem (й lуgico)....

Aguardo
Reply
#2

Vocк pode fazer um tratamento caracter por caracter, pra ter uma precisгo maior.

Ex:

pawn Код:
new Vstring[15] = "@teste@samp";
new Contador;

for(new i=0; i<sizeof Vstring; i++)
    if(Vstring[i] == '@')
        Contador++;

printf("O trecho possui %d @)",Contador); // No caso o resultado vai ser 2
Reply
#3

Po vini olha como eu fiz:

pawn Код:
if(dialogid == 10105) // Email
    {
        if (response)
        {

            new pemail[MAX_PLAYER_EMAIL], tamanho = 0;
            format(pemail,40, "%s", inputtext); tamanho = strlen(pemail);
            if (!strlen(inputtext))
            {
                format(strres, 128, "Digite o seu email:");
                ShowPlayerDialog(playerid, 10105, DIALOG_STYLE_INPUT,"Email", strres, "Confirmar", "");
                return 1;
            }
            if (tamanho < 10 || tamanho > 40)
            {
                format(strres, 128, "Digite o seu email:");
                ShowPlayerDialog(playerid, 10105, DIALOG_STYLE_INPUT,"Email", strres, "Confirmar", "");
                return 1;
            }

            new Vstring[15] = pemail;
            new Contador;
            for(new i=0; i<sizeof Vstring; i++)
            {
                if(Vstring[i] == '@')
                {
                    Contador++;
                }
            }

            if(Contador > 1)
            {
                format(strres, 128, "Digite o seu email:");
                ShowPlayerDialog(playerid, 10105, DIALOG_STYLE_INPUT,"Email", strres, "Confirmar", "");
                return 1;
            }
            bd_escrever_str(pName(playerid),"Email", pemail);
            SendClientMessage(playerid, COR_VERDE, "| Email cadastrado com sucesso!");
            OnPlayerCommandText(playerid, "/regras");
        }
        else
        {
            format(strres, 128, "Digite o seu email:");
            ShowPlayerDialog(playerid, 10105, DIALOG_STYLE_INPUT,"Email", strres, "Confirmar", "");
        }
        PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
        return 1;
    }
Sу que deu erro na linha "new Vstring[15] = pemail;" diz que: "must be a constant expression; assumed zero"
Reply
#4

pawn Код:
new Vstring[15];
format(Vstring, 15, "%s", pemail);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)