Been messing about with this script a while now and I can't quite figure it out. Considering I've no idea what I'm doing, suggest whatever, but I'm specifically looking at or above the bold line. For the sake of keeping this short, I'm only posting from the start of the script to the end of my new section.
include "World.gs" //included this for world functions
include "Browser.gs" //included this for making browser elements
class trainorder isclass Industry
{
//standard scenery piece so im making this class MapObject
Soup mySoup;
int i;
//browser name
Browser info;
//operable animation values
float[] anim = new float[0];
//animation frame counts
float[] animFrame = new float[0];
//names of anims
int[] frame = GetMeshAnimationFrame();
Numbers[0] = 0;
Numbers[1] = 1;
Numbers[15] = 15;
Numbers[30] = 30;
string[] animName = new string[0];
bool AspectGreen = false;
bool AspectYellow = false;
bool AspectRed = true;
Asset m_coronaGreen, m_coronaYellow, m_coronaRed;
define int ASPECT_RED = 1;
define int ASPECT_YELLOW = 2;
define int ASPECT_GREEN = 3;
int m_signalAspects;
void ConfigureSignalAspects() {
switch (m_signalAspects) {
case ASPECT_GREEN:
AspectYellow = false;
AspectGreen = true;
AspectRed = false;
break;
case ASPECT_YELLOW:
AspectYellow = true;
AspectGreen = false;
AspectRed = false;
break;
case ASPECT_RED:
default:
AspectYellow = false;
AspectGreen = false;
AspectRed = true;
}
}
// ============================================================================
// Name: SigController
// Desc: Controls signal aspect
// ============================================================================
thread void SigController(void) {
if(frame = 1) {
SetFXCoronaTexture("light1", m_coronaRed);
SetFXCoronaTexture("light2", m_coronaRed);
}
else if(frame = 15) {
SetFXCoronaTexture("light1", m_coronaYellow);
SetFXCoronaTexture("light2", m_coronaYellow);
}
else if(frame = 30) {
SetFXCoronaTexture("light1", m_coronaGreen);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else {
SetFXCoronaTexture("light1", null);
SetFXCoronaTexture("light2", null);
}
}
I know SigController can/does run because when I originally set it up it was arranged differently, and it did select all the correct coronas. That part seems to be fine. The problem is I need to get them to change - the signal is up(red) at frame 1, halfway(yellow) at frame 15, and down(green) at frame 30. Accordingly I've tried to set up so the script will pick up the animation frame and select the appropriate coronas, being null at all points in between. Unfortunately I'm currently getting a parse error reported on the bold line. Any suggestions, either for what is causing the parse error or whether or not this script will achieve what I want it to?
Train Order Board aspect scripts.
Re: Train Order Board aspect scripts.
GetMeshAnimationFrame takes a parameter (the name of the mesh with the animation), right?
What are you trying to do with the script?
What are you trying to do with the script?
Re: Train Order Board aspect scripts.
The object of the script is that at frame 1 (signal up) the signal is red, at frame 15 (signal midway) the light displays yellow, and at frame 30 (signal down) the light displays green.
I don't think I gave a specific mesh for the script to check...that's probably it. Will mess about with it and see how it goes.
*edit*
Okay, here we go. I am now getting a parse error at (bold) line 85. Once again, no idea why...
include "World.gs" //included this for world functions
include "Browser.gs" //included this for making browser elements
class trainorder isclass Industry
{
//standard scenery piece so im making this class MapObject
Soup mySoup;
int i;
//browser name
Browser info;
//operable animation values
float[] anim = new float[0];
//animation frame counts
float[] animFrame = new float[0];
//names of anims
int[] down = GetMeshAnimationFrame("anim1");
int[] up = GetMeshAnimationFrame("anim2");
string[] animName = new string[0];
bool AspectGreen = false;
bool AspectYellow = false;
bool AspectRed = true;
Asset m_coronaGreen, m_coronaYellow, m_coronaRed;
define int ASPECT_RED = 1;
define int ASPECT_YELLOW = 2;
define int ASPECT_GREEN = 3;
int m_signalAspects;
void ConfigureSignalAspects() {
switch (m_signalAspects) {
case ASPECT_GREEN:
AspectYellow = false;
AspectGreen = true;
AspectRed = false;
break;
case ASPECT_YELLOW:
AspectYellow = true;
AspectGreen = false;
AspectRed = false;
break;
case ASPECT_RED:
default:
AspectYellow = false;
AspectGreen = false;
AspectRed = true;
}
}
// ============================================================================
// Name: SigController
// Desc: Controls signal aspect
// ============================================================================
thread void SigController(void) {
if(down = 1) and (up = 1) {
SetFXCoronaTexture("light1", m_coronaRed);
SetFXCoronaTexture("light2", m_coronaRed);
}
else if(down = 1) and (up = 15) {
SetFXCoronaTexture("light1", m_coronaRed);
SetFXCoronaTexture("light2", m_coronaYellow);
}
else if(down = 1) and (up = 30) {
SetFXCoronaTexture("light1", m_coronaRed);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else if(down = 15) and (up = 15) {
SetFXCoronaTexture("light1", m_coronaYellow);
SetFXCoronaTexture("light2", m_coronaYellow);
}
else if(down = 15) and (up = 1) {
SetFXCoronaTexture("light1", m_coronaYellow);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else if(down = 15) and (up = 30) {
SetFXCoronaTexture("light1", m_coronaYellow);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else if(down = 30) and (up = 30) {
SetFXCoronaTexture("light1", m_coronaGreen);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else if(down = 30) and (up = 1) {
SetFXCoronaTexture("light1", m_coronaGreen);
SetFXCoronaTexture("light2", m_coronaRed);
}
else if(down = 30) and (up = 15) {
SetFXCoronaTexture("light1", m_coronaGreen);
SetFXCoronaTexture("light2", m_coronaYellow);
}
else {
SetFXCoronaTexture("light1", null);
SetFXCoronaTexture("light2", null);
}
}
I don't think I gave a specific mesh for the script to check...that's probably it. Will mess about with it and see how it goes.
*edit*
Okay, here we go. I am now getting a parse error at (bold) line 85. Once again, no idea why...
include "World.gs" //included this for world functions
include "Browser.gs" //included this for making browser elements
class trainorder isclass Industry
{
//standard scenery piece so im making this class MapObject
Soup mySoup;
int i;
//browser name
Browser info;
//operable animation values
float[] anim = new float[0];
//animation frame counts
float[] animFrame = new float[0];
//names of anims
int[] down = GetMeshAnimationFrame("anim1");
int[] up = GetMeshAnimationFrame("anim2");
string[] animName = new string[0];
bool AspectGreen = false;
bool AspectYellow = false;
bool AspectRed = true;
Asset m_coronaGreen, m_coronaYellow, m_coronaRed;
define int ASPECT_RED = 1;
define int ASPECT_YELLOW = 2;
define int ASPECT_GREEN = 3;
int m_signalAspects;
void ConfigureSignalAspects() {
switch (m_signalAspects) {
case ASPECT_GREEN:
AspectYellow = false;
AspectGreen = true;
AspectRed = false;
break;
case ASPECT_YELLOW:
AspectYellow = true;
AspectGreen = false;
AspectRed = false;
break;
case ASPECT_RED:
default:
AspectYellow = false;
AspectGreen = false;
AspectRed = true;
}
}
// ============================================================================
// Name: SigController
// Desc: Controls signal aspect
// ============================================================================
thread void SigController(void) {
if(down = 1) and (up = 1) {
SetFXCoronaTexture("light1", m_coronaRed);
SetFXCoronaTexture("light2", m_coronaRed);
}
else if(down = 1) and (up = 15) {
SetFXCoronaTexture("light1", m_coronaRed);
SetFXCoronaTexture("light2", m_coronaYellow);
}
else if(down = 1) and (up = 30) {
SetFXCoronaTexture("light1", m_coronaRed);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else if(down = 15) and (up = 15) {
SetFXCoronaTexture("light1", m_coronaYellow);
SetFXCoronaTexture("light2", m_coronaYellow);
}
else if(down = 15) and (up = 1) {
SetFXCoronaTexture("light1", m_coronaYellow);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else if(down = 15) and (up = 30) {
SetFXCoronaTexture("light1", m_coronaYellow);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else if(down = 30) and (up = 30) {
SetFXCoronaTexture("light1", m_coronaGreen);
SetFXCoronaTexture("light2", m_coronaGreen);
}
else if(down = 30) and (up = 1) {
SetFXCoronaTexture("light1", m_coronaGreen);
SetFXCoronaTexture("light2", m_coronaRed);
}
else if(down = 30) and (up = 15) {
SetFXCoronaTexture("light1", m_coronaGreen);
SetFXCoronaTexture("light2", m_coronaYellow);
}
else {
SetFXCoronaTexture("light1", null);
SetFXCoronaTexture("light2", null);
}
}
Re: Train Order Board aspect scripts.
It almost seems like you might want to use an event file and listen for those messages ( http://online.ts2009.com/mediaWiki/inde ... nt_Message )?
Re: Train Order Board aspect scripts.
I actually figured out an alternate solution, one which does not use coronas at all.
With a lighted texture behind it, the transparent signal aspect actually functions perfectly:
I like the look of them, although the aspect doesn't have the same nice high-visibility offered by most coronas. Still, most train order boards in Trainz don't have lighting at all, and this at least looks good with night mode...
With a lighted texture behind it, the transparent signal aspect actually functions perfectly:
I like the look of them, although the aspect doesn't have the same nice high-visibility offered by most coronas. Still, most train order boards in Trainz don't have lighting at all, and this at least looks good with night mode...
Re: Train Order Board aspect scripts.
That looks great trainboi1!
Re: Train Order Board aspect scripts.
Yes, it does - nice job!
You could always try lod'ing the light, using a larger light mesh as you get farther away.....
You could always try lod'ing the light, using a larger light mesh as you get farther away.....
-
- Posts: 23
- Joined: Sun Mar 01, 2015 3:03 pm
Re: Train Order Board aspect scripts.
Nice depot you got there Trainboi! Is that a Southern Pacific Standard type? Reminds me of the depot at Lone Pine...
Re: Train Order Board aspect scripts.
It's a standard type CS-22. Lone Pine was one of the type, with hipped roofs, an extended first-floor waiting room, and an extended freight depot.