Espaзos em dialog -
PetrickSchoba - 12.03.2017
Pessoal estou com problema em DIALOG_STYLE_INPUT.
Gostaria de saber qual funзгo verifica se jogador colocou o texto ou nгo. Vгo me dizer que й o inputtext do dialog. Isso eu sei!
O problema й que quando eu digito apenas espaзos no meu dialog ele retorna a funзгo como verdadeira e eu queria evitar isso.
pawn Код:
case 2:
{
ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<");
}
pawn Код:
if(dialogid == 1036)
{
if(response)
{
if(INFO_P[playerid][VIP_P] < 3) return SendClientMessage(playerid,COR_ERRO,": ERRO : Apenas jogadores VIP Premium, Platina, Diamante e Permanente poderгo usar esta opзгo!");
if(!strlen(inputtext) && strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<");
if(strlen(inputtext) < 3 || strlen(inputtext) > 18) return SendClientMessage(playerid, COR_ERRO,": ERRO : Vocк sу pode colocar de 3 a 18 caracteres!"),
ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<");
new TagVipSTG[60];
format(TagVipSTG, sizeof(TagVipSTG), "%s", inputtext);
tagvip[playerid] = Create3DTextLabel(TagVipSTG, 0xFFFFFFFF, 30.0, 40.0, 50.0, 40.0, 0, 0);
Attach3DTextLabelToPlayer(tagvip[playerid], playerid, 0.0, 0.0, 0.7);
format(String,sizeof(String), ": Tag VIP : Vocк colocou uma tag VIP personalizada com o texto {A4FF9A}%s", inputtext);
SendClientMessage(playerid, 0xFFFFFFFF , String);
}
else
{
ShowPlayerDialog(playerid, 1031, DIALOG_STYLE_LIST, "Tag VIP", "Ativar/Desativar tag [VIP]\nCores opcionais tag [VIP]\nTag ViP personalizada\n", ">>>", "X");
}
return true;
}
Re: Espaзos em dialog -
BarBePie - 12.03.2017
PHP код:
if(strfind(strlen, " ", false) != -1) return ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<");
@edit
Re: Espaзos em dialog -
PetrickSchoba - 12.03.2017
Quote:
Originally Posted by BarBePie
PHP код:
if(strfind(strlen, " ", false) != -1) return ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<");
@edit
|
da este erro
pawn Код:
BURPG.pwn(11143) : error 076: syntax error in the expression, or invalid function call
Re: Espaзos em dialog -
Luiiiz - 12.03.2017
Quote:
Originally Posted by PetrickSchoba
Pessoal estou com problema em DIALOG_STYLE_INPUT.
Gostaria de saber qual funзгo verifica se jogador colocou o texto ou nгo. Vгo me dizer que й o inputtext do dialog. Isso eu sei!
O problema й que quando eu digito apenas espaзos no meu dialog ele retorna a funзгo como verdadeira e eu queria evitar isso.
pawn Код:
case 2: { ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<"); }
pawn Код:
if(dialogid == 1036) { if(response) { if(INFO_P[playerid][VIP_P] < 3) return SendClientMessage(playerid,COR_ERRO,": ERRO : Apenas jogadores VIP Premium, Platina, Diamante e Permanente poderгo usar esta opзгo!"); if(!strlen(inputtext) && strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<"); if(strlen(inputtext) < 3 || strlen(inputtext) > 18) return SendClientMessage(playerid, COR_ERRO,": ERRO : Vocк sу pode colocar de 3 a 18 caracteres!"), ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<"); new TagVipSTG[60]; format(TagVipSTG, sizeof(TagVipSTG), "%s", inputtext); tagvip[playerid] = Create3DTextLabel(TagVipSTG, 0xFFFFFFFF, 30.0, 40.0, 50.0, 40.0, 0, 0); Attach3DTextLabelToPlayer(tagvip[playerid], playerid, 0.0, 0.0, 0.7); format(String,sizeof(String), ": Tag VIP : Vocк colocou uma tag VIP personalizada com o texto {A4FF9A}%s", inputtext); SendClientMessage(playerid, 0xFFFFFFFF , String); } else { ShowPlayerDialog(playerid, 1031, DIALOG_STYLE_LIST, "Tag VIP", "Ativar/Desativar tag [VIP]\nCores opcionais tag [VIP]\nTag ViP personalizada\n", ">>>", "X"); } return true; }
|
Use:
PHP код:
if(strlen(inputtext) == 0)
{
SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Digite algo.");
ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 1 a 20 caracteres.\n", ">>>", "<<<");
}
Re: Espaзos em dialog -
PetrickSchoba - 12.03.2017
Arrumado @
Arrumado Strlen estava obtendo o tamanho da String e eu precisa que procura-se o caracterer espaзo " ".
Usei. if(strfind(inputtext, " ") != -1)
Re: Espaзos em dialog - Whoo - 12.03.2017
Quote:
Originally Posted by PetrickSchoba
Arrumado @
Arrumado Strlen estava obtendo o tamanho da String e eu precisa que procura-se o caracterer espaзo " ".
Usei. if(strfind(inputtext, " ") != -1)
|
ja que й um texto provavelmente a pessoa vai dar um espaзo no meio dele .. entгo strfind iria detectar e nгo vai funcionar, nesse caso vocк vai ter que correr todo o texto e verificar se tem caracteres.
Exemplo:
PHP код:
new Texto[30];
Texto = "Oi escrevi um texto qualquer.";
if (EscreveuUmTexto(Texto))
printf("ESCREVEU: %s", Texto);
else
printf("NГO ESCREVEU 2: %s", Texto);
Texto[0] = EOS ;
if (EscreveuUmTexto(Texto))
printf("ESCREVEU: %s", Texto);
else
printf("NГO ESCREVEU: %s", Texto);
EscreveuUmTexto(text[]) {
for(new a; a < strlen(text); ++a) {
if (strcmp(text[a], " ") != 0) return 1;
}
return 0;
}
Re: Espaзos em dialog -
PetrickSchoba - 13.03.2017
Quote:
Originally Posted by Whoo
ja que й um texto provavelmente a pessoa vai dar um espaзo no meio dele .. entгo strfind iria detectar e nгo vai funcionar, nesse caso vocк vai ter que correr todo o texto e verificar se tem caracteres.
Exemplo:
PHP код:
new Texto[30];
Texto = "Oi escrevi um texto qualquer.";
if (EscreveuUmTexto(Texto))
printf("ESCREVEU: %s", Texto);
else
printf("NГO ESCREVEU 2: %s", Texto);
Texto[0] = EOS ;
if (EscreveuUmTexto(Texto))
printf("ESCREVEU: %s", Texto);
else
printf("NГO ESCREVEU: %s", Texto);
EscreveuUmTexto(text[]) {
for(new a; a < strlen(text); ++a) {
if (strcmp(text[a], " ") != 0) return 1;
}
return 0;
}
|
Irei fazer por sscanf mesmo, й mais fбcil e nгo irei quebrar tanto a cabeзa, mas obrigado!
Re: Espaзos em dialog -
PetrickSchoba - 13.03.2017
Quote:
Originally Posted by Whoo
ja que й um texto provavelmente a pessoa vai dar um espaзo no meio dele .. entгo strfind iria detectar e nгo vai funcionar, nesse caso vocк vai ter que correr todo o texto e verificar se tem caracteres.
Exemplo:
PHP код:
new Texto[30];
Texto = "Oi escrevi um texto qualquer.";
if (EscreveuUmTexto(Texto))
printf("ESCREVEU: %s", Texto);
else
printf("NГO ESCREVEU 2: %s", Texto);
Texto[0] = EOS ;
if (EscreveuUmTexto(Texto))
printf("ESCREVEU: %s", Texto);
else
printf("NГO ESCREVEU: %s", Texto);
EscreveuUmTexto(text[]) {
for(new a; a < strlen(text); ++a) {
if (strcmp(text[a], " ") != 0) return 1;
}
return 0;
}
|
Para resolver isso, alguйm?
Re: Espaзos em dialog -
MultiKill - 13.03.2017
PHP код:
new st[] = " ";
new len = strlen(st);
new cont;
for(new i; i < len; i++){
if(st[i] == ' ')
cont++;
}
printf("len: %d | espaзos: %d", len, cont);
Como foi feito acima basta percorrer a string e contar os espaзos, se o total de espaзos for igual ao tamanho da string contйm somente espaзos. Vocк pode aplicar outras regras, como poder ter sу um espaзo entre palavras.
Re: Espaзos em dialog -
PetrickSchoba - 13.03.2017
Quote:
Originally Posted by MultiKill
PHP код:
new st[] = " ";
new len = strlen(st);
new cont;
for(new i; i < len; i++){
if(st[i] == ' ')
cont++;
}
printf("len: %d | espaзos: %d", len, cont);
Como foi feito acima basta percorrer a string e contar os espaзos, se o total de espaзos for igual ao tamanho da string contйm somente espaзos. Vocк pode aplicar outras regras, como poder ter sу um espaзo entre palavras.
|
Й isso o que eu quero, o foda й que nгo entendi como vou colocar isso ai aqui
pawn Код:
if(INFO_P[playerid][TAG_VIP_P] == 0) return SendClientMessage(playerid,COR_ERRO,": ERRO : O seu tag VIP nгo esta ativado, ative-o para poder escolher um texto!");
if(strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 3 a 18 caracteres.\n", ">>>", "<<<");
if(strlen(inputtext) < 3 || strlen(inputtext) > 18) return SendClientMessage(playerid, COR_ERRO, ": ERRO : Coloque de 3 a 18 caracteres!"), ShowPlayerDialog(playerid, 1036, DIALOG_STYLE_INPUT, "Tag VIP Personalizada", "Coloque abaixo o texto que vocк quer que apareзa em cima do seu nick.\nColoque de 3 a 18 caracteres.\n", ">>>", "<<<");