• 05 Juin 2026, 19:44:45


Auteur Sujet: Probleme  (Lu 2454 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Probleme
« le: 30 Septembre 2008, 12:04:25 »
Salut tout le monde ca fait quelque temps ( 1 mois ) que je script en pawn mais j ai une erreur que j arrive pas a regle c' est pour un god father doncje voudrais que des qu on fait la cmd

retirer et qu on soit devant un distributeur ATM on peut retirer de l argent jusquel a c' est facile on fait plusieurs playertopoint dans une condition mais moi je veut en faire qu une



en haut du script j ai mi ca

new Float:distributeurs[18][18] = {
{1928.5719, -1769.9524, 13.1898},//1
{1358.6758, -1759.2550, 13.1507},//2
{604.3591, -1243.0150, 17.9907},//3
{599.6340, -1244.8777, 17.9191},//4
{1202.7328, -919.4324, 42.7289},//5
{1629.6599, -2204.3918, 13.1398},// 6
{2324.2830, -1644.9324, 14.4699},//7
{1674.1082, -1714.6654, 13.2606},//8
{1674.1047, -1715.8179, 13.2294},//9
{1489.8966, -1310.5433, 13.4487},//10
{1488.7264, -1310.5183, 13.4381},//11
{1385.7639, -1165.4080, 23.4444},//12
{1495.7545, -1022.2512, 23.4766},//13
{2404.3657, -1240.2532, 23.1244},//14
{2499.4209, -1759.9022, 12.9016},//15
{2099.4204, -1451.2543, 23.6014},//16
{1549.7043, -1714.8534, 13.1304},//17
{763.7696, -1683.6720, 3.7124}//18
};




et la cmd /retirer un peu modif par moi


   if(strcmp(cmd, "/retirer", true) == 0)
   {
       if(IsPlayerConnected(playerid))
       {
         if(PlayerToPoint(2,playerid,distributeurs))
         {
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_GRAD2, "UTILISATION: /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, "UTILISATION: /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 autant !");
            return 1;
         }
          ConsumingMoney[playerid] = 1;
         GivePlayerMoney(playerid,cashdeposit);
         PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]-cashdeposit;
         format(string, sizeof(string), "  Vous avez retiré $%d de votre compte Total: $%d ", cashdeposit,PlayerInfo[playerid][pAccount]);
         SendClientMessage(playerid, COLOR_YELLOW, string);
         }
         else if(PlayerInfo[playerid][pLocal] != 103)
           {
               SendClientMessage(playerid, COLOR_GREY, "   Vous n'êtes pas dans une banque ou à cote d' un distributeur !");
               return 1;
           }
         else
         {
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_GRAD2, "UTILISATION: /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, "UTILISATION: /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 autant !");
            return 1;
         }
          ConsumingMoney[playerid] = 1;
         GivePlayerMoney(playerid,cashdeposit);
         PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]-cashdeposit;
         format(string, sizeof(string), "  Vous avez retiré $%d de votre compte Total: $%d ", cashdeposit,PlayerInfo[playerid][pAccount]);
         SendClientMessage(playerid, COLOR_YELLOW, string);
         return 1;
      }
         }
      return 1;
   }


et j ai une erreur que j arrive pas a corrige c' est celle la

D:\serveur samp\gamemodes\gfv18.pwn(14755) : error 035: argument type mismatch (argument 3)
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


1 Error.



la ligne de l erreur est


if(PlayerToPoint(2,playerid,distributeurs))

la condition



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Probleme
« Réponse #1 le: 30 Septembre 2008, 13:23:18 »
desole du double poste mais svp aidez moi tout le monde attends Ma MAJ pour les distributeurs



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Probleme
« Réponse #2 le: 30 Septembre 2008, 14:22:53 »
Tu ne peux pas faire ce que tu veux en une seule ligne.
La variable distributeur est un tableau alors que la fonction PlayerToPoint n'admet pas ce type de variable comme paramètre.

Pour faire ce que tu veux faire, il faut que tu écrives une fonction qui compare la position du joueur à chaque position du tableau.
Cette fonction peut, par exemple, renvoyer l'indice dans le tableau de l'élément trouvé.

++
Syg
Courtesy of GtaManiac

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Probleme
« Réponse #3 le: 30 Septembre 2008, 15:07:39 »
J ai tres bien compris merci, mais comment faire ?



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne NatiVe™

  • *
  • Messages: 7977
    • Voir le profil
Re : Re : Probleme
« Réponse #4 le: 30 Septembre 2008, 15:11:13 »
J ai tres bien compris merci, mais comment faire ?

