• 05 Juin 2026, 23:11:30


Auteur Sujet: [RESOLU]Barriere automatique dans une zone, problème  (Lu 2168 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne kev375

  • *
  • Tueur en série
  • Crab eater
  • Messages: 197
    • Voir le profil
Bonjour, je viens de mettre une zone dans mon serveur, et quand je rentre dedans, la Barriere s'ouvre... Mais il y a un léger problème, c'est que si quelqu'un ouvre la porte, tout les autres ne pourront plus l'ouvrir...

Je vous donne les bouts de scripts :

-Tout en haut :

forward isPlayerInArea();

new maingate;


-OnGameModeInit :

SetTimer("isPlayerInArea",1000, 1);

maingate = CreateObject(8378, -1655.897827, 688.816101, 12.515974, 0.0000, 0.0000, 0.0000);//Maingate


-Tout en bas :

public isPlayerInArea()

{

new Float:X, Float:Y, Float:Z;
for(new i=0; i<MAX_PLAYERS; i++)
{

GetPlayerPos(i, X, Y, Z);
if (X <= -1622 && X >= -1640 && Y <= 693 && Y >= 682)


{

MoveObject(maingate, -1655.927368, 688.760376, -3.499131, 1);
}
else
{
MoveObject(maingate, -1655.897827, 688.816101, 12.515974, 1);
}
}

return 1;
}


Voila, merci de votre coopération.










« Modifié: 18 Juin 2008, 22:20:55 par kev375 »

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Barriere automatique dans une zone, problème
« Réponse #1 le: 16 Juin 2008, 22:50:14 »
Utilise un player to point ou un Check Point

++
nikko

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Barriere automatique dans une zone, problème
« Réponse #2 le: 17 Juin 2008, 17:36:11 »
Non, si c'est dans une zone un isplayerinarea est plus adapté !

Sinon ton problème vient de ton else !
Ton else dit de remettre la barrière au bon endroit si un joueur est en dehors de la zone !

Fais donc en sorte que la barrière se referme lorsqu'il quitte la zone. :)

Au fait, utilises IsPlayerConnected() avant de prendre inutilement 200 positions. :happy


++
Alexandre

Hors ligne kev375

  • *
  • Tueur en série
  • Crab eater
  • Messages: 197
    • Voir le profil
Re : Barriere automatique dans une zone, problème
« Réponse #3 le: 17 Juin 2008, 18:13:51 »
Mais comment je dois faire pour que la barriere se referme quand je quitte la zone, je dois enlever le else ? Et à quoi sert IsPlayerConnected ? ça m'énerve parcequ'il ny a qu'une personne qui peut ouvrir cette p**** de barriere, et les autres, ça reste bloqué... ça craint !
« Modifié: 17 Juin 2008, 18:29:56 par kev375 »

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Re : Barriere automatique dans une zone, problème
« Réponse #4 le: 17 Juin 2008, 19:56:15 »
Mais comment je dois faire pour que la barriere se referme quand je quitte la zone, je dois enlever le else ?

> Non, tu fais un timer pour vérifier si aucun player n'est dans la zone (donc le IsPlayerInArea avec la fonction inversé), et si c'est le cas, on ferme la barrière. :)

Et à quoi sert IsPlayerConnected

> Ça sert à vérifier si le joueur est connecté. :)
Si tu ne fais pas cette condition ça effectuera pour chaque joueur les commandes dans ton for, donc ça fait 190 opérations inutiles. :)


++
Alexandre

Hors ligne kev375

  • *
  • Tueur en série
  • Crab eater
  • Messages: 197
    • Voir le profil
Re : Barriere automatique dans une zone, problème
« Réponse #5 le: 17 Juin 2008, 20:07:31 »
A oui ok, alors pour le timer, si aucun joueur dans la zone : portail fermé
si un ou plusieurs joueurs dans la zone : portail ouvert


En gros, le timer vérifie en permanance s'il n'y a personne dans la zone ?
 
J'ai pigé ??? Encore, merci, je vais essayer de me démerder  :lmfao

PS : comment on défini aucun joueur ?
« Modifié: 17 Juin 2008, 20:43:01 par kev375 »

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Barriere automatique dans une zone, problème
« Réponse #6 le: 17 Juin 2008, 22:26:29 »
Re,

fais une fonction avec un for pour chaque joueur, si le joueur est dans la zone (n'oublie pas de vérifier s'il est connecté d'abord :happy) alors ça retourne true. :)

Et en bas de la fonction ça retourne false (donc ça retournera false par défaut).

Ensuite tu vérifie dans ton timer pour fermer si ta fonction vaut false, si c'est le cas tu fermes la barrière. :)


À+
Alexandre

Hors ligne kev375

  • *
  • Tueur en série
  • Crab eater
  • Messages: 197
    • Voir le profil
Re : Barriere automatique dans une zone, problème
« Réponse #7 le: 18 Juin 2008, 00:11:05 »
Alors la, je ne capte plus rien, c'est quoi ça les true et les false ? Je dois les mettre ou, à quoi ça sert ?

Edit : j'ai réussi man, merci beaucoup ^^
« Modifié: 18 Juin 2008, 13:40:14 par kev375 »