new PlayerComprando[MAX_PLAYERS][2];
//No Local onde ele coloca o id da arma....
PlayerComprando[playerid][0] = strval(inputtext);
//no local onde ele coloca a quantidade de balas
PlayerComprando[playerid][1] = strval(inputtext);
//Quando ele clicar na resposta:
GivePlayerWeapon(playerid, PlayerComprando[playerid][0], PlayerComprando[playerid][1]);
//TOPO DO GM
new PlayerComprando[MAX_PLAYERS][2];
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 7000)
{
PlayerComprando[playerid][0] = strval(inputtext);
ShowPlayerDialog(playerid, 7001, DIALOG_STYLE_INPUT, "Quantidade de Balas", "Digite abaixo a quantidade de balas:", "Comprar", #);
}
else if(dialogid == 7001)
{
PlayerComprando[playerid][1] = strval(inputtext);
if(response)
{
GivePlayerWeapon(playerid, PlayerComprando[playerid][0], PlayerComprando[playerid][1]);
}
}
return 1;
}
CMD:comprararmas(playerid)
{
ShowPlayerDialog(playerid, 7000, DIALOG_STYLE_INPUT, "Loja de Armas", "Digite o id da arma que deseja!", "Selecionar", #);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 7000)
{
// Criamos uma PVar (player variable:https://sampwiki.blast.hk/wiki/SetPVarInt)
SetPVarInt(playerid, "lojaBALAS", strval(inputtext0));
ShowPlayerDialog(playerid, 7001, DIALOG_STYLE_INPUT, "Quantidade de Balas", "Digite abaixo a quantidade de balas:", "Comprar", #);
}
if(dialogid == 7001)
{
if(response)
{
// Agora iremos pegar a nossa PVar que criamos anteriormente com a funзгo GetPVarInt(https://sampwiki.blast.hk/wiki/GetPVarInt)
GivePlayerWeapon(playerid, GetPVarInt(playerid, "lojaBALAS"), strval(inputtext));
// Deletando nossa PVar (https://sampwiki.blast.hk/wiki/DeletePVar)
DeletePVar(playerid, "lojaBALAS");
}
}
return 1;
}
Simples, utilize PVars!
PHP код:
|
#define OBTER_ARMAS 1301
#define QUANTIDADE_BALAS 1302
#define VALOR_MUNICAO (4)
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/armas", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, 296.89999389648, -38.700000762939, 1001.5))
{
ShowPlayerDialog(playerid, OBTER_ARMAS, DIALOG_STYLE_TABLIST_HEADERS, "Compra de Armas",
"CATEGORIA\t\t$POR BALA\nDesert Eagle\t\t$4,00\nPistola C/ Silenciador\t\t$4,00\nMP5\t\t$4,00\nShotgun\t\t$4,00\nAK-47\t\t$4,00\nM4\t\t$4,00\nRifle\t\t$4,00",
"Selecionar", "Cancelar");
return 1;
}
}
return 1;
}
if(dialogid == DIALOG_LOGIN)
{
if(dialogid == OBTER_ARMAS)
{
if(response)
{
if(listitem == 0)
{ //VARIAVEL IdGun = 24;
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
if(listitem == 1)
{ //VARIAVEL IdGun = 23; Assim por diante em todas listitem...
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Pistola C/ Silenciador" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
if(listitem == 2)
{
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para MP5" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
if(listitem == 3)
{
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Shotgun" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
if(listitem == 4)
{
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para AK-47" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
if(listitem == 5)
{
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para M4" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
if(listitem == 6)
{
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Rifle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
}
}
if(dialogid == QUANTIDADE_BALAS)
{
if(response)
{
new PrecoFinal = strval(inputtext)*VALOR_MUNICAO;
if(!IsNumeric(inputtext))
{
SendClientMessage(playerid, -1, "Digite numeros POSITIVOS para quantia de muniзгo!");
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "OBTER BALAS" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
if(GetPlayerMoney(playerid) < PrecoFinal)
{
SendClientMessage(playerid, -1, "Vocк nгo tem dinheiro para comprar essa quantia de muniзгo!");
}
else
{
GivePlayerWeapon(playerid, IdGun, strval(inputtext));
GivePlayerMoney(playerid, -PrecoFinal);
format(string, sizeof(string), "Vocк comprou uma arma com %i muniзхes por $%i!", strval(inputtext), PrecoFinal);
SendClientMessage(playerid, -1, string);
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "OBTER BALAS" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
}
}
return 1;
}
Queria agradecer a todos que tentaram me ajudar.
Mas acho que nгo formulei bem minha duvida :/ Talvez algum de vocкs tenha respondido minha pergunta eu nгo entendi. Mas basicamente й o seguinte, a parte de definir as balas jб esta tudo certo, a questгo de definir a arma й o seguinte: Tenho um dialog List que mostra o nome de todas as armas, quando player clica na arma que ele escolheu ele й redirecionado para um dialog input onde ele digita a quantia de balas. Para minimizar os cуdigos eu criei um ъnico GivePlayerWeapon, onde o local que se deveria conter o ID da arma tem uma variбvel que eu chamei de IdGun. O que eu preciso da ajuda de vocкs й uma forma de eu jб predefinir o ID de cada arma na variбvel IdGun, pois quando o cara clicar na eagle por exemplo automaticamente o ID 24 sera substituнdo pela variбvel IdGun. Eu sou novato, mas alguйm conseguiu entendo o que quero dizer? Pois eu nгo consigo criar essa bendita variбvel :/ VOU MOSTRAR O CODIGO COMPLETO: PHP код:
Atenciosamente, Matheus Dorado |
if(dialogid == OBTER_ARMAS) { if(response) { if(listitem == 0) { //VARIAVEL IdGun = 24; ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } if(listitem == 1) { //VARIAVEL IdGun = 23; Assim por diante em todas listitem... ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Pistola C/ Silenciador" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } if(listitem == 2) { ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para MP5" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } if(listitem == 3) { ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Shotgun" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } if(listitem == 4) { ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para AK-47" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } if(listitem == 5) { ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para M4" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } if(listitem == 6) { ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Rifle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } SetPVarInt(playerid, "lojaARMA", listitem); } } if(dialogid == QUANTIDADE_BALAS) { if(response) { static _arma[32]; switch(GetPVarInt(playerid, "lojaARMA")){ case 0:{ _arma = "Desert Eagle"; } case 1:{ _arma = "Pistola com Silenciador"; } case 2:{ _arma = "MP5"; } case 3:{ _arma = "Shot Gun"; } case 4:{ _arma = "AK-47"; } case 5:{ _arma = "M4"; } case 6:{ _arma = "Rifle"; } } format(string, sizeof(string),"Vocк comprou uma %s", _arma); SendClientMessage(playerid, -1, string); new PrecoFinal = strval(inputtext)*VALOR_MUNICAO; if(!IsNumeric(inputtext)) { SendClientMessage(playerid, -1, "Digite numeros POSITIVOS para quantia de muniзгo!"); ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "OBTER BALAS" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } if(GetPlayerMoney(playerid) < PrecoFinal) { SendClientMessage(playerid, -1, "Vocк nгo tem dinheiro para comprar essa quantia de muniзгo!"); } else { GivePlayerWeapon(playerid, IdGun, strval(inputtext)); GivePlayerMoney(playerid, -PrecoFinal); format(string, sizeof(string), "Vocк comprou uma arma com %i muniзхes por $%i!", strval(inputtext), PrecoFinal); SendClientMessage(playerid, -1, string); ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "OBTER BALAS" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ; } } }
if(dialogid == OBTER_ARMAS)
{
if(response)
{
switch(listitem)
{
case 0:
{
IDArmas[playerid] = 24;
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
case 1:
{
IDArmas[playerid] = 23;
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
case 2:
{
IDArmas[playerid] = 29;
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
case 3:
{
IDArmas[playerid] = 25;
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
case 4:
{
IDArmas[playerid] = 30;
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
case 5:
{
IDArmas[playerid] = 31;
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
case 6:
{
IDArmas[playerid] = 33;
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "Balas para Desert Eagle" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
}
}
}
if(dialogid == QUANTIDADE_BALAS)
{
if(response)
{
new PrecoFinal = strval(inputtext)*VALOR_MUNICAO;
if(!IsNumeric(inputtext))
{
SendClientMessage(playerid, -1, "Digite numeros POSITIVOS para quantia de muniзгo!");
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "OBTER BALAS" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
if(GetPlayerMoney(playerid) < PrecoFinal)
{
SendClientMessage(playerid, -1, "Vocк nгo tem dinheiro para comprar essa quantia de muniзгo!");
}
else
{
if(strval(inputtext)<0)
{
SendClientMessage(playerid, -1, "Insira valores positivos para comprar essa quantia de muniзгo!");
}
else
{
GivePlayerWeapon(playerid, IDArmas[playerid], strval(inputtext));
GivePlayerMoney(playerid, -PrecoFinal);
format(string, sizeof(string), "Vocк comprou uma Arma com %i muniзхes por $%i!", strval(inputtext), PrecoFinal);
SendClientMessage(playerid, -1, string);
ShowPlayerDialog ( playerid, QUANTIDADE_BALAS, DIALOG_STYLE_INPUT, "OBTER BALAS" , "Digite a quantidade de balas:" , "Comprar" , "Cancelar" ) ;
}
}
}
}