[Ajuda] compra e vendas entre players
#1

Ola, ja tentei algumas formas, da ultima vez tentei assim mas o bug й basicamente o mesmo, quero que quando o player aceite ele receba as drogas e debite dele o valor e o outro player receba o valor e ele perca a droga...
porйm quando o player aceita aparece pra ele as 2 coisas...

pawn Код:
CMD:vendermaconha(playerid, params[])
{

   new string[128];
   if(IsPlayerConnected(playerid))
  {
//   if(!IsPlayerPerto(playerid)) return SendClientMessage(playerid, Azul, "Jogador esta longe");
//   if(!SetPlayerPos(playerid, 8.0, Posx,Posy,Posz)) return SendClientMessage(playerid, Azul, "Jogador esta longe");
   if(sscanf(params, "uii", giveid, Gramas, GranaDrogas)) return SendClientMessage(playerid, Azul, "USE: /vendeermaconha [ID][Quantidade][Valor]");
   if(pDados[playerid][Maconha] < Gramas) return SendClientMessage(playerid, Azul, "Vocк nгo tem essa quantidade de maconha");
   if(GetPlayerMoney(giveid) < GranaDrogas) return SendClientMessage(playerid, Azul, "O jogador nгo tem essa grana");
   if(GranaDrogas < 1 || GranaDrogas > 1500) return SendClientMessage(playerid, Azul, "Valor deve estar entre $1 e $1500");
   GetPlayerName(giveid, Comprador, sizeof(Comprador));
   GetPlayerName(playerid, Vendedor, sizeof(Vendedor));
   format(string, sizeof(string), "[%s] Esta lhe oferecendo %i gramas de maconha por [$%i], use /aceitar caso queira", Vendedor, Gramas, GranaDrogas);
   SendClientMessage(giveid, Laranja, string);
   format(string, sizeof(string), "Vocк ofereceu para [%s] %i gramas de maconha por [$%i]", Comprador, Gramas, GranaDrogas);
   SendClientMessage(playerid, Laranja, string);
   GetPVarInt(GranaDrogas,"GranaDrogas");
   GetPVarInt(Gramas,"Gramas");
   //SetPVarInt(GranaDrogas,"GranaDrogas",GranaDrogas);// = GetPlayerMoney(GranaVenda[playerid]));
   //SetPVarInt(Gramas,"Gramas",Gramas);// GetPVarInt(Gramas, "Gramas"));
   Vendas = 1;
   }

return 1;
}
pawn Код:
CMD:aceitar(playerid) {
   new string[128];

   if(Vendas == 1)
   {
  // pDados[giveid][Maconha] += Gramas;

 //  pDados[giveid][Maconha] = GetPVarInt(Gramas,-"Gramas");
//   pDados[playerid][Maconha] = GetPVarInt(Gramas, "Gramas");
//   GivePlayerMoney(giveid, GetPVarInt(GranaDrogas,-"GranaDrogas"));
 //  GivePlayerMoney(playerid, GetPVarInt(GranaDrogas,"GranaDrogas"));               // eu mudei playerid e giveid!


   pDados[playerid][Maconha] = SetPVarInt(playerid,"Gramas",Gramas);
   pDados[giveid][Maconha] = -SetPVarInt(giveid,"Gramas",Gramas);


   GivePlayerMoney(playerid,-SetPVarInt(playerid,"GranaDrogas",GranaDrogas));
   GivePlayerMoney(playerid, SetPVarInt(giveid, "GranaDrogas",GranaDrogas));

   GetPlayerName(playerid, Comprador, sizeof(Comprador));
   GetPlayerName(giveid, Vendedor, sizeof(Vendedor));
   format(string, sizeof(string), "Vocк aceitou comprar do [%s], %i gramas de maconha por [$%i]", Vendedor, GetPVarInt(Gramas, "Gramas"), GranaDrogas);
   SendClientMessage(playerid, Laranja, string);
   format(string, sizeof(string), "Vocк vendeu para %is %i gramas de maconha e recebeu $%i", Comprador, GetPVarInt(Gramas, "Gramas"), GranaDrogas);
   SendClientMessage(giveid, Laranja, string);

   Vendas = 0;
   }
   else
   {
   SendClientMessage(playerid, Azul, "Ninguem lhe ofereceu nada");
   return 1;
   }

return 1;
}
se alguйm puder ajudar agradeзo!
Reply
#2

