[Pedido] /Transferir em Dialog!
#1

Alguйm podia me passar um sistema de transferir em dialog? Os que eu encontrei eram com um sistema de banco inteiro com senhas e tals, e tambйm sу em SendClientMessage .
Obrigado, desde jб!
Reply
#2

passa seu sistema de /trasferir em SCM aqui e eu irei ajudar vc a modificar
Reply
#3

Код:
	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;
	}
Reply
#4

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
Reply
#5

Quote:
Originally Posted by BobbMarley
Посмотреть сообщение
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
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.
Bem, faltou variaveis ai Mais nada que nгo conseguisse arrumar
Obs: MAX_TRANSFER, idplayer(Variavйl errada!);
Correto: new idplayer = strval(inputtext);
Valeu ai Precisava disso
Reply
#6

se vc criar a variavel dentro da callback ela nгo vai funcionar no outro dialog. Se precisar de ajuda diga
Reply
#7

Recomendo vocк usar um processador de comandos por exemplo zcmd,strcmp й comparador de strings,nгo recomento usar strtok tambйm existe comparadores de parвmetros mais rбpidos,use por exemplo sscanf,Й isso ai fica a dica.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)