[No Limits 2] Tuto sur les scripts

Je ne sais pas si je suis dans le bon topic vu qu'à priori, on aurait pas besoin de toucher à du code : un petit programme a été développé pour, si j'ai bien compris, placer des trains totalement customs. Je pense que certains ont déjà vu le post sur NoLimits Exchange, il contient un tuto vidéo qui explique comment faire :

http://forum.nolimits-exchange.com/comments.php?DiscussionID=3453&page=1#Item_0

Je ne l'ai pas encore testé mais si ça fonctionne, c'est vraiment de la tuerie :-o ! Imaginez, on pourrait recréer toutes les variantes de trains de chaque constructeur! Je ne sais pas par contre jusqu'où on peut aller, si les harnais peuvent être animés etc.

A+
 
Salut, est-il possible de translater un rail verticalement, comme pour une free fall ? (avec thirteen par exemple).
Je ne sais pas si ça fonctionne avec des scripts, mais ça à l'air assez compliqué pour fonctionner avec les options de NL, en fait je voudrais créer un lift avec un rail qui translate verticalement donc si quelqu'un à un script de ce genre prévenez moi !! :wink:
 
Les transferts verticaux ne sont pas possibles pour le moment, peut être dans une future update de NL2. Les scripts ne permettent pas d'ajouter des translations ou des mouvements sur les tracks switchs et transferts tracks que ceux déjà possibles dans l'éditeur  :wink:
 
Bonsoir!
Voila j'ai une petite demande , je voudrais faire un objet contenant 10 lumières , et elles s'allument 2 par 2 , par exemple:

L1 et L2 s'allument pendant 0.2 Seconde
Puis L3 et L4 s'allument pendant 0.2 Seconde
Puis L5 et L6 ensuite L7 et L8 et enfin L9 et L10.

J'ai essaye de modifier des Scripts déjà existant j'ai pas réussi , Quelqu'un peut m'aider?
Merci bien!
 
Salut ! Je suis un ami d'Alex-woc et je suis un peu perdu dans tout les script que vous avez envoyé  :|

Donc je vous dis ce que je recherche EXACTEMENT pour le moment.

Je bosse en ce moment sur la recreation de Rock'N'Roller Coaster.

exemple:

Le train 1 quitte l'unload, un son se déclanche arrivé au Load et il se coupe seulement quand il a fini d’être lu. Et non avec un "StopAudioLoad". Il se lance grace à un Trigger et il se coupe tout seul. (si possible)
Il quitte le Load pour aller vers la zone de Launch et passe sur 2 Triggers qui superpose 2 sons différents, et qui se coupe une fois qu'ils ont fini d’être lu.

Le train 2 passe à son tour sur le load, diffuse un son different du 1er, et il change aussi de son quand il passe sur les 2 Triggers suivant (toujours superposés).

J'aimerais aussi, si possible, que quand on n'est pas on ride, on entende quand même le son que le train diffuse. mais que le son suit le train. Si le train est proche on l'entend bien, si il part on entend de moins en moins, et à 15/20mètres par exemple on ne l'entend plus.

Donc ce qu'il faudrais c'est nommer les Triggers "1,2,3,4,5,6,7,8......" Et faire un script pour chaque train.

Si le train 1 passe sur le capteur 1 alors le son "WalkThisWay.ogg" se lance
Si le train 1 passe sur le capteur 2 alors le son "ILoveWhenYouDoThat.ogg" se lance
Si le train 2 passe sur le capteur 1 alors le son "LoveInTheElevator.ogg" se lance
Si le train 2 passe sur le capteur 2 alors le son "SUB.ogg" se lance

etc ...

Donc au lieux que ça soit les capteur qui change, c'est les sons onboard.

Je ne sais pas si c'est réalisable.

Si vous n'avez pas compris quelque chose dites le moi ^^
 
Pour te répondre:
> Je suis pas sur qu'on puisse lancer plusieurs musiques en même temps a l'aide d'un seul Script qui gère tout les audios.
> Pour entendre la musique de train a l'extérieur , il y a un script Poster par Meletou page 3.
> pour des musiques différents par train il y a un Script par DJ julio page 6.

Après faudrait essayer de tout combiner , Un Trigger qui Start une musique sans l''arrêter quand une autre musique de script se lance. Mettre des musiques différents par train , et que le son Sois OnBoard/Offboard , mais ça risque d'être coton.
 
Merci ;) Et il n'y a pas un seul script pour entendre la musique de train a l'extérieur ET pour des musiques différents par train ?
 
Bon j'ai résolu une partie de mon problème.
J'ai réussi à superposer des audio different tout en restant dans l'ordre.

J'ai repris le script suivant :
Code:
import com.nolimitscoaster.*;
import nlvm.math3d.*;

// cractéristique des trains   Jmeletou@hotmail.com

public class ProprieteTrain3a extends Script  implements TrackTriggerListener
{
         private SceneObject sco;                                   // definition d'un objet dans la scene
         Train fTrain;                                              // definition de la variable train
         private int NbTrain;

         private static final String scriptName = "ProprieteTrain3a";
         
