Skip to content

All Comments

561 to 580 of 19724

Filter comments

The Official Scripting Ask Thread
Scripting

Welcome to The Official Scripting Ask Thread, your go-to space for all things writing and content creation. Whether you're working on a screenplay, book, article, or marketing script, our community is here to support you. Get expert advice, share ideas, or request help from professional writers. If you’re short on time or need polished content fast, our ghostwriting services are available to turn your ideas into engaging, well-written scripts. Join the discussion, level up your writing, and explore how ghostwriting services can bring your vision to life with precision and creativity.

View comment
Dragón Groar's NoLimits 2 Script Generator
Scripting

Well spotted!

That's an easy-to-fix reset bug.

Essentially, it's not that it's disabled throughout the entire block generator or that there's no way to reset it. It's that the block exit panel was not resetting the availability status of those fields when loading a new block exit. I've already added the appropriate resets and it should be working next version.

Meanwhile, it's enough with forcing the panel to recheck the availability status again by changing the other option to "Disabled". That should enable both options again.

Thanks for telling me!

View comment
Morgan hyper trains
General

Can anyone provide more detailed instructions on how to get these trains to appear correctly? The readme explanation is not very thorough. Is this done in Coaster Properties>Trains? If so, none of the file extensions are supported in order to select them. Anyone been able to get it to work?

Edit: So I guess this is done in scripts... any good tutorials?

Edit Again: Figured it out. It's done in scenery LOL. Here's a good tutorial for anyone who's curious:

https://youtu.be/n61IahleGVM?si=Oo2jTJdY1QirGmf0

View comment
Dragón Groar's NoLimits 2 Script Generator
Scripting

Something I'm not sure I've mentioned before, but wanted to make sure so it might be integrated into the next update. When selecting any multi-move option, it removes the swing launch ability, vice versa. This makes sense for why one would disable the other; however, this disables it throughout the entire block generator with no way that I see to reset it.

View comment
The Official Scripting Ask Thread
Scripting

Ì'm trying to do my first ever scripted coaster so this question is very basic, but i cant manage to get a file to edit, im using a no limits script generator but i cant find a way to add a file to be able to script in both no limits and in the script generator, how can i create a file so that i can start scripting?

View comment
Exporting Track On CSV
NoLimits Coaster

NoLimits Explorers posted on June 30th, 2025

Hello, I am not sure about being able to choose a switch track segment & export it to CSV. I found with a quick try-out that any track between two switch tracks is not exported. Though I did not check thoroughly...

You could use a script to measure e.g. a bogie of a train of your coaster and then just let the coaster run for a lap. Write the measured data to the messages window, and finally copy/paste it into a CSV file yourself.

Save the script below as "WriteTrackCoords.nlvm", and attach it to your coaster. It writes something similar to the messages window as you would get when exporting a CSV.
You can adjust this parameter in the script to adjust the distance between points as you'd do for CSV export:

private float distanceBetweenPoints = 0.5f; // Adjust this number to your liking.;

Hope this helps!
Perhaps someone else knows more sophisticated way without having to use a script...?

The script:

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

public class WriteTrackCoords extends Script {
    private Coaster coaster;
    private Train train;
    private float distanceBetweenPoints = 0.5f; // Adjust this number to your liking.

    public bool onInit() {
        coaster = sim.getCoasterForEntityId(getParentEntityId());
        if (coaster == null) {
            System.err.println("Script not attached to a coaster. Exiting.");
            return false;
        }

        train = coaster.getTrainAt(0);
        if (train == null) {
            System.err.println("Coaster [" + coaster.getName() + "] has no trains. Exiting.");
            return false;
        }

        measureBogie();
        writeHeadline();
        writeMeasurement();
        storedPosOut = posOut.dup();
        return true;
    }
    
    public void onNextFrame(float tick) {
        measureBogie();
        if (posOut.distance(storedPosOut) >= Math.abs(distanceBetweenPoints)) {
            writeMeasurement();
            storedPosOut = posOut.dup();
        }
    }

