HTCO Posted August 29, 2014 Share Posted August 29, 2014 Save the N2 track as a nl1 element, then import it directly into NL2 using element>Add Element I have tried that but it doesn't work… I also tried importing the N2 track into NL1 and saving it as a coaster, then importing the coaster into NL2 and no success there either… I tried search the ever so helpful YouTube, but alas, no tutorials… Link to comment Share on other sites More sharing options...
coasterlover420 Posted August 29, 2014 Share Posted August 29, 2014 What is it that doesn't work? That should work perfectly fine... Link to comment Share on other sites More sharing options...
Lareson Posted September 14, 2014 Share Posted September 14, 2014 Has anyone had this problem pop up before? It seems that the pipes and footers are not rendering properly, leaving a rather ugly connection. This is happening to a few footers that I have that are a bit closer to the ground, but not so close that it should cause this. Currently running the latest version 2.0.5.2. It seems to only happen when the footer and support meet at what looks like less than 45 degree angle as it goes away as I move the footer closer to the vertical support and increasing the angle. I don't ever remember having this issue before, even though it's been a few months since I've used NL2. Link to comment Share on other sites More sharing options...
coasterlover420 Posted September 15, 2014 Share Posted September 15, 2014 ^I'd say either compromise and move it closer or set the beam to extend past the end. Link to comment Share on other sites More sharing options...
Projektion Posted October 13, 2014 Share Posted October 13, 2014 I'm having a bit of trouble with a script I am working on, the lines I've bolded are giving my Nullpointerexception errors and I can't see why import com.nolimitscoaster.*; import nlvm.math3d.*; public class Skyjump extends Script { private SceneObject sco; private SceneObjectElement pistonA[]; private SceneObjectElement pistonB[]; private static final int gondolaCount = 9; private Matrix4x4f pistonMatrix1A[] = new Matrix4x4f[gondolaCount]; private Matrix4x4f pistonMatrix1B[] = new Matrix4x4f[gondolaCount]; private Matrix4x4f pistonMatrix2A[] = new Matrix4x4f[gondolaCount]; private Matrix4x4f pistonMatrix2B[] = new Matrix4x4f[gondolaCount]; private Vector3f TargetPosA[] = new Vector3f[gondolaCount]; private Vector3f TargetPosB[] = new Vector3f[gondolaCount]; private Vector3f OriginPosA[] = new Vector3f[gondolaCount]; private Vector3f OriginPosB[] = new Vector3f[gondolaCount]; public bool onInit() { sco = sim.getSceneObjectForEntityId(getParentEntityId()); pistonA = new SceneObjectElement[gondolaCount]; pistonB = new SceneObjectElement[gondolaCount]; for (int i=1; i<gondolaCount; ++i) { pistonA[i] = sco.getElementForName("PistonA" + i); pistonB[i] = sco.getElementForName("PistonB" + i); } return true; } public void onNextFrame(float tick) { for (int i=1; i<gondolaCount; ++i) { //Space Allocation Matrix4x4f mRotyA[] = new Matrix4x4f[gondolaCount]; Matrix4x4f mRotxA[] = new Matrix4x4f[gondolaCount]; Matrix4x4f mRotzA[] = new Matrix4x4f[gondolaCount]; Matrix4x4f mRotyB[] = new Matrix4x4f[gondolaCount]; Matrix4x4f mRotxB[] = new Matrix4x4f[gondolaCount]; Matrix4x4f mRotzB[] = new Matrix4x4f[gondolaCount]; //Grab position information for the track and target trains pistonMatrix1A[i] = pistonA[i].getMatrix(); pistonMatrix1B[i] = pistonB[i].getMatrix(); TargetPosA[i] = pistonMatrix1B[i].getTrans(); TargetPosB[i] = pistonMatrix1A[i].getTrans(); pistonMatrix2A[i] = pistonA[i].getMatrix(); pistonMatrix2B[i] = pistonB[i].getMatrix(); OriginPosA[i] = pistonMatrix2A[i].getTrans(); OriginPosB[i] = pistonMatrix2B[i].getTrans(); pistonMatrix2A[i].initTrans(OriginPosA[i]); pistonMatrix2B[i].initTrans(OriginPosB[i]); //Calculate the rotation of the camera for targeting OriginPosA[i].mul(-1.0f); OriginPosB[i].mul(-1.0f); Vector3f SpaceDiffA[] = new Vector3f[gondolaCount]; SpaceDiffA[i] = OriginPosA[i]; Vector3f SpaceDiffB[] = new Vector3f[gondolaCount]; SpaceDiffB[i] = OriginPosB[i]; SpaceDiffA[i].add(TargetPosA[i]); SpaceDiffB[i].add(TargetPosB[i]); float yawA[] = new float[gondolaCount]; yawA[i] = (float)Math.atan2(-SpaceDiffA[i].x,-SpaceDiffA[i].z); float pitchA[] = new float[gondolaCount]; pitchA[i] = -(float)Math.atan2((float)Math.sqrt(SpaceDiffA[i].x*SpaceDiffA[i].x+SpaceDiffA[i].z*SpaceDiffA[i].z),SpaceDiffA[i].y)+(float)Math.PI/2.0f; float yawB[] = new float[gondolaCount]; yawB[i] = (float)Math.atan2(-SpaceDiffB[i].x,-SpaceDiffB[i].z); float pitchB[] = new float[gondolaCount];; pitchB[i] = -(float)Math.atan2((float)Math.sqrt(SpaceDiffB[i].x*SpaceDiffB[i].x+SpaceDiffB[i].z*SpaceDiffB[i].z),SpaceDiffB[i].y)+(float)Math.PI/2.0f; mRotyA.initYRot(0.5f * yawA); mRotxA.initXRot(0*(float)Math.cos(yawA)); mRotzA.initZRot(-pitchA*(float)Math.sin(yawA)); mRotyB.initYRot(0.5f * yawB); mRotxB.initXRot(0*(float)Math.cos(yawB)); mRotzB.initZRot(-pitchB*(float)Math.sin(yawB)); OriginPosA[i].mul(-1.0f); OriginPosB[i].mul(-1.0f); pistonMatrix2A[i].initTrans(OriginPosA[i]); pistonMatrix2A[i].multRight(mRotyA[i]); pistonMatrix2A[i].multRight(mRotxA[i]); pistonMatrix2A[i].multRight(mRotzA[i]); pistonMatrix2B[i].initTrans(OriginPosB[i]); pistonMatrix2B[i].multRight(mRotyB[i]); pistonMatrix2B[i].multRight(mRotxB[i]); pistonMatrix2B[i].multRight(mRotzB[i]); //Apply camera position and rotation pistonA[i].setMatrix(pistonMatrix2A[i]); pistonB[i].setMatrix(pistonMatrix2B[i]); } } } Link to comment Share on other sites More sharing options...
coasterlover420 Posted October 14, 2014 Share Posted October 14, 2014 I'd suggest implementing a function that outputs each element of the matrices you are trying to create, and see which one is coming up null. Link to comment Share on other sites More sharing options...
Projektion Posted October 14, 2014 Share Posted October 14, 2014 They all do, the error always comes up for the first line of that group, if I take away the first line, the next one gives the same error. Link to comment Share on other sites More sharing options...
coasterlover420 Posted October 15, 2014 Share Posted October 15, 2014 I'm assuming you are defining your arrays wrong and that's why they have null points. The beginning of an array is the element at 0, not at 1. Therefore, you are defining pistonA[1], pistonA[2], etc... but not pistonA[0], which is why it will return null. Link to comment Share on other sites More sharing options...
Sharman19 Posted December 17, 2014 Share Posted December 17, 2014 I try to install an update for NL2, but then it won't ever start up. So please help me. Link to comment Share on other sites More sharing options...
GCI Wooden Posted December 18, 2014 Share Posted December 18, 2014 (edited) I feel really stupid asking this, but is Nolimits 2 a disc or is it a download (like once you pay you download it from the site)? I looked at the website and didn't find anything. (All I found was that the demo was a download) Also, if the computer you downloaded it on crashes and you get another one, is there a way to transfer it to the new computer? Edited December 18, 2014 by GCI Wooden Link to comment Share on other sites More sharing options...
coasterlover420 Posted December 18, 2014 Share Posted December 18, 2014 Download ^^Email the dev team and they will help you out. Link to comment Share on other sites More sharing options...
Mracsified Posted December 23, 2014 Share Posted December 23, 2014 Hey guys, I just started using NL2. I built my first basic B&M sit down and would like to publish it to my YouTube page, however I have no idea how to record. Could someone please explain how to film in game? Is there a button on the keyboard or do you use a program like frapps? Thanks, any help would be appreciated. -Mracsified Link to comment Share on other sites More sharing options...
coasterlover420 Posted December 23, 2014 Share Posted December 23, 2014 'O' to start and stop Link to comment Share on other sites More sharing options...
Jon Sabo Posted December 26, 2014 Share Posted December 26, 2014 Hey guys.... Happy Holidays (politically correct). I just starting video editing my own NL2 coaster videos and used Adobe Premier software I downloaded (the Windows Movie maker was really easy, but kept crashing). I guess my skills are really 'green', but I was able to complete a video and posted it online...my problem or question is...why is the quality so grainy and blah? I thought I saved the settings for HD format, but it does not appear very good quality. My other thought was perhaps due to the night/sunset settings in the video... Any tips? Thanks again. Video: Link to comment Share on other sites More sharing options...
Projektion Posted December 27, 2014 Share Posted December 27, 2014 (edited) Once again, I'm having more scripting trouble: import com.nolimitscoaster.*; import nlvm.math3d.*; public class Station extends Script implements TrackTriggerListener { private static final String sSoundFile = "StationClick.ogg"; StaticSound sSound; private static final String sCoastername = "Zeus"; Coaster cMyCoaster; private TrackTrigger Trig1; private TrackTrigger Trig2; private TrackTrigger Trig3; private TrackTrigger Trig4; private TrackTrigger Trig5; private TrackTrigger Trig6; private TrackTrigger Trig7; private TrackTrigger Trig8; public bool onInit() { cMyCoaster = sim.getCoaster(sCoastername); TrackTrigger Trig1 = cMyCoaster.getTrackTrigger("Trig1"); TrackTrigger Trig2 = cMyCoaster.getTrackTrigger("Trig2"); TrackTrigger Trig3 = cMyCoaster.getTrackTrigger("Trig3"); TrackTrigger Trig4 = cMyCoaster.getTrackTrigger("Trig4"); TrackTrigger Trig5 = cMyCoaster.getTrackTrigger("Trig5"); TrackTrigger Trig6 = cMyCoaster.getTrackTrigger("Trig6"); TrackTrigger Trig7 = cMyCoaster.getTrackTrigger("Trig7"); TrackTrigger Trig8 = cMyCoaster.getTrackTrigger("Trig8"); Trig1.addTrackTriggerListener(this); Trig2.addTrackTriggerListener(this); Trig3.addTrackTriggerListener(this); Trig4.addTrackTriggerListener(this); Trig5.addTrackTriggerListener(this); Trig6.addTrackTriggerListener(this); Trig7.addTrackTriggerListener(this); Trig8.addTrackTriggerListener(this); sSound = StaticSound.loadFromFile(sSoundFile, StaticSound.E_ENVMODE_GLOBAL); sSound.setPosition(new Vector3f(-263.0f, 12.0f, -207.35f)); sSound.setGain(10.0f); if(Trig1 == null) { System.err.println("Trigger not found"); return false; } if(sSound == null) { System.err.println("Sound file not found"); return false; } return true; } public void onTrainEntering(TrackTrigger trigger, Train train) { if (trigger == Trig1 || trigger == Trig2 || trigger == Trig3 || trigger == Trig4 || trigger == Trig5 || trigger == Trig6 || trigger == Trig7 || trigger == Trig8) { sSound.play(); } } public void onTrainLeaving(TrackTrigger trigger, Train train) { if (trigger == Trig1 || trigger == Trig2 || trigger == Trig3 || trigger == Trig4 || trigger == Trig5 || trigger == Trig6 || trigger == Trig7 || trigger == Trig8) { sSound.play(); } } } I just doesn't work. I get no errors, the script finds all the triggers, coaster and sound file fine, it just doesn't play the sounds in the game. Edit: Nevermind, I found a work around and got it working now. Edited December 27, 2014 by Projektion Link to comment Share on other sites More sharing options...
skiburkesurfjay Posted December 27, 2014 Share Posted December 27, 2014 How do you record in No Limits 1? Link to comment Share on other sites More sharing options...
Projektion Posted December 27, 2014 Share Posted December 27, 2014 You set up the settings for the recording in the video export tab in the settings menu, then, in the simulator, you press "o" to record. Link to comment Share on other sites More sharing options...
skiburkesurfjay Posted December 27, 2014 Share Posted December 27, 2014 I'm new at this. How do I get there? Link to comment Share on other sites More sharing options...
GCI Wooden Posted December 27, 2014 Share Posted December 27, 2014 So, I'm seriously considering buying Nolimits 2, and I installed the demo to try it out. On the demo, there are three coasters that you can play with, and when I was playing with them, it was running at 2-25 FPS. Is there a way to make it run at a higher FPS? Link to comment Share on other sites More sharing options...
Lareson Posted December 28, 2014 Share Posted December 28, 2014 So, I'm seriously considering buying Nolimits 2, and I installed the demo to try it out. On the demo, there are three coasters that you can play with, and when I was playing with them, it was running at 2-25 FPS. Is there a way to make it run at a higher FPS? Simple answer: buy a new computer. If it's a fairly cheap laptop that's more than a couple years old, you're not going to be getting any better graphics out of it. If you have a desktop, you can install a new graphics card, but that's a whole different thing. Because NoLimits 2 runs on a graphics engine on par with most modern video games, you'll need a pretty good computer with a good graphics card. If you cannot do any of that, you'll have to adjust the graphics and screen resolution to a lower quality. It may improve performance, but it won't look very good. Even though you might be covered by the minimum specs, here's what I recommend: At a minimum, an Intel Core i3 processor will run the game fine, but at least a quad-core i5 is recommended, especially if you plan on recording video. At least 4GB of RAM, 8GB is recommended. Graphics must be desktop-grade, meaning a Nvidia GeForce 750 w/ 2GB of GDDR5 RAM (or higher) or AMD Radeon R7 250 w/ 2GB GDDR5 RAM (or higher) graphics card. An integrated Intel graphics chip will run the game, but performance will be at a loss. The laptop versions of the graphic cards must be higher than a Nvidia GeForce 750M or an AMD Radeon R9 M265X. This is coming from years of experience with building several gaming and workstation computers myself. These specs are pretty much what I'd give to someone that would be looking to buy a decent gaming computer, but might not be able to spend $1500+ on a high-end gaming computer. Can easily build a computer with the specs I listed for around $800 and it would for sure be able to run NoLimits 2 without any issues. Link to comment Share on other sites More sharing options...
coasterlover420 Posted January 5, 2015 Share Posted January 5, 2015 Once again, I'm having more scripting trouble: import com.nolimitscoaster.*; import nlvm.math3d.*; public class Station extends Script implements TrackTriggerListener { private static final String sSoundFile = "StationClick.ogg"; StaticSound sSound; private static final String sCoastername = "Zeus"; Coaster cMyCoaster; private TrackTrigger Trig1; private TrackTrigger Trig2; private TrackTrigger Trig3; private TrackTrigger Trig4; private TrackTrigger Trig5; private TrackTrigger Trig6; private TrackTrigger Trig7; private TrackTrigger Trig8; public bool onInit() { cMyCoaster = sim.getCoaster(sCoastername); TrackTrigger Trig1 = cMyCoaster.getTrackTrigger("Trig1"); TrackTrigger Trig2 = cMyCoaster.getTrackTrigger("Trig2"); TrackTrigger Trig3 = cMyCoaster.getTrackTrigger("Trig3"); TrackTrigger Trig4 = cMyCoaster.getTrackTrigger("Trig4"); TrackTrigger Trig5 = cMyCoaster.getTrackTrigger("Trig5"); TrackTrigger Trig6 = cMyCoaster.getTrackTrigger("Trig6"); TrackTrigger Trig7 = cMyCoaster.getTrackTrigger("Trig7"); TrackTrigger Trig8 = cMyCoaster.getTrackTrigger("Trig8"); Trig1.addTrackTriggerListener(this); Trig2.addTrackTriggerListener(this); Trig3.addTrackTriggerListener(this); Trig4.addTrackTriggerListener(this); Trig5.addTrackTriggerListener(this); Trig6.addTrackTriggerListener(this); Trig7.addTrackTriggerListener(this); Trig8.addTrackTriggerListener(this); sSound = StaticSound.loadFromFile(sSoundFile, StaticSound.E_ENVMODE_GLOBAL); sSound.setPosition(new Vector3f(-263.0f, 12.0f, -207.35f)); sSound.setGain(10.0f); if(Trig1 == null) { System.err.println("Trigger not found"); return false; } if(sSound == null) { System.err.println("Sound file not found"); return false; } return true; } public void onTrainEntering(TrackTrigger trigger, Train train) { if (trigger == Trig1 || trigger == Trig2 || trigger == Trig3 || trigger == Trig4 || trigger == Trig5 || trigger == Trig6 || trigger == Trig7 || trigger == Trig8) { sSound.play(); } } public void onTrainLeaving(TrackTrigger trigger, Train train) { if (trigger == Trig1 || trigger == Trig2 || trigger == Trig3 || trigger == Trig4 || trigger == Trig5 || trigger == Trig6 || trigger == Trig7 || trigger == Trig8) { sSound.play(); } } } I just doesn't work. I get no errors, the script finds all the triggers, coaster and sound file fine, it just doesn't play the sounds in the game. Edit: Nevermind, I found a work around and got it working now. You do not need your if statements in the onTrainEntering and onTrainLeaving. The only time you would need those is if any trigger behaves differently from the others, but in your case they all do exactly the same thing. I also see you are only having onInit return false if it doesn't find one trigger, not all 8 that you have. Therefore, you don't actually know that the script is not finding the triggers, because onInit returns true even if Trig2 through Trig8 aren't there. A quick work-around that reduces a lot of lines is to implement an array. See below: import com.nolimitscoaster.*; import nlvm.math3d.*; public class Station extends Script implements TrackTriggerListener { StaticSound sSound; Coaster cMyCoaster; private TrackTrigger[] Trig = new TrackTrigger[8]; public bool onInit() { cMyCoaster = sim.getCoaster("Zeus"); for (i = 0; i < 8; i++) { Trig[i] = coaster.getTrackTrigger("Trig" + (i+1)); if (Trig[i] == null) { System.err.println("Trigger " + (i+1) + " not found"); return false; } } sSound = StaticSound.loadFromFile("StationClick.ogg", StaticSound.E_ENVMODE_GLOBAL); sSound.setPosition(new Vector3f(-263.0f, 12.0f, -207.35f)); sSound.setGain(10.0f); if(sSound == null) { System.err.println("Sound file not found"); return false; } return true; } public void onTrainEntering(TrackTrigger trigger, Train train) { sSound.play(); } public void onTrainLeaving(TrackTrigger trigger, Train train) { sSound.play(); } } Therefore, you have a 45 line code instead of an 80 line code. Also notice I removed sCoasterName and sSoundFile, because they are unnecessary and that just puts two extra objects in memory that don't need to be there and makes your code 2 lines longer. Link to comment Share on other sites More sharing options...
TronicBrain Posted January 9, 2015 Share Posted January 9, 2015 Hello everyone, Very happy to find such a place regarding NL game, I have just started discovering scripting in NL2 and still trying to do basic things but need a little push from you. For Example I tried to display the Train Speed by using Train.getSpeed() but I could not reach this till now this is my code which is not working import com.nolimitscoaster.*; import nlvm.math3d.*; import nlvm.lang.*; public class husam extends com.nolimitscoaster.Script { private SceneObject sco; private double myTrainspeed; Coaster MyCoaster; Train MyTrain; public bool OnInit() { MyCoaster = sim.getCoasterForEntityId(getParentEntityId()); if (MyCoaster = null) { return false;} MyCoaster = sim.getCoaster("Coaster1"); MyTrain = MyCoaster.getTrainAt(1); return True; } public void onNextFrame(float tick) { myspeed = Train1.getSpeed(); System.out.println(myspeed); } } Any Push would be appreciated Thanks Link to comment Share on other sites More sharing options...
coasterlover420 Posted January 9, 2015 Share Posted January 9, 2015 I changed some things here. I highlighted them with an arrow. import com.nolimitscoaster.*; import nlvm.math3d.*; import nlvm.lang.*; public class husam extends Script <--------------------- { private SceneObject sco; private double myTrainspeed; Coaster MyCoaster; Train MyTrain; public bool onInit() <------------------ { MyCoaster = sim.getCoasterForEntityId(getParentEntityId()); if (MyCoaster = null) { return false;} MyCoaster = sim.getCoaster("Coaster1"); MyTrain = MyCoaster.getTrainAt(0); <-------------------------- return True; } public void onNextFrame(float tick) { myTrainspeed = MyTrain.getSpeed(); <-------------------------- System.out.println(myTrainspeed); <---------------------------- } } Hope this helps. This code should work. Link to comment Share on other sites More sharing options...
TronicBrain Posted January 10, 2015 Share Posted January 10, 2015 Thank you very much for calcification, I could do many things now , my fault also was in Indexing the Train. One more question, How can I access TrackPos class, There is no object called TrackPos I tried to access its methods directly but had this error message MyTrackPosMat = TrackPos.getCenterRailsMatrix(); Trying to access a non static method from a static context: getCenterRailsMatrix ...1 error(s), 0 warning(s) Thanks Link to comment Share on other sites More sharing options...
Helix The Next Level Posted January 12, 2015 Share Posted January 12, 2015 I try and try but can´t paint my the ground. I just don´t understand. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now