[Tutorial] Stopper l'argent sale
#1

Bonjour qui a deja vu les joueurs avec 9999999999$ en poche tout le monde pourtant si simple a eviter ^^ je vais vous dire comment.

pour commencer nous avont besoin d'une variable

ici je l'appelle argent donc

Code:
new argent[MAX_PLAYERS];
dans la callback OnPlayerConnecet(playerid)

Code:
argent[playerid]=0;
on la met a 0 car sinon on garde les parametre de l'ancien joueurs ce qui serais farfelut

desormer nous allons cree nos fonction

pour ne pas faire complexe je vous les met deja prete tenter juste de les comprendre SVP

Code:
stock donneargent(playerid,montant)
{
  argent[playerid]= argent[playerid] + montant;
  return GivePlayerMoney(playerid,argent[playerid]);
}
stock resetargent(playerid)
{
	argent[playerid] = 0;
	return ResetPlayerMoney(playerid);
}
stock setargent(playerid,montant)
{
	argent[playerid] = montant;
	ResetPlayerMoney(playerid);
	return GivePlayerMoney(playerid,argent[playerid]);
}
stock retireargent(playerid,montant)
{
  argent[playerid]= argent[playerid] - montant;
  return GivePlayerMoney(playerid,argent[playerid]);
}
stock Getargent(playerid)
{
	return argent[playerid];
}
desormer le public qui va empecher le cheat d'argent

Code:
forward ACargent();
public ACargent()
{
  for(new i; i<MAX_PLAYERS; i++)
  {
    new ACmoney=Getargent(i);
    setargent(i,ACmoney);
  }
	return 1;
}
bien entendut sans timer sa auras aucun effet ^^ donc dans le OnGameModeInit

Code:
SetTimer("ACargent",5000,1);
Voila si vous avez des question je pourrait y repondre je suis la pour sa ^^

PS ne bannisser pas ce qui on trop d'argent etant donner que l'argent dans GTA on peu ce le procurer de plusieur faзon et donc bannirer des personne innocente
Reply
#2

Personellement j'ferait plutфt se genre de fonciton:
pawn Code:
#define SetPlayerMoney(%0,%1) ResetPlayerMoney(%0);GivePlayerMoney(%0,%1);argent[%0]=%1
#define GivePlayerMoneyEx(%0,%1) GivePlayerMoney(%0,%1);argent[%0]+=%1
#define GetPlayerMoneyEx(%0) (argent[%0])
Pas besoin de fonction retirerargent suffit d'utiliser GivePlayerMoneyEx(playerid,-XXX);

Bien sur il faut tjr un timer qui verifiera si l'argent qua le joueur est bien l'argent qu'il a eu via le serveur:
pawn Code:
forward ACargent();
public ACargent()
{
  for(new i=0; i<MAX_PLAYERS; i++)
  {
     if(IsPlayerConnected(i))
     {
        if(GetPlayerMoney(i) != GetPlayerMoneyEx(i)) //Si l'argent qua le joueur n'est pas identique a ce que le serveur lui a reelement donnй
        {
            SetPlayerMoney(i,GetPlayerMoneyEx(i)); //On lui remet l'argent qu'il a reelement.
        }
      }
   }
   return 1;
}
Reply
#3

pas mal avec les define Merci
Reply
#4

Ah ouais pas mal penser ca GG ^^


Et vive les $$ propre ^^


sinon j' aime pas trop voir ca xd
Code:
argent[playerid]= argent[playerid] + montant;
c' est mieu comme ca

Code:
argent[playerid] += montant;
Reply
#5

Salut,

je vais essayer de faire une petite include simple а utiliser
dиs que les examens sont terminйs je m'y met :P

++Sim++
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)