    private Vector3f frontOut = new Vector3f();
    private Vector3f topOut = new Vector3f();
    private Vector3f rightOut = new Vector3f();
    private Vector3f posOut = new Vector3f();
    private Vector3f storedPosOut = new Vector3f();
    private void measureBogie() {
        train.getBogieOrientationAndPosition(0, frontOut, topOut, rightOut, posOut);
    }

    private void writeHeadline() {
        StringBuilder headline = new StringBuilder();

        headline.append("No.\t");
        headline.append("PosX\t");
        headline.append("PosY\t");
        headline.append("PosZ\t");
        headline.append("FrontX\t");
        headline.append("FrontY\t");
        headline.append("FrontZ\t");
        headline.append("RightX\t");
        headline.append("RightY\t");
        headline.append("RightZ\t");
        headline.append("UpX\t");
        headline.append("UpY\t");
        headline.append("UpZ");
        System.out.println(headline);
    }
 
    private int num = 1;
    private void writeMeasurement() {
        StringBuilder line = new StringBuilder();

        line.append(num + "\t");
        line.append(posOut.x + "\t");
        line.append(posOut.y + "\t");
        line.append(posOut.z + "\t");
        line.append(frontOut.x + "\t");
        line.append(frontOut.y + "\t");
        line.append(frontOut.z + "\t");
        line.append(topOut.x + "\t");
        line.append(topOut.y + "\t");
        line.append(topOut.z + "\t");
        line.append(rightOut.x + "\t");
        line.append(rightOut.y + "\t");
        line.append(rightOut.z);
        System.out.println(line);
        num ++;
    }
}

The written result (example):

No. PosX PosY PosZ FrontX FrontY FrontZ RightX RightY RightZ UpX UpY UpZ
1 64.26366 2.5 -5.182514E-8 1.0 3.15369E-10 -1.892211E-9 -3.15369E-10 1.0 2.17077E-9 1.892211E-9 -2.17077E-9 1.0
2 64.7713 2.5 -5.278569E-8 1.0 3.15369E-10 -1.892211E-9 -3.15369E-10 1.0 2.299317E-9 1.892211E-9 -2.299317E-9 1.0
3 65.28258 2.5 -5.375313E-8 1.0 3.15369E-10 -1.892211E-9 -3.15369E-10 1.0 2.432075E-9 1.892211E-9 -2.432075E-9 1.0
4 65.79778 2.5 -5.4728E-8 1.0 3.15369E-10 -1.892211E-9 -3.15369E-10 1.0 2.569163E-9 1.892211E-9 -2.569163E-9 1.0
5 66.30961 2.5 -5.56965E-8 1.0 3.15369E-10 -1.892211E-9 -3.15369E-10 1.0 2.708614E-9 1.892211E-9 -2.708614E-9 1.0

This is for something else, but do you think it's possible to modify the script so that it saves a CSV of the coaster, but with all the roll points flipped 180 degrees?

View comment
Dragón Groar's NoLimits 2 Script Generator
Scripting

Yes, that's a bug I'm aware of and have already fixed for the next version. It's a stupid bug, tbh, but I somehow missed it last time.
By setting it to normally open, as you're trying to do, you'd be able to do what you want. I'm also planning, although most likely not for the next version, which I want to release as soon as I can fix the issues with Multi-Move and Linked Sections, to allow to select a brake behaviour independently for each brake.

Meanwhile, if you want to manually fix the error, set the brake behaviour to what you want and then edit your script and substitute BRAKE_BEHAV_NORMALLY_OPEN with BRAKE_BEHAV_NORM_OPEN and the error should disappear.

View comment
Dragón Groar's NoLimits 2 Script Generator
Scripting

Do you know if there is a way to keep the brakes closed when a train is on the block before the trigger, as well as when it's free? I have a final brake that also acts as a final trim, so when the Train is going through the layout, the brakes are open since it's on the block. When it's Idle or Free, the brakes are closed like I want them. I'd like it so they stay closed until the train hits the trigger on the block, then it can lower when it's at the target speed. Also, when I change the brake behavior, it gives me an error when the ride starts: Unknown symbol 'BRAKE_BEHAV_NORMALLY_OPEN'. I'm on V1.2.1 of the script Generator, and I generated the first version of the script on this version.

View comment
561 to 580 of 19724