Skip to content

All Comments

7541 to 7560 of 19729

Filter comments

NL2 Ask Thread
NoLimits Coaster

So I had the Standard Edition of NoLimits2 and used it for a while. After some time of computer problems, the hard drive failed. I had backed up the computer recently, so i still had the installer of NL2. I used it and realized that I needed to have the user id and such. I tried to email support and haven't gotten anything back yet. If there is anything i can do, please tell! Thank you all and have a great day!

View comment
How Can I Get a New User Key For an Already Purchased Copy of NoLimits 2
NoLimits Coaster

So I had the Standard Edition of NoLimits2 and used it for a while. After some time of computer problems, the hard drive failed. I had backed up the computer recently, so i still had the installer of NL2. I used it and realized that I needed to have the user id and such. I tried to email support and haven't gotten anything back yet. If there is anything i can do, please tell! Thank you all and have a great day!

View comment
The Official Scripting Ask Thread
Scripting

Well, the Code you'd want to add into the trigger function would be:
train.getHarnessState();

the Problem is that onTrainEntering() and onTrainLeaving() both are only called on the exact frame the Train hits the Trigger, so they're called only once.

The Harnessvalue is a continuous one laying between 0 (fully open) and 1 (fully closed).

so a way to go is to execute a self-set function when the Tracktrigger is hit.

like:

import com.nolimitscoaster.*;

class TestScript extends Script implements TrackTriggerListener {
    Coaster coaster;
    Section section;
    float HarnessState;
    TrackTrigger trackTrigger;
    TrackTrigger trackTrigger2;
    TrackTrigger trackTrigger3;
    TrackTrigger trackTrigger4;
    TrackTrigger trackTrigger5;
    
    bool myFunctionStart = false;
    Train myFunctionTrain;
	
    //List off track triggers and listeners
    bool onInit() {
        coaster = sim.getCoasterForEntityId(getParentEntityId());			
 	HarnessState = sim.getHarnessState();
        trackTrigger = coaster.getTrackTrigger("StationClear");
        trackTrigger2 = coaster.getTrackTrigger("BBlockOccupied");
 	trackTrigger3 = coaster.getTrackTrigger("LiftClear");
 	trackTrigger4 = coaster.getTrackTrigger("CBlockOccupied");
 	trackTrigger5 = coaster.getTrackTrigger("BBlockClear");
        trackTrigger.addTrackTriggerListener(this);
        trackTrigger2.addTrackTriggerListener(this);
 	trackTrigger3.addTrackTriggerListener(this);
 	trackTrigger4.addTrackTriggerListener(this);
 	trackTrigger5.addTrackTriggerListener(this);
        return true;
    }
    public void onNextFrame(float tick)
    {
        if(myFunctionStart)
        {
             HarnessState = myFunctionTrain.getHarnessState();
             System.out.println(HarnessState );
        }
    }
 	//The comments setting output are going to be used for the same
 	//thing I'm trying to do with the harnesses but I haven't gotten
 	//to implement that either.  I'm having more problems with the
 	//harnesses so I'm trying to fix that first.
 	public void onTrainEntering(TrackTrigger trigger, Train train) {
 	if (trigger == trackTrigger2) {
             System.err.println("B Block Occupied");
             myFunctionTrain = train;
             myFunctionStart = true;
 	    //int output = 1;
 	    //System.err.println(output);
         }
         if (trigger == trackTrigger) {
             System.err.println("Station Clear");
 	    harnessState = sim.getHarnessState();
 	    System.err.println(harnessState);
         }
 	if (trigger == trackTrigger4) {
             System.err.println("C Block Occupied");
         }
     }
 
 	//Same thing here for the output
         public void onTrainLeaving(TrackTrigger trigger, Train train) {
             if (trigger == trackTrigger2) {
                 myFunctionTrain = train;
                 myFunctionStart = false;
            }

             if (trigger == trackTrigger3) {
             System.err.println("Lift Clear");
         }
 	if (trigger == trackTrigger5) {
             System.err.println("B Block Clear");
 	    //int output = 0;
 	    //System.err.println(output);
         }
     }
 }

Now you need to reset your bool variable myFunctionStart, otherwise it'll jam your message window all the time.
In this Case doing it with leaving the same Trigger will do the trick.

This already should work for you now

View comment
The Official Scripting Ask Thread
Scripting

I'm getting better but still new and trying to to do the following:

  1. Activate a track trigger (Successful - Thank you bestdani!)
  2. Print a message to screen to verify trigger hit (Successful - Thank you bestdani!)
  3. Pull harness state (Unsuccessful)
  4. Print harness state to verify
  5. Export harness state outside of NL2 to something (hopefully a text file)

I found the getharnessstate command but I can't get it to work while exporting the response i can't even figure out if there's a command for that at all. Here's what I have so far, what do you think I'm doing wrong?

