GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Jeffreeeey le 15 Novembre 2009, 13:43:03

Titre: [Résolu]Éviter l'utilisation abusive d'une commande
Posté par: Jeffreeeey le 15 Novembre 2009, 13:43:03
Oui voila. J'aimerais pouvoir faire que quand quelqun fasse /ouvrirgrille, que le joueur ne puisse plus faire cette commande après 20 secondes. Le problème c'est que j'ai bien reflechit ou tenté quoi que se soit. Mais rien a faire. Merci de vos futurs réponse.
Titre: Re : Éviter l'utilisation abusive d'une commande
Posté par: FuSion le 15 Novembre 2009, 13:49:19
Lance un Timer de 20 secondes qui bloquera l'utilisation de cet commande  ;)

++
FS'
Titre: Re : Éviter l'utilisation abusive d'une commande
Posté par: Jeffreeeey le 15 Novembre 2009, 14:08:42
Alor voila comment j'ai fais :

new grilleouverte[MAX_PLAYERS];
Enssuite dés que quelqun fait /ouvrirgrille
j'execute ceci
    if (PlayerToPoint(15, playerid,1285.232421875,-2056.669921875,60.633422851563))
    {
        MoveStreamObject(qgrusse,1285.232421875,-2056.669921875,53.383422851563, 2.2);
        SetTimer("GrilleRusse", 7000, 0);
        GetPlayerName(playerid, sendername, sizeof(sendername));
        format(string, sizeof(string), "* %s prend sa télécommande et ouvre la grille du Manoir Ruskovf.", sendername);
      ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
      grilleouverte[playerid] == 1;
    }
    else { SendClientMessage(playerid, COLOR_GREY,"Vous êtes trop loin de la grille."); }

Enssuite le timer de la grille est lancée, il va se passé ceci :

public GrilleRusse(playerid)
{
  MoveStreamObject(qgrusse, 1285.232421875,-2056.669921875,60.633422851563, 1.5); // GRille en place mais pas mouvement
  grilleouverte[playerid] == 0;
  return 1;
}

le problème c'est que après la compilation j'ai plusieurs belles erreur:

C:UsersDylanDownloadssamp03asvr_R3_win32gamemodesdetroit.pwn(4178) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4182) : error 025: function heading differs from prototype
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4187) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4191) : error 025: function heading differs from prototype
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4194) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4198) : error 025: function heading differs from prototype
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4201) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4205) : error 025: function heading differs from prototype
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4209) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4213) : error 025: function heading differs from prototype
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4216) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4220) : error 025: function heading differs from prototype
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4223) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19845) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19856) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19866) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19876) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19886) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19896) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19906) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19919) : warning 215: expression has no effect
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(19932) : warning 215: expression has no effect


Double post
Ah j'ai trouvé mon problème il fallait pas mettre un "=" de trop. Mais autre problème maintenant.

C:UsersDylanDownloadssamp03asvr_R3_win32gamemodesdetroit.pwn(4182) : error 025: function heading differs from prototype
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4194) : error 017: undefined symbol "playerid"
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4201) : error 017: undefined symbol "playerid"
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4209) : error 017: undefined symbol "playerid"
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4216) : error 017: undefined symbol "playerid"
C:Usersxxsamp03asvr_R3_win32gamemodesx.pwn(4223) : error 017: undefined symbol "playerid"

Et au ligne si dessus :

public GateClose(playerid)
{
      MoveStreamObject(pdgate1,1589.053344,-1638.123168,14.122960, 0.97);
      PlayerPlaySound(playerid, 1153, 1589.053344,-1638.123168,14.122960);
      grilleouverte[playerid] = 0;
      return 1;
}

public GateClose2()
{
      MoveStreamObject(armygate1,2720.3772, -2409.7523, 12.6, 2.5);
      MoveStreamObject(armygate2,2720.3772, -2508.3069, 12.6, 2.5);
      MoveStreamObject(tankgate,2774.3166503906, -2493.7607421875, 15.292695999146, 1.5);
      grilleouverte[playerid] = 0; // LIGNE 4194
      return 1;
}

public GateClose3()
{
      MoveStreamObject(fbigate, 1534.9020,-1451.5979,14.4882, 1.5);
      grilleouverte[playerid] = 0;// LIGNE 4201
      return 1;
}

public GateClose4()
{
      MoveStreamObject(hspdgate, 1643.3379,-1714.9338,15.3067, 1.5);
      grilleouverte[playerid] = 0;
      return 1;
}

public GateClose5()
{
      DestroyStreamObject( pdgate3 );
      pdgate2 = CreateStreamObject(968,1544.700317,-1630.735717,13.096980,-1.000000,-91.000000,269.972869);
      grilleouverte[playerid] = 0;
      return 1;
}

public GateClose6()
{
      MoveStreamObject(lucianogate, 1246.0033,-767.3727,91.1473, 1.5);
      grilleouverte[playerid] = 0;
  return 1;
}

public GrilleRusse()
{
  MoveStreamObject(qgrusse, 1285.232421875,-2056.669921875,60.633422851563, 1.5); //
  grilleouverte[playerid] = 0;
  return 1;
}

Double post
Problème Resolu. J'ai mal fait ce que je devais faire.  :cheers
Titre: Re : Éviter l'utilisation abusive d'une commande
Posté par: cristab le 15 Novembre 2009, 14:20:34
lorsque tu change la valeur d'une variable il ne faut pas mettre == mais =

grilleouverte[playerid] == 0;  change en grilleouverte[playerid] = 0;
Titre: Re : [Résolu]Éviter l'utilisation abusive d'une commande
Posté par: S!m le 15 Novembre 2009, 16:03:04
Salut,

même si tu as résolu ton problème, j'aimerais juste rappeler que lorsque l'on veut utiliser des paramètres dans des fonctions appelées par des timers, il faut impérativement passer par un SetTimerEx

SetTimerEx("fonction", temps en ms, répète?, type variables, variables);Donc dans ton cas ce serait à peu près ceci:

SetTimerEx("GrilleRusse", 7000, 0, "i", playerid);ainsi tu pourrais utiliser tes fonctions comme tu le désirais (avec playerid en paramètre)

++Sim++
Titre: Re : [Résolu]Éviter l'utilisation abusive d'une commande
Posté par: Jeffreeeey le 15 Novembre 2009, 22:34:02
Merci Sim, je vais tenter ta manière car en faite sa fonctionne pas vraiment.  :cheers