. if(!strcmp(cmd, "/transferir", true))
{
tmp = strtok(cmdtext, idx) ;
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xFFFFFFAA, "USE: /Transferir [ID] [Quantia]");
return 1;
}
new
id = strval(tmp)
;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xFFFFFFAA, "USE: /Transferir [ID] [Quantia]");
return 1;
}
new
moneys = strval(tmp)
;
if(id == playerid)
{
SendClientMessage(playerid, COLOR_RED, "Voce nгo pode transferir dinheiro para vocк mesmo!");
return 1;
}
if(GetDistanceBetweenPlayers(playerid, id) > 20)
{
SendClientMessage(playerid, COLOR_RED, "Chegue mais perto!");
return 1;
}
if(!IsPlayerConnected(id))
{
SendClientMessage(playerid, COLOR_RED, "Jogador offline!");
return 1;
}
if(GetPlayerCash(playerid) < moneys)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Vocк nгo tem tudo isso em mгos!");
return 1;
}
if(moneys < 1 || GetPlayerCash(playerid) < moneys)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Quantia invбlida!");
return 1;
}
format(gstring, sizeof(gstring), "Quantia de R$%d em dinheiro transferida com sucesso para %s.", moneys, PlayerName(id));
SendClientMessage(playerid, 0xFFFFFFAA, gstring);
format(gstring, sizeof(gstring), "O jogador %s lhe transferiu R$%d em dinheiro.", PlayerName(playerid), moneys);
SendClientMessage(id, 0xFFFFFFAA, gstring);
format(gstring, sizeof(gstring), "{FFFFFF}%s transferiu R$%d para %s.", PlayerName(playerid), moneys, PlayerName(id));
sGivePlayerCash(playerid, -moneys);
sGivePlayerCash(id, moneys);
Transferencias(gstring);
return 1;
}
stock IsNumeric(const str[])
{
for(new i, len = strlen(str); i < len; i++)
{
if(!('0' <= str[i] <= '9')) return false;
}
return true;
}
#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;
}
|
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;
}
pawn Код:
Corrijam-me se eu errei em alguma parte do cуdigo, se der para diminuir a quantidade de linhas. |
Mais nada que nгo conseguisse arrumar 