GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Paul_Kellerman le 25 Février 2008, 22:22:42

Titre: Aide zone
Posté par: Paul_Kellerman le 25 Février 2008, 22:22:42
Bonjour, j'aimerai réaliser une barrière automatique, telle que quand on se trouve dans une zone, une aire, la barrière se lève automatiquement.Mais je ne sais pas quoi utiliser comme fonctions.
J'arrive à faire qu'une commande pour l'ouvrir ne soit accessible que dans une zone, avec un Playertopoint, mais je ne sais pas faire ça.
Pourriez vous m'aider ?

merci d'avance !
Titre: Re : Aide zone
Posté par: UrbanGhetto le 25 Février 2008, 23:36:26
C'est simple,

Tu fais un timer qui prend la position du joueur (GetPlayerPos)
Après tu regarde si le joueur est dans la zone choisie.
Ensuite quand il y est, Tu fais un MoveObject, Après tu fais un timer qui arrête l'objet.

Regarde Angel Paradise pour plus d'infos.
Titre: Re : Aide zone
Posté par: Paul_Kellerman le 26 Février 2008, 14:32:56
merci de ta réponse, mais je ne comprend pas ce que c'est de "faire un timer", et je ne sais pas "où" mettre mes scripts dans mon GF (ongamemodinit, ou autre part...)

merci de votre aide !
Titre: Re : Aide zone
Posté par: UrbanGhetto le 26 Février 2008, 15:39:26
Bon je te fais une petite démonstration,

http://pastebin.gtaonline.fr/pastebin.php?show=371 (http://pastebin.gtaonline.fr/pastebin.php?show=371)

Bon ça c'est la version un classique, A toi de faire en sorte que si la barrière est en bas le joueur ne puisse pas la déscendre encors, De voir si elle ne déscends pas etc...

En tout cas tout ça c'est dans Angel Paradise.
Titre: Re : Aide zone
Posté par: Paul_Kellerman le 26 Février 2008, 20:37:58
Merci beaucoup de ta réponse, j'ai réussi à faire marcher ma grille.
Titre: Re : Aide zone
Posté par: Paul_Kellerman le 29 Février 2008, 20:22:39
Jusqu'ici j'étais très content des mes grilles, mais j'ai un nouveau problème, un copain a hosté le serveur chez lui pour qu'on puisse le tester, et il se trouve que seul lui pouvait utiliser la barrière. Savez vous pourquoi, et comment remédier à ce problème ?
Titre: Re : Aide zone
Posté par: UrbanGhetto le 29 Février 2008, 22:34:58
J'ai pas bien compris. Tu veut dire que quand lui il héberge ton serveur (Avec la barrière) ça marche. Mais quand tu le fais toi non ?
Titre: Re : Aide zone
Posté par: Paul_Kellerman le 01 Mars 2008, 13:59:23
Quand moi j'héberge le serveur en LOCAL, cela marche très bien, pour moi dans le jeu, mais quand c'est lui qui l'héberge, cela marche très bien pour lui, mais pas pour moi. J'en déduis que s'il y avait eu d'autres joueurs, cela n'aurait pas non plus marché pour eux.
On dirait que çà marche que pour l'hosteur, même si ça me semble bizarre...

Merci de ta réponse
Titre: Re : Aide zone
Posté par: S!m le 04 Mars 2008, 03:43:36
salut,

tu serait mieu de faire une boucle dans le GetPosTimer.....

voila:
public GetPosTimer(){//d'ou venait ce playerid??
    for(new i; i<MAX_PLAYERS; i++){
        if(IsPlayerConnected(i)){
             GetPlayerPos(playerid,X,Y,Z); /* On récupère la position du joueur */
             if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) { /* Si le joueur est dans les cordonnées à définir */
                  new Float:OX,Float:OY,Float:OZ;
                  GetObjectPos(Barrière,OX,OY,OZ);
                  MoveObject(Portail,OX+0,OY+0,OZ+5,1); /* Là, on déscend la barrière en bas */
                  SetTimerEx("StopObject",6500,0,"i",i); /* Timer pour le joueur.... pour arrêter l'objet */
             }
        }
    }
return 1;
}

voila qui devrait aller mieu

++Sim++