          private TrackTrigger Trigger1;                            // definition trigger 1
          private TrackTrigger Trigger2;                            // definition trigger 2

          private static final String sSoundFile1 = "Safty.ogg";     // 1ere musique definition
     StaticSound sSound1;
     
     private Vector3f positionSound ;

   public bool onInit()
   {
                String name;                                        // definition de la variable String name

      Coaster coaster = sim.getCoasterForEntityId(getParentEntityId());
       if (coaster == null){
         System.err.println("This script must be attached to a coaster");
         return false;
       }
        name =  coaster.getName();
         System.out.println(name);           // donne le nom du coaster

        fTrain = coaster.getTrainAt(0);                   // cherche le numero du train     0 = 1er train   1 = 2eme train ...
                                                          // Dans la classe coaster
                  NbTrain = coaster.getTrainCount();                // nombre entier cherche le nombre de trains
        System.out.println(NbTrain);
        
         Trigger1 = coaster.getTrackTrigger("startSound1");
                   Trigger1.addTrackTriggerListener(this); 
                   Trigger2 = coaster.getTrackTrigger("stopSound1");
                   Trigger2.addTrackTriggerListener(this);
                   
                    sSound1 = StaticSound.loadFromFile(sSoundFile1, StaticSound.E_ENVMODE_LOCAL);


/**

                  sco = sim.getSceneObject("LightTest");
                    if (sco == null)
                              {
                                System.err.println(scriptName + ": the script is not part of a scene object");         // on trouve pas le nom
                                return false;
                               }
                               

*/

                  return true;

      }
         public void onNextFrame(float tick)
         {
                Vector3f fo = new Vector3f(0.0f, 0.0f, 0.0f);
                Vector3f to = new Vector3f(0.0f, 0.0f, 0.0f);
                Vector3f ro = new Vector3f(0.0f, 0.0f, 0.0f);
                Vector3f po = new Vector3f(0.0f, 0.0f, 0.0f);
                
                fTrain.getCarOrientationAndPosition(1, fo, to, ro, po);   // recherche la position du train  avec la position du car
  
                positionSound = po;
            System.out.println( positionSound);
                sSound1.setPosition(positionSound);                         // definition de l'emission du sound1 suit le train
         }
         

            

           public void onTrainEntering(TrackTrigger trigger, Train train)
             {
                   
                  if (trigger == Trigger1)
                       {
                          if (train.getSpeed() > 0)
                          {

                      sSound1.setGain(20.0f);
                                 sSound1.play();
                          }
                       }
                      if (trigger == Trigger2)
                                {
                                  if (train.getSpeed() > 0)
                                  {
                                    sSound1.stop();
                                  }
                                }  
                   }

                  public void onTrainLeaving(TrackTrigger trigger, Train train)
      {
      }
}

J'ai changer le nom de l'audio, le nom de chaque trigger, le nom de chaque audio et le nom du fichier.

Voila pour l'audio 2 (vous pouvez faire la comparaison)
Code:
import com.nolimitscoaster.*;
import nlvm.math3d.*;

// cractéristique des trains   Jmeletou@hotmail.com

public class ProprieteTrain3b extends Script  implements TrackTriggerListener
{
         private SceneObject sco;                                   // definition d'un objet dans la scene
         Train fTrain;                                              // definition de la variable train
         private int NbTrain;

         private static final String scriptName = "ProprieteTrain3b";
         
          private TrackTrigger Trigger3;                            // definition trigger 3
          private TrackTrigger Trigger4;                            // definition trigger 4

          private static final String sSoundFile2 = "PreLaunch.ogg";     // 1ere musique definition
     StaticSound sSound2;
     
     private Vector3f positionSound ;

   public bool onInit()
   {
                String name;                                        // definition de la variable String name

      Coaster coaster = sim.getCoasterForEntityId(getParentEntityId());
       if (coaster == null){
         System.err.println("This script must be attached to a coaster");
         return false;
       }
        name =  coaster.getName();
         System.out.println(name);           // donne le nom du coaster

        fTrain = coaster.getTrainAt(0);                   // cherche le numero du train     0 = 1er train   1 = 2eme train ...
                                                          // Dans la classe coaster
                  NbTrain = coaster.getTrainCount();                // nombre entier cherche le nombre de trains
        System.out.println(NbTrain);
        
         Trigger3 = coaster.getTrackTrigger("startSound2");
                   Trigger3.addTrackTriggerListener(this); 
                   Trigger4 = coaster.getTrackTrigger("stopSound2");
                   Trigger4.addTrackTriggerListener(this);
                   
                    sSound2 = StaticSound.loadFromFile(sSoundFile2, StaticSound.E_ENVMODE_LOCAL);


/**

                  sco = sim.getSceneObject("LightTest");
                    if (sco == null)
                              {
                                System.err.println(scriptName + ": the script is not part of a scene object");         // on trouve pas le nom
                                return false;
                               }
                               

*/

                  return true;

      }
         public void onNextFrame(float tick)
         {
                Vector3f fo = new Vector3f(0.0f, 0.0f, 0.0f);
                Vector3f to = new Vector3f(0.0f, 0.0f, 0.0f);
                Vector3f ro = new Vector3f(0.0f, 0.0f, 0.0f);
                Vector3f po = new Vector3f(0.0f, 0.0f, 0.0f);
                
                fTrain.getCarOrientationAndPosition(1, fo, to, ro, po);   // recherche la position du train  avec la position du car
  
                positionSound = po;
            System.out.println( positionSound);
                sSound2.setPosition(positionSound);                         // definition de l'emission du sound1 suit le train
         }
         

            