import com.nolimitscoaster.*;

class TestScript extends Script implements TrackTriggerListener {
    Coaster coaster;
    Section section;
    float HarnessState;
    TrackTrigger trackTrigger;
    TrackTrigger trackTrigger2;
    TrackTrigger trackTrigger3;
    TrackTrigger trackTrigger4;
    TrackTrigger trackTrigger5;
	
    //List off track triggers and listeners
    bool onInit() {
        coaster = sim.getCoasterForEntityId(getParentEntityId());			
	HarnessState = sim.getHarnessState();
        trackTrigger = coaster.getTrackTrigger("StationClear");
        trackTrigger2 = coaster.getTrackTrigger("BBlockOccupied");
	trackTrigger3 = coaster.getTrackTrigger("LiftClear");
	trackTrigger4 = coaster.getTrackTrigger("CBlockOccupied");
	trackTrigger5 = coaster.getTrackTrigger("BBlockClear");
        trackTrigger.addTrackTriggerListener(this);
        trackTrigger2.addTrackTriggerListener(this);
	trackTrigger3.addTrackTriggerListener(this);
	trackTrigger4.addTrackTriggerListener(this);
	trackTrigger5.addTrackTriggerListener(this);
        return true;
    }
	
	//The comments setting output are going to be used for the same
	//thing I'm trying to do with the harnesses but I haven't gotten
	//to implement that either.  I'm having more problems with the
	//harnesses so I'm trying to fix that first.
	public void onTrainEntering(TrackTrigger trigger, Train train) {
	if (trigger == trackTrigger2) {
            System.err.println("B Block Occupied");
	    //int output = 1;
	    //System.err.println(output);
        }
        if (trigger == trackTrigger) {
            System.err.println("Station Clear");
	    harnessState = sim.getHarnessState();
	    System.err.println(harnessState);
        }
	if (trigger == trackTrigger4) {
            System.err.println("C Block Occupied");
        }
    }

	//Same thing here for the output
        public void onTrainLeaving(TrackTrigger trigger, Train train) {
            if (trigger == trackTrigger3) {
            System.err.println("Lift Clear");
        }
	if (trigger == trackTrigger5) {
            System.err.println("B Block Clear");
	    //int output = 0;
	    //System.err.println(output);
        }
    }
}
View comment
Amalia's GCI Bible
NoLimits Coaster

What's in a Station?

So, the station, brakes, and lift setup: the one thing every coaster has. In this first step, I’m gonna teach you everything you need to know about taking this first step in creating your new GCI!

For the first step, we need to actually create our coaster. So that the station gates released later in this tutorial will work, please name your coaster “GCI” and create your station out of this coaster. Before placing any nodes, set the custom heartline to 0.85m or about 2.65ft, the friction to NL 2 (Not NL 2.2), and the coaster style to wooden trailered 2-seat.

Image from Gyazo

Depending on the size of your coaster, the train length and block lengths will differ. If you have a 12-car train, your station block should be 57.75ft or 17.6m. If you have a 6-car train, your station block should be about 33.75ft or 10.3m. These lengths will also carry over to your transfer track. To check your station block length, select the station and look in the bottom left hand corner, it should clearly display your block length. Your station should be no more than 15-20ft off the ground, or 4.5-6m for my metric friends. Place 4 nodes, 2 loose and 2 strict in the middle, and space your station apart and place it where you want it until you get something that looks like the picture below.

Image from Gyazo

After this, go to the side view of your station platform and give it a slight decline. Nothing super crazy, just a few degrees will do. This is so that the train can coast out of the station.

Image from Gyazo

After you’ve done that, it’s time to place our transfer table. I recommend looking up a few basic station setups for a GCI coaster, as there are plenty of ways you can place the transfer and the lift relative to the station. For mine, I decided to go with a setup similar to Prowler at Worlds of Fun, with the transfer track just a short bit away from the station. Your transfer block should be the same length as the station.

Image from Gyazo

Image from Gyazo

For comparison, the transfer blocks on Tornado look like this:

Image from Gyazo

After this, input these settings into both the station and transfer blocks. Put your game into the metric system for a hot second just to get this done. Assign Train 1 to the station block and Train 2 to the transfer block. Never have a train start on the lift or on the final brake run.

Image from Gyazo

Image from Gyazo

Image from Gyazo

For coloring the ride, this is the color I use for the wood on the ride.

Image from Gyazo

After that, freeze it up, and pat yourself on the back, because you’ve just created a GCI station block. I'm sorry I couldn't do more - these take a little while to make and going as in-depth as I am will take some time to fully cover everything GCI. Stay tuned in the coming days because the next post will be all about prelifts, lift blocks, and lift crests. The post after that will be drop shaping and hill shaping.

Thanks everyone, cheers!!

View comment
7541 to 7560 of 19729