[No Limits 2] Tuto sur les scripts

import com.nolimitscoaster.*;
import nlvm.math3d.*;

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

public class ProprieteTrain 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 = "ProprieteTrain";
       
          private TrackTrigger Trigger1;                            // definition trigger 1
          private TrackTrigger Trigger2;                            // definition trigger 2

          private static final String sSoundFile1 = "Moon Lifter.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)
{
}
}
 
Gary roach prod a dit:
Je pense oui puisque la porte de démo contient des sons .

Ce script est dans le Tango, il se nomme tango_music.nlvm

Code:
import com.nolimitscoaster.*;
import nlvm.math3d.*;

public class tango_music extends Script
{
  private SceneObject sco;

  private StaticSound sound;
   
  public bool onInit()
  {
    sco = sim.getSceneObjectForEntityId(getParentEntityId()); 
    if (sco == null) 
    {
      System.err.println("Script not attached to scene object");
      return false;
    }

    sound = StaticSound.loadFromFile("Moon Lifter.ogg", StaticSound.FLAG_MUSIC);
    if (sound == null)
    {
      System.err.println("Sound file not found");
      return false;
    }
    
    Vector3f pos = new Vector3f();
    sco.getTranslation(pos);

    sound.setEnvironmentMode(StaticSound.E_ENVMODE_GLOBAL);
    sound.setPosition(pos);
    sound.setDistanceParameters(8.0f, 1.3f);
    sound.setDopplerMode(false);
    
    sound.playLoop();
    return true;
  }
  
}
 
j'ai signaler dans la video que ce script peut etre modifier pour rajouter plusieurs musiques !!
Il faut un plancher sur la question..... :-D
 
yoyo212 a dit:
Ce script est dans le Tango, il se nomme tango_music.nlvm

Code:
import com.nolimitscoaster.*;
import nlvm.math3d.*;

public class tango_music extends Script
{
  private SceneObject sco;

  private StaticSound sound;
   
  public bool onInit()
  {
    sco = sim.getSceneObjectForEntityId(getParentEntityId()); 
    if (sco == null) 
    {
      System.err.println("Script not attached to scene object");
      return false;
    }

    sound = StaticSound.loadFromFile("Moon Lifter.ogg", StaticSound.FLAG_MUSIC);
    if (sound == null)
    {
      System.err.println("Sound file not found");
      return false;
    }
    
    Vector3f pos = new Vector3f();
    sco.getTranslation(pos);

    sound.setEnvironmentMode(StaticSound.E_ENVMODE_GLOBAL);
    sound.setPosition(pos);
    sound.setDistanceParameters(8.0f, 1.3f);
    sound.setDopplerMode(false);
    
    sound.playLoop();
    return true;
  }
  
}

Ça va être bien cool pour mon projet ça !

Sinon le générateur c'est que pour des block script pour le moment, mais ça aide à la création c'est sur !
 
Ouais mais vous pensez détenir le saint Graal ?
Pourquoi tant de mystères autour de ce simu ?
Il y a vraiment quelque chose qui m'échappe ... :?

Pourtant. Les questions sont simples :
Est-il possible de charger plusieurs music en onboard et de les activer par trigger ?
Est-il possible de faire actionner un mouvement à un objet embarqué par trigger ?
Et tant d'autres restés sans réponses, n'y même indications de savoir si ça vaut le coût de continuer à chercher dans ce sens.

Jsu déçu  :-(

 
yoyo212 a dit:
Ouais mais vous pensez détenir le saint Graal ?

Jsu déçu  :-(

C'est un projet de coaster et tous les scripts utilisés sont sur ce topic, et tu les maitrises mieux que moi dawa (yoyo ?)
 
Antoine Gress a dit:
MP si tu veux en savoir plus  :wink:

J'invente rien là ?

Pourquoi ne pas exposer ton problème simplement comme il te le demande ? ça m'aurait évité d'essayer de plancher dessus la matinée avant qu'il te pose cette question et mon deuxième problème est que je sèche toujours dessus sans savoir vraiment si il t'a répondu. (vive le mp ...)
Détrompes toi, j'ai rien de plus pour l'instant en script et si c'est le cas, il y a qu'a demander comme pour le son fixe. Il y a qu'a demander du moment que j'ai la réponse.  :wink:

 
Il veut savoir mon projet, mon projet n'est pas un script mais un coaster et s'il veut y participer c'est par MP. Tout simplement. Faut pas prendre la mouche sur tout et n'importe quoi.
Tout ce que je sais, je l'ai partagé avec vous. Sinon j'aurais jamais fait de tuto.