Tenta assim:
PHP код:
 new Vendas[MAX_PLAYERS]// Mude o Vendas para esse!

CMD:vendermaconha(playeridparams[])
{

   new 
string[128];
   if(
IsPlayerConnected(playerid))
  {
//   if(!IsPlayerPerto(playerid)) return SendClientMessage(playerid, Azul, "Jogador esta longe");
//   if(!SetPlayerPos(playerid, 8.0, Posx,Posy,Posz)) return SendClientMessage(playerid, Azul, "Jogador esta longe");
   
if(sscanf(params"uii"giveidGramasGranaDrogas)) return SendClientMessage(playeridAzul"USE: /vendeermaconha [ID][Quantidade][Valor]");
   if(
pDados[playerid][Maconha] < Gramas) return SendClientMessage(playeridAzul"Vocк nгo tem essa quantidade de maconha");
   if(
GetPlayerMoney(giveid) < GranaDrogas) return SendClientMessage(playeridAzul"O jogador nгo tem essa grana");
   if(
GranaDrogas || GranaDrogas 1500) return SendClientMessage(playeridAzul"Valor deve estar entre $1 e $1500");
   
GetPlayerName(giveidCompradorsizeof(Comprador));
   
GetPlayerName(playeridVendedorsizeof(Vendedor));
   
format(stringsizeof(string), "[%s] Esta lhe oferecendo %i gramas de maconha por [$%i], use /aceitar caso queira"VendedorGramasGranaDrogas);
   
SendClientMessage(giveidLaranjastring);
   
format(stringsizeof(string), "Vocк ofereceu para [%s] %i gramas de maconha por [$%i]"CompradorGramasGranaDrogas);
   
SendClientMessage(playeridLaranjastring);
   
SetPVarInt(giveid"Vendedor"playerid);
   
SetPVarInt(giveid"Gramas"Gramas);
   
SetPVarInt(giveid"ValorDroga"GranaDrogas);
   
//SetPVarInt(GranaDrogas,"GranaDrogas",GranaDrogas);// = GetPlayerMoney(GranaVenda[playerid]));
   //SetPVarInt(Gramas,"Gramas",Gramas);// GetPVarInt(Gramas, "Gramas"));
   
Vendas[playerid] = 1;
   }

return 
1;
}
CMD:aceitar(playerid)
{
   new 
string[128], giveid GetPVarInt(playerid,"Vendedor");
   if(
Vendas[playerid] == 0) return SendClientMessage(playeridAzul"Ninguem lhe ofereceu nada");
   
pDados[playerid][Maconha] += GetPVarInt(playerid"Gramas");
   
pDados[giveid][Maconha] -= GetPVarInt(playerid"Gramas");
   
GivePlayerMoney(playerid,-SetPVarInt(playerid,"GranaDrogas",GranaDrogas));
   
GivePlayerMoney(giveidSetPVarInt(giveid"GranaDrogas",GranaDrogas));
   
GetPlayerName(playeridCompradorsizeof(Comprador));
   
GetPlayerName(giveidVendedorsizeof(Vendedor));
   
format(stringsizeof(string), "Vocк aceitou comprar do [%s], %i gramas de maconha por [$%i]"VendedorGetPVarInt(Gramas"Gramas"), GranaDrogas);
   
SendClientMessage(playeridLaranjastring);
   
format(stringsizeof(string), "Vocк vendeu para %is %i gramas de maconha e recebeu $%i"CompradorGetPVarInt(Gramas"Gramas"), GranaDrogas);
   
SendClientMessage(giveidLaranjastring);
   
Vendas[playerid] = 0;
  

return 
1;

Reply
#3

vlww! vou tentar aqui
Reply
#4

warning: 219: local variable "giveid" shadows a variable at a preceding level


Tipo, ta um problema semelhante, eu vendo para o player e eu mesmo aceito '-'
Reply
#5

Код:
warning: 219: local variable "giveid" shadows a variable at a preceding level
Warning: 219: variбvel local "giveid" sombreia uma variбvel em um nнvel anterior

Tem 2 variaveis iguais, apague uma...
Reply
#6

mude este comando
PHP код:
CMD:aceitar(playerid)
{
   new 
string[128];
 
giveid GetPVarInt(playerid,"Vendedor")
   if(
Vendas[playerid] == 0) return SendClientMessage(playeridAzul"Ninguem lhe ofereceu nada");
   
pDados[playerid][Maconha] += GetPVarInt(playerid"Gramas");
   
pDados[giveid][Maconha] -= GetPVarInt(playerid"Gramas");
   
GivePlayerMoney(playerid,-SetPVarInt(playerid,"GranaDrogas",GranaDrogas));
   
GivePlayerMoney(giveidSetPVarInt(giveid"GranaDrogas",GranaDrogas));
   
GetPlayerName(playeridCompradorsizeof(Comprador));
   
GetPlayerName(giveidVendedorsizeof(Vendedor));
   
format(stringsizeof(string), "Vocк aceitou comprar do [%s], %i gramas de maconha por [$%i]"VendedorGetPVarInt(Gramas"Gramas"), GranaDrogas);
   
SendClientMessage(playeridLaranjastring);
   
format(stringsizeof(string), "Vocк vendeu para %is %i gramas de maconha e recebeu $%i"CompradorGetPVarInt(Gramas"Gramas"), GranaDrogas);
   
SendClientMessage(giveidLaranjastring);
   
Vendas[playerid] = 0;
  

return 
1;

Reply
#7

nossa verdade! vou testar aqui...
sу que eu fiz um loop agora.. acho que funcionou tb, jaja eu posto aqui, +rep pra vcs ai.
Reply
#8

sem voces nunca teria conseguido, seus lindos!

entгo, eu pelo menos nгo me dou bem com esse pvart, dessa forma estava dando "certo", porйm o player nгo recebia a quantia de drogas e o valor tambйm era sempre 1 entгo resolvi fazer diferente.. um detalhe й que no comando vender no final ta "Vendas[playerid] = 1; na verdade й Vendas[giveid] = 1; entгo eu fiz assim:

pawn Код:
CMD:vender(playerid, params[])
{
   new string[132];
   if(sscanf(params, "uii", giveid, Gramas, GranaDrogas)) return SendClientMessage(playerid, Azul, "USE: /vendeermaconha [ID][Quantidade][Valor]");
   if(pDados[playerid][Maconha] < Gramas) return SendClientMessage(playerid, Azul, "Vocк nгo tem essa quantidade de maconha");
   if(GetPlayerMoney(giveid) < GranaDrogas) return SendClientMessage(playerid, Azul, "O jogador nгo tem essa grana");
   if(GranaDrogas < 1 || GranaDrogas > 1500) return SendClientMessage(playerid, Azul, "Valor deve estar entre $1 e $1500");
   GetPlayerName(giveid, Comprador, sizeof(Comprador));
   GetPlayerName(playerid, Vendedor, sizeof(Vendedor));
   format(string, sizeof(string), "[%s] Esta lhe oferecendo %i gramas de maconha por [$%i], use /aceitar caso queira", Vendedor, Gramas, GranaDrogas);
   SendClientMessage(giveid, Laranja, string);
   format(string, sizeof(string), "Vocк ofereceu para [%s] %i gramas de maconha por [$%i]", Comprador, Gramas, GranaDrogas);
   SendClientMessage(playerid, Laranja, string);
   SetPVarInt(giveid, "Vendedor", playerid);
   Vendas[giveid] = 1;

return 1;
}
pawn Код:
CMD:aceitar(playerid)
{
   new string[128];
   giveid = GetPVarInt(playerid,"Vendedor");
   if(Vendas[playerid] == 0) return SendClientMessage(playerid, Azul, "Ninguem lhe ofereceu nada");
   pDados[playerid][Maconha] += Gramas;
   pDados[giveid][Maconha] -= Gramas;
   GivePlayerMoney(playerid,-GranaDrogas);
   GivePlayerMoney(giveid, GranaDrogas);
   GetPlayerName(playerid, Comprador, sizeof(Comprador));
   GetPlayerName(giveid, Vendedor, sizeof(Vendedor));
   format(string, sizeof(string), "Vocк aceitou comprar do [%s], %i gramas de maconha por [$%i]", Vendedor, Gramas, GranaDrogas);
   SendClientMessage(playerid, Laranja, string);
   format(string, sizeof(string), "Vocк vendeu para [%s] %i gramas de maconha e recebeu [$%i]", Comprador, Gramas, GranaDrogas);
   SendClientMessage(giveid, Laranja, string);
   Vendas[playerid] = 0;
return 1;
}
Valeu galera, provavelmente eu volto pra pedir mais ajuda kkkkkkk!
beijos!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)