           public void onTrainEntering(TrackTrigger trigger, Train train)
             {
                   
                  if (trigger == Trigger3)
                       {
                          if (train.getSpeed() > 0)
                          {

                      sSound2.setGain(20.0f);
                                 sSound2.play();
                          }
                       }
                      if (trigger == Trigger4)
                                {
                                  if (train.getSpeed() > 0)
                                  {
                                    sSound2.stop();
                                  }
                                }  
                   }

                  public void onTrainLeaving(TrackTrigger trigger, Train train)
      {
      }
}

Il y a pas mal de chose à modifier. j'ai fait ça pour 5 audio different et pour 1 train seulement.

Maintenant mon problème, c'est que quand je veux ajouter un train, il passe sur un capteur, il déclanche l'audio dans le train 1 (le train programer pour lire l'audio) donc il faut que j'arrive à différencier chaques train tout en gardant plus ou moins la meme forme de script et en changant les audio pour le train 2.

Je fait mes tests de mon côté je vous tiens au courant ;)
 
D'après mes recherches il faudrais juste modifier le nom du train qui lis la musique, et creer les même script pour le train 1 mais en changeant le nom du train et le nom des audio tout en gardant les même Triggers.

Car j'ai réussi à faire lire laudio de safty sur le dexieme train mais le problème c'est qu'il se lis aussi sur le train 1. par contre l'audio du train 1 ne se lis pas sur le train 2.  :idiot:

Mais comme je n'ai pas creer le script je ne sais pas ou je peu modifier la variable du train qui lis l'audio. merci d'avance ! :D
 
Hello, quelqu'un pourrait t-il m'expliquer ça :

// create a trigger 5 meters in front of the track pos
      beforeDoorTrigger = TrackTrigger.createTrackTriggerAtOffset(trackPos, -6.0);
     
      // create a trigger 5 meters after the track pos
      behindDoorTrigger = TrackTrigger.createTrackTriggerAtOffset(trackPos, +1.0);

Pourquoi +1 et -6 ? Je sais que ça fait 5 mais j'ai pas bien compris pourquoi ne pas mettre 5.0 et 5.0 ?

Et lorsque je modifie ces valeurs, plus de son sur ma porte ! (c'est le script de la porte)  :-)
 
Parce que ça fait pas 5.

ça veut dire que la porte s'ouvre quand le train arrive 6 mètres avant la position de l'objet
// create a trigger 5 meters in front of the track pos
      beforeDoorTrigger = TrackTrigger.createTrackTriggerAtOffset(trackPos, -6.0);
Before = Avant
, et se referme 1 mètre après la position de l'objet.
      // create a trigger 5 meters after the track pos
      behindDoorTrigger = TrackTrigger.createTrackTriggerAtOffset(trackPos, +1.0);

Pour les lignes ou il y a marqué "  create a trigger 5 meters  " C'est juste que initialement sur le script les valeurs étaient a -5 et +5 , mais la personne a modifier le script pour avoir -6 et +1.
 
Vous pouvez m'aider SVP je suis un peu perdu dans le script je cherche la valeur du train mais je ne trouve pas ... :(
 
Gary roach prod a dit:
Parce que ça fait pas 5.

ça veut dire que la porte s'ouvre quand le train arrive 6 mètres avant la position de l'objetBefore = Avant
, et se referme 1 mètre après la position de l'objet.
Pour les lignes ou il y a marqué "  create a trigger 5 meters  " C'est juste que initialement sur le script les valeurs étaient a -5 et +5 , mais la personne a modifier le script pour avoir -6 et +1.

Quel babao je suis mon dieu...(pourquoi j'y ai pas pensé plus tôt) bref merci pour avoir répondu à cette question quand même ^^
 
Bonjour, je crois que ce sujet a déjà été a abordé précédemment, mais je n'ai jamais réussi a faire ce que je voulais sur nolimits 2.

Voila mon projet : je souhaiterais crée Rock'n'roller coaster starring aerosmith version disneyland paris.
et du coup je recherche un script fonctionnelle pour allumer des projecteurs, seul problèmes, je n'arrive pas a utilisé de script pour ça, si quelqu'un pourrais m'expliqué comment on utilisais les scripts et aussi comment on les installais sur nl2.

je vous remerci d'avance :)
 
Hello tout le monde, j'ai un petit souci avec le script que m'a passé Yoyo pour la camera. En fait, je réussi bien à la faire Target, je réussi à la faire avancer, mais je ne réussi pas à la faire avancer à la même vitesse que le train (donc du coup elle sert plus de camera externe que de POV).
Est-ce que quelqu'un saurait régler ça ?  :-)