Si ta compris tu sera faire ;)

NV.



Tu vois avant? Bah j'étais là encore avant!

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Probleme
« Réponse #5 le: 30 Septembre 2008, 15:29:39 »
lol j ai compris ce qu il veut dire mais pas comment proceder



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Probleme
« Réponse #6 le: 30 Septembre 2008, 21:11:35 »
en gros utilise autre chose que le PlayerToPoint ^^
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Probleme
« Réponse #7 le: 30 Septembre 2008, 21:16:42 »
J' en connais pas d' autre mais j ai voulu faire cette methode car quand je fais ca

         if((PlayerToPoint(2,playerid,1928.5719, -1769.9524, 13.1898))||(PlayerToPoint(2,playerid,1358.6758, -1759.2550, 13.1507))||(PlayerToPoint(2,playerid,604.3591, -1243.0150, 17.9907))||(PlayerToPoint(2,playerid,599.6340, -1244.8777, 17.9191))||(PlayerToPoint(2,playerid,1202.7328, -919.4324, 42.7289))||(PlayerToPoint(2,playerid,1629.6599, -2204.3918, 13.1398))||(PlayerToPoint(2,playerid,2324.2830, -1644.9324, 14.4699))||(PlayerToPoint(2,playerid,1674.1082, -1714.6654, 13.2606))||(PlayerToPoint(2,playerid,1674.1047, -1715.8179, 13.2294))||(PlayerToPoint(2,playerid,1489.8966, -1310.5433, 13.4487))||(PlayerToPoint(2,playerid,1488.7264, -1310.5183, 13.4381))||(PlayerToPoint(2,playerid,1385.7639, -1165.4080, 23.4444))||(PlayerToPoint(2,playerid,1495.7545, -1022.2512, 23.4766))||(PlayerToPoint(2,playerid,2404.3657, -1240.2532, 23.1244))||(PlayerToPoint(2,playerid,2499.4209, -1759.9022, 12.9016))||(PlayerToPoint(2,playerid,2099.4204, -1451.2543, 23.6014))||(PlayerToPoint(2,playerid,1549.7043, -1714.8534, 13.1304))||(PlayerToPoint(2,playerid,763.7696, -1683.6720, 3.7124)))


c' est trop long et ca me met cette erreur

D:\serveur samp\gamemodes\gfv18.pwn(14963) : error 075: input line too long (after substitutions)
D:\serveur samp\gamemodes\gfv18.pwn(14964) : error 075: input line too long (after substitutions)
D:\serveur samp\gamemodes\gfv18.pwn(14965) : error 029: invalid expression, assumed zero
D:\serveur samp\gamemodes\gfv18.pwn(14966) : warning 217: loose indentation
D:\serveur samp\gamemodes\gfv18.pwn(14966) : error 029: invalid expression, assumed zero
D:\serveur samp\gamemodes\gfv18.pwn(14967) : warning 217: loose indentation
D:\serveur samp\gamemodes\gfv18.pwn(14995) : error 029: invalid expression, assumed zero
D:\serveur samp\gamemodes\gfv18.pwn(14995) : warning 215: expression has no effect
D:\serveur samp\gamemodes\gfv18.pwn(14995) : error 001: expected token: ";", but found "if"
D:\serveur samp\gamemodes\gfv18.pwn(15031) : warning 217: loose indentation
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


6 Errors.




Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Probleme
« Réponse #8 le: 01 Octobre 2008, 11:18:53 »
Fais une fonction qui boucle sur chacun des éléments du tableau distributeurs[] et qui les compare avec la position du joueur.
Tu peux t'inspirer de la fonction PlayerToPoint inclue dans le mode GF ou t'en servir dans ta nouvelle fonction.

Cette fonction est très simple à faire.
Voici son squelette :

Pour chaque élément E du tableau
   Si le joueur est vers l'élément E
      Renvoyer index de E dans le tableau
   Fin Si
Fin Pour
Renvoyer -1 (pour indiquer qu'aucun élément n'a été trouvé)

++
Syg
Courtesy of GtaManiac

Hors ligne terry_weed

  • *
  • Criminel
  • Messages: 49
    • Voir le profil
Re : Probleme
« Réponse #9 le: 03 Octobre 2008, 14:59:33 »
a enfin je ne savez pas comment cela s'appeller merci syg

Citer
Pour chaque élément E du tableau
   Si le joueur est vers l'élément E
      Renvoyer index de E dans le tableau
   Fin Si
Fin Pour
Renvoyer -1 (pour indiquer qu'aucun élément n'a été trouvé)