Aller au contenu

Rotation + Mouvement D'un Object.


Mel-Wery

Messages recommandés

Bonjour, je voudrais faire une porte de garage qui s'ouvre comme celle du garage de la mère de CJ.

 

Mon script:

 

Au début:

new idGarage;

 

Puis:

idGarage = CreateObject(5043, 2054.82, -1694.7, 14.04, 0, 0, 0);

 

Puis:

public OnPlayerCommandText(playerid, cmdtext[])
     
     {
         if(strcmp(cmdtext, "/o1", true) == 0)
       {
         if (IsPlayerAdmin(playerid))
         {
             MoveObject(idGarage, 2053.75, -1694.7, 15.50, 1);
             SetObjectRot(idGarage, 0, 90, 0);
             SendClientMessage(playerid, COLOR_RED, "Ouverture du garage.");
     
             return 0;
         }
       }
     
     //------------------------------------------------------------------------------
     
         if(strcmp(cmdtext, "/f1", true) == 0)
       {
         if (IsPlayerAdmin(playerid))
         {
             MoveObject(idGarage, 2053.75, -1694.7, 15.50, 1);
             SetObjectRot(idGarage, 0, -90, 0);
             SendClientMessage(playerid, COLOR_RED, "Fermeture du garage.");
     
             return 0;
         }
       }
         return 1;
     }

 

Le problème c'est que la porte fait un 90° d'un seul coup au lieu de le faire progressivement. Puis, j'aimerais quelle revienne automatiquement et non en tapant une autre commande.

 

J'ai lu qu'il faudrait faire un timer mais je ne sais pas comment faire.

Et pour le retour, j'ai pensé à ça:

 

Wait 10000;
          MoveObject(idGarage, 2053.75, -1694.7, 15.50, 1);
              SetObjectRot(idGarage, 0, -90, 0);

 

Comment je doit faire svp ?

Lien vers le commentaire
Partager sur d’autres sites

Salut !! Alors ce que tu demande est assez compliqué, enfin, non mais c'est ta rotation qui est assez dure a réaliser, dans ta commande tu devrait faire un timer, qui tout les 200ms (millisecondes) faire s'orienter (rotation de ta porte) de 1 a 2° pour arriver au final a ce que ta porte fasse un mouvement réaliste (attention, car cette opération pourra demander pas mal de ressource au script, qui pourrait entrainer des crash du serveur) Pour les timer c'est super simple, un forward et c'est réglé ^^ (voila tout du moins pour ce que tu as a mettre en haut de ton script :P )

Panique pas je vais te faire un exemple ;) (tu utilisera le même procédé pour ta fermeture automatique de porte)

 

dans

<a_samp>

forward Timer();

 

Ensuite, tu va dans ton code :

 

(au passage l'identation de ton code est pas terrible ^^ c'est peut être le forum qui fait ça... )

 

public OnPlayerCommandText(playerid, cmdtext[])
{
   if(strcmp(cmdtext, "/o1", true) == 0)
   {
       if (IsPlayerAdmin(playerid))
       {
           MoveObject(idGarage, 2053.75, -1694.7, 15.50, 1);
           SetObjectRot(idGarage, 0, 90, 0);
           SendClientMessage(playerid, COLOR_RED, "Ouverture du garage.");
           SetTimer("Timer", 200, 1);  // Donc la on appel le Timer qui s'appelle "Timer", qui dure 200 millisecondes ( 0.2 seconde) et qui se répète 1 fois (normale ^^, on veut 1 montée )
           return 0; // ici je mettrai return 1;
       }
    }

 

suite de ton code mais tu n'en aura plus besoin ^^

 

Après, tu créé un public :

 

public Timer()
{
   SetObjectRot(idGarage, 0, +2, 0);
}

 

Faut essayer ^^ En faite, si tu analyse le script, a chaque fois que le Timer passe 1 seconde, l'objet tourne de +2°, après c'est a toi de rendre l'animation fluide.

Pour l'arrêter c'est pas dure :

 

public Timer()
{
   SetObjectRot(idGarage, 0, +2, 0);
   if(SetObjectRot(idGarage, 0, 90, 0))
   {
      KillTimer(Timer);
   }
   return 1;
}

 

Peut être que ça marchera ^^

 

Et a partir de la tu peut te faire un autre Timer (tu peut l'appeler comme tu veut en plus) qui se déclenche quand l'objet est a 90° et tu le fait ce détruire, avec le Killtimer quand l'objet est de nouveau en bas ^^

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...