GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Paradize le 23 Décembre 2009, 15:22:16

Titre: [ Aide ] Distributeur d'argent
Posté par: Paradize le 23 Décembre 2009, 15:22:16
Bonjour !

Alors voilà

J'aurais voulu savoir plus de précision sur les distributeurs d'argent

Comment on code cela, j'ai ma petite idée mais j'aimerais votre avis

Merci
Titre: Re : [ Aide ] Distributeur d'essence
Posté par: ghm94 le 23 Décembre 2009, 15:25:09
Salut,

Il te suffit de faire des CreateObject avec comme id un distributeur. (Bon sa je pense que tu le c'est  :D )
Ensuite lors de la cmd (/retirer par exemple) tu vérifie si le joueur est à coté d'un distributeur.
Si il l'est tu vérifie qu'il ne dépasse pas le montant qu'il a sur son compte et tu lui donne l'argent.

Sinon essaye et montre ce que ta fait ;)
Titre: Re : [ Aide ] Distributeur d'essence
Posté par: minimicro le 23 Décembre 2009, 15:29:48
Si tu as beaucoup de distributeurs, tu peut coder une fonction permettant de verifier si le joueur est a un distributeur, qui renvoit TRUE si le joueur y est, FALSE sinon.

Comme, ca, dans chacune de tes commandes de distributeur (type /retirer, /deposer ... ou même si la banque doit les recharger), il suffira de faire un if(IsPlayerIsOnDistrib(playerid)) ... code

Un peu, à la manière du IsAtGazStation(playerid), ou IsAtBar(playerid) dans ton script ...
Titre: Re : [ Aide ] Distributeur d'essence
Posté par: ghm94 le 23 Décembre 2009, 15:31:47
Ouais j'avais fait sa un jour, j'ai mis toutes les positions dans un tableau, puis j'ai fait une fonction qui parcourait le tableau en vérifiant si je suis près d'un distributeur.
Titre: Re : [ Aide ] Distributeur d'essence
Posté par: Paradize le 23 Décembre 2009, 15:43:37
Je vais tenter d'en ajouter un pour voir et je vous redis  :)

Double post
Citer
forward IsAtDistrib(playerid);

