• 02 Mai 2025, 14:02:23


Auteur Sujet: [Résolu]Éviter l'utilisation abusive d'une commande  (Lu 971 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Jeffreeeey

  • *
  • Tueur
  • Messages: 87
    • Voir le profil
[Résolu]Éviter l'utilisation abusive d'une commande
« 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.
« Modifié: 15 Novembre 2009, 14:19:41 par Jeffreeeey »

Hors ligne FuSion

  • Pawn coder
  • *
  • Grand Banditisme
  • for(new i = 0; i < INFINI; i++)
  • Messages: 888
    • Voir le profil
Re : Éviter l'utilisation abusive d'une commande
« Réponse #1 le: 15 Novembre 2009, 13:49:19 »
Lance un Timer de 20 secondes qui bloquera l'utilisation de cet commande  ;)

++
FS'

Hors ligne Jeffreeeey

  • *
  • Tueur
  • Messages: 87
    • Voir le profil
Re : Éviter l'utilisation abusive d'une commande
« Réponse #2 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
« Modifié: 15 Novembre 2009, 14:19:21 par Jeffreeeey »

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Éviter l'utilisation abusive d'une commande
« Réponse #3 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;
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Résolu]Éviter l'utilisation abusive d'une commande
« Réponse #4 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++





Hors ligne Jeffreeeey

  • *
  • Tueur
  • Messages: 87
    • Voir le profil
Re : [Résolu]Éviter l'utilisation abusive d'une commande
« Réponse #5 le: 15 Novembre 2009, 22:34:02 »
Merci Sim, je vais tenter ta manière car en faite sa fonctionne pas vraiment.  :cheers