GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: yah00078 le 12 Novembre 2007, 20:22:24
-
Bonjour a tous, j'ai un script ki permet de fermer et d'ouvrir des barierre.
Les barierre (id 968) sont ouvrete et kan ej tpae un commande sa donen un deplacement pour aller ds une otre position MAIS il y a un probleme. je ne peut entrer que 4 valeur (ex: 0.0 , 0.0 , 0.0 , 0.0 ,) ce qui ne permet pas de prendre en compte la rotation qui permet d'afficher la bariere en mode fermer ( il faudrais une valeur de plus mai ssi j ela met sa me met un warning disant que j'ai mi trop de valeurs.). voila le probleme.
MERCI de votre aide :)
-
Bah c'est que tu peu pas.... :-\
-
sisi puiska j'ai vu un systeme presque pareil qui le fesait :)
-
Moi aussi sa m'intereserait de savoir comment faire pour prendre en compte la rotation d'un objet avec moveobject
Car j'aimerai faire une porte qui s'ouvre comme une veritable porte
-
La fonction MoveObject ne permet pas de faire effectuer des rotations à un objet.
Pour les rotations, il faut se tourner vers un timer en utilisant les fonctions GetObjectRot et SetObjectRot.
Je n'ai jamais fait l'expérience mais avec un timer assez court et quelques notions de trigonométrie, vous devriez réussir à vous débrouiller.
Information utiles :
Get/SetObjectRot admettent comme paramètres un object id et trois valeurs Float (en sortie pour Get et en entrée pour Set).
Ces 3 valeurs correspondent respectivement aux angles de rotation sur les axes X (Ouest->Est), Y (Nord->Sud) et Z (Bas->Haut).
Pour ceux qui ont déjà fait de la trigo dans l'espace, les règles classiques s'appliquent pour déterminer le sens de rotation (règle des 3 doigts de la main droite, règle du tire bouchon) en prenant en compte que l'axe des Y est inversé.
Pour ceux qui n'y comprennent pas encore grand chose, le seul axe intéressant est l'axe Z. Il correspond à la rotation dans le plan (XY), c'est à dire le sol. C'est la même chose que l'angle d'un joueur ou d'un véhicule mais pour un objet.
C'est donc celui-ci qu'il faut utilisé pour simuler l'ouverture d'une porte par rotation.
Bon courage et si vous galèrez trop, faîte le savoir, j'essaierais de faire quelque chose
++
Syg
-
Merci de ces information je vais eseyer je te dit quoi encore merci
-
Sa marche merci :) a tous
-
oui sa marche mais malheureusement sa fait passer d'une position a l'autre directement contrairement au moveobject
-
La porte s'ouvre d'un coup car tu changes l'angle en une fois.
Quand je disais qu'il faut utiliser un timer c'est pour augmener ou diminuer l'angle d'une valeur assez petite pour simuler un déplacement.
Exemple :
Un porte qui s'ouvre équivaut à un déplacement de 90 ° (angle droit)
Donc je lance un timer de 100 ms qui effectue une rotation de 2 ° à chaque fois par rapport à la dernière position de l'objet (c'est à dire que le porte "tourne" de 2° toutes les 100 ms).
Au bout de 4.5 secondes (100 * 90/2 = 4500 ms = 4.5 s), ma porte est ouverte et j'arrête le timer.
Si je veux que le porte aille plus vite, j'ai deux solutions :
1 - Je diminue la valeur de mon timer => gourmand en ressources mais plus fluide et plus joli
2 - J'augmente l'angle à chaque itération (4° au lieu de 2° par exemple) => risque de saccades mais soulage le serveur, le client et la bande passante.
Voilà, j'espère qu'avec ça vous aurez compris ce que je voulais dire.
++
Syg
-
A oui j'avait pas penser a sa merci je vais tester voir si sa donne bien ^^
++
Fred