Primeiro use a callback IsNumeric, ela identifica se o player digitou um numero em vez de letras
CallBack:
Код:
stock IsNumeric(const str[])
{
for(new i, len = strlen(str); i < len; i++)
{
if(!('0' <= str[i] <= '9')) return false;
}
return true;
}
Code:
pawn Код:
#define DIALOG_TRASNFID 11 //Select ID
#define DIALOG_TRANSFERIR 12 //Amount
#define MAX_TRANSFER 50000
new idplayer[MAX_PLAYERS]; // Playerid reverso quando o playerid seleciona outro player para uma function, nunca testei pode dar erro.
if(!strcmp(cmd, "/transferir", true))
{
ShowPlayerDialog(playerid, DIALOG_TRANSFID, DIALOG_STYLE_INPUT, "Transferir [ID]", "Select ID to go process transfer", "Prosseguir", "Cancel");
SendClientMessage(playerid, -1, "Vindo ao sistema de transferencia");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_TRANSFID){
if(!response) return SendClientMessage(playerid, -1, "Vocк cancelou o sistema de transferencia");
if(!IsNumeric(inputtext)) return SendClientMessage(playerid, -1,"Digite um ID para continuar, tente novamente"); ShowPlayerDialog(playerid, DIALOG_TRANSFID, DIALOG_STYLE_INPUT, "Transferir [ID]", "Select ID to go process transfer", "Prosseguir", "Cancel");
if(strval(inputtext) < 0 || strval(inputtext) > MAX_PLAYERS || IsPlayerConnected(strval(inputtext))) return SendClientMessage(playerid, -1, "Player ID Nгo encontrado, tente outro id, Use /transferir"); ShowPlayerDialog(playerid, DIALOG_TRANSFID, DIALOG_STYLE_INPUT, "Transferir [ID]", "Select ID to go process transfer", "Prosseguir", "Cancel");
idplayer = strval(inputtext);
new str[45];
format(str, sizeof(str), "Select the quantity for Send to ID: %i", idplayer);
ShowPlayerDialog(playerid, DIALOG_TRANSFERIR, DIALOG_STYLE_INPUT, "Transferir [Quantia]", str, "Send", "Go Back");
return 1;
}
if(dialogid == DIALOG_TRANSFERIR){
f(!response) return SendClientMessage(playerid, -1, "Vocк voltou o sistema de transferencia para selecionar outro ID"); ShowPlayerDialog(playerid, DIALOG_TRANSFID, DIALOG_STYLE_INPUT, "Transferir [ID]", "Select ID to go process transfer", "Prosseguir", "Cancel");
new str[45];
format(str, sizeof(str), "Select the quantity for Send to ID: %i", idplayer);
if(!IsNumeric(inputtext)) return SendClientMessage(playerid, -1,"Digite uma quantia em Dinheiro para continuar, tente novamente"); ShowPlayerDialog(playerid, DIALOG_TRANSFERIR, DIALOG_STYLE_INPUT, "Transferir [Quantia]", str, "Send", "Go Back");
if(strval(inputtext) < 0 || strval(inputtext) > MAX_TRANSFER) return SendClientMessage(playerid, -1, "Quantia invбlida ou Maior do que o Limite por transferencia");//Definir max transfer
new QuantiaValorDinheiro = strval(inputtext);
GivePlayerMoney(playerid, -QuantiaValorDinheiro);
GivePlayerMoney(idplayer, QuantiaValorDinheiro);
return 1;
}
return 1;
}
_________________________
Corrijam-me se eu errei em alguma parte do cуdigo, se der para diminuir a quantidade de linhas.
@EDIT