Citer
public IsAtDistrib(playerid)
{
    if(IsPlayerConnected(playerid))
   {
      if(PlayerToPoint(4.0,playerid,Cordonnée Distributeur)
      {//Distributeur
                    return 1;
      }
   }
   return 0;
Citer
}

Citer
if(strcmp(cmd, "/retirer", true) == 0)
{
  if(IsPlayerConnected(playerid))
  {
    if(IsAtDistrib(playerid))
      {
           if (!PlayerToPoint(100, playerid,2308.9287,-13.2520,26.7422))
           {
               SendClientMessage(playerid, COLOR_GREY, " Tu n'es pas à la banque !");
....................Etc


Sa serai çà ?? :-[
               return 1;
Titre: Re : [ Aide ] Distributeur d'essence
Posté par: minimicro le 23 Décembre 2009, 16:00:00
Oui par exemple, tiens nous au courant.
Titre: Re : [ Aide ] Distributeur d'essence
Posté par: Paradize le 23 Décembre 2009, 16:25:13
Voilà, dites moi si çà va ou pas............et corrigé moi pour que je comprenne ^^
Je vais vous montrez les différents codes que je met dans mon GM pour les distributeurs d'argent :

Citer
forward IsAtDistrib(playerid);

Citer
//-----------------------------[Distributeurs]-----------------------------------
public IsAtDistrib(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        if(PlayerToPoint(4.0,playerid,2057.6943,-1898.1089,13.5538)
      {
          return 1;
      }
   }
   return 0;
}
//-----------------------------[Station d'essence]------------------------------
public IsAtGasStation(playerid)

Citer
//----------------------------------[Banque Système]-----------------------------------------------
    if(strcmp(cmd, "/retirer", true) == 0)
   {
       if(IsPlayerConnected(playerid))
       {
         if IsAtDistrib(playerid)
         {
           if (!PlayerToPoint(100, playerid,2308.9287,-13.2520,26.7422))
           {
               SendClientMessage(playerid, COLOR_GREY, " Tu n'es pas à la banque !");
               return 1;
           }
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /retirer [montant]");
            format(string, sizeof(string), "  Vous avez $%d sur votre compte.", PlayerInfo[playerid][pAccount]);
            SendClientMessage(playerid, COLOR_GRAD3, string);
            return 1;
         }
         new cashdeposit = strval(tmp);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /retirer [montant]");
            format(string, sizeof(string), "  Vous avez $%d sur votre compte.", PlayerInfo[playerid][pAccount]);
            SendClientMessage(playerid, COLOR_GRAD3, string);
            return 1;
         }
         if (cashdeposit > PlayerInfo[playerid][pAccount] || cashdeposit < 1)
         {
            SendClientMessage(playerid, COLOR_GRAD2, " Vous n'avez pas tant d'argent !");
            return 1;
         }
          ConsumingMoney[playerid] = 1;
         GivePlayerMoney(playerid,cashdeposit);
         PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]-cashdeposit;
         format(string, sizeof(string), "  Vous avez retirer $%d de votre compte, Total: $%d ", cashdeposit,PlayerInfo[playerid][pAccount]);
         SendClientMessage(playerid, COLOR_YELLOW, string);
         return 1;
      }
      return 1;
   }

Est-ce bon ? :-

Double post
Up

J'ai mis mes lignes mais quand je me co et que je vais vert le distributeur et que je fais /retirer, sa me marque "Vous n'êtes pas à la banque"

Pourquoi ?

Voici mes codes :

Citer
forward IsAtATM(playerid);

Citer
//----------------------------------[Banque Système]-----------------------------------------------
    if(strcmp(cmd, "/retirer", true) == 0)
   {
       if(IsPlayerConnected(playerid))
       {
           if (!PlayerToPoint(100, playerid,2308.9287,-13.2520,26.7422))
           {
               SendClientMessage(playerid, COLOR_GREY, " Tu n'es pas à la banque !");
               return 1;
           }
           else if(!IsAtATM(playerid))
            {
                SendClientMessage(playerid, COLOR_YELLOW," Vous n'êtes prés d'un distributeur !");
                return 1;
           }
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /retirer [montant]");
            format(string, sizeof(string), "  Vous avez $%d sur votre compte.", PlayerInfo[playerid][pAccount]);
            SendClientMessage(playerid, COLOR_GRAD3, string);
            return 1;
         }
         new cashdeposit = strval(tmp);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /retirer [montant]");
            format(string, sizeof(string), "  Vous avez $%d sur votre compte.", PlayerInfo[playerid][pAccount]);
            SendClientMessage(playerid, COLOR_GRAD3, string);
            return 1;
         }
         if (cashdeposit > PlayerInfo[playerid][pAccount] || cashdeposit < 1)
         {
            SendClientMessage(playerid, COLOR_GRAD2, " Vous n'avez pas tant d'argent !");
            return 1;
         }
          ConsumingMoney[playerid] = 1;
         GivePlayerMoney(playerid,cashdeposit);
         PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]-cashdeposit;
         format(string, sizeof(string), "  Vous avez retirer $%d de votre compte, Total: $%d ", cashdeposit,PlayerInfo[playerid][pAccount]);
         SendClientMessage(playerid, COLOR_YELLOW, string);
         return 1;
      }
      return 1;
   }

Citer
public IsAtATM(playerid)
{
    if(IsPlayerConnected(playerid))
   {
      if(PlayerToPoint(4.0,playerid,2054.6145,-1898.2306,13.5538) || PlayerToPoint(4.0,playerid,2061.0833,-1898.6965,13.5538))
      {
          return 1;
      }
      else if(PlayerToPoint(4.0,playerid,1843.9344,-1861.1429,13.3828) || PlayerToPoint(10.0,playerid,1739.2867,-1862.8655,13.5758))
      {
          return 1;
      }
   }
   return 0;
}

Please help me  :-[
Titre: Re : [ Aide ] Distributeur d'argent
Posté par: Diablo62 le 25 Décembre 2009, 17:28:39
Salut.

Dans ton code tu as mis ça:

           if (!PlayerToPoint(100, playerid,2308.9287,-13.2520,26.7422))
           {
               SendClientMessage(playerid, COLOR_GREY, " Tu n'es pas à la banque !");
               return 1;

On peux donc déchiffrer le code de cette façon:

Si le joueur n'est pas au point 2308.9287,-13.2520,26.7422 alors lui envoyé le message " Tu n'es pas à la banque !" puis retourner au début du code.

Se que je peux donc te conseiller c'est soit inclure le else if(!IsAtATM(playerid)) dans le if en mettant ||. Ainsi le message qui sera envoyé sera du genre "Vous n'êtes pas à la banque ou prêt d'un distributeur" ou " Vous ne pouvez pas faire ça ici"