[AJUDA] Obrigatoriedade de @ -
Mattos - 12.10.2011
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
Re: [AJUDA] Obrigatoriedade de @ -
ViniBorn - 12.10.2011
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
Re: [AJUDA] Obrigatoriedade de @ -
Mattos - 12.10.2011
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"
Re: [AJUDA] Obrigatoriedade de @ -
Ricop522 - 12.10.2011
pawn Код:
new Vstring[15];
format(Vstring, 15, "%s", pemail);