GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: kev375 le 16 Juin 2008, 22:43:59

Titre: [RESOLU]Barriere automatique dans une zone, problème
Posté par: kev375 le 16 Juin 2008, 22:43:59
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.










Titre: Re : Barriere automatique dans une zone, problème
Posté par: Nikko™ le 16 Juin 2008, 22:50:14
Utilise un player to point ou un Check Point

++
nikko
Titre: Re : Barriere automatique dans une zone, problème
Posté par: Bayshore 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
Titre: Re : Barriere automatique dans une zone, problème
Posté par: kev375 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 !
Titre: Re : Re : Barriere automatique dans une zone, problème
Posté par: Bayshore 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
Titre: Re : Barriere automatique dans une zone, problème
Posté par: kev375 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 ?
Titre: Re : Barriere automatique dans une zone, problème
Posté par: Bayshore 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
Titre: Re : Barriere automatique dans une zone, problème
Posté par: kev375 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 ^^