[No Limits 2] Tuto sur les scripts

alex-woc a dit:
Antoine, tu as eu le temps de checker ? :)
Si tu parles du script à Meletou1. il fonctionne parfaitement.

J’essaie de faire un mix de tout ce qu'il nous a donné pour donner les rotations à la lampe qui sont dans le script TriggerLightOnOff dans le script embarqué OnboardTriggerLight, sans succès  :|

Dans un premier temps ça parait assez simple pi je m'embrouille ...  :-)
 
alex-woc a dit:
Merci de ton retour ! Je testerai ça quand ma musique sera ok :p

Non je parlais de mon soucis concernant le fait de fait une musique en plusieurs segments sur un track, j'ai mis mon fichier en téléchargement pour qu'Antoine essaye de détecter le soucis
*
Mets tes 2 scripts et tes 2 musiques dans 2 dossiers différents  :-)
 
J'obtiens ceci... Dois-je préciser quelque chose lors du chemin ?

1l4l.png
 
J’essaie de faire un mix de tout ce qu'il nous a donné pour donner les rotations à la lampe qui sont dans le script TriggerLightOnOff dans le script embarqué OnboardTriggerLight, sans succès  :|

Il faut inserer les 2 scripts dans le projecteur.

Regarde l'image qui est en piéce jointe

Meletou1

[Fichier joint supprimé]
 
Merci mais mon RotateObj ne contient aucuns contrôles trigger et c'est la dessus que je côte, visiblement. :-)

Mon 'RotateObj'
Code:
import com.nolimitscoaster.*;

public class MouvementsScript extends Script
{
  private SceneObject m_sco;
  private SceneObjectElement ObjetLight;
  
  private float totalTime1;
  
  public bool onInit()
  {
    m_sco = sim.getSceneObjectForEntityId(getParentEntityId());
		
   if (m_sco == null)
    {
     
      return false;
    }
    return true;
  }

  public void onNextFrame(float tick)
  {
   
    totalTime1 += tick* 2;
		m_sco.setRotation(0, totalTime1, 0);
	}
  
}
 
Pour un script de l'allumage au passage du train j'ai ce message :

"Ignoring light's parent with name='lamp' because there is no mesh node with that name in the model file"

Une idée ?
 
probablement cette erreur ne pas oublier le parent de l'objet regarde l'image en fichier joints

[Fichier joint supprimé]
 
autre possibilité c'est dans le fichier 3ds que le nom n'a pas été specifie, regarde ma video c'est explique
 
Meletou1 a dit:
autre possibilité c'est dans le fichier 3ds que le nom n'a pas été specifie, regarde ma video c'est explique

Tout est fait et j'ai juste peur que mon objet ait trop de poly pour être allumé...
 
Hello

Voila ci-dessous le script MultiTrigger, qui vous permet de mettre plusieurs trigger sur un rail, chaque trigger peut avoir une action différente, dans l'exemple j'ai déclencher 2 musiques différentes...

Code:
import com.nolimitscoaster.*;
import nlvm.math3d.*;
/**
    adapter par Jmeletou@hotmail.com Un script pour Multi Trigger le long du rail avec un exemple de 
    déclenchement de 2 musiques differentes..
    Un exemple avec 3 triggers.........
*/
 public class MultiTriggerMusic extends Script implements TrackTriggerListener{

    private static final String scriptName = "MultiTriggerMusic"; 

// .................................definition des 3 triggers..................................
    private TrackTrigger Trigger1; 
    private TrackTrigger Trigger2;
    private TrackTrigger Trigger3;

//*********************************definition des 2 musiques**********************************

  	private static final String sSoundFile1 = "Moon Lifter.ogg";
	StaticSound sSound1;
	private static final String sSoundFile2 = "SleepAway.ogg";
	StaticSound sSound2;
//***************************************************************************************************
    public bool onInit(){ 
     
       Coaster coaster = sim.getCoasterForEntityId(getParentEntityId()); 

//...................................recherche des triggers sur les rails.................................

       Trigger1 = coaster.getTrackTrigger("TestTrigger1"); 
       Trigger1.addTrackTriggerListener(this); 
       Trigger2 = coaster.getTrackTrigger("TestTrigger2");
       Trigger2.addTrackTriggerListener(this);
       Trigger3 = coaster.getTrackTrigger("TestTrigger3");
       Trigger3.addTrackTriggerListener(this);
//============================================On charge les 2 musiques =======================================

       sSound1 = StaticSound.loadFromFile(sSoundFile1, StaticSound.E_ENVMODE_LOCAL);
       sSound2 = StaticSound.loadFromFile(sSoundFile2, StaticSound.E_ENVMODE_LOCAL);

       return true;
     
    } 
//-----------------------------------------------------------------------------------------
    public void onNextFrame(float fTickTime)
    {
    }

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

             outAction1();
          } 
       } 

        if (trigger == Trigger2){
          if (train.getSpeed() > 0)
          {
             outAction2();

          }
      }

       if (trigger == Trigger3)
       {
          if (train.getSpeed() > 0)
          {
             outAction3();

          }
      }
    }
//-------------------------------------------------------------------------------------------
    public void onTrainLeaving(TrackTrigger trigger, Train train)
    {
    }
//------------------------------------------------------------------------------------------
    public void outAction1 ()
    {
         System.out.println("Entré: Trigger1");
         soundTrigger1();
         sSound2.stop();                                                                   // stop musique 2
       	 sSound1.play();                                                                  // play musique 1
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     public void outAction2 ()
    {
         System.out.println("Entré: Trigger2");
         sSound1.stop();                                                                   // stop musique 1
    }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     public void outAction3 ()
    {
          System.out.println("Entré: Trigger3");
          soundTrigger2();
          sSound2.play();                                                                   // play musique 2
    }
//+++++++++++++++++++++++++++++++++++++++Position de la 1 musique ++++++++++++++++++++++++++++++++++++++
    	public void soundTrigger1()
        {

		if(sSound1 == null)
                 {
			System.err.println("Sound file not found");
			return;
		 }

		sSound1.setPosition(new Vector3f(0.0f,0.0f,0.0f));
		sSound1.setGain(20.0f);

	}
//.........................................Position de la 2 musique...................................
		public void soundTrigger2()
        {

		if(sSound2 == null)
                 {
			System.err.println("Sound file not found");
			return;
		 }

		sSound2.setPosition(new Vector3f(0.0f,1.0f,0.0f));
		sSound2.setGain(20.0f);

	}
//...........................................................................................

 }

Meletou1

Bon Scripting  :-D :-D :-D :-D :-D :lol: :lol:
 
Pour le son onboard est-il normal que je doit pousser le gain à plus de 400.0f pour que je puisse entendre quelque chose quand on va vite et que le son du vent prend le dessus, idem pour la chaîne du lift ?
 
yoyo212 a dit:
Pour le son onboard est-il normal que je doit pousser le gain à plus de 400.0f pour que je puisse entendre quelque chose quand on va vite et que le son du vent prend le dessus, idem pour la chaîne du lift ?

Oui car le script ici diffuse une musique à un point précis (En l'occurence 00, 00, 00). Il faudrait trouver un moyen de le fusionner avec le script présent en page 1 pour que le son soit a bord des trains.

Il y a aussi un soucis, c'est que le son n'est plus "propre à chaque train", il reloop donc lorsque le train suivant est lançé
 
alex-woc a dit:
Oui car le script ici diffuse une musique à un point précis (En l'occurence 00, 00, 00). Il faudrait trouver un moyen de le fusionner avec le script présent en page 1 pour que le son soit a bord des trains.

Il y a aussi un soucis, c'est que le son n'est plus "propre à chaque train", il reloop donc lorsque le train suivant est lançé
Oui il faudrait trouver un moyen parce que du coup a plusieurs trains ça ce superpose et tout c'est très étrange :/
pareil pour la musique qu'on entend plus a forte vitesse....