<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.trainzsimulator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Christopher824</id>
	<title>TrainzOnline - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.trainzsimulator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Christopher824"/>
	<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/wiki/Special:Contributions/Christopher824"/>
	<updated>2026-11-05T04:33:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=39316</id>
		<title>Grade Crossing XING BNSF50 CDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=39316"/>
		<updated>2023-11-16T22:10:30Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Updated originals by BNSF50&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Restored and/or replace bell to restore and/or reduce clicking sound. All assets updated to build 3.5 and available through the DLS. The NRC or &#039;no road crossing&#039; and ATWS or &#039;advanced train warning system&#039; are designed to work with boat&#039;s ATLS and the TRC system. Scripts updated to new TANE SP2 standards replacing obsolete function calls and tested in TRS19 and TRS22.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminology&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 2L     2 Lane Road&lt;br /&gt;
 2T     2 Tracks&lt;br /&gt;
 315    Opposite of 45 degrees&lt;br /&gt;
 45     45 degrees&lt;br /&gt;
 90     90 degrees&lt;br /&gt;
 ATLS   Advanced Traffic Light System&lt;br /&gt;
 ATWS   Advanced Train Warning System&lt;br /&gt;
 CA     Canada&lt;br /&gt;
 FEC    Florida East Coast&lt;br /&gt;
 Inc.   Incandesent&lt;br /&gt;
 LED    Light Emitting Diode&lt;br /&gt;
 NRC    No Road Crossing&lt;br /&gt;
 OH     Overhead&lt;br /&gt;
 Ped    Pedestrian&lt;br /&gt;
 TRC    Trigger Rail Crossing&lt;br /&gt;
 US     United States&lt;br /&gt;
 WSL    With Side Lights&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;To find these easily, seach &#039;CDE XING&#039; in your Content Manager or Surveyor&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
For the complete list of BNSF50 XING&#039;s CDE has repaired, follow the following link;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://cdetrainz.com/tutorials_grade_xing.aspx Grade XING Crossings and ATLS compatible NRC&#039;s]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Note from Clem aka BNSF50;&lt;br /&gt;
A special thanks to the following Trainz members for contributing to the working script&#039;s of these crossings, Fwassner, MartinVK, Phil Cambell and Andi06. Without their help, these crossings would not be animated. Also thank&#039;s to the many Trainz members who input praise, help and constructive critisism on the forum which enabled me to refine the crossings to what they are now. Please read the instructions located in the main folder for details on added features.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_GameObject&amp;diff=39058</id>
		<title>Class GameObject</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_GameObject&amp;diff=39058"/>
		<updated>2023-10-10T21:17:28Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* GetId */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]]&lt;br /&gt;
***GameObject&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*GameObject is the base class for any object that requires messaging and threading support. &lt;br /&gt;
*GameObjects are placed in the game&#039;s object table, known as the Router. &lt;br /&gt;
*You cannot create a GameObject using &#039;&#039;new()&#039;&#039; from a script, all game objects are created by the game. &lt;br /&gt;
*Each game object has a unique ID (see [[#GetId|GetId()]]) and many also have a name. &lt;br /&gt;
*GameObject instances are often referred to as a &#039;&#039;node&#039;&#039; because they represent a message node in the Router. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==AddHandler==&lt;br /&gt;
{{MethodHeader|public native void AddHandler(GameObject target, string major, string minor, string Handler)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;target&#039;&#039;&#039; = Object to add the message handler to. This is usually &#039;&#039;me&#039;&#039; but can be any &#039;&#039;GameObject&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to listen for.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to listen for. If this paremeter is null or an empty string then all messages that match the &#039;&#039;major&#039;&#039; parameter will be sent to the handler.&lt;br /&gt;
*&#039;&#039;&#039;Handler&#039;&#039;&#039; Name of the message handler method to call. This must have a prototype in of the form &#039;&#039;void MessageHandler(Message msg)&#039;&#039;&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 AddHandler(me,&amp;quot;Object&amp;quot;,&amp;quot;Enter&amp;quot;,&amp;quot;ObjectHandler&amp;quot;);&lt;br /&gt;
 AddHandler(me,&amp;quot;Object&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;ObjectHandler&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Adds a message handler to the current class such that it will be called whenever the target GameObject receives a matching message.&lt;br /&gt;
*Message handlers called by this means are not threaded and will be executed immediately.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ClearMessages==&lt;br /&gt;
{{MethodHeader|public native void ClearMessages(string major, string minor)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to listen for.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to listen for.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 ClearMessages(&amp;quot;Object&amp;quot;,&amp;quot;Enter&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Clears any outstanding messages of the specified major and minor types that have been sent via calls to [[#PostMessage|PostMessage()]] and have not yet been processed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exception==&lt;br /&gt;
{{MethodHeader|public native void Exception(string reason)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;reason&#039;&#039;&#039; = Explanatory text to add to the message box.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Exception(&amp;quot;Fatal Error&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Raises an Exception on the current thread and prints out the contents of the &#039;&#039;reason&#039;&#039; parameter followed by a stack dump.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetId==&lt;br /&gt;
{{MethodHeader|public native int GetId(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The GameObject ID, an integer value which the Router uses to identify the current object.&lt;br /&gt;
;Syntax&lt;br /&gt;
 int ID = GetId();&lt;br /&gt;
;Notes&lt;br /&gt;
*The ID is unique to the current session.&lt;br /&gt;
&#039;&#039;&#039;This method is now obsolete. Replace GetId() with GetGameObjectID()&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetName==&lt;br /&gt;
{{MethodHeader|public native string GetName(void)&#039;&#039;&#039;}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The name of the current object if it has one, an empty string otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 string MyName = GetName();&lt;br /&gt;
;Notes&lt;br /&gt;
*The name returned is the text string that is shown at the top of the property object browser for the object concerned.&lt;br /&gt;
*If the name has been assigned by the game this will be the asset&#039;s username followed by a serial number.&lt;br /&gt;
*The string returned by this method is not guaranteed to be unique although TRS will issue prompts requesting confirmation in situations where duplication of names is about to occur.&lt;br /&gt;
*The name persists from session to session.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PostMessage==&lt;br /&gt;
{{MethodHeader|public native void PostMessage(GameObject dest, string major, string minor, float seconds)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;dest&#039;&#039;&#039; = Destination object for the message. If this is null the message will be broadcast.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to be sent. &lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to be sent.&lt;br /&gt;
*&#039;&#039;&#039;seconds&#039;&#039;&#039; = Delay in seconds before the message is posted. If this is zero the message will be posted immediately.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 PostMessage(me,&amp;quot;Timer&amp;quot;,&amp;quot;Tick&amp;quot;,10.0); &lt;br /&gt;
 PostMessage(null,&amp;quot;Browser-URL&amp;quot;,&amp;quot;live://next&amp;quot;,0.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Messages sent via this method are processed by the Router in the next game update after they become due.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SendMessage==&lt;br /&gt;
{{MethodHeader|public native void SendMessage(GameObject dest, string major, string minor)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;dest&#039;&#039;&#039; = Destination object for the message. If this is null the message will be broadcast.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to be sent. &lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to be sent.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SendMessage(train,&amp;quot;Object&amp;quot;,&amp;quot;Enter&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Sends a message to the destination object for immediate processing.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sleep==&lt;br /&gt;
{{MethodHeader|public native void Sleep(float seconds)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;seconds&#039;&#039;&#039; = Time to wait in seconds.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Sleep(10.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Causes the current thread to pause for the specified period of time.&lt;br /&gt;
*Warning! Sleep(World.PlaySound(...)) should no longer be used, as PlaySound does not return the file duration anymore!&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sniff==&lt;br /&gt;
{{MethodHeader|public native void Sniff(GameObject target, string major, string minor, bool state)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;target&#039;&#039;&#039; = Game Object to which the handler will be attached.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to listen for.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to listen for. If this parameter is null or an empty string then all messages matching the &#039;&#039;major&#039;&#039; parameter will be processed.&lt;br /&gt;
*&#039;&#039;&#039;state&#039;&#039;&#039; = Boolean flag to set whether or not the handler is currently active.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Sniff(train,&amp;quot;Object&amp;quot;,&amp;quot;Enter&amp;quot;,true);&lt;br /&gt;
;Notes&lt;br /&gt;
*Attaches a message handler to another object allowing the current script to listen in on the specified messages.&lt;br /&gt;
*Messages of the specified type received by the target object will be copied to the current script.&lt;br /&gt;
*The current script will usually need a separate handler to process these messages and will normally need to check the identity of the message source.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Code Examples==&lt;br /&gt;
Script calls made during the Init() method of an object can never be certain that other objects within the map have already been initialised. In cases where initialisation depends on the existence of other objects [[#PostMessage|PostMessage()]] can be used to delay part or all of the startup.  Messages sent in this way are never processed until the next game update and this does not occur until all objects have been initialised.&lt;br /&gt;
 public void Init(void)&lt;br /&gt;
 {&lt;br /&gt;
    inherited();&lt;br /&gt;
    SetupTasks();&lt;br /&gt;
    AddHandler(me,&amp;quot;Setup&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;SetupHandler&amp;quot;);&lt;br /&gt;
    PostMessage(me,&amp;quot;Setup&amp;quot;,&amp;quot;&amp;quot;,0.0);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void SetupHandler(Message msg)&lt;br /&gt;
 {&lt;br /&gt;
    if (msg.src == me)&lt;br /&gt;
    {&lt;br /&gt;
       MoreSetupTasks();&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class Router#GetGameObject|Router.GetGameObject()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class Router#PostMessage|Router.PostMessage()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[TrainzScript Message Reference]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_SceneryWithTrack&amp;diff=39056</id>
		<title>Class SceneryWithTrack</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_SceneryWithTrack&amp;diff=39056"/>
		<updated>2023-10-10T21:13:52Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* FindTriggerContainingNode */ GetId is now obsolete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******SceneryWithTrack&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Parent class for scenery objects that have attached track and attached trigger support, such as industries and crossings.&lt;br /&gt;
*Where triggers are covered within this document these are attached scenery triggers, as defined in the asset&#039;s &#039;&#039;attached-trigger&#039;&#039; table, and should not be confused with Trackside [[Class Trigger|Triggers]].&lt;br /&gt;
*Attached scenery triggers and their attributes (name, radius, track) are defined as part of the asset&#039;s configuration and cannot be altered or moved in Surveyor.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from SceneryWithTrack objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|SceneryTrigger]]||Enter||SceneryWithTrack||Vehicle&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|SceneryTrigger]]||InnerEnter||SceneryWithTrack||Vehicle&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|SceneryTrigger]]||Stopped||SceneryWithTrack||Vehicle&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|SceneryTrigger]]||InnerLeave||SceneryWithTrack||Vehicle&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|SceneryTrigger]]||Leave||SceneryWithTrack||Vehicle&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Vehicle||SceneryWithTrack&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Vehicle||SceneryWithTrack&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Vehicle||SceneryWithTrack&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Vehicle||SceneryWithTrack&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Vehicle||SceneryWithTrack&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Embedded [[Class JunctionBase|JunctionBase]] objects issue their own messages in addition to those sent to and from the parent SceneryWithTrack object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FindTriggerContainingNode==&lt;br /&gt;
{{MethodHeader|public native string FindTriggerContainingNode(GameObjectID node, bool onlyInner)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = The GameObjectID of a vehicle, usually obtained by a call to [[Class GameObject#GetId|GetId ()]].&lt;br /&gt;
*&#039;&#039;&#039;onlyInner&#039;&#039;&#039; = If true only the inner radius of the trigger will be tested, if false the the trigger name will be returned if the vehicle is within 150 metres of the trigger. &amp;lt;font color=red&amp;gt;which trigger is returned if more than one meets this test?&amp;lt;/font&amp;gt;&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The name of the scenery trigger found, an empty string otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 string trigger = FindTriggerContainingNode(vehicle.GetGameObjectID(),true);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method returns the name of the attached scenery trigger within which the specified vehicle is currently located.&lt;br /&gt;
*int GetID() is now obsolete&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetAttachedJunctions==&lt;br /&gt;
{{MethodHeader|public native JunctionBase[ ] GetAttachedJunctions(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of any attached [[Class JunctionBase|JunctionBase]] objects included within this object, null if there are no such attachments.&lt;br /&gt;
;Syntax&lt;br /&gt;
 JunctionBase[] nodes = GetAttachedJunctions();&lt;br /&gt;
;Notes&lt;br /&gt;
*JunctionBase arrays are only returned for objects set up as fixed track junctions.&lt;br /&gt;
*The array contains the JunctionBases listed in the &#039;&#039;junction-vertices&#039;&#039; container in &#039;&#039;config.txt&#039;&#039;.&lt;br /&gt;
*The size of the array and the ordering of the individual components will match the number and sequence of the subcontainers within the &#039;&#039;junction-vertices&#039;&#039; table.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetAttachedTrack==&lt;br /&gt;
{{MethodHeader|public native Track GetAttachedTrack(string trackName)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;trackName&#039;&#039;&#039; = The named track section as defined in the &#039;&#039;attached-track&#039;&#039; table in &#039;&#039;config.txt&#039;&#039;.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to a [[Class Track|Track]] object if it exists, a script exception will occur otherwise.&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Wouldn&#039;t null be more polite than an exception?&amp;lt;/font&amp;gt;&lt;br /&gt;
;Syntax&lt;br /&gt;
 Track track = GetAttachedTrack(&amp;quot;track01&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetTriggerTrack==&lt;br /&gt;
{{MethodHeader|public native Track GetTriggerTrack(string triggerName)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;triggerName&#039;&#039;&#039; = A trigger name as defined in the &#039;&#039;attached-trigger&#039;&#039; container in &#039;&#039;config.txt&#039;&#039;.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to a [[Class Track|Track]] object if it exists, a script exception will occur otherwise.&lt;br /&gt;
&amp;lt;font color=red&amp;gt;Wouldn&#039;t null be more polite than an exception?&amp;lt;/font&amp;gt;&lt;br /&gt;
;Syntax&lt;br /&gt;
 Track track = GetTriggerTrack(&amp;quot;trigger01&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*The track returned is as sepcified in the &#039;&#039;track&#039;&#039; tag of the &#039;&#039;attached-trigger&#039;&#039; table in &#039;&#039;config.txt&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==InnerReEnter==&lt;br /&gt;
{{MethodHeader|public native bool InnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of a vehicle to be re-entered into inner trigger radius.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the vehicle is within the inner trigger radius and the message has been sent, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 InnerReEnter(vehicle.GetId());&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Object,InnerEnter&#039;&#039; message to be sent from the vehicle to the SceneryWithTrack object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==InnerReEnterTrain==&lt;br /&gt;
{{MethodHeader|public void InnerReEnterTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A train reference, InnerReEnter will be called on all the vehicles in the train. &lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 InnerReEnterTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*Messages are only issued in respect of vehicles actually within the inner trigger at the time of the call?&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IsTrainInTriggers==&lt;br /&gt;
{{MethodHeader|public native bool IsTrainInTriggers(Train train, bool onlyInner}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to the train to look for.&lt;br /&gt;
*&#039;&#039;&#039;onlyInner&#039;&#039;&#039; = If true only the inner radius of the trigger will be tested, if false the the radius tested will be the default 150 metres.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if any part of the specified train is within the trigger radius, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 bool trainFound = IsTrainInTriggers(train,true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ReEnter==&lt;br /&gt;
{{MethodHeader|public native bool ReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of a vehicle to be re-entered into default 150 metre trigger radius.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the vehicle is within the 150 metre trigger radius and the message has been sent, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 ReEnter(vehicle.GetId());&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Object,Enter&#039;&#039; message to be sent from the vehicle to the SceneryWithTrack object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Code Examples==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class Industry#HasTrack|Industry.HasTrack()]]&lt;br /&gt;
&lt;br /&gt;
[[Class JunctionBase#GetMapObject|JunctionBase.GetMapObject()]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_GameObject&amp;diff=39054</id>
		<title>Class GameObject</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_GameObject&amp;diff=39054"/>
		<updated>2023-10-10T21:05:40Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* GetId */  Obsolete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]]&lt;br /&gt;
***GameObject&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*GameObject is the base class for any object that requires messaging and threading support. &lt;br /&gt;
*GameObjects are placed in the game&#039;s object table, known as the Router. &lt;br /&gt;
*You cannot create a GameObject using &#039;&#039;new()&#039;&#039; from a script, all game objects are created by the game. &lt;br /&gt;
*Each game object has a unique ID (see [[#GetId|GetId()]]) and many also have a name. &lt;br /&gt;
*GameObject instances are often referred to as a &#039;&#039;node&#039;&#039; because they represent a message node in the Router. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==AddHandler==&lt;br /&gt;
{{MethodHeader|public native void AddHandler(GameObject target, string major, string minor, string Handler)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;target&#039;&#039;&#039; = Object to add the message handler to. This is usually &#039;&#039;me&#039;&#039; but can be any &#039;&#039;GameObject&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to listen for.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to listen for. If this paremeter is null or an empty string then all messages that match the &#039;&#039;major&#039;&#039; parameter will be sent to the handler.&lt;br /&gt;
*&#039;&#039;&#039;Handler&#039;&#039;&#039; Name of the message handler method to call. This must have a prototype in of the form &#039;&#039;void MessageHandler(Message msg)&#039;&#039;&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 AddHandler(me,&amp;quot;Object&amp;quot;,&amp;quot;Enter&amp;quot;,&amp;quot;ObjectHandler&amp;quot;);&lt;br /&gt;
 AddHandler(me,&amp;quot;Object&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;ObjectHandler&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Adds a message handler to the current class such that it will be called whenever the target GameObject receives a matching message.&lt;br /&gt;
*Message handlers called by this means are not threaded and will be executed immediately.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ClearMessages==&lt;br /&gt;
{{MethodHeader|public native void ClearMessages(string major, string minor)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to listen for.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to listen for.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 ClearMessages(&amp;quot;Object&amp;quot;,&amp;quot;Enter&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Clears any outstanding messages of the specified major and minor types that have been sent via calls to [[#PostMessage|PostMessage()]] and have not yet been processed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exception==&lt;br /&gt;
{{MethodHeader|public native void Exception(string reason)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;reason&#039;&#039;&#039; = Explanatory text to add to the message box.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Exception(&amp;quot;Fatal Error&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Raises an Exception on the current thread and prints out the contents of the &#039;&#039;reason&#039;&#039; parameter followed by a stack dump.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetId==&lt;br /&gt;
{{MethodHeader|public native int GetId(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The GameObject ID, an integer value which the Router uses to identify the current object.&lt;br /&gt;
;Syntax&lt;br /&gt;
 int ID = GetId();&lt;br /&gt;
;Notes&lt;br /&gt;
*The ID is unique to the current session.&lt;br /&gt;
&#039;&#039;&#039;This method is now obsolete. Replace GetID() with GetGameObjectID() instead&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetName==&lt;br /&gt;
{{MethodHeader|public native string GetName(void)&#039;&#039;&#039;}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The name of the current object if it has one, an empty string otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 string MyName = GetName();&lt;br /&gt;
;Notes&lt;br /&gt;
*The name returned is the text string that is shown at the top of the property object browser for the object concerned.&lt;br /&gt;
*If the name has been assigned by the game this will be the asset&#039;s username followed by a serial number.&lt;br /&gt;
*The string returned by this method is not guaranteed to be unique although TRS will issue prompts requesting confirmation in situations where duplication of names is about to occur.&lt;br /&gt;
*The name persists from session to session.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PostMessage==&lt;br /&gt;
{{MethodHeader|public native void PostMessage(GameObject dest, string major, string minor, float seconds)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;dest&#039;&#039;&#039; = Destination object for the message. If this is null the message will be broadcast.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to be sent. &lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to be sent.&lt;br /&gt;
*&#039;&#039;&#039;seconds&#039;&#039;&#039; = Delay in seconds before the message is posted. If this is zero the message will be posted immediately.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 PostMessage(me,&amp;quot;Timer&amp;quot;,&amp;quot;Tick&amp;quot;,10.0); &lt;br /&gt;
 PostMessage(null,&amp;quot;Browser-URL&amp;quot;,&amp;quot;live://next&amp;quot;,0.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Messages sent via this method are processed by the Router in the next game update after they become due.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SendMessage==&lt;br /&gt;
{{MethodHeader|public native void SendMessage(GameObject dest, string major, string minor)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;dest&#039;&#039;&#039; = Destination object for the message. If this is null the message will be broadcast.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to be sent. &lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to be sent.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SendMessage(train,&amp;quot;Object&amp;quot;,&amp;quot;Enter&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Sends a message to the destination object for immediate processing.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sleep==&lt;br /&gt;
{{MethodHeader|public native void Sleep(float seconds)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;seconds&#039;&#039;&#039; = Time to wait in seconds.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Sleep(10.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Causes the current thread to pause for the specified period of time.&lt;br /&gt;
*Warning! Sleep(World.PlaySound(...)) should no longer be used, as PlaySound does not return the file duration anymore!&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sniff==&lt;br /&gt;
{{MethodHeader|public native void Sniff(GameObject target, string major, string minor, bool state)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;target&#039;&#039;&#039; = Game Object to which the handler will be attached.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;major&#039;&#039;]] to listen for.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = [[List of Standard Messages|Message &#039;&#039;minor&#039;&#039;]] to listen for. If this parameter is null or an empty string then all messages matching the &#039;&#039;major&#039;&#039; parameter will be processed.&lt;br /&gt;
*&#039;&#039;&#039;state&#039;&#039;&#039; = Boolean flag to set whether or not the handler is currently active.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Sniff(train,&amp;quot;Object&amp;quot;,&amp;quot;Enter&amp;quot;,true);&lt;br /&gt;
;Notes&lt;br /&gt;
*Attaches a message handler to another object allowing the current script to listen in on the specified messages.&lt;br /&gt;
*Messages of the specified type received by the target object will be copied to the current script.&lt;br /&gt;
*The current script will usually need a separate handler to process these messages and will normally need to check the identity of the message source.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Code Examples==&lt;br /&gt;
Script calls made during the Init() method of an object can never be certain that other objects within the map have already been initialised. In cases where initialisation depends on the existence of other objects [[#PostMessage|PostMessage()]] can be used to delay part or all of the startup.  Messages sent in this way are never processed until the next game update and this does not occur until all objects have been initialised.&lt;br /&gt;
 public void Init(void)&lt;br /&gt;
 {&lt;br /&gt;
    inherited();&lt;br /&gt;
    SetupTasks();&lt;br /&gt;
    AddHandler(me,&amp;quot;Setup&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;SetupHandler&amp;quot;);&lt;br /&gt;
    PostMessage(me,&amp;quot;Setup&amp;quot;,&amp;quot;&amp;quot;,0.0);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void SetupHandler(Message msg)&lt;br /&gt;
 {&lt;br /&gt;
    if (msg.src == me)&lt;br /&gt;
    {&lt;br /&gt;
       MoreSetupTasks();&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class Router#GetGameObject|Router.GetGameObject()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class Router#PostMessage|Router.PostMessage()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[TrainzScript Message Reference]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Category-class&amp;diff=38952</id>
		<title>Category-class</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Category-class&amp;diff=38952"/>
		<updated>2023-09-30T13:25:56Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* Class Y: MAPS &amp;amp; SCENARIOS */  added YA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ORP-top}}&lt;br /&gt;
==Category-class Tags==&lt;br /&gt;
The &#039;&#039;&#039;&amp;quot;category-class&amp;quot; tag&#039;&#039;&#039; of the [[KIND_TrainzBaseSpec|TrainzBaseSpec]] is the &#039;&#039;key searching parameter&#039;&#039; defining what or how the human content creator meant for the new asset &#039;&#039;to be used and thought about.&#039;&#039; This should not be confused with the [[Category List]], which is a related but distinct topic.&lt;br /&gt;
{{UserTip|width=50%|This is a sometimes nebulous and confusing parameter requiring a new user to develop a degree of mental agility, for example, &#039;&#039;&#039;a &#039;house&#039; asset&#039;&#039;&#039; might be classified (Coded by some asset creator) as scenery, building, industry, or even  something as wildly inappropriate as &#039;fauna&#039;.}}&lt;br /&gt;
&lt;br /&gt;
The [[KIND]] specification defines which other ({{wp|data type}}) entries&#039;&#039; are needed&#039;&#039; in that particular asset&#039;s config.txt file. It is the entry which defines the asset&#039;s  type, scope, and needs and the very important parameter that tells TRAINZ how to process and render the specific asset item correctly, error check against the standard for the category-class, and render it into {{wp|Three-dimensional space|3D graphics}} models. &lt;br /&gt;
&lt;br /&gt;
Each Trainz asset&#039;s category-class tag helps describe the &#039;intent&#039; of the Asset in the game, as opposed to the internal structure of the Asset. The Content Creators&#039; Guide for Trainz Classics said these classes represent a standardized system for referring to the various types of Locos, Rolling stock, Scenery, Spline and Industry assets.  The Category-class classification codes become important to all Trainzers when searching and/or filtering for suitable assets to make into content in a session or route (layout).&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;font color=&amp;quot;blue&amp;quot; size=&amp;quot;-1&amp;quot;&amp;gt;Trainz Base Specification &lt;br /&gt;
:(all config.txt files can contain all these entries){{TBS}}&lt;br /&gt;
::&#039;&#039;&#039;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Figure: 1 TrainzBaseSpec for quick reference&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Category-class code notes==&lt;br /&gt;
New users should be aware that these codes listed below are not the direct ContentManager.exe category sort by classifications as a simple comparison of lists will reveal, but they do affect what is displayed within such a sort filter selection. &lt;br /&gt;
:For example: Set a search filter for &#039;&#039;&#039;&#039;&#039;&#039;Location&amp;gt;Local + Category&amp;gt;Flora&#039;&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
: In the base installed content of TRS2006-SP0 this search will yield diverse assets such as the set of  {&#039;&#039;&#039;Flora&#039;&#039;&#039; types: SOME few trees, Betonbridge (1,2,&amp;amp;3 tracks), crop splines, sidewalks, road types} &lt;br /&gt;
:but the sort will also list a much larger type group, the set of {Scenery: retaining wall splines (Arkaden...), LOADS of trees and Shrubs including Laubbaum with birds (and sound), grasses (textures?), Logs} and so forth. &lt;br /&gt;
In that search you will also find electrified railroad centenary parts and the occasional animal. The result of such a search will be no better in new Trainz versions, which means the new Trainzer needs to cultivate a certain mental agility when searching for suitable content. No one has the man-power, deep pockets, nor copyright authority to systematically fix such foibles. You as a user, can clone such items and change the classification to something more sensible to yourself. That however, is not an asset you can upload to the Download Station without a copyright clearance from the original asset creator. The Trainz community is severe in policing copyrights violations! &lt;br /&gt;
{{TrainzTip|These codes when applied by the content creator were in many cases cut and pasted into a new similar asset, in others, the way he or she was using the asset in their current project. In short, they are not definitive, but are indicative... even if it is only of the mental state of the creator at the time of donation to the DLS, or as happens in many cases, a case of translation from a native tounge with a different way of thinking than that of English.}} Rejoice in the positive, they are essentially free and cost you nothing but a bit of puzzlement. Free is good! Having them is better.&lt;br /&gt;
 &lt;br /&gt;
==The Category Classes are:==&lt;br /&gt;
 Class &amp;quot;A&amp;quot;        Motive Power&lt;br /&gt;
 Class &amp;quot;B&amp;quot;        Buildings and Structures&lt;br /&gt;
 Class &amp;quot;C&amp;quot;        Cabeese&lt;br /&gt;
 Class &amp;quot;D&amp;quot;        Defence&lt;br /&gt;
 Class &amp;quot;E&amp;quot;        Environment&lt;br /&gt;
 Class &amp;quot;F&amp;quot;        Foliage&lt;br /&gt;
 Class &amp;quot;G&amp;quot;        Ground&lt;br /&gt;
 Class &amp;quot;H&amp;quot;        Mesh&lt;br /&gt;
 Class &amp;quot;I&amp;quot;        Product&lt;br /&gt;
 Class &amp;quot;J&amp;quot;        Texture&lt;br /&gt;
 Class &amp;quot;L&amp;quot;        Light Rail &amp;amp; Monorail&lt;br /&gt;
 Class &amp;quot;M&amp;quot;        Maintenance Of Way&lt;br /&gt;
 Class &amp;quot;O&amp;quot;        Organism&lt;br /&gt;
 Class &amp;quot;P&amp;quot;        Passenger &amp;amp; Mail Cars&lt;br /&gt;
 Class &amp;quot;R&amp;quot;        Railcars &amp;amp; Multiple Unit Sets&lt;br /&gt;
 Class &amp;quot;S&amp;quot;        Splines&lt;br /&gt;
 Class &amp;quot;T&amp;quot;        Track&lt;br /&gt;
 Class &amp;quot;V&amp;quot;        Vehicles&lt;br /&gt;
 Class &amp;quot;W&amp;quot;        Wayside&lt;br /&gt;
 Class &amp;quot;X&amp;quot;        Freight Cars&lt;br /&gt;
 Class &amp;quot;Y&amp;quot;        Maps and Scenarios&lt;br /&gt;
 Class &amp;quot;Z&amp;quot;        Train Parts&lt;br /&gt;
::&amp;lt;font color=&amp;quot;blue&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;lt;u&amp;gt;Figure 02: Base category-class prefixes&amp;lt;/u&amp;gt;&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each Category Class may have a number of subcategories as listed below. Please choose the most appropriate Category Class for your item. Select the Class from the [[Content Creator Plus]] drop down menu box - only one class may be selected for an asset.&lt;br /&gt;
&lt;br /&gt;
Selecting a correct Category Class is important since Trainz will allow users to use the Category Class as a sort and selection criteria.&lt;br /&gt;
&lt;br /&gt;
{|&amp;lt;!-- careful, table --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;!-- careful, table --&amp;gt;&lt;br /&gt;
===Class A: MOTIVE POWER===&lt;br /&gt;
*AA Electric Multi-current&lt;br /&gt;
*AC AC Electric&lt;br /&gt;
*AD DC Electric&lt;br /&gt;
*AE Experimental or Special&lt;br /&gt;
*AG Gas Turbine&lt;br /&gt;
*AH Diesel Hydraulic&lt;br /&gt;
*AL Diesel &amp;amp; Diesel Electric&lt;br /&gt;
*AM Mammal&lt;br /&gt;
*AS Steam Loco &amp;amp; Tender&lt;br /&gt;
*AT Steam Tank&lt;br /&gt;
&lt;br /&gt;
===Class B: BUILDINGS &amp;amp; STRUCTURES===&lt;br /&gt;
*BB Buildable (Kind Buildable)&lt;br /&gt;
*BC Commercial (scenery non-functional)&lt;br /&gt;
*BI Industrial (scenery non-functional)&lt;br /&gt;
**BIN Industry asset with product processing functionality&lt;br /&gt;
*BH Home &amp;amp; Residential (scenery non-functional)&lt;br /&gt;
*&#039;&#039;Subclass BP: Passenger Station&#039;&#039;&lt;br /&gt;
**BPF Passenger Station with passenger processing functionality&lt;br /&gt;
**BPN Passenger Station (non-functional)&lt;br /&gt;
*BR Railway (scenery non-functional)&lt;br /&gt;
*BS Special (e.g. military) (scenery non-functional)&lt;br /&gt;
*BT Traffic &amp;amp; Streetscape (scenery non-functional)&lt;br /&gt;
*BU Utility (incl. Civil buildings) (scenery non-functional)&lt;br /&gt;
&lt;br /&gt;
===Class C: CABEESE / CONSIST / EFFECTS===&lt;br /&gt;
*CB Brake van&lt;br /&gt;
*CC Caboose&lt;br /&gt;
*CLUT Clutter Effect&lt;br /&gt;
*CN Consist&lt;br /&gt;
*CS ControlSet&lt;br /&gt;
&lt;br /&gt;
===Class D: DEFENCE===&lt;br /&gt;
*DA Military motive power&lt;br /&gt;
*DE Military experimental &amp;amp; special vehicles&lt;br /&gt;
*DP Military equipment - lab &amp;amp; personnel vehicles&lt;br /&gt;
*DX Military equipment - freight&lt;br /&gt;
&lt;br /&gt;
===Class E: ENVIRONMENT===&lt;br /&gt;
*ES Sky&lt;br /&gt;
*EW Water&lt;br /&gt;
&lt;br /&gt;
===Class F: FOLIAGE===&lt;br /&gt;
*FC Cactii&lt;br /&gt;
*FF Flowers&lt;br /&gt;
*FO Orchards &amp;amp; Crops&lt;br /&gt;
*FS Shrub&lt;br /&gt;
*FT Trees&lt;br /&gt;
&lt;br /&gt;
===Class G: GROUND===&lt;br /&gt;
*GA Arid&lt;br /&gt;
*GL Lush&lt;br /&gt;
*GS Seasonal&lt;br /&gt;
&lt;br /&gt;
===Class H: MESHES===&lt;br /&gt;
*HM Mesh&lt;br /&gt;
&lt;br /&gt;
===Class I: PRODUCT===&lt;br /&gt;
*IC Container Category&lt;br /&gt;
*IP Passenger Category&lt;br /&gt;
*IB Bulkload Category&lt;br /&gt;
*IL Liquid Category&lt;br /&gt;
&lt;br /&gt;
===Class J: TEXTURES===&lt;br /&gt;
*JC Corona&lt;br /&gt;
*JI Icon&lt;br /&gt;
*JP Particle Effects Texture&lt;br /&gt;
*JO Other Texture&lt;br /&gt;
&lt;br /&gt;
===Class L: LIGHT RAIL &amp;amp; MONORAIL===&lt;br /&gt;
*LS Articulated train sets&lt;br /&gt;
*LT Trolleys, trams &amp;amp; streetcars&lt;br /&gt;
*LM Monorail vehicles&lt;br /&gt;
&lt;br /&gt;
===Class M: MAINTENANCE of WAY===&lt;br /&gt;
*MA Camp vehicles&lt;br /&gt;
*MB Ballast cars&lt;br /&gt;
*MC Cranes/lifting&lt;br /&gt;
*MD Diagnostic vehicles (e.g. dynamometer)&lt;br /&gt;
*ME Instructional vehicles&lt;br /&gt;
*MF Fire vehicles&lt;br /&gt;
*MI Inspection vehicles&lt;br /&gt;
*MT Track vehicles (e.g. tamper)&lt;br /&gt;
*MP Snow ploughs&lt;br /&gt;
*MS Section cars (e.g. fairmont)&lt;br /&gt;
*MX Freight equipment (for MoW traffic)&lt;br /&gt;
*MW Weed spray&lt;br /&gt;
&lt;br /&gt;
===Class O: ORGANISM===&lt;br /&gt;
*OA Animal Kingdom&lt;br /&gt;
*OH Human&lt;br /&gt;
**OHD Locomotive Driver&lt;br /&gt;
&lt;br /&gt;
===Class P: PASSENGER &amp;amp; MAIL CARS===&lt;br /&gt;
*PA Suburban/short haul (no W.C.)&lt;br /&gt;
*PB Baggage cars&lt;br /&gt;
*PC Coach/chair cars&lt;br /&gt;
*PD Dome cars&lt;br /&gt;
*PH Bar/cafeteria cars&lt;br /&gt;
*PL Lounge cars&lt;br /&gt;
*PM Mail cars&lt;br /&gt;
*PO Observation cars&lt;br /&gt;
*PP Power cars&lt;br /&gt;
*PR Buffet/dining/restaurant cars&lt;br /&gt;
*PS Sleeping cars&lt;br /&gt;
*PU Special cars (e.g. Gaming Cars)&lt;br /&gt;
*PV Private cars&lt;br /&gt;
*PX Composite passenger cars&lt;br /&gt;
&lt;br /&gt;
|&amp;lt;!-- careful, table --&amp;gt;&lt;br /&gt;
===Class R: RAILCARS &amp;amp; MULTIPLE UNIT SETS===&lt;br /&gt;
*RA AC electric&lt;br /&gt;
*RC DC electric&lt;br /&gt;
*RD Diesel &amp;amp; diesel electric&lt;br /&gt;
*RH Diesel hydraulic&lt;br /&gt;
*RP Petrol&lt;br /&gt;
*RS Steam&lt;br /&gt;
&lt;br /&gt;
===Class S: SPLINES===&lt;br /&gt;
*SF Fences&lt;br /&gt;
*SR Roads&lt;br /&gt;
*SP Platforms&lt;br /&gt;
*SS Structure&lt;br /&gt;
*SV Vegetation&lt;br /&gt;
&lt;br /&gt;
===Class T: TRACK===&lt;br /&gt;
*TB Bridge&lt;br /&gt;
*TC TestTrack Course&lt;br /&gt;
*TR Rails&lt;br /&gt;
*TT Tunnel&lt;br /&gt;
*TURF Turf Effect&lt;br /&gt;
*TF Fixed Track&lt;br /&gt;
&lt;br /&gt;
===Class V: VEHICLES===&lt;br /&gt;
*VA Air&lt;br /&gt;
*VL Land&lt;br /&gt;
*VS Sea&lt;br /&gt;
&lt;br /&gt;
===Class W: WAYSIDE===&lt;br /&gt;
*WA Signalling&lt;br /&gt;
*WS Trackside signage&lt;br /&gt;
*WX Accessories&lt;br /&gt;
 &lt;br /&gt;
===Class X: FREIGHT CARS===&lt;br /&gt;
*XA Auto transporter&lt;br /&gt;
**XAA Open sides&lt;br /&gt;
**XAB Auto box car&lt;br /&gt;
*XB Box car/covered van&lt;br /&gt;
**XBD Dangerous goods&lt;br /&gt;
**XBG General service&lt;br /&gt;
**XBI Insulated&lt;br /&gt;
*XF Flat&lt;br /&gt;
**XFA Articulated&lt;br /&gt;
**XFC Intermodal&lt;br /&gt;
**XFD Depressed center&lt;br /&gt;
**XFH Heavy duty&lt;br /&gt;
**XFM General service&lt;br /&gt;
*XG Gondola/open wagon&lt;br /&gt;
**XGB Bottom dumping&lt;br /&gt;
**XGC Combination bottom/end/side dumping&lt;br /&gt;
**XGE End dumping&lt;br /&gt;
**XGR Rotary dumping&lt;br /&gt;
**XGS Side dumping&lt;br /&gt;
**XGT Covered&lt;br /&gt;
*XH Hopper&lt;br /&gt;
**XHB Bottom dumping&lt;br /&gt;
**XHC Combination bottom/end/side dumping&lt;br /&gt;
**XHE End dumping&lt;br /&gt;
**XHR Rotary dumping&lt;br /&gt;
**XHS Side dumping&lt;br /&gt;
**XHT Covered&lt;br /&gt;
*XI Foundry&lt;br /&gt;
**XIB Bottle/torpedo cars&lt;br /&gt;
**XIT Tipper/slag cars&lt;br /&gt;
*XL Livestock&lt;br /&gt;
**XLA Single deck&lt;br /&gt;
**XLC Multiple deck and convertible&lt;br /&gt;
**XLH Horse box&lt;br /&gt;
*XR Refrigerated&lt;br /&gt;
**XRI Ice chilled&lt;br /&gt;
**XRM Mechanically chilled&lt;br /&gt;
*XS Special&lt;br /&gt;
**XSN Novelty&lt;br /&gt;
**XSU Unclassified&lt;br /&gt;
*XT Tanker&lt;br /&gt;
**XTA Domeless&lt;br /&gt;
**XTS Single dome&lt;br /&gt;
**XTM Multiple dome&lt;br /&gt;
*XV Ventilated car/louvred van&lt;br /&gt;
**XVG General service&lt;br /&gt;
**XVP Produce service&lt;br /&gt;
&lt;br /&gt;
===Class Y: MAPS &amp;amp; SCENARIOS===&lt;br /&gt;
*YA Arcade Session&lt;br /&gt;
*YD Driver Command&lt;br /&gt;
*YH HTML-Asset&lt;br /&gt;
*YL Script Library&lt;br /&gt;
*YM Map&lt;br /&gt;
*YP Profile/Session&lt;br /&gt;
*YR Rule&lt;br /&gt;
*YS Scenario&lt;br /&gt;
*YT Tutorial Session&lt;br /&gt;
*YX Region&lt;br /&gt;
&lt;br /&gt;
===Class Z: TRAIN PARTS===&lt;br /&gt;
*ZB Bogie/Truck&lt;br /&gt;
*ZE Enginespec&lt;br /&gt;
*ZH Hornsound&lt;br /&gt;
*ZI Interior&lt;br /&gt;
*ZP Pantographs&lt;br /&gt;
*ZS Enginesound&lt;br /&gt;
*ZX Displacement Map (PaintShed-Template Obsolete)&lt;br /&gt;
*ZY (Paintshed-Skin Obsolete)&lt;br /&gt;
|}&amp;lt;!-- careful, table --&amp;gt;&lt;br /&gt;
[[Category:Config Tag|category-class tag]]&lt;br /&gt;
{{ORP-bot|category-class tag}}&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP_Content_Creation&amp;diff=37600</id>
		<title>TCCP Content Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP_Content_Creation&amp;diff=37600"/>
		<updated>2023-06-26T21:05:13Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: Added link about Discord&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[TCCP]]&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look here &#039;&#039;&#039;[[TCCP Beta Testing]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions. This account will be the same for content creation and beta testing, so please do not try to create multiple accounts.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php &#039;&#039;&#039;Trainz Forums&#039;&#039;&#039;]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, [https://www.trainzportal.com/blog/view/content-creator-live-chat &#039;&#039;&#039;More Information Here&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them. If the &#039;default&#039; thumbnail is not named &#039;thumbnail.jpg&#039;, it will not create the auto generated &#039;new&#039; session thumbnail when a new session is created.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
As a final note regarding traincar DLC packs. It is expected that locomotives and rolling stock scripts will not break default functionality.&lt;br /&gt;
&lt;br /&gt;
Examples of this are startup/shutdown scripts that are off by default. For the average user who purchases a loco with this, they will have no way to know how to startup the locomotive, and hence are stuck with a locomotive that to them simply does not work. For startup/shutdown scripts there are two options for this, one is to simply have the loco on by default and allow the player to choose to turn it off in the properties, and then allow them to go through the startup sequence. Another, as seen on the Frecciarossa train DLC, would be to have the train pop up with a message to provide startup options.&lt;br /&gt;
&lt;br /&gt;
Another example would be custom throttle/brake controls that prevent the HUD controls, DCC controls, or keyboard controls from working. Again the average player who purchases this DLC pack will not know what is happening and will see this content as being broken. In this case you must ensure that custom controls correctly respond to the HUD and keyboard.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
In order to get paid for your work, you will need a verified PayPal account. Then you will need an Affiliatly account linked to the PayPal account.&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Category-class&amp;diff=37234</id>
		<title>Category-class</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Category-class&amp;diff=37234"/>
		<updated>2023-05-15T01:20:06Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* Class Y: MAPS &amp;amp; SCENARIOS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ORP-top}}&lt;br /&gt;
==Category-class Tags==&lt;br /&gt;
The &#039;&#039;&#039;&amp;quot;category-class&amp;quot; tag&#039;&#039;&#039; of the [[KIND_TrainzBaseSpec|TrainzBaseSpec]] is the &#039;&#039;key searching parameter&#039;&#039; defining what or how the human content creator meant for the new asset &#039;&#039;to be used and thought about.&#039;&#039; This should not be confused with the [[Category List]], which is a related but distinct topic.&lt;br /&gt;
{{UserTip|width=50%|This is a sometimes nebulous and confusing parameter requiring a new user to develop a degree of mental agility, for example, &#039;&#039;&#039;a &#039;house&#039; asset&#039;&#039;&#039; might be classified (Coded by some asset creator) as scenery, building, industry, or even  something as wildly inappropriate as &#039;fauna&#039;.}}&lt;br /&gt;
&lt;br /&gt;
The [[KIND]] specification defines which other ({{wp|data type}}) entries&#039;&#039; are needed&#039;&#039; in that particular asset&#039;s config.txt file. It is the entry which defines the asset&#039;s  type, scope, and needs and the very important parameter that tells TRAINZ how to process and render the specific asset item correctly, error check against the standard for the category-class, and render it into {{wp|Three-dimensional space|3D graphics}} models. &lt;br /&gt;
&lt;br /&gt;
Each Trainz asset&#039;s category-class tag helps describe the &#039;intent&#039; of the Asset in the game, as opposed to the internal structure of the Asset. The Content Creators&#039; Guide for Trainz Classics said these classes represent a standardized system for referring to the various types of Locos, Rolling stock, Scenery, Spline and Industry assets.  The Category-class classification codes become important to all Trainzers when searching and/or filtering for suitable assets to make into content in a session or route (layout).&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;font color=&amp;quot;blue&amp;quot; size=&amp;quot;-1&amp;quot;&amp;gt;Trainz Base Specification &lt;br /&gt;
:(all config.txt files can contain all these entries){{TBS}}&lt;br /&gt;
::&#039;&#039;&#039;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Figure: 1 TrainzBaseSpec for quick reference&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Category-class code notes==&lt;br /&gt;
New users should be aware that these codes listed below are not the direct ContentManager.exe category sort by classifications as a simple comparison of lists will reveal, but they do affect what is displayed within such a sort filter selection. &lt;br /&gt;
:For example: Set a search filter for &#039;&#039;&#039;&#039;&#039;&#039;Location&amp;gt;Local + Category&amp;gt;Flora&#039;&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
: In the base installed content of TRS2006-SP0 this search will yield diverse assets such as the set of  {&#039;&#039;&#039;Flora&#039;&#039;&#039; types: SOME few trees, Betonbridge (1,2,&amp;amp;3 tracks), crop splines, sidewalks, road types} &lt;br /&gt;
:but the sort will also list a much larger type group, the set of {Scenery: retaining wall splines (Arkaden...), LOADS of trees and Shrubs including Laubbaum with birds (and sound), grasses (textures?), Logs} and so forth. &lt;br /&gt;
In that search you will also find electrified railroad centenary parts and the occasional animal. The result of such a search will be no better in new Trainz versions, which means the new Trainzer needs to cultivate a certain mental agility when searching for suitable content. No one has the man-power, deep pockets, nor copyright authority to systematically fix such foibles. You as a user, can clone such items and change the classification to something more sensible to yourself. That however, is not an asset you can upload to the Download Station without a copyright clearance from the original asset creator. The Trainz community is severe in policing copyrights violations! &lt;br /&gt;
{{TrainzTip|These codes when applied by the content creator were in many cases cut and pasted into a new similar asset, in others, the way he or she was using the asset in their current project. In short, they are not definitive, but are indicative... even if it is only of the mental state of the creator at the time of donation to the DLS, or as happens in many cases, a case of translation from a native tounge with a different way of thinking than that of English.}} Rejoice in the positive, they are essentially free and cost you nothing but a bit of puzzlement. Free is good! Having them is better.&lt;br /&gt;
 &lt;br /&gt;
==The Category Classes are:==&lt;br /&gt;
 Class &amp;quot;A&amp;quot;        Motive Power&lt;br /&gt;
 Class &amp;quot;B&amp;quot;        Buildings and Structures&lt;br /&gt;
 Class &amp;quot;C&amp;quot;        Cabeese&lt;br /&gt;
 Class &amp;quot;D&amp;quot;        Defence&lt;br /&gt;
 Class &amp;quot;E&amp;quot;        Environment&lt;br /&gt;
 Class &amp;quot;F&amp;quot;        Foliage&lt;br /&gt;
 Class &amp;quot;G&amp;quot;        Ground&lt;br /&gt;
 Class &amp;quot;H&amp;quot;        Mesh&lt;br /&gt;
 Class &amp;quot;I&amp;quot;        Product&lt;br /&gt;
 Class &amp;quot;J&amp;quot;        Texture&lt;br /&gt;
 Class &amp;quot;L&amp;quot;        Light Rail &amp;amp; Monorail&lt;br /&gt;
 Class &amp;quot;M&amp;quot;        Maintenance Of Way&lt;br /&gt;
 Class &amp;quot;O&amp;quot;        Organism&lt;br /&gt;
 Class &amp;quot;P&amp;quot;        Passenger &amp;amp; Mail Cars&lt;br /&gt;
 Class &amp;quot;R&amp;quot;        Railcars &amp;amp; Multiple Unit Sets&lt;br /&gt;
 Class &amp;quot;S&amp;quot;        Splines&lt;br /&gt;
 Class &amp;quot;T&amp;quot;        Track&lt;br /&gt;
 Class &amp;quot;V&amp;quot;        Vehicles&lt;br /&gt;
 Class &amp;quot;W&amp;quot;        Wayside&lt;br /&gt;
 Class &amp;quot;X&amp;quot;        Freight Cars&lt;br /&gt;
 Class &amp;quot;Y&amp;quot;        Maps and Scenarios&lt;br /&gt;
 Class &amp;quot;Z&amp;quot;        Train Parts&lt;br /&gt;
::&amp;lt;font color=&amp;quot;blue&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;&#039;&#039;&#039;&amp;lt;u&amp;gt;Figure 02: Base category-class prefixes&amp;lt;/u&amp;gt;&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each Category Class may have a number of subcategories as listed below. Please choose the most appropriate Category Class for your item. Select the Class from the [[Content Creator Plus]] drop down menu box - only one class may be selected for an asset.&lt;br /&gt;
&lt;br /&gt;
Selecting a correct Category Class is important since Trainz will allow users to use the Category Class as a sort and selection criteria.&lt;br /&gt;
&lt;br /&gt;
{|&amp;lt;!-- careful, table --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;!-- careful, table --&amp;gt;&lt;br /&gt;
===Class A: MOTIVE POWER===&lt;br /&gt;
*AA Electric Multi-current&lt;br /&gt;
*AC AC Electric&lt;br /&gt;
*AD DC Electric&lt;br /&gt;
*AE Experimental or Special&lt;br /&gt;
*AG Gas Turbine&lt;br /&gt;
*AH Diesel Hydraulic&lt;br /&gt;
*AL Diesel &amp;amp; Diesel Electric&lt;br /&gt;
*AM Mammal&lt;br /&gt;
*AS Steam Loco &amp;amp; Tender&lt;br /&gt;
*AT Steam Tank&lt;br /&gt;
&lt;br /&gt;
===Class B: BUILDINGS &amp;amp; STRUCTURES===&lt;br /&gt;
*BB Buildable (Kind Buildable)&lt;br /&gt;
*BC Commercial (scenery non-functional)&lt;br /&gt;
*BI Industrial (scenery non-functional)&lt;br /&gt;
**BIN Industry asset with product processing functionality&lt;br /&gt;
*BH Home &amp;amp; Residential (scenery non-functional)&lt;br /&gt;
*&#039;&#039;Subclass BP: Passenger Station&#039;&#039;&lt;br /&gt;
**BPF Passenger Station with passenger processing functionality&lt;br /&gt;
**BPN Passenger Station (non-functional)&lt;br /&gt;
*BR Railway (scenery non-functional)&lt;br /&gt;
*BS Special (e.g. military) (scenery non-functional)&lt;br /&gt;
*BT Traffic &amp;amp; Streetscape (scenery non-functional)&lt;br /&gt;
*BU Utility (incl. Civil buildings) (scenery non-functional)&lt;br /&gt;
&lt;br /&gt;
===Class C: CABEESE / CONSIST / EFFECTS===&lt;br /&gt;
*CB Brake van&lt;br /&gt;
*CC Caboose&lt;br /&gt;
*CLUT Clutter Effect&lt;br /&gt;
*CN Consist&lt;br /&gt;
*CS ControlSet&lt;br /&gt;
&lt;br /&gt;
===Class D: DEFENCE===&lt;br /&gt;
*DA Military motive power&lt;br /&gt;
*DE Military experimental &amp;amp; special vehicles&lt;br /&gt;
*DP Military equipment - lab &amp;amp; personnel vehicles&lt;br /&gt;
*DX Military equipment - freight&lt;br /&gt;
&lt;br /&gt;
===Class E: ENVIRONMENT===&lt;br /&gt;
*ES Sky&lt;br /&gt;
*EW Water&lt;br /&gt;
&lt;br /&gt;
===Class F: FOLIAGE===&lt;br /&gt;
*FC Cactii&lt;br /&gt;
*FF Flowers&lt;br /&gt;
*FO Orchards &amp;amp; Crops&lt;br /&gt;
*FS Shrub&lt;br /&gt;
*FT Trees&lt;br /&gt;
&lt;br /&gt;
===Class G: GROUND===&lt;br /&gt;
*GA Arid&lt;br /&gt;
*GL Lush&lt;br /&gt;
*GS Seasonal&lt;br /&gt;
&lt;br /&gt;
===Class H: MESHES===&lt;br /&gt;
*HM Mesh&lt;br /&gt;
&lt;br /&gt;
===Class I: PRODUCT===&lt;br /&gt;
*IC Container Category&lt;br /&gt;
*IP Passenger Category&lt;br /&gt;
*IB Bulkload Category&lt;br /&gt;
*IL Liquid Category&lt;br /&gt;
&lt;br /&gt;
===Class J: TEXTURES===&lt;br /&gt;
*JC Corona&lt;br /&gt;
*JI Icon&lt;br /&gt;
*JP Particle Effects Texture&lt;br /&gt;
*JO Other Texture&lt;br /&gt;
&lt;br /&gt;
===Class L: LIGHT RAIL &amp;amp; MONORAIL===&lt;br /&gt;
*LS Articulated train sets&lt;br /&gt;
*LT Trolleys, trams &amp;amp; streetcars&lt;br /&gt;
*LM Monorail vehicles&lt;br /&gt;
&lt;br /&gt;
===Class M: MAINTENANCE of WAY===&lt;br /&gt;
*MA Camp vehicles&lt;br /&gt;
*MB Ballast cars&lt;br /&gt;
*MC Cranes/lifting&lt;br /&gt;
*MD Diagnostic vehicles (e.g. dynamometer)&lt;br /&gt;
*ME Instructional vehicles&lt;br /&gt;
*MF Fire vehicles&lt;br /&gt;
*MI Inspection vehicles&lt;br /&gt;
*MT Track vehicles (e.g. tamper)&lt;br /&gt;
*MP Snow ploughs&lt;br /&gt;
*MS Section cars (e.g. fairmont)&lt;br /&gt;
*MX Freight equipment (for MoW traffic)&lt;br /&gt;
*MW Weed spray&lt;br /&gt;
&lt;br /&gt;
===Class O: ORGANISM===&lt;br /&gt;
*OA Animal Kingdom&lt;br /&gt;
*OH Human&lt;br /&gt;
**OHD Locomotive Driver&lt;br /&gt;
&lt;br /&gt;
===Class P: PASSENGER &amp;amp; MAIL CARS===&lt;br /&gt;
*PA Suburban/short haul (no W.C.)&lt;br /&gt;
*PB Baggage cars&lt;br /&gt;
*PC Coach/chair cars&lt;br /&gt;
*PD Dome cars&lt;br /&gt;
*PH Bar/cafeteria cars&lt;br /&gt;
*PL Lounge cars&lt;br /&gt;
*PM Mail cars&lt;br /&gt;
*PO Observation cars&lt;br /&gt;
*PP Power cars&lt;br /&gt;
*PR Buffet/dining/restaurant cars&lt;br /&gt;
*PS Sleeping cars&lt;br /&gt;
*PU Special cars (e.g. Gaming Cars)&lt;br /&gt;
*PV Private cars&lt;br /&gt;
*PX Composite passenger cars&lt;br /&gt;
&lt;br /&gt;
|&amp;lt;!-- careful, table --&amp;gt;&lt;br /&gt;
===Class R: RAILCARS &amp;amp; MULTIPLE UNIT SETS===&lt;br /&gt;
*RA AC electric&lt;br /&gt;
*RC DC electric&lt;br /&gt;
*RD Diesel &amp;amp; diesel electric&lt;br /&gt;
*RH Diesel hydraulic&lt;br /&gt;
*RP Petrol&lt;br /&gt;
*RS Steam&lt;br /&gt;
&lt;br /&gt;
===Class S: SPLINES===&lt;br /&gt;
*SF Fences&lt;br /&gt;
*SR Roads&lt;br /&gt;
*SP Platforms&lt;br /&gt;
*SS Structure&lt;br /&gt;
*SV Vegetation&lt;br /&gt;
&lt;br /&gt;
===Class T: TRACK===&lt;br /&gt;
*TB Bridge&lt;br /&gt;
*TC TestTrack Course&lt;br /&gt;
*TR Rails&lt;br /&gt;
*TT Tunnel&lt;br /&gt;
*TURF Turf Effect&lt;br /&gt;
*TF Fixed Track&lt;br /&gt;
&lt;br /&gt;
===Class V: VEHICLES===&lt;br /&gt;
*VA Air&lt;br /&gt;
*VL Land&lt;br /&gt;
*VS Sea&lt;br /&gt;
&lt;br /&gt;
===Class W: WAYSIDE===&lt;br /&gt;
*WA Signalling&lt;br /&gt;
*WS Trackside signage&lt;br /&gt;
*WX Accessories&lt;br /&gt;
 &lt;br /&gt;
===Class X: FREIGHT CARS===&lt;br /&gt;
*XA Auto transporter&lt;br /&gt;
**XAA Open sides&lt;br /&gt;
**XAB Auto box car&lt;br /&gt;
*XB Box car/covered van&lt;br /&gt;
**XBD Dangerous goods&lt;br /&gt;
**XBG General service&lt;br /&gt;
**XBI Insulated&lt;br /&gt;
*XF Flat&lt;br /&gt;
**XFA Articulated&lt;br /&gt;
**XFC Intermodal&lt;br /&gt;
**XFD Depressed center&lt;br /&gt;
**XFH Heavy duty&lt;br /&gt;
**XFM General service&lt;br /&gt;
*XG Gondola/open wagon&lt;br /&gt;
**XGB Bottom dumping&lt;br /&gt;
**XGC Combination bottom/end/side dumping&lt;br /&gt;
**XGE End dumping&lt;br /&gt;
**XGR Rotary dumping&lt;br /&gt;
**XGS Side dumping&lt;br /&gt;
**XGT Covered&lt;br /&gt;
*XH Hopper&lt;br /&gt;
**XHB Bottom dumping&lt;br /&gt;
**XHC Combination bottom/end/side dumping&lt;br /&gt;
**XHE End dumping&lt;br /&gt;
**XHR Rotary dumping&lt;br /&gt;
**XHS Side dumping&lt;br /&gt;
**XHT Covered&lt;br /&gt;
*XI Foundry&lt;br /&gt;
**XIB Bottle/torpedo cars&lt;br /&gt;
**XIT Tipper/slag cars&lt;br /&gt;
*XL Livestock&lt;br /&gt;
**XLA Single deck&lt;br /&gt;
**XLC Multiple deck and convertible&lt;br /&gt;
**XLH Horse box&lt;br /&gt;
*XR Refrigerated&lt;br /&gt;
**XRI Ice chilled&lt;br /&gt;
**XRM Mechanically chilled&lt;br /&gt;
*XS Special&lt;br /&gt;
**XSN Novelty&lt;br /&gt;
**XSU Unclassified&lt;br /&gt;
*XT Tanker&lt;br /&gt;
**XTA Domeless&lt;br /&gt;
**XTS Single dome&lt;br /&gt;
**XTM Multiple dome&lt;br /&gt;
*XV Ventilated car/louvred van&lt;br /&gt;
**XVG General service&lt;br /&gt;
**XVP Produce service&lt;br /&gt;
&lt;br /&gt;
===Class Y: MAPS &amp;amp; SCENARIOS===&lt;br /&gt;
*YA &#039;&#039;unknown, needs update&#039;&#039;&lt;br /&gt;
*YD Driver Command&lt;br /&gt;
*YH HTML-Asset&lt;br /&gt;
*YL Library&lt;br /&gt;
*YM Map&lt;br /&gt;
*YP Profile/Session&lt;br /&gt;
*YR Rule&lt;br /&gt;
*YS Scenario&lt;br /&gt;
*YT Tutorial&lt;br /&gt;
*YX Region&lt;br /&gt;
&lt;br /&gt;
===Class Z: TRAIN PARTS===&lt;br /&gt;
*ZB Bogie/Truck&lt;br /&gt;
*ZE Enginespec&lt;br /&gt;
*ZH Hornsound&lt;br /&gt;
*ZI Interior&lt;br /&gt;
*ZP Pantographs&lt;br /&gt;
*ZS Enginesound&lt;br /&gt;
*ZX Displacement Map (PaintShed-Template Obsolete)&lt;br /&gt;
*ZY (Paintshed-Skin Obsolete)&lt;br /&gt;
|}&amp;lt;!-- careful, table --&amp;gt;&lt;br /&gt;
[[Category:Config Tag|category-class tag]]&lt;br /&gt;
{{ORP-bot|category-class tag}}&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Index_of_Tags_%26_Containers&amp;diff=35498</id>
		<title>Index of Tags &amp; Containers</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Index_of_Tags_%26_Containers&amp;diff=35498"/>
		<updated>2023-01-15T15:26:58Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* ta-tz */  added traffic-speed config tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FUN-beg}}&lt;br /&gt;
===About this page===&lt;br /&gt;
This is a comprehensive list of tags and containers, where possible linked to the TrainzOnline detail page which covers the data element.&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{| style=&amp;quot;verticle-align:top; border: 2px solid grey; float:center;padding:1ex; align:center; margin-left:2.5%;margin-right:2.5%;&amp;quot;&lt;br /&gt;
! Navigable Click-table as Table of Contents&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;hr/&amp;gt;Words beginning with strings between...&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;p&amp;gt;&amp;lt;big&amp;gt;&lt;br /&gt;
;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#aa-ar|aa-ar]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#as-at|as-at]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#au-az|au-az]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#ba-bo|ba-bo]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#br-cg|br-cg]]&amp;amp;nbsp;{{void&lt;br /&gt;
&lt;br /&gt;
}}[[{{PAGENAME}}#ch-cz|ch-cz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#da-dz|da-dz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#ea-ez|ea-ez]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#fa-gz|fa-gz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#ha-hz|ha-hz]]&amp;amp;nbsp;{{void&lt;br /&gt;
&lt;br /&gt;
}}[[{{PAGENAME}}#ia-iz|ia-iz]]&lt;br /&gt;
;{{void&lt;br /&gt;
&lt;br /&gt;
}}[[{{PAGENAME}}#ka-kz|ka-kz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#la-lz|la-lz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#ma-mz|ma-mz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#na-nz|na-nz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#oa-oz|oa-oz]]&amp;amp;nbsp;{{void&lt;br /&gt;
&lt;br /&gt;
}}[[{{PAGENAME}}#pa-pz|pa-pz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#qu-rz|qu-rz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#sa-sz|sa-sz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#ta-tz|ta-tz]]&amp;amp;nbsp;{{void&lt;br /&gt;
}}[[{{PAGENAME}}#ua-vz|ua-vz]]&amp;amp;nbsp;{{void&lt;br /&gt;
&lt;br /&gt;
}}[[{{PAGENAME}}#wa-zz|wa-zz]]&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/big&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
==aa-ar==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|accel&lt;br /&gt;
|float,float&lt;br /&gt;
|smoke {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Acceleration. First number is Gravity effect, second is wind effect. Default is 0,0.&lt;br /&gt;
|-&lt;br /&gt;
|adhesion&lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|adjust-cross-section-to-ground&lt;br /&gt;
|float&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|a sub heading in the track container.&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|air-drag-coefficient &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|alias&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Kuid of the asset to be referenced as a basis for the new asset. For example TRS Traincars can reference archived locomotive mesh assets for use with custom textures. This process is done by aliasing the KUID of the archived traincars.&lt;br /&gt;
|-&lt;br /&gt;
|alias&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|the kuid of the paintshed template the paintshed reskin is based on&lt;br /&gt;
|-&lt;br /&gt;
|allowed-categories {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The allowed product categories in this queue.&lt;br /&gt;
|-&lt;br /&gt;
|allowed-products {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The allowed products in this queue.&lt;br /&gt;
|-&lt;br /&gt;
|allows-mixing&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|Products with this tag may be combined in a single queue along with other products of the same category. Eg. Lumber and 20ft Container on a flatcar. By default, allows-mixing is set to 0. Therefore by default, a queue will only allow one product-category at a time. To look at allows-mixing from another angle, liquid products should never have allows-mixing enabled. Otherwise you have the potential to mix petrol with oil within the same tanker.&lt;br /&gt;
|-&lt;br /&gt;
|altitude&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|altitude of this region&lt;br /&gt;
|-&lt;br /&gt;
|ambient&lt;br /&gt;
|boolean&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|0 or 1, default 0 is off. Ambient sounds have no 3D “position” and may be stereo. Non-ambient (positional) sounds are positioned on the object and must be mono - see attachment above&lt;br /&gt;
|-&lt;br /&gt;
|amount&lt;br /&gt;
|float&lt;br /&gt;
|inputs-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Amount required as input.&lt;br /&gt;
|-&lt;br /&gt;
|amount&lt;br /&gt;
|float&lt;br /&gt;
|outputs-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Amount to output.&lt;br /&gt;
|-&lt;br /&gt;
|angle&lt;br /&gt;
|float list degrees&lt;br /&gt;
|config.txt&lt;br /&gt;
|turntable&lt;br /&gt;
|Specifies the angles at which the turntable stops. Not used if the turntable is set up as animation.&lt;br /&gt;
|-&lt;br /&gt;
|angles&lt;br /&gt;
|float list&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|Rotational boundaries in radians relative to its attachment point.&lt;br /&gt;
|-&lt;br /&gt;
|anim&lt;br /&gt;
|[path/]filename.kin&lt;br /&gt;
|config.txt&lt;br /&gt;
|pantograph&lt;br /&gt;
|The “anim.kin” animation file for the pantograph&lt;br /&gt;
|-&lt;br /&gt;
|anim&lt;br /&gt;
|[path/]filename.kin&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|animation effect&lt;br /&gt;
|Reference to the animation file (.kin)&lt;br /&gt;
|-&lt;br /&gt;
|anim&lt;br /&gt;
|[path/]filename.kin&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The animation file (.kin) exported from 3dsmax.&lt;br /&gt;
|-&lt;br /&gt;
|animated-mesh&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Animated mesh which changes as the queue becomes full.&lt;br /&gt;
|-&lt;br /&gt;
|animation-loop-speed&lt;br /&gt;
|float&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|This tag must be here if the asset is to animate when placed. If this tag is not here when placed the animation will not play by default, but may play if controlled by script. A different value (e.g. 0.5, 2.0) may be used in the tag to play the animation at a different speed from that created in 3dsmax.&lt;br /&gt;
|-&lt;br /&gt;
|animdist&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|bogey&lt;br /&gt;
|Leave this tag out if the bogey is not animated. The distance traveled in meters by the bogeys in 1 second (30 frames) of animation. Bogey animations (exported from 3ds Max) are called “anim.kin”.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==as-at==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|asset-filename&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Obsolete&lt;br /&gt;
|-&lt;br /&gt;
|att&lt;br /&gt;
|helper&lt;br /&gt;
|attached-trigger-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Attachment point (stored in the mesh file)&lt;br /&gt;
|-&lt;br /&gt;
|att&lt;br /&gt;
|helper&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|The effect insertion point. The attachment point must be orientated correctly in 3dsmax.&lt;br /&gt;
|-&lt;br /&gt;
|att&lt;br /&gt;
|helper&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh (and animation if present) is inserted at a mesh attachment point rather than the origin (without this line the mesh is placed relative to the origin of the parent model).&lt;br /&gt;
|-&lt;br /&gt;
|attached-track {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery with track&lt;br /&gt;
|Auto-generated spline track. Generated through attachment points located within the default mesh. Attached-tracks update automatically to the spline track connected to it. You may over-ride this auto-update feature by adding useadjoiningtracktype 0 Note. Correct track end attachment orientation is essential. The Y axis must point ‘out’ at the correct angle. The Z axis must point ‘up’.&lt;br /&gt;
|-&lt;br /&gt;
|attached-track-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|attached-track {&lt;br /&gt;
|scenery with track&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|attached-trigger {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|A Trigger is a point along an attached track with a specified radius. When a compatible rollingstock item enters this radius it triggers a set of commands,controlled through its script.&lt;br /&gt;
|-&lt;br /&gt;
|attached-trigger-ID {&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|attached-trigger {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|attachment&lt;br /&gt;
|helper&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The attachment point (stored in the mesh file) to place the smoke effect.&lt;br /&gt;
|-&lt;br /&gt;
|attachment&lt;br /&gt;
|helper&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Attachment point on the object to which the sound is attached. Default: The sound will attach to the origin of parent object (not used for ambient sound)&lt;br /&gt;
|-&lt;br /&gt;
|attachment-points {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|List of attachment points for this queue on which products are visualised. (Use this, OR animated-mesh)&lt;br /&gt;
|-&lt;br /&gt;
|att-parent&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The tag tells Trainz in which mesh the attachment point is located. The insertion attachment point is located within the mesh ‘name’ , as listed in the config.txt.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==au-az==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|author&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Author, contact-email and contact-website are useful information, particularly if a user has a question on your models or would like to offer help or suggestions.&lt;br /&gt;
|-&lt;br /&gt;
|autobrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|autobrakecylinder_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|autobrakecylindervent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auto-create&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The model is generated automatically when placed, or when you load a map which includes the model. In some instances you don’t want the mesh visible (as this may be controlled through script). If auto-create is 0 the mesh will not be visible when placed.&lt;br /&gt;
|-&lt;br /&gt;
|autoname&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|When enabled, automatically assigns a unique name to this object as it is placed.&lt;br /&gt;
|-&lt;br /&gt;
|autopilotmode&lt;br /&gt;
|boolean&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|AI driver setting. (off, on)&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir_autobrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir_no3&lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir_start &lt;br /&gt;
|decimal&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|Auxiliary reservoir pressure on loading the game. &lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir_trainbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoirvent&lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|axle-count &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==ba-bo==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|backdrop&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Specifies whether the object is treated as a backdrop or not. (stays visible even when far from the camera)&lt;br /&gt;
|-&lt;br /&gt;
|bendy&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Switches how track is bent on corners, set as 1 allows the mesh to be deformed as the spline is bend around corners.&lt;br /&gt;
|-&lt;br /&gt;
|bogey&lt;br /&gt;
|kuid&lt;br /&gt;
|bogeys-ID {&lt;br /&gt;
|traincar&lt;br /&gt;
|Kuid of bogey asset.&lt;br /&gt;
|-&lt;br /&gt;
|bogey&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The bogey KUID number (default for a.bog0 and a.bog1)&lt;br /&gt;
|-&lt;br /&gt;
|bogey&lt;br /&gt;
|kuid&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The bogey to which this sound will apply.&lt;br /&gt;
|-&lt;br /&gt;
|bogey-#&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The bogey KUID number for a.bog# (Used only if different to a.bog0)&lt;br /&gt;
|-&lt;br /&gt;
|bogey-#-r&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Used instead of ‘bogey’ and bogey-1. The bogey will have reversed orientation. Note: This will cause bogey animation to play in reverse unless the attachment point for the bogey is also rotated 180 degrees in 3dmax.&lt;br /&gt;
|-&lt;br /&gt;
|bogey-r&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Used instead of ‘bogey’ and bogey-1. The bogey will have reversed orientation. Note: This will cause bogey animation to play in reverse unless the attachment point for the bogey is also rotated 180 degrees in 3dmax.&lt;br /&gt;
|-&lt;br /&gt;
|bogeys {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The bogey container stores the bogeys used for the loco\rollingstock item.&lt;br /&gt;
|-&lt;br /&gt;
|bogeys-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|bogeys {&lt;br /&gt;
|traincar&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|boiler-to-piston-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|boiler-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
==br-cg==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|brakefull &lt;br /&gt;
|decimal&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|Brake pipe pressure in grams/m³ after full service reduction (for self lapping brakes).&lt;br /&gt;
|-&lt;br /&gt;
|brakeinitial &lt;br /&gt;
|decimal&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|Brake pipe pressure in grams/m³ after initial service reduction (for self lapping brakes).&lt;br /&gt;
|-&lt;br /&gt;
|brakepipe &lt;br /&gt;
|decimal&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|Brake pipe pressure in grams/m³ when fully charged. &lt;br /&gt;
|-&lt;br /&gt;
|brakeratio &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|bridgetrack&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Kuid of the track type to be used.&lt;br /&gt;
|-&lt;br /&gt;
|buffer-speed&lt;br /&gt;
|float metres/second&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Used for buffers; specifies the maximum speed up to which the buffer will stop a train.&lt;br /&gt;
|-&lt;br /&gt;
|burn-rate&lt;br /&gt;
|decimal&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|How much coal in kg/s is consumed when the loco is operating at the test parameters&lt;br /&gt;
|-&lt;br /&gt;
|burn-rate-idle&lt;br /&gt;
|decimal&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|How much coal in kg/s is consumed when the loco is idle, purely to keep the fire burning&lt;br /&gt;
|-&lt;br /&gt;
|cabinsway&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Cabin sway multiplier. Eg -2.&lt;br /&gt;
|-&lt;br /&gt;
|camera#&lt;br /&gt;
|float list&lt;br /&gt;
|cameralist {&lt;br /&gt;
|interior&lt;br /&gt;
|A camera contains 5 numeric coordinates that determine the placement and orientation of the camera. These are: 0,0,0,0,0 =left/right, front/back, up/down, yaw, pitch To determine these variables add -freeintcam to the trainzoptions.txt. Pan around the interior using arrow keys and mouse. Co-ordinates are displayed at bottom-left of screen. industry asset’s script file.&lt;br /&gt;
|-&lt;br /&gt;
|cameradefault&lt;br /&gt;
|integer&lt;br /&gt;
|config.txt&lt;br /&gt;
|interior&lt;br /&gt;
|The in-cab camera view Trainz defaults to when entering the cab.&lt;br /&gt;
|-&lt;br /&gt;
|cameralist {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|interior&lt;br /&gt;
|List of camera viewpoints&lt;br /&gt;
|-&lt;br /&gt;
|car#&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Each of these tags stores the kuid of a car to be used on the roads.&lt;br /&gt;
|-&lt;br /&gt;
|car#&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|Each of these tags stores the kuid of a car to be used on the roads.&lt;br /&gt;
|-&lt;br /&gt;
|carrate&lt;br /&gt;
|float seconds&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|(&amp;lt;i&amp;gt;No longer Valid, except for splines which have &#039;isroad&#039; set&amp;lt;/i&amp;gt;) Defined traffic density on road (minimum seconds between each car generated). 0 = No traffic. Number must be greater than 3. The game waits between 1 and 3 times this value (in seconds) between generating traffic on the spline.&lt;br /&gt;
|-&lt;br /&gt;
|casts_shadows&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Toggles whether the shadow model is displayed.&lt;br /&gt;
|-&lt;br /&gt;
|category-class&lt;br /&gt;
|class code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The class code for this asset.&lt;br /&gt;
|-&lt;br /&gt;
|category-era&lt;br /&gt;
|era code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Era code list.&lt;br /&gt;
|-&lt;br /&gt;
|category-era-#&lt;br /&gt;
|era list&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Era code.&lt;br /&gt;
|-&lt;br /&gt;
|category-keywords&lt;br /&gt;
|keyword list&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Keyword list&lt;br /&gt;
|-&lt;br /&gt;
|category-region&lt;br /&gt;
|region list&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|A list of REGION codes or REGION GROUP codes,&lt;br /&gt;
|-&lt;br /&gt;
|category-region-#&lt;br /&gt;
|region code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|A REGION code or REGION GROUP code.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ch-cz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|changeability&lt;br /&gt;
|0/1/2&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Propensity for weather to change. (none, periodic, extreme)&lt;br /&gt;
|-&lt;br /&gt;
|chunky_info&lt;br /&gt;
|float list&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|These values (in metres) define the shape of the mesh created for the track.&lt;br /&gt;
|-&lt;br /&gt;
|chunky_mesh&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Name of texture to apply to rail. The texture must be within a directory of the same name (ie. “textureName\textureName.texture.txt”). The chunky_mesh value will simply be the name of this directory (ie. “textureName”).&lt;br /&gt;
|-&lt;br /&gt;
|class&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|This refers to the class of asset within the script file (the class must match that stated in the script).&lt;br /&gt;
|-&lt;br /&gt;
|clutter-mesh&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|groundtexture&lt;br /&gt;
|Ground textures can now reference a mesh and insert the mesh automatically as the ground is painted. Painting over a clutter-mesh ground texture effectively deletes clutter meshes and texture. The mesh it refers to is can be standard scenery object kind mesh. Clutter-meshes must have only one Max material assigned to it only. Polycounts must be very low.&lt;br /&gt;
|-&lt;br /&gt;
|collate-meshes&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Enables clutter-mesh support (eg. fast trees)&lt;br /&gt;
|-&lt;br /&gt;
|collision-parent&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|For collision-proxy meshes in an interior mesh-table, this specifies the parent object to be proxied. is 3.&lt;br /&gt;
|-&lt;br /&gt;
|color&lt;br /&gt;
|rgb value&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The R,G,B color value of the effect.&lt;br /&gt;
|-&lt;br /&gt;
|company&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The Locomotive or car owner&lt;br /&gt;
|-&lt;br /&gt;
|compressor &lt;br /&gt;
|integer&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|Flowsize of the compressor&lt;br /&gt;
|-&lt;br /&gt;
|compressor &lt;br /&gt;
|decimal&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|Compressor maximum pressure in grams/m³&lt;br /&gt;
|-&lt;br /&gt;
|conesize&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|conflicts-with queues {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|This queue and the conflicting queue(s) cannot be used simultaneously.&lt;br /&gt;
|-&lt;br /&gt;
|consists {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|The consists tag stores information on consists that can be generated by the industry.&lt;br /&gt;
|-&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|consists {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|consists-vehicle-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|contact-email&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Author, contact-email and contact-website are useful information, particularly if a user has a question on your models or would like to offer help or suggestions.&lt;br /&gt;
|-&lt;br /&gt;
|contact-website&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Author, contact-email and contact-website are useful information, particularly if a user has a question on your models or would like to offer help or suggestions.&lt;br /&gt;
|-&lt;br /&gt;
|controlmethod&lt;br /&gt;
|0/1&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Driver control setting. (dcc, cabin)&lt;br /&gt;
|-&lt;br /&gt;
|coupling-mask&lt;br /&gt;
|boolean&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Coupling mask that applies to the consist. 0 will block off all coupling activity while “1” will mean you can couple with a vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|critical-animation&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|When enabled, this forces the animation to continue playing when off screen. Impacts performance when enabled.&lt;br /&gt;
|-&lt;br /&gt;
|custom-attachments&lt;br /&gt;
|?&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Not used.&lt;br /&gt;
|}&lt;br /&gt;
==da-dz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|decoupling-mask&lt;br /&gt;
|boolean&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Coupling mask that applies to the consist. 0 will mean you can’t decouple vehicles in the train while 1 means you can decouple vehicles.&lt;br /&gt;
|-&lt;br /&gt;
|default {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Main mesh of the asset&lt;br /&gt;
|-&lt;br /&gt;
|defaultjunction&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|Default type of junction in this region.&lt;br /&gt;
|-&lt;br /&gt;
|default-mesh&lt;br /&gt;
|kuid&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|attachment effect&lt;br /&gt;
|The KUID of the attached mesh.&lt;br /&gt;
|-&lt;br /&gt;
|default-night {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|‘Main’ night window mesh on scenery and industry and traincar assets. Modeled to the same 3d space as the default mesh and is inserted at the default mesh origin. &lt;br /&gt;
|-&lt;br /&gt;
|default-night-forward {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The name for a submesh attached to a locomotive, to show a beam of light for example, in the direction of movement of the locomotive. Trainz recognises the name and turns on the correct mesh depending on the running direction.&lt;br /&gt;
|-&lt;br /&gt;
|default-night-reverse {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The name for a submesh attached to a locomotive, to show a beam of light for example, in the direction of movement of the locomotive. Trainz recognises the name and turns on the correct mesh depending on the running direction.&lt;br /&gt;
|-&lt;br /&gt;
|deraillevel&lt;br /&gt;
|0/1/2&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Derail setting. (none, arcade, realistic)&lt;br /&gt;
|-&lt;br /&gt;
|description&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Description of the asset.&lt;br /&gt;
|-&lt;br /&gt;
|description-##&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Translated description of the asset.&lt;br /&gt;
|-&lt;br /&gt;
|dighole&lt;br /&gt;
|float length, width&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Specifies the number of grid segments (length, width) to be removed from the surveyor grid to accommodate the turntable pit.&lt;br /&gt;
|-&lt;br /&gt;
|direct-drive&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|bogey&lt;br /&gt;
|When direct-drive is present, the bogey animation is linked to the steam piston and physics system. If this tag is not included the piston and steam sounds will not work!&lt;br /&gt;
|-&lt;br /&gt;
|direction&lt;br /&gt;
|vector&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The vector at which the smoke travels.&lt;br /&gt;
|-&lt;br /&gt;
|directional&lt;br /&gt;
|boolean&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|The default for coronas is to be aligned to the attachment point to face the NEGATIVE Z direction. This is especially useful for Traincars.&lt;br /&gt;
|-&lt;br /&gt;
|disable-extra-track-sounds&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Disables the “click-clack” tracksounds. (0, 1)&lt;br /&gt;
|-&lt;br /&gt;
|distance&lt;br /&gt;
|min, max metres&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|2 numbers (meters) 1st number is the distance at which the sound is played 100% 2nd number is the cut-off distance. Doesn’t affect the volume of the sound (Default: 50m, 150m)&lt;br /&gt;
|-&lt;br /&gt;
|ditch_color&lt;br /&gt;
|rgb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|RGB ditch light color. Eg. 255,255,255.&lt;br /&gt;
|-&lt;br /&gt;
|divider&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Name of the model to use as the middle bridge section. Placed in subfolder with same name.&lt;br /&gt;
|-&lt;br /&gt;
|don’t-flip-terminator&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Terminator model isn’t mirrored on one side.&lt;br /&gt;
|-&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|activity&lt;br /&gt;
|Specify the settings of this scenario, similar to Driver’s settings screen&lt;br /&gt;
|-&lt;br /&gt;
|duration&lt;br /&gt;
|float&lt;br /&gt;
|process-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Length of time (in seconds) that the process runs for.&lt;br /&gt;
|-&lt;br /&gt;
|dynamic-brake {&lt;br /&gt;
|container&lt;br /&gt;
|dynamic-brake container&lt;br /&gt;
|engine&lt;br /&gt;
|A sequence of numeric subcontainer data structures referring to a specific throttle notch and specifying the speed (m/s) and a braking force (kN) value which together define a braking force graph for that throttle notch&lt;br /&gt;
|}&lt;br /&gt;
==ea-ez==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|effects {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|Optional mesh-table variations&lt;br /&gt;
|-&lt;br /&gt;
|effects {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Optional mesh-table variations&lt;br /&gt;
|-&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|effects {&lt;br /&gt;
|effects {&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|enabled&lt;br /&gt;
|boolean&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Specifies whether the effect is enabled.&lt;br /&gt;
|-&lt;br /&gt;
|endcolor&lt;br /&gt;
|rgb value&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The final color the smoke effect shifts to.&lt;br /&gt;
|-&lt;br /&gt;
|endlength&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Length in meters of the initiator and terminator models.&lt;br /&gt;
|-&lt;br /&gt;
|engine&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|States type of traincar. 0 for Rolling stock, 1 for Locomotive.&lt;br /&gt;
|-&lt;br /&gt;
|enginesound&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|References the KUID number for the traincar’s sound.&lt;br /&gt;
|-&lt;br /&gt;
|enginespec&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|References the engine KUID number. This specifies the driver physics boundaries for the traincar.&lt;br /&gt;
|-&lt;br /&gt;
|epreservoirpipe &lt;br /&gt;
|decimal&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|Flowsize of the electric pneumatic braking &lt;br /&gt;
|-&lt;br /&gt;
|epreservoirpipe &lt;br /&gt;
|decimal&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|For electro pneumatic braking. Not currently in use, generally leave this setting&lt;br /&gt;
|-&lt;br /&gt;
|epreservoirpipe_autobrakecylinder &lt;br /&gt;
|decimal&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|Flowsize of the electro pneumatic automatic brake cylinder reservoir. &lt;br /&gt;
|-&lt;br /&gt;
|epreservoirpipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|For electro pneumatic braking. Not currently in use, generally leave this setting. &lt;br /&gt;
|-&lt;br /&gt;
|equaliser &lt;br /&gt;
|decimal&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|Equalising reservoir volume. &lt;br /&gt;
|-&lt;br /&gt;
|equaliser_mainreservoir &lt;br /&gt;
|decimal&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|Flowsize of the equaliser main reservoir&lt;br /&gt;
|-&lt;br /&gt;
|equaliser_start &lt;br /&gt;
|decimal&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|Equalising Reservoir pressure on loading Trainz &lt;br /&gt;
|-&lt;br /&gt;
|equaliservent &lt;br /&gt;
|decimal&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|Flowsize of the equaliser vent &lt;br /&gt;
|-&lt;br /&gt;
|equaliserventemergency &lt;br /&gt;
|decimal&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|Flowsize of the emergency equaliser vent&lt;br /&gt;
|-&lt;br /&gt;
|equaliserventhandleoff &lt;br /&gt;
|decimal&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|Flowsize of the equaliser to the atmosphere when in the &amp;quot;handle off&amp;quot; position&lt;br /&gt;
|-&lt;br /&gt;
|extensions {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|Asset specific data.&lt;br /&gt;
|}&lt;br /&gt;
==fa-gz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|faces&lt;br /&gt;
|camera/motion/down&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The direction the smoke effect faces.&lt;br /&gt;
|-&lt;br /&gt;
|face-texture&lt;br /&gt;
|[path/]filename.texture&lt;br /&gt;
|config.txt&lt;br /&gt;
|drivercharacter&lt;br /&gt;
|This is the driver icon used in TRS. Must be 64x64 pixels&lt;br /&gt;
|-&lt;br /&gt;
|facing&lt;br /&gt;
|boolean&lt;br /&gt;
|consists-vehicle-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Indicates the direction of the vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|file&lt;br /&gt;
|[path/]filename.tfx&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The twinkle file to be used (optional).&lt;br /&gt;
|-&lt;br /&gt;
|firebox-efficiency&lt;br /&gt;
|decimal (0.0 -&amp;gt; 1.0) &lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|Efficiency of the firebox (higher is more efficient)&lt;br /&gt;
|-&lt;br /&gt;
|firebox-to-boiler-heat-flow&lt;br /&gt;
|decimal&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|Rate of heat flow from firebox to boiler&lt;br /&gt;
|-&lt;br /&gt;
|firebox-to-boiler-heat-flow-idle&lt;br /&gt;
|decimal&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|Rate of heat flow from firebox to boiler when idle&lt;br /&gt;
|-&lt;br /&gt;
|firebox-volume&lt;br /&gt;
|&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|Physical volume of firebox in litres&lt;br /&gt;
|-&lt;br /&gt;
|flowsize {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|Flowsize settings specify the rate of flow through the pipes.&lt;br /&gt;
|-&lt;br /&gt;
|fontcolor&lt;br /&gt;
|rgb value&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|The color of the sign text in r.g.b.&lt;br /&gt;
|-&lt;br /&gt;
|fonts&lt;br /&gt;
|integer&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Indicates how many types of numbering fonts used.&lt;br /&gt;
|-&lt;br /&gt;
|fontsize&lt;br /&gt;
|float metres&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|The size of the sign text&lt;br /&gt;
|-&lt;br /&gt;
|fonts-path&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Replaces asset-filename usage for ‘fonts’.&lt;br /&gt;
|-&lt;br /&gt;
|frame-rate&lt;br /&gt;
|float frames/second&lt;br /&gt;
|config.txt&lt;br /&gt;
|turntable&lt;br /&gt;
|Generally make this 30 (frames per second)&lt;br /&gt;
|-&lt;br /&gt;
|frequency&lt;br /&gt;
|float&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|This variable specifies the flash frequency in Hz, e.g. 1 for once per second, 0.5 for once every 2 seconds, 2 for twice per second.&lt;br /&gt;
|-&lt;br /&gt;
|fuel&lt;br /&gt;
|decimal&lt;br /&gt;
|mass {&lt;br /&gt;
|engine&lt;br /&gt;
|Fuel level, not currently in use&lt;br /&gt;
|-&lt;br /&gt;
|fuel-energy&lt;br /&gt;
|decimal&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|Relative energy in kilojoules per kilogram of coal&lt;br /&gt;
|-&lt;br /&gt;
|function&lt;br /&gt;
|&#039;TrackSignal&#039;&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Must be set to &#039;TrackSignal&#039;&lt;br /&gt;
|-&lt;br /&gt;
|grounded&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Height in meters for the road to be offset from terrain.&lt;br /&gt;
|}&lt;br /&gt;
==ha-hz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|height&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Height from the track level to the base. Must be a negative value in order to raise the bridge above the ground.&lt;br /&gt;
|-&lt;br /&gt;
|height&lt;br /&gt;
|integer&lt;br /&gt;
|thumbnails-ID {&lt;br /&gt;
|all&lt;br /&gt;
|Image height&lt;br /&gt;
|-&lt;br /&gt;
|height&lt;br /&gt;
|negative metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Height from the track level to the base. Should be negative.&lt;br /&gt;
|-&lt;br /&gt;
|height-range&lt;br /&gt;
|min,max metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|height-range min, max eg: height-range –10, 100. Where min and max are values in meters.&lt;br /&gt;
|-&lt;br /&gt;
|hidden&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Prevents the spline from being rendered.&lt;br /&gt;
|-&lt;br /&gt;
|highspeedexhauster &lt;br /&gt;
|decimal&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|For vacuum braking - not currently in use&lt;br /&gt;
|-&lt;br /&gt;
|highspeedexhauster_vacuumbrakepipe &lt;br /&gt;
|decimal&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|For vacuum braking&lt;br /&gt;
|-&lt;br /&gt;
|hornsound&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|References the KUID number for the traincar horn sound.&lt;br /&gt;
|}&lt;br /&gt;
==ia-iz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|icon0&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Deprecated.  Use thumbnails container&lt;br /&gt;
|-&lt;br /&gt;
|icon1&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Deprecated.  Use thumbnails container&lt;br /&gt;
|-&lt;br /&gt;
|icon2&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Deprecated.  Use thumbnails container&lt;br /&gt;
|-&lt;br /&gt;
|icon3&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Deprecated.  Use thumbnails container&lt;br /&gt;
|-&lt;br /&gt;
|icon-texture&lt;br /&gt;
|[path/]filename.texture&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|The in-game representation of the product when specifying the load type for a compatible rollingstock item (driver) Should be a 64x64 TGA.&lt;br /&gt;
|-&lt;br /&gt;
|image&lt;br /&gt;
|[path/]filename&lt;br /&gt;
|thumbnails-ID {&lt;br /&gt;
|all&lt;br /&gt;
|Image filename&lt;br /&gt;
|-&lt;br /&gt;
|indbrakefull &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|independantbrakecylinder&lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|independantbrakecylinder_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|info-page&lt;br /&gt;
|[path/]filename.html&lt;br /&gt;
|config.txt&lt;br /&gt;
|profile&lt;br /&gt;
|Filename of the HTML information page for the session.&lt;br /&gt;
|-&lt;br /&gt;
|inherit-velocity&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|initial-boiler-temperature&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|initial-count&lt;br /&gt;
|integer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The initial number of items in the queue.&lt;br /&gt;
|-&lt;br /&gt;
|initiator&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Name of model to use at start of bridge, placed in subfolder with same name.&lt;br /&gt;
|-&lt;br /&gt;
|inputs {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|processID {&lt;br /&gt;
|industry&lt;br /&gt;
|Input process list&lt;br /&gt;
|-&lt;br /&gt;
|inputs-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|inputs {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|instance-type&lt;br /&gt;
|&#039;instance&#039;/&#039;resource&#039;&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|Instance-type: &#039;resource&#039; is used when there is no mesh, or one only mesh is referenced in the mesh table (Ie Liquids, Bulk loads etc). &#039;instance&#039; is used when more than one mesh is in the mesh table Ie: Passengers, General Goods. 200 max.‘size’ per Asset.&lt;br /&gt;
|-&lt;br /&gt;
|interior&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|References the KUID number for the traincar interior cab view.&lt;br /&gt;
|-&lt;br /&gt;
|interpolate&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|invisible&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Specifies whether the object is invisible.&lt;br /&gt;
|-&lt;br /&gt;
|isroad&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Isroad/Istrack. Two boolean tags detailing the behavior of the bridge. If the isroad is set to true, then cars are placed on the bridge. Both values should not be set to true.&lt;br /&gt;
|-&lt;br /&gt;
|istrack&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Isroad/Istrack. Two boolean tags detailing the behavior of the bridge. If the isroad is set to true, then cars are placed on the bridge. Both values should not be set to true.&lt;br /&gt;
|-&lt;br /&gt;
|istunnel&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Disables smoke effects for trains on track with this tag set.  Useful for tunnels, engine houses, snow sheds - anywhere you don&#039;t want smoke going through the roof of a structure.&lt;br /&gt;
|-&lt;br /&gt;
|junction-lever-mesh&lt;br /&gt;
|subcontainer&lt;br /&gt;
|junction-vertices-ID {&lt;br /&gt;
|fixed track&lt;br /&gt;
|The mesh (selected from the mesh table) to be used as a junction lever.&lt;br /&gt;
|-&lt;br /&gt;
|junction-vertex&lt;br /&gt;
|helper&lt;br /&gt;
|junction-vertices-ID {&lt;br /&gt;
|fixed track&lt;br /&gt;
|The attachment point (located in mesh file) at which to place the lever.&lt;br /&gt;
|-&lt;br /&gt;
|junction-vertices {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|fixed track&lt;br /&gt;
|The Junction-Vertices Container contains the tags needed to handle the lever portions of a fixed track.&lt;br /&gt;
|-&lt;br /&gt;
|junction-vertices-ID {&lt;br /&gt;
|container&lt;br /&gt;
|junction-vertices {&lt;br /&gt;
|fixed track&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|}&lt;br /&gt;
==ka-kz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|keyframes&lt;br /&gt;
|integer list&lt;br /&gt;
|config.txt&lt;br /&gt;
|turntable&lt;br /&gt;
|Specifies where on the animation the turntable is to stop.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;animation&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|This effect is used when a mesh has a variety of animations. Usually the animations will be controlled by a script related to the asset.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;attachment&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|In TRS we now have the ability to attach a mesh into another mesh by referencing it’s KUID through a meshtable.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;corona&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|A corona is a ‘glow’ light effect. It is a simple texture that is inserted at an attachment point within the mesh. Coronas can be added to any asset that uses a meshtable.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|interior object kind&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|The type of interior object the particular mesh is. Affects the behavior of the mesh in game. Kinds: lever (Levers, switches, dials etc), animated-lever (Animated Levers etc Eg. in steam cabs), collision-proxy (Mouse collisions for animated levers), needle (Gauge needles, Speedo, brake pres.), pullrope (Pull rope horn as in the F7), light (Wheelslip light)&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|kind&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Asset kind.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;name&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|Some assets may have editable signs. When you set an asset’s name in surveyor through the Edit Properties icon (‘?’ icon) the signage can be set-up to automatically update. The variables can be set for each sign.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;texture-replacement&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|This effect was created for rolling stock items to swap the visible texture of bulk loads (such as coal or woodchips).&lt;br /&gt;
|-&lt;br /&gt;
|kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Asset kuid&lt;br /&gt;
|-&lt;br /&gt;
|kuid-table {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|List of all required dependencies.&lt;br /&gt;
|-&lt;br /&gt;
|kuid-table-ID {&lt;br /&gt;
|kuid&lt;br /&gt;
|kuid-table {&lt;br /&gt;
|all&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|}&lt;br /&gt;
==la-lz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|latitude&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|latitude of this region&lt;br /&gt;
|-&lt;br /&gt;
|left-passenger-door {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Left side passenger doors.&lt;br /&gt;
|-&lt;br /&gt;
|length&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Length of track segment in meters&lt;br /&gt;
|-&lt;br /&gt;
|levels {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|Relative sound levels. The sound is silent until 0.1 m/s, ramping up in volume until 10.0 m/s, constant maximum after that. Note, a value below 0.1 will not play a sound.&lt;br /&gt;
|-&lt;br /&gt;
|licence&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|User licence details&lt;br /&gt;
|-&lt;br /&gt;
|lifetime&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Time in seconds that smoke particles exist for. Default is 3.&lt;br /&gt;
|-&lt;br /&gt;
|light&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Sets lighting to be used for object to be ambient or directional. 0 sets ambient lighting and object is light by general light value, 1 sets directional light which is affected by the position of the sun.&lt;br /&gt;
|-&lt;br /&gt;
|light&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Sets lighting to be used for object to be ambient or directional. 0 sets ambient lighting and object is light by general light value, 1 sets directional light which is affected by the position of the sun.&lt;br /&gt;
|-&lt;br /&gt;
|light_color&lt;br /&gt;
|rgb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|RGB headlight color. Eg. 255,255,255.&lt;br /&gt;
|-&lt;br /&gt;
|lights {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|mosignal&lt;br /&gt;
|Signal lighting container.  A list of coronas attached to each light point. Coronas are stored in each signal object’s directory alongside it’s textures.&lt;br /&gt;
|-&lt;br /&gt;
|lights-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|lights {&lt;br /&gt;
|mosignal&lt;br /&gt;
|Light point identifier.&lt;br /&gt;
|-&lt;br /&gt;
|limits&lt;br /&gt;
|float list&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|Mathematical boundaries Trainz uses determine the objects function. These values vary as different objects use different mathematical units.&lt;br /&gt;
|-&lt;br /&gt;
|longitude&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|longitude of this region&lt;br /&gt;
|-&lt;br /&gt;
|loop&lt;br /&gt;
|float seconds&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Time in seconds to loop the smoke sequence. Only valid if mode is set to time.&lt;br /&gt;
|-&lt;br /&gt;
|loopdelay&lt;br /&gt;
|float seconds&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Delay (in seconds) before the effect is played again.&lt;br /&gt;
|-&lt;br /&gt;
|looped&lt;br /&gt;
|boolean&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|animation effect&lt;br /&gt;
|Looped 1 (optional) Use only if the animation is looping (repeating). Default 0 (i.e. not looped).&lt;br /&gt;
|-&lt;br /&gt;
|looping&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|turntable&lt;br /&gt;
|specifies that the turntable can go all the way around, rather than stopping at a certain point.&lt;br /&gt;
|}&lt;br /&gt;
==ma-mz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|mainreservoir &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mainreservoir &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mainreservoir_ep &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mainreservoir_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|main-reservoir-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|map-kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|profile&lt;br /&gt;
|Kuid of the map attached to this session.&lt;br /&gt;
|-&lt;br /&gt;
|mass&lt;br /&gt;
|float kg&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|The physical mass of the product. For Containers and Passengers this is calculated in kilograms/unit, while for Liquid and Bulk loads this is calculated in kilograms/litre.&lt;br /&gt;
|-&lt;br /&gt;
|mass&lt;br /&gt;
|integer kg&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Mass in kilograms&lt;br /&gt;
|-&lt;br /&gt;
|mass {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|max-accel &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|max-coupler-gap&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|maximum gap expected between couplers of this type&lt;br /&gt;
|-&lt;br /&gt;
|max-decel &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|max-distance&lt;br /&gt;
|float&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|Maximum distance at which the sound is played. Eg 1000&lt;br /&gt;
|-&lt;br /&gt;
|max-fire-coal-mass&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|max-fire-temperature&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maximum-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maxrate&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The maximum rate at which particles are emitted.&lt;br /&gt;
|-&lt;br /&gt;
|maxsize&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maxspeed &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maxspeedkph&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maxvoltage &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|[path/]filename.im&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh name. This may include a sub-path. ie: mesh nightwindows/nightwindows.im, where the file nightwindows.im has been placed in the subdirectory nightwindows.&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|[path/]filename.lm&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh name. This may include a sub-path. ie: mesh nightwindows/nightwindows.im, where the file nightwindows.im has been placed in the subdirectory nightwindows.&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|[path/]filename.pm&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh name. This may include a sub-path. ie: mesh nightwindows/nightwindows.im, where the file nightwindows.im has been placed in the subdirectory nightwindows.&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|drivercharacter&lt;br /&gt;
|This refers to the kuid of the mesh asset inserted in to the locomotive mesh at a.driver0 (when in the Driver Module).&lt;br /&gt;
|-&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|mesh object&lt;br /&gt;
|This is the new and preferred method of asset mesh placement for most mesh asset types. It gives huge control over mesh placement and animations. There are some asset types that cannot use a meshtable. These include all Bridges, Tunnels, Rails, Pantographs and other Spline Objects (eg. Fences or Catenaries).&lt;br /&gt;
|-&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|interior&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|min-distance&lt;br /&gt;
|float&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|Minimum distance at which the sound is played. Eg 0.&lt;br /&gt;
|-&lt;br /&gt;
|minimum-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|minrate&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The minimum rate at which particles are emitted.&lt;br /&gt;
|-&lt;br /&gt;
|minsize&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mode&lt;br /&gt;
|speed/anim/timeofday/time&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Describes the mode or type of this smoke effect. This affects how start and period are interpreted. (time | speed | anim | timeofday). &lt;br /&gt;
|-&lt;br /&gt;
|mode0 {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|trackside&lt;br /&gt;
|Mesh showing lever in first position&lt;br /&gt;
|-&lt;br /&gt;
|mode0 {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Mesh showing lever in first position&lt;br /&gt;
|-&lt;br /&gt;
|mode1 {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|trackside&lt;br /&gt;
|Mesh showing lever in second position&lt;br /&gt;
|-&lt;br /&gt;
|mode1 {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Mesh showing lever in second position&lt;br /&gt;
|-&lt;br /&gt;
|motor {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mousespeed&lt;br /&gt;
|float&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|This controls the use of the mouse on screen. Use this to control the mouse speed and push/pull direction for levers and dials. • mousespeed -1 Inverts mouse direction. • mousespeed 2 Doubles mouse speed in default direction. • mousespeed -0.5 Inverts mouse direction and halves the speed.&lt;br /&gt;
|-&lt;br /&gt;
|moving-friction-coefficient &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
==na-nz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|&amp;lt;blank&amp;gt;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|name effect&lt;br /&gt;
|Leave blank to allow the name to be inserted by script without an initial default.&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|&#039;name&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|name effect&lt;br /&gt;
|When name name is specified, it uses the asset’s changeable name. Changed through the Edit Properties icon (the ‘?’ icon) in Surveyor.&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|string&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|name effect&lt;br /&gt;
|The default text when placed.  If name Graceland (for example) was used, the sign would never be able to be changed even though the user may have changed the asset’s name in Surveyor.&lt;br /&gt;
|-&lt;br /&gt;
|night&lt;br /&gt;
|[path/]filename.tga&lt;br /&gt;
|config.txt&lt;br /&gt;
|environment&lt;br /&gt;
|Name of image file for night sky. File should be 256 x 256 pixel 24bit tga. The file extension should be excluded here, ie “QLD_Sky” rather than  &amp;quot;qLD_Sky.texture.txt”.&lt;br /&gt;
|-&lt;br /&gt;
|night-mesh-base&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh to which &#039;default-night&#039; is linked.  If the &#039;night-mesh-base&#039; is hidden then &#039;default-night&#039; will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|nightmode&lt;br /&gt;
|home/lamp/constant&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Only add this tag if you reference a default-night mesh in the mesh-table. Values: home, lamp or constant.&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe_autobrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe_mainreservoir &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipevent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no4pipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no4pipe &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no4pipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|normal&lt;br /&gt;
|[path/]filename.tga&lt;br /&gt;
|config.txt&lt;br /&gt;
|environment&lt;br /&gt;
|Name of image file for normal sky. File should be 256 x 256 pixel 24bit tga. The file extension should be excluded here, ie “QLD_Sky” rather than  &amp;quot;qLD_Sky.texture.txt”.&lt;br /&gt;
|-&lt;br /&gt;
|nostartdelay&lt;br /&gt;
|boolean&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|0 or 1, default 0 If not set, the sound will have a short delay before playing, this stops flanging (flanging is a really nasty sound caused when several copies of the same sound are played at once).&lt;br /&gt;
|-&lt;br /&gt;
|notches&lt;br /&gt;
|float list&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|The position of notches within the angle boundaries. These are represented as decimal points between and including 0 and 1.&lt;br /&gt;
|-&lt;br /&gt;
|notchheight&lt;br /&gt;
|float list&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|The size of the notches specified.&lt;br /&gt;
|}&lt;br /&gt;
==oa-oz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|object-size&lt;br /&gt;
|float metres&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|Size of the corona on the object when viewed up close Defaults to 0.15 (i.e. 0.15m)&lt;br /&gt;
|-&lt;br /&gt;
|obsolete-table { &lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|The obsolete-table describes the asset’s revision history.&lt;br /&gt;
|-&lt;br /&gt;
|ontheright&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|Cars drive on the right side of the road.&lt;br /&gt;
|-&lt;br /&gt;
|opacity&lt;br /&gt;
|0..1&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Controls the opacity of the mesh. Zero (invisible, not recommended) or one (solid).&lt;br /&gt;
|-&lt;br /&gt;
|opacity&lt;br /&gt;
|0..1&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|Usually used for the window mesh to give transparency (and the impression of reflection).&lt;br /&gt;
|-&lt;br /&gt;
|organisation&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Organisation name will show in Trainz in Railyard as the organisation for the model, for instance if you use Joe’s Trainz or Cripple Creek Logging Company.&lt;br /&gt;
|-&lt;br /&gt;
|origin&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The Country Abbreviation.&lt;br /&gt;
|-&lt;br /&gt;
|outputs {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|process-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Output process list&lt;br /&gt;
|-&lt;br /&gt;
|outputs-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|outputs {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|}&lt;br /&gt;
==pa-pz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|paintshed-skin-used&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|Kuid of the paintshed skin used. (if applicable)&lt;br /&gt;
|-&lt;br /&gt;
|paintshed-skin-used&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-template&lt;br /&gt;
|Kuid of the paintshed skin to be used for this template.&lt;br /&gt;
|-&lt;br /&gt;
|paintshed-template-used&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|Kuid of the paintshed template used. (if applicable)&lt;br /&gt;
|-&lt;br /&gt;
|pantograph&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The pantograph kuid number inserted at a.pant0, a.pant1, etc. Use this tag only when needed.&lt;br /&gt;
|-&lt;br /&gt;
|passenger-height&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|This value sets the height of the passenger asset in metres, to suit the platform model height. (Doesn&#039;t work)&lt;br /&gt;
|-&lt;br /&gt;
|passenger-queue&lt;br /&gt;
|boolean&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Defines this as a passenger station queue.&lt;br /&gt;
|-&lt;br /&gt;
|period&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The usage of period depends on the value of the mode tag. If the mode is set to time, period is the duration of time this effect will remain active.&lt;br /&gt;
|-&lt;br /&gt;
|permit-commit&lt;br /&gt;
|boolean&lt;br /&gt;
|privileges {&lt;br /&gt;
|all&lt;br /&gt;
|Allows the end-user to commit changes to this asset.&lt;br /&gt;
|-&lt;br /&gt;
|permit-edit&lt;br /&gt;
|boolean&lt;br /&gt;
|privileges {&lt;br /&gt;
|all&lt;br /&gt;
|Allows the end-user to open this asset for editing&lt;br /&gt;
|-&lt;br /&gt;
|permit-listing&lt;br /&gt;
|boolean&lt;br /&gt;
|privileges {&lt;br /&gt;
|all&lt;br /&gt;
|Allows the end-user to view this object in the surveyor pickers (if it is of an appropriate kind.) Does not affect the visibility of the asset within the CMP asset list.&lt;br /&gt;
|-&lt;br /&gt;
|piston-angular-offsets&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|piston-area&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|piston-to-atmosphere-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|piston-volume-max&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|piston-volume-min&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|pressure {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|preview-mesh-kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh to be used in the surveyor preview area. This is useful when an asset has a large bounding box. Ie the &amp;quot;Airport” with it’s jet animation.&lt;br /&gt;
|-&lt;br /&gt;
|preview-scale&lt;br /&gt;
|float&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Scale of the preview mesh.&lt;br /&gt;
|-&lt;br /&gt;
|priority&lt;br /&gt;
|float, 0 = highest&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The priority of the sound versus other sounds to be played. Lower values indicate a higher priority.&lt;br /&gt;
|-&lt;br /&gt;
|privileges {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|Limited content protection applies only to built-in (JArchived) assets.&lt;br /&gt;
|-&lt;br /&gt;
|processes {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|Processes (required) The input and output settings of the industry. You can specify the amount of input and output for each queue referenced product as well as the duration (or rate) in seconds for that process to take place. All queues and processes are linked through the industry asset’s script file.&lt;br /&gt;
|-&lt;br /&gt;
|process-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|processes {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|product-category&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|Kuid of applicable category for this product&lt;br /&gt;
|-&lt;br /&gt;
|product-id&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|For paintshed support.&lt;br /&gt;
|-&lt;br /&gt;
|product-kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The product type used to fill ‘initial-count’&lt;br /&gt;
|-&lt;br /&gt;
|product-texture&lt;br /&gt;
|[path/]filename.texture&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|The texture to be used with load ‘texture-replacement’. Ie When a hopper loads woodchips instead of it’s default load of coal.&lt;br /&gt;
|-&lt;br /&gt;
|product-type&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|For paintshed support.&lt;br /&gt;
|-&lt;br /&gt;
|product-version&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|For paintshed support.&lt;br /&gt;
|}&lt;br /&gt;
==qu-rz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|queue&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|inputs-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|queue from which to take input.&lt;br /&gt;
|-&lt;br /&gt;
|queue&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|outputs-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|queue in which to place output.&lt;br /&gt;
|-&lt;br /&gt;
|queues {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|The queues container states which product or products the industry can use. It contains the size of each product, the initial count when placed, and can refer to it’s visual load state whether through a load animation or attachment.&lt;br /&gt;
|-&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|radius&lt;br /&gt;
|float&lt;br /&gt;
|attached-trigger-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Radius (in meters) of the trigger.&lt;br /&gt;
|-&lt;br /&gt;
|radius&lt;br /&gt;
|float&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|The notch position relative to the attachment point.&lt;br /&gt;
|-&lt;br /&gt;
|random-color-high-hsb&lt;br /&gt;
|hsb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|For clutter-mesh objects, specifies a color range for tinting purposes. HSB color space.&lt;br /&gt;
|-&lt;br /&gt;
|random-color-low-hsb&lt;br /&gt;
|hsb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|For clutter-mesh objects, specifies a color range for tinting purposes. HSB color space.&lt;br /&gt;
|-&lt;br /&gt;
|rate&lt;br /&gt;
|float particles/second&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The rate of emission in particles per second for modes time, speed, and timeofday, or the number of particles to emit over the animation period for  anim mode. Default is 4.&lt;br /&gt;
|- style=&amp;quot;color:navy; background:lightyellow;&amp;quot;&lt;br /&gt;
|[[region]] &amp;lt;br/&amp;gt;(depreciated)&lt;br /&gt;
|region code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general  &amp;lt;br/&amp;gt;(obsolescent)&lt;br /&gt;
|Trainz 1.x legacy tag; the country region to which this asset belongs. This should be one of the Auran-supplied region names, but older content has shown full names. &lt;br /&gt;
|-&lt;br /&gt;
|repeat-delay&lt;br /&gt;
|random [min,max] seconds&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|1 or 2 numbers (min, max, in sec) time to delay between the end of the sound playing, and playing it again randomised between(min .. max) default min is 0, default max is equal to min  Notes: Repeat-delay now has two values rather than one. When upgrading old assets, make sure there is a repeat delay for both values or the sound will loop endlessly when triggered.&lt;br /&gt;
|-&lt;br /&gt;
|repeats&lt;br /&gt;
|integer&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|The number of times the mesh is placed between spline points&lt;br /&gt;
|-&lt;br /&gt;
|resistance &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|reversed&lt;br /&gt;
|boolean&lt;br /&gt;
|bogeys-ID {&lt;br /&gt;
|traincar&lt;br /&gt;
|Reverses the animation direction. Use when the bogie attachment point in the traincar asset has been rotated 180 degrees around the Z axis.&lt;br /&gt;
|-&lt;br /&gt;
|rgb&lt;br /&gt;
|rgb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|This value should be left as default.&lt;br /&gt;
|-&lt;br /&gt;
|right-passenger-door {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Right side passenger doors.&lt;br /&gt;
|-&lt;br /&gt;
|rollstep&lt;br /&gt;
|float degrees&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where n is a value in degrees. Used in conjunction with rotate-yz-range, rollstep lets you specify the step size of roll angles for this object. Other example values are 1, 5, 20 etc. The default rollstep is 1.0.&lt;br /&gt;
|-&lt;br /&gt;
|rotate&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where n is 0 or 1 (default). This lets you disable rotation on a scenery object. 0 to disable, 1 to enable (default).&lt;br /&gt;
|-&lt;br /&gt;
|rotate-yz-range&lt;br /&gt;
|min,max degrees&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where min and max are values in degrees. This tag lets you set the roll / yz rotation range (normal object rotation is an xy rotation). If you want your scenery object to support rolling then use this tag to set the minimum and maximum roll range. By default, objects have a min/max roll range of 0 to 0.&lt;br /&gt;
|-&lt;br /&gt;
|rotstep&lt;br /&gt;
|float degrees&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Where n is a value in degrees. This lets you specify the step size of rotation angles for this object. Other example values are 1, 10, 20, 90, 180 etc. The default rotstep is 1.0&lt;br /&gt;
|-&lt;br /&gt;
|running-number&lt;br /&gt;
|string&lt;br /&gt;
|consists-vehicle-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Running number of the vehicle.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==sa-sz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|safety-valve-high-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|safety-valve-high-pressure&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|safety-valve-low-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|safety-valve-low-pressure&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|scale&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|scale &lt;br /&gt;
|?&lt;br /&gt;
|mass {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|scale &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|scale &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|script&lt;br /&gt;
|[path/]filename.gs&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|This refers to the name of the script file.&lt;br /&gt;
|-&lt;br /&gt;
|search-limit&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Not required. For internal use only.&lt;br /&gt;
|-&lt;br /&gt;
|shadow {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Shadow mesh.&lt;br /&gt;
|-&lt;br /&gt;
|shadows&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Undocumented&lt;br /&gt;
|-&lt;br /&gt;
|shift&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|shovel-coal-mass&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|showhelp&lt;br /&gt;
|boolean&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Show Driver Help. (off, on)&lt;br /&gt;
|-&lt;br /&gt;
|show-in-consist-menu&lt;br /&gt;
|boolean&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Boolean flag that dictates whether this train appears in the consist menu (0 - false, 1 - true). The consist menu was along the bottom of the screen in the original Trainz and UTC but is no longer present. It effectively stopped a user from getting access to an AI train. Redundant for most uses except for legacy/scenario usage.&lt;br /&gt;
|-&lt;br /&gt;
|signals {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|mosignal&lt;br /&gt;
|Sets out which aspects the signal is capable of displaying, and also which light points are activated when each state is displayed.&lt;br /&gt;
|-&lt;br /&gt;
|signals-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|lights {&lt;br /&gt;
|mosignal&lt;br /&gt;
|Signal point identifier.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|integer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Size of queue.&lt;br /&gt;
|-&lt;br /&gt;
|smoke_fastlife&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Longevity of smoke particles at normal speed.&lt;br /&gt;
|-&lt;br /&gt;
|smoke_fastspeed&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|smoke_height&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|How hard particles are pushed out of the stack.&lt;br /&gt;
|-&lt;br /&gt;
|smoke_random&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Level of particle excitation.&lt;br /&gt;
|-&lt;br /&gt;
|smoke_shade&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Smoke opacity. (0 - 1)&lt;br /&gt;
|-&lt;br /&gt;
|smoke_slowlife&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Longevity of smoke particles at low speed.&lt;br /&gt;
|-&lt;br /&gt;
|smoken {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|snapgrid&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where n is a value in meters. This lets you specify the size of the grid the object snaps to. We recommend factors/fractions of 720 as this is the size of a base board and the positioning may do funny things across section borders. e.g. 1, 2, 5, 10, 20, 30, 40, 45, 60, 80, 90, 120, 180, 240, 360, 720. The default snapgrid is 10.&lt;br /&gt;
|-&lt;br /&gt;
|snapmode&lt;br /&gt;
|0/1/2&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where n is either 0 (default) , 1 or 2. Use snapmode to enable snapping of a scenery object to the snap grid. 0 will disable grid snapping (default), 1 will enable grid snapping, 2 will enable an offset grid snapping. Offset grid snapping will cause objects to be snapped to the grid but will also offset the object’s position by ½ the grid size – essentially positioning the object in between the normal grid lines.&lt;br /&gt;
|-&lt;br /&gt;
|sound { &lt;br /&gt;
|subcontainer&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|List of .wav files to play (randomly picked)&lt;br /&gt;
|-&lt;br /&gt;
|soundscript {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|mesh object&lt;br /&gt;
|Controls the looping sound made by the object.&lt;br /&gt;
|-&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|soundscript {&lt;br /&gt;
|mesh object&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|speed&lt;br /&gt;
|float&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|animation effect&lt;br /&gt;
|Speed factor of the animation. Default 1, 2 for double speed, 0.5 for half speed&lt;br /&gt;
|-&lt;br /&gt;
|speedlimit&lt;br /&gt;
|float metres/second&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|This value is the maximum speed allowed in meters per second&lt;br /&gt;
|-&lt;br /&gt;
|start&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The usage of stard depends on the value of the mode tag. If the mode is set to time, start is a set of time values in seconds after the creation of this effect’s parent object when this phase of the effect will start. If the mode is set to speed, start is a speed in meters per second (m/s) and period is not used. (Note: 1 m/s = 3.6 km/hr.) All other sequence attributes (rate, velocity, lifetime, minsize, maxsize) are interpolated so there are smooth transitions between phases. If the mode is set to anim, start is a value from 0.0 to 1.0 which describes the start time into the object’s animation cycle. If the mode is set to timeofday, start is a value from 0.0 to 1.0 which describes the time of day when this effect will start. Values range as follow: 0 - midnight, 0.25 - 6am, 0.5 - midday, 0.75 6pm, 1.0 - midnight.&lt;br /&gt;
|-&lt;br /&gt;
|start-enabled&lt;br /&gt;
|boolean&lt;br /&gt;
|process-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Specifies whether the process starts enabled.&lt;br /&gt;
|-&lt;br /&gt;
|startingtime&lt;br /&gt;
|0..1&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Time of day. Range is from 0 to 1 (0.5 - midday).&lt;br /&gt;
|-&lt;br /&gt;
|steam {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|storm&lt;br /&gt;
|[path/]filename.tga&lt;br /&gt;
|config.txt&lt;br /&gt;
|environment&lt;br /&gt;
|Name of image file for stormy sky. File should be 256 x 256 pixel 24bit tga. The file extension should be excluded here, ie “QLD_Sky” rather than  &amp;quot;qLD_Sky.texture.txt”.&lt;br /&gt;
|-&lt;br /&gt;
|string-table {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|The string table stores a list of text strings to be used by the industry script.&lt;br /&gt;
|-&lt;br /&gt;
|string-table-## {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|These alternative string tables store translated strings&lt;br /&gt;
|-&lt;br /&gt;
|supports-null-driver-character&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|drivercommand&lt;br /&gt;
|Command can be executed without a driver present in the selected loco.&lt;br /&gt;
|-&lt;br /&gt;
|surface-area &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|surveyor-name-label&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Specifies whether this item has floating name label text.&lt;br /&gt;
|-&lt;br /&gt;
|surveyor-only&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Adding this means the attached mesh will only be visible in Surveyor and not Driver.&lt;br /&gt;
|-&lt;br /&gt;
|surveyor-only&lt;br /&gt;
|boolean&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|attachment effect&lt;br /&gt;
|Adding this means the attached mesh will only be visible in Surveyor and not Driver.&lt;br /&gt;
|}&lt;br /&gt;
==ta-tz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|tender&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Specifies that the traincar is a tender.&lt;br /&gt;
|-&lt;br /&gt;
|terminator&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Name of model to use at end of bridge, placed in subfolder with same name.&lt;br /&gt;
|-&lt;br /&gt;
|test-collisions&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|Mouse cannot be used for this mesh. Collision mesh used instead. Ie animated-levers.&lt;br /&gt;
|-&lt;br /&gt;
|texture&lt;br /&gt;
|[path/]filename.texture&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|An image texture file.&lt;br /&gt;
|-&lt;br /&gt;
|texture&lt;br /&gt;
|[path]/filename.texture&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|texture-replacement effect&lt;br /&gt;
|Texture reference denoting the texture file to be swapped by this effect.&lt;br /&gt;
|-&lt;br /&gt;
|texture&lt;br /&gt;
|kuid&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Kuid of the texture to be used for the effect.&lt;br /&gt;
|-&lt;br /&gt;
|texture-kuid&lt;br /&gt;
|&amp;lt;blank&amp;gt;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|If the texture-kuid tag is not present the corona will use the default yellow/orange texture in TRS.&lt;br /&gt;
|-&lt;br /&gt;
|texture-kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|Add this tag only when you want to specify your own texture for the corona. It specifies the KUID of a kind texture asset. See KIND TEXTURE.&lt;br /&gt;
|-&lt;br /&gt;
|textures {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|texturegroup&lt;br /&gt;
|The textures container stores a list of additional textures to be used in the texture group.&lt;br /&gt;
|-&lt;br /&gt;
|three-part&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|hornsound&lt;br /&gt;
|Specifies that the hornsound has a beginning, middle and ending sound.&lt;br /&gt;
|-&lt;br /&gt;
|throttle-notches &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|throttle-power {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|thumbnails {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|Any asset may specify a thumbnail or preview image.&lt;br /&gt;
|-&lt;br /&gt;
|thumbnails-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|thumbnails {&lt;br /&gt;
|all&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|timerate&lt;br /&gt;
|float&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Time progression. (1 - real-time, 2 - double speed etc.)&lt;br /&gt;
|-&lt;br /&gt;
|track&lt;br /&gt;
|kuid&lt;br /&gt;
|attached-track-ID {&lt;br /&gt;
|scenery with track&lt;br /&gt;
|Kuid of the track to be used.&lt;br /&gt;
|-&lt;br /&gt;
|track&lt;br /&gt;
|kuid&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The track type to which this sound will apply&lt;br /&gt;
|-&lt;br /&gt;
|track&lt;br /&gt;
|trackID&lt;br /&gt;
|attached-trigger-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The track name which the train must be on to trigger.&lt;br /&gt;
|-&lt;br /&gt;
|trackmark&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Specifies that the object is a trackmark.&lt;br /&gt;
|-&lt;br /&gt;
|trackoffsets&lt;br /&gt;
|float list, metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Distance in meters the rail/s are attached to the center of the spline. Any number of tracks can be attached to the spline, only splines with the same track offsets can be connected together.&lt;br /&gt;
|-&lt;br /&gt;
|track-parent&lt;br /&gt;
|kuid&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The parent (eg. bridge/industry/tunnel) of the track to which this sound will apply.&lt;br /&gt;
|-&lt;br /&gt;
|trackdirections&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Specifies the direction of traffic for each of the road assets attached to the bridge,&lt;br /&gt;
&lt;br /&gt;
    0 = traffic to flow in one direction for the dual lanes attached at -3.5 metres, &lt;br /&gt;
    1 = traffic to flow in the opposite direction for the dual lanes placed at 3.5 metres. &lt;br /&gt;
|-&lt;br /&gt;
|trackside&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|This is a value that is the distance in meters the object is placed relative to the center of the track. Negative values will put the object on the left side of the track, and positive values will appear on the right.&lt;br /&gt;
|-&lt;br /&gt;
|track-sound&lt;br /&gt;
|kuid&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The kuid of the tracksound object to be used.&lt;br /&gt;
|-&lt;br /&gt;
|tracksound {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|Tracksound&lt;br /&gt;
|A sound asset that is referenced by track or bogeys to play a different sound from the default track/train sound (for example when a train travels over a bridge or through a tunnel).&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipe_reservoir &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipevent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainz-build&lt;br /&gt;
|build code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The Trainz build is the version number for which this asset was created.&lt;br /&gt;
|-&lt;br /&gt;
|traffic-speed&lt;br /&gt;
|int&lt;br /&gt;
|config.txt&lt;br /&gt;
|spline&lt;br /&gt;
|&#039;&#039;&#039;Only applicable to splines which have &#039;isroad&#039; set.&#039;&#039;&#039; Defines the carz speed limit of the road in meters per second. Carz currently travel at up to 80%-110% (depending on the car) of the speed limit, except when overtaking.&lt;br /&gt;
|-&lt;br /&gt;
|trigger&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Specifies that the object is a trigger.&lt;br /&gt;
|-&lt;br /&gt;
|trigger&lt;br /&gt;
|string&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|A trigger may be used in an event file (.evt) associated with an animation. It plays at selected key frames of animation as defined in the event file. Sound files may triggered in this manner, and from scripting. Used in the mojunction example (switch lever) the “toggle” action is automatically triggered when the lever is operated and the sound plays.&lt;br /&gt;
|-&lt;br /&gt;
|turntable {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|turntable&lt;br /&gt;
|Predefined submesh identifier&lt;br /&gt;
|-&lt;br /&gt;
|turntable {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. &lt;br /&gt;
|-&lt;br /&gt;
|two-part&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|hornsound&lt;br /&gt;
|Indicates that the Railyard and Driver hornsounds are different. The Driver hornsound is looping. If this tag is not present, the hornsound defauts to UTC equivalent non-looping format.&lt;br /&gt;
|-&lt;br /&gt;
|type&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Specify a type for the model that will be used in the Surveyor menu drop down menu for Track or Object type.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ua-vz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|uncached_alphas&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|This is used in certain situations to improve alpha sorting. This should only be set to 1 for tracks that use an alpha texture and are always placed flat &lt;br /&gt;
|-&lt;br /&gt;
|unit_mesh&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|For mesh-reducing track, the filename of the long mesh, which must be placed in a subdirectory of the same name as the mesh. Only the file name is entered, not the directory name nor the file extension. For example, the full pathname and extension is “rockwall/rockwall.im”. Enter only “rockwall” in the text input box.&lt;br /&gt;
|-&lt;br /&gt;
|upright&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Specifies whether the bridge “legs” point vertically, or perpendicular to the spline.&lt;br /&gt;
|-&lt;br /&gt;
|useadjoiningtracktype&lt;br /&gt;
|boolean&lt;br /&gt;
|attached-track-ID {&lt;br /&gt;
|scenery with track&lt;br /&gt;
|Indicates whether the track type should change to match that of the first track joined to the object.&lt;br /&gt;
|-&lt;br /&gt;
|use-gradient-track&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|This means to use the spline gradient rather than following the ground height.&lt;br /&gt;
|-&lt;br /&gt;
|use-parent-bounds&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Specifies that the mesh should use the bounds of the parent object for visibility culling. Use with caution.&lt;br /&gt;
|-&lt;br /&gt;
|username&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The human-readable English name of this asset.&lt;br /&gt;
|-&lt;br /&gt;
|username-##&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The human-readable translated name of this asset.&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakecylinder_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakecylinder_vacuumbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipe&lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipereleasevent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipevent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakereservoir &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakereservoir_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakereservoir_vacuumbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|value-range&lt;br /&gt;
|min,max time of day&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|2 numbers, currently used only for day/night sound effects. Midnight is 0.5, midday = 0.0 or 1.0 Where the numbers are not the same, this sets the start and end times for the sound to play.  Default 0,0 (off)&lt;br /&gt;
|-&lt;br /&gt;
|vehicle&lt;br /&gt;
|kuid&lt;br /&gt;
|consists-vehicle-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The kuid of the vehicle to be used.&lt;br /&gt;
|-&lt;br /&gt;
|velocity&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The initial speed of emitted smoke particles. Default is 1.&lt;br /&gt;
|-&lt;br /&gt;
|vertices {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|attached-track-ID {&lt;br /&gt;
|scenery with track&lt;br /&gt;
|Attachment points at which to place track.&lt;br /&gt;
|-&lt;br /&gt;
|visible-on-minimap&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Specifies whether the object\track is displayed on the minimap.&lt;br /&gt;
|-&lt;br /&gt;
|volume&lt;br /&gt;
|0..1&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Gain of the sound Default 1.0 = 100%&lt;br /&gt;
|-&lt;br /&gt;
|volume {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
==wa-zz==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|water&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Undocumented&lt;br /&gt;
|-&lt;br /&gt;
|watercolor&lt;br /&gt;
|rgb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|RGB color value of the water for the region.&lt;br /&gt;
|-&lt;br /&gt;
|water-injector-rate&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|wave-shift&lt;br /&gt;
|?&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|Affects the flashing intensity pattren on the corona.&lt;br /&gt;
|-&lt;br /&gt;
|weather&lt;br /&gt;
|0..7&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Weather setting. (clear, cloudy, drizzle, rain, stormy, light snow, medium snow, heavy snow)&lt;br /&gt;
|-&lt;br /&gt;
|westinghouse-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|width&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Width of track mesh in meters.&lt;br /&gt;
|-&lt;br /&gt;
|width&lt;br /&gt;
|integer&lt;br /&gt;
|thumbnails-ID {&lt;br /&gt;
|all&lt;br /&gt;
|Image width&lt;br /&gt;
|-&lt;br /&gt;
|workingscale&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Undocumented&lt;br /&gt;
|-&lt;br /&gt;
|workingunits&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Undocumented&lt;br /&gt;
|-&lt;br /&gt;
|[[&amp;quot;world-origin&amp;quot; container|world-origin]]&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Undocumented,&amp;lt;br/&amp;gt;latitude, longitude, and altitude&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
 &lt;br /&gt;
;TBDL - should have something here about things discarded, moved and used differently version to version.&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
{{ORP-bot}}&amp;lt;div&amp;gt; {{FUN-bot}}&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=35069</id>
		<title>Grade Crossing XING BNSF50 CDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=35069"/>
		<updated>2022-12-26T23:39:45Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Updated originals by BNSF50&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Restored and/or replace bell to restore and/or reduce clicking sound. All assets updated to build 3.5 and available through the DLS. The NRC or &#039;no road crossing&#039; and ATWS or &#039;advanced train warning system&#039; are designed to work with boat&#039;s ATLS and the TRC system. Scripts updated to new TANE SP2 standards replacing obsolete function calls and tested in TRS19 and TRS22.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminology&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 2L     2 Lane Road&lt;br /&gt;
 2T     2 Tracks&lt;br /&gt;
 315    Opposite of 45 degrees&lt;br /&gt;
 45     45 degrees&lt;br /&gt;
 90     90 degrees&lt;br /&gt;
 ATLS   Advanced Traffic Light System&lt;br /&gt;
 ATWS   Advanced Train Warning System&lt;br /&gt;
 CA     Canada&lt;br /&gt;
 FEC    Florida East Coast&lt;br /&gt;
 Inc.   Incandesent&lt;br /&gt;
 LED    Light Emitting Diode&lt;br /&gt;
 NRC    No Road Crossing&lt;br /&gt;
 OH     Overhead&lt;br /&gt;
 Ped    Pedestrian&lt;br /&gt;
 TRC    Trigger Rail Crossing&lt;br /&gt;
 US     United States&lt;br /&gt;
 WSL    With Side Lights&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;To find these easily, seach &#039;CDE Xing&#039; in your Content Manager or Surveyor seach&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;kuid:647907:102757&amp;gt; Grade Xing NRC ATWS Ped Gate No Sign CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102957&amp;gt; Grade Xing US Inc. 2L 2T 315 WSL CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101677:1&amp;gt; Grade Xing NRC ATWS 3 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102837&amp;gt; Grade Xing US OH 2L 3T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102965&amp;gt; Grade Xing FEC 4L 45R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102964&amp;gt; Grade Xing FEC 4L 90R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101662:1&amp;gt; Grade Xing NRC ATWS CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102710&amp;gt; Grade Xing US 2L 1T US&amp;amp;S v1 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102966&amp;gt; Grade Xing FEC 4L 315R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101928:1&amp;gt; Grade Xing US Inc. 2L 1T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101672:1&amp;gt; Grade Xing NRC ATWS 2 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102736&amp;gt; Grade Xing NRC 4L Gated Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102739&amp;gt; Grade Xing NRC Gated Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102742&amp;gt; Grade Xing NRC STOP Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101782:2&amp;gt; Grade Xing NRC LED Gated 2L CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102960&amp;gt; Grade Xing US OH 4L 4T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102064:1&amp;gt; Grade Xing US OH 4L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101872:2&amp;gt; Grade Xing NRC OH 2L Gated CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101935:1&amp;gt; Grade Xing US OH 2L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101807:1&amp;gt; Grade Xing NRC OH 4L Gated CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102749&amp;gt; Grade Xing NRC OH 4L Gated FEC CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102953&amp;gt; Grade Xing US Inc. 2L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101929:1&amp;gt; Grade Xing US Inc. 2L 1T 315 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102697&amp;gt; Grade Xing NRC Skull and Crossbones CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102691&amp;gt; Grade Xing NRC US Inc. 2L Gated CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101858:3&amp;gt; Grade Xing US Inc. 2L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102690&amp;gt; Grade Xing NRC US Inc. 4L Gated CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102958&amp;gt; Grade Xing US 4L 4T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102702&amp;gt; Grade Xing NRC Wig Wag Peach Basket V5 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102726&amp;gt; Grade Xing US 2L 1T Banjo CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102713&amp;gt; Grade Xing US 2L 1T v2 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102717&amp;gt; Grade Xing US 2L 1T v3 Harpes Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101888:2&amp;gt; Grade Xing US OH 2L 1T W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102720&amp;gt; Grade Xing US 2L 1T v4 Upper Quadrant Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102962:1&amp;gt; Grade Xing US OH 4L 4T 315 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102066:1&amp;gt; Grade Xing US OH 4L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102706&amp;gt; Grade Xing US 2L 1T Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102707&amp;gt; Grade Xing US 2L 2T v2 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102955&amp;gt; Grade Xing US Inc. 2L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102956&amp;gt; Grade Xing US Inc. 2L 2T 45 WSL CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102954&amp;gt; Grade Xing US Inc. 2L 2T 315 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101906:1&amp;gt; Grade Xing US OH 2L 1T 45R W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101902:1&amp;gt; Grade Xing US OH 2L 1T 315R W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101898:2&amp;gt; Grade Xing US OH 2L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102886&amp;gt; Grade Xing US OH 2L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102868&amp;gt; Grade Xing US OH 4L 1T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101891:1&amp;gt; Grade Xing US OH 4L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102961&amp;gt; Grade Xing US OH 4L 4T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102065:1&amp;gt; Grade Xing US OH 4L 2T 315 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102852&amp;gt; Grade Xing US OH 4L 3T CDE&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Note from Clem aka BNSF50;&lt;br /&gt;
A special thanks to the following Trainz members for contributing to the working script&#039;s of these crossings, Fwassner, MartinVK, Phil Cambell and Andi06. Without their help, these crossings would not be animated. Also thank&#039;s to the many Trainz members who input praise, help and constructive critisism on the forum which enabled me to refine the crossings to what they are now. Please read the instructions located in the main folder for details on added features.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=35056</id>
		<title>Grade Crossing XING BNSF50 CDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=35056"/>
		<updated>2022-12-26T19:50:32Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Updated originals by BNSF50&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Restored and/or replace bell to restore and/or reduce clicking sound. All assets updated to build 3.5 and available through the DLS. The NRC or &#039;no road crossing&#039; and ATWS or &#039;advanced train warning system&#039; are designed to work with boat&#039;s ATLS and the TRC system. Scripts updated to new TANE SP2 standards replacing obsolete function calls and tested in TRS19 and TRS22.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminology&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 2L     2 Lane Road&lt;br /&gt;
 2T     2 Tracks&lt;br /&gt;
 315    Opposite of 45 degrees&lt;br /&gt;
 45     45 degrees&lt;br /&gt;
 90     90 degrees&lt;br /&gt;
 ATLS   Advanced Traffic Light System&lt;br /&gt;
 ATWS   Advanced Train Warning System&lt;br /&gt;
 CA     Canada&lt;br /&gt;
 FEC    Florida East Coast&lt;br /&gt;
 Inc.   Incandesent&lt;br /&gt;
 LED    Light Emitting Diode&lt;br /&gt;
 NRC    No Road Crossing&lt;br /&gt;
 OH     Overhead&lt;br /&gt;
 Ped    Pedestrian&lt;br /&gt;
 TRC    Trigger Rail Crossing&lt;br /&gt;
 US     United States&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;To find these easily, seach &#039;CDE Xing&#039; in your Content Manager or Surveyor seach&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;kuid:647907:102757&amp;gt; Grade Xing NRC ATWS Ped Gate No Sign CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102957&amp;gt; Grade Xing US Inc. 2L 2T 315 WSL CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101677:1&amp;gt; Grade Xing NRC ATWS 3 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102837&amp;gt; Grade Xing US OH 2L 3T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102965&amp;gt; Grade Xing FEC 4L 45R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102964&amp;gt; Grade Xing FEC 4L 90R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101662:1&amp;gt; Grade Xing NRC ATWS CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102710&amp;gt; Grade Xing US 2L 1T US&amp;amp;S v1 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102966&amp;gt; Grade Xing FEC 4L 315R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101928:1&amp;gt; Grade Xing US Inc. 2L 1T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101672:1&amp;gt; Grade Xing NRC ATWS 2 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102736&amp;gt; Grade Xing NRC 4L Gated Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102739&amp;gt; Grade Xing NRC Gated Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102742&amp;gt; Grade Xing NRC STOP Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101782:2&amp;gt; Grade Xing NRC LED Gated 2L CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102960&amp;gt; Grade Xing US OH 4L 4T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102064:1&amp;gt; Grade Xing US OH 4L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101872:2&amp;gt; Grade Xing NRC OH 2L Gated CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101935:1&amp;gt; Grade Xing US OH 2L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101807:1&amp;gt; Grade Xing NRC OH 4L Gated CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102749&amp;gt; Grade Xing NRC OH 4L Gated FEC CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102953&amp;gt; Grade Xing US Inc. 2L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101929:1&amp;gt; Grade Xing US Inc. 2L 1T 315 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102697&amp;gt; Grade Xing NRC Skull and Crossbones CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102691&amp;gt; Grade Xing NRC US Inc. 2L Gated CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101858:3&amp;gt; Grade Xing US Inc. 2L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102690&amp;gt; Grade Xing NRC US Inc. 4L Gated CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102958&amp;gt; Grade Xing US 4L 4T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102702&amp;gt; Grade Xing NRC Wig Wag Peach Basket V5 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102726&amp;gt; Grade Xing US 2L 1T Banjo CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102713&amp;gt; Grade Xing US 2L 1T v2 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102717&amp;gt; Grade Xing US 2L 1T v3 Harpes Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101888:2&amp;gt; Grade Xing US OH 2L 1T W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102720&amp;gt; Grade Xing US 2L 1T v4 Upper Quadrant Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102962:1&amp;gt; Grade Xing US OH 4L 4T 315 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102066:1&amp;gt; Grade Xing US OH 4L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102706&amp;gt; Grade Xing US 2L 1T Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102707&amp;gt; Grade Xing US 2L 2T v2 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102955&amp;gt; Grade Xing US Inc. 2L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102956&amp;gt; Grade Xing US Inc. 2L 2T 45 WSL CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102954&amp;gt; Grade Xing US Inc. 2L 2T 315 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101906:1&amp;gt; Grade Xing US OH 2L 1T 45R W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101902:1&amp;gt; Grade Xing US OH 2L 1T 315R W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101898:2&amp;gt; Grade Xing US OH 2L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102886&amp;gt; Grade Xing US OH 2L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102868&amp;gt; Grade Xing US OH 4L 1T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101891:1&amp;gt; Grade Xing US OH 4L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102961&amp;gt; Grade Xing US OH 4L 4T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102065:1&amp;gt; Grade Xing US OH 4L 2T 315 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102852&amp;gt; Grade Xing US OH 4L 3T CDE&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Note from Clem aka BNSF50;&lt;br /&gt;
A special thanks to the following Trainz members for contributing to the working script&#039;s of these crossings, Fwassner, MartinVK, Phil Cambell and Andi06. Without their help, these crossings would not be animated. Also thank&#039;s to the many Trainz members who input praise, help and constructive critisism on the forum which enabled me to refine the crossings to what they are now. Please read the instructions located in the main folder for details on added features.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=35055</id>
		<title>Grade Crossing XING BNSF50 CDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=35055"/>
		<updated>2022-12-26T19:10:03Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Updated originals by BNSF50&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Restored and/or replace bell to restore and/or reduce clicking sound. All assets updated to build 3.5 and available through the DLS. The NRC or &#039;no road crossing&#039; and ATWS or &#039;advanced train warning system&#039; are designed to work with boat&#039;s ATLS and the TRC system. Scripts updated to new TANE SP2 standards replacing obsolete function calls and tested in TRS19 and TRS22.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Terminology&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 2L     2 Lane Road&lt;br /&gt;
 2T     2 Tracks&lt;br /&gt;
 315    Opposite of 45 degrees&lt;br /&gt;
 45     45 degrees&lt;br /&gt;
 90     90 degrees&lt;br /&gt;
 ATWS   Advanced Train Warning System&lt;br /&gt;
 FEC    Florida East Coast&lt;br /&gt;
 Inc.   Incandesent&lt;br /&gt;
 LED    Light Emitting Diode&lt;br /&gt;
 NRC    No Road Crossing&lt;br /&gt;
 OH     Overhead&lt;br /&gt;
 Ped    Pedestrian&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;To find these easily, seach &#039;CDE Xing&#039; in your Content Manager or Surveyor seach&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;kuid:647907:102757&amp;gt; Grade Xing NRC ATWS Ped Gate No Sign CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102957&amp;gt; Grade Xing US Inc. 2L 2T 315 WSL CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101677:1&amp;gt; Grade Xing NRC ATWS 3 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102837&amp;gt; Grade Xing US OH 2L 3T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102965&amp;gt; Grade Xing FEC 4L 45R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102964&amp;gt; Grade Xing FEC 4L 90R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101662:1&amp;gt; Grade Xing NRC ATWS CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102710&amp;gt; Grade Xing US 2L 1T US&amp;amp;S v1 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102966&amp;gt; Grade Xing FEC 4L 315R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101928:1&amp;gt; Grade Xing US Inc. 2L 1T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101672:1&amp;gt; Grade Xing NRC ATWS 2 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102736&amp;gt; Grade Xing NRC 4L Gated Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102739&amp;gt; Grade Xing NRC Gated Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102742&amp;gt; Grade Xing NRC STOP Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101782:2&amp;gt; Grade Xing NRC LED Gated 2L CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102960&amp;gt; Grade Xing US OH 4L 4T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102064:1&amp;gt; Grade Xing US OH 4L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101872:2&amp;gt; Grade Xing NRC OH 2L Gated CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101935:1&amp;gt; Grade Xing US OH 2L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101807:1&amp;gt; Grade Xing NRC OH 4L Gated CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102749&amp;gt; Grade Xing NRC OH 4L Gated FEC CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102953&amp;gt; Grade Xing US Inc. 2L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101929:1&amp;gt; Grade Xing US Inc. 2L 1T 315 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102697&amp;gt; Grade Xing NRC Skull and Crossbones CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102691&amp;gt; Grade Xing NRC US Inc. 2L Gated CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101858:3&amp;gt; Grade Xing US Inc. 2L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102690&amp;gt; Grade Xing NRC US Inc. 4L Gated CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102958&amp;gt; Grade Xing US 4L 4T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102702&amp;gt; Grade Xing NRC Wig Wag Peach Basket V5 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102726&amp;gt; Grade Xing US 2L 1T Banjo CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102713&amp;gt; Grade Xing US 2L 1T v2 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102717&amp;gt; Grade Xing US 2L 1T v3 Harpes Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101888:2&amp;gt; Grade Xing US OH 2L 1T W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102720&amp;gt; Grade Xing US 2L 1T v4 Upper Quadrant Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102962:1&amp;gt; Grade Xing US OH 4L 4T 315 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102066:1&amp;gt; Grade Xing US OH 4L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102706&amp;gt; Grade Xing US 2L 1T Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102707&amp;gt; Grade Xing US 2L 2T v2 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102955&amp;gt; Grade Xing US Inc. 2L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102956&amp;gt; Grade Xing US Inc. 2L 2T 45 WSL CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102954&amp;gt; Grade Xing US Inc. 2L 2T 315 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101906:1&amp;gt; Grade Xing US OH 2L 1T 45R W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101902:1&amp;gt; Grade Xing US OH 2L 1T 315R W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101898:2&amp;gt; Grade Xing US OH 2L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102886&amp;gt; Grade Xing US OH 2L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102868&amp;gt; Grade Xing US OH 4L 1T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101891:1&amp;gt; Grade Xing US OH 4L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102961&amp;gt; Grade Xing US OH 4L 4T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102065:1&amp;gt; Grade Xing US OH 4L 2T 315 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102852&amp;gt; Grade Xing US OH 4L 3T CDE&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Note from Clem aka BNSF50;&lt;br /&gt;
A special thanks to the following Trainz members for contributing to the working script&#039;s of these crossings, Fwassner, MartinVK, Phil Cambell and Andi06. Without their help, these crossings would not be animated. Also thank&#039;s to the many Trainz members who input praise, help and constructive critisism on the forum which enabled me to refine the crossings to what they are now. Please read the instructions located in the main folder for details on added features.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=35054</id>
		<title>Grade Crossing XING BNSF50 CDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Grade_Crossing_XING_BNSF50_CDE&amp;diff=35054"/>
		<updated>2022-12-26T18:50:11Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: added more xing&amp;#039;s&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Updated originals by BNSF50, restored and/or replace bell to restore and/or reduce clicking sound. All assets updated to build 3.5 and available through the DLS. The NRC or &#039;no road crossing&#039; and ATWS or &#039;advanced train warning system&#039; are designed to work with boat&#039;s ATLS and the TRC system. These revised assets have fully functional updated Property ? scripts.&lt;br /&gt;
&lt;br /&gt;
To find these easily, seach &#039;CDE Xing&#039; in your Content Manager or Surveyor seach&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;kuid:647907:102757&amp;gt; Grade Xing NRC ATWS Ped Gate No Sign CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102957&amp;gt; Grade Xing US Inc. 2L 2T 315 WSL CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101677:1&amp;gt; Grade Xing NRC ATWS 3 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102837&amp;gt; Grade Xing US OH 2L 3T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102965&amp;gt; Grade Xing FEC 4L 45R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102964&amp;gt; Grade Xing FEC 4L 90R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101662:1&amp;gt; Grade Xing NRC ATWS CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102710&amp;gt; Grade Xing US 2L 1T US&amp;amp;S v1 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102966&amp;gt; Grade Xing FEC 4L 315R Cantilever CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101928:1&amp;gt; Grade Xing US Inc. 2L 1T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101672:1&amp;gt; Grade Xing NRC ATWS 2 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102736&amp;gt; Grade Xing NRC 4L Gated Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102739&amp;gt; Grade Xing NRC Gated Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102742&amp;gt; Grade Xing NRC STOP Circa 1950&#039;s CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101782:2&amp;gt; Grade Xing NRC LED Gated 2L CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102960&amp;gt; Grade Xing US OH 4L 4T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102064:1&amp;gt; Grade Xing US OH 4L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101872:2&amp;gt; Grade Xing NRC OH 2L Gated CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101935:1&amp;gt; Grade Xing US OH 2L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101807:1&amp;gt; Grade Xing NRC OH 4L Gated CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102749&amp;gt; Grade Xing NRC OH 4L Gated FEC CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102953&amp;gt; Grade Xing US Inc. 2L 2T CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101929:1&amp;gt; Grade Xing US Inc. 2L 1T 315 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102697&amp;gt; Grade Xing NRC Skull and Crossbones CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102691&amp;gt; Grade Xing NRC US Inc. 2L Gated CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101858:3&amp;gt; Grade Xing US Inc. 2L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102690&amp;gt; Grade Xing NRC US Inc. 4L Gated CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102958&amp;gt; Grade Xing US 4L 4T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102702&amp;gt; Grade Xing NRC Wig Wag Peach Basket V5 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102726&amp;gt; Grade Xing US 2L 1T Banjo CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102713&amp;gt; Grade Xing US 2L 1T v2 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102717&amp;gt; Grade Xing US 2L 1T v3 Harpes Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101888:2&amp;gt; Grade Xing US OH 2L 1T W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102720&amp;gt; Grade Xing US 2L 1T v4 Upper Quadrant Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102962:1&amp;gt; Grade Xing US OH 4L 4T 315 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102066:1&amp;gt; Grade Xing US OH 4L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102706&amp;gt; Grade Xing US 2L 1T Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102707&amp;gt; Grade Xing US 2L 2T v2 Wig Wag CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102955&amp;gt; Grade Xing US Inc. 2L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102956&amp;gt; Grade Xing US Inc. 2L 2T 45 WSL CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102954&amp;gt; Grade Xing US Inc. 2L 2T 315 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101906:1&amp;gt; Grade Xing US OH 2L 1T 45R W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101902:1&amp;gt; Grade Xing US OH 2L 1T 315R W Catwalk CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101898:2&amp;gt; Grade Xing US OH 2L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102886&amp;gt; Grade Xing US OH 2L 2T 45 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102868&amp;gt; Grade Xing US OH 4L 1T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:101891:1&amp;gt; Grade Xing US OH 4L 1T CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102961&amp;gt; Grade Xing US OH 4L 4T 45 CDE&lt;br /&gt;
* &amp;lt;kuid2:647907:102065:1&amp;gt; Grade Xing US OH 4L 2T 315 CDE&lt;br /&gt;
* &amp;lt;kuid:647907:102852&amp;gt; Grade Xing US OH 4L 3T CDE&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Note from Clem aka BNSF50;&lt;br /&gt;
A special thanks to the following Trainz members for contributing to the working script&#039;s of these crossings, Fwassner, MartinVK, Phil Cambell and Andi06. Without their help, these crossings would not be animated. Also thank&#039;s to the many Trainz members who input praise, help and constructive critisism on the forum which enabled me to refine the crossings to what they are now. Please read the instructions located in the main folder for details on added features.&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Christopher824&amp;diff=34459</id>
		<title>Christopher824</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Christopher824&amp;diff=34459"/>
		<updated>2022-11-10T16:27:54Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Driver&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;KUID:647907:100674&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Last Updated: 29th Nov 2020&amp;lt;br&amp;gt;&lt;br /&gt;
File Size: 51.24 kb&amp;lt;br&amp;gt;&lt;br /&gt;
Minimum TANE SP2/SP3 build 4.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CDE Trainz Driver Christopher824. TANE (sp2 or higher) and TRS19.&amp;lt;br&amp;gt;&lt;br /&gt;
Uses standing male driver mesh by Auran. Free to use for personal use.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Christopher824 1024.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More info can be found on the CDE Trainz website;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[https://cdetrainz.com/assets_asset.aspx?aid=13 CDE Trainz Website - USA]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=File:Christopher824_1024.jpg&amp;diff=34458</id>
		<title>File:Christopher824 1024.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=File:Christopher824_1024.jpg&amp;diff=34458"/>
		<updated>2022-11-10T16:25:05Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: Christopher824&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Christopher824&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Christopher824&amp;diff=34457</id>
		<title>Christopher824</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Christopher824&amp;diff=34457"/>
		<updated>2022-11-10T16:17:16Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Driver&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;KUID:647907:100674&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Last Updated: 29th Nov 2020&amp;lt;br&amp;gt;&lt;br /&gt;
File Size: 51.24 kb&amp;lt;br&amp;gt;&lt;br /&gt;
Minimum TANE SP2/SP3 build 4.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CDE Trainz Driver Christopher824. TANE (sp2 or higher) and TRS19.&amp;lt;br&amp;gt;&lt;br /&gt;
Uses standing male driver mesh by Auran. Free to use for personal use.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More info can be found on the CDE Trainz website;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[https://cdetrainz.com/assets_asset.aspx?aid=13 CDE Trainz Website - USA]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Content&amp;diff=34456</id>
		<title>Content</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Content&amp;diff=34456"/>
		<updated>2022-11-10T16:12:37Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: Undo revision 27297 by Thomastrain673 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page aims to list and describe all content available for [[TS2009]].&lt;br /&gt;
&lt;br /&gt;
Content detail pages should have a &#039;Content/&#039; prefix and are linked by inclusion in one of the following categories. Each individual content page should include a description of the content including real-life photos, compatibility and usage information, a link to the content creator&#039;s wiki page and a download station helper link. It is recommended that content detail pages do not include off-site links, as Trainz users will not be able to follow these. &lt;br /&gt;
&lt;br /&gt;
* [[:Category:Rolling Stock]]&lt;br /&gt;
* [[:Category:Scenery]]&lt;br /&gt;
* [[:Category:Routes]]&lt;br /&gt;
* [[:Category:Scripts]]&lt;br /&gt;
* [[:Category:Track]]&lt;br /&gt;
* [[:Category:Operations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Trainz Wiki]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP_Beta_Testing&amp;diff=34455</id>
		<title>TCCP Beta Testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP_Beta_Testing&amp;diff=34455"/>
		<updated>2022-11-10T16:09:21Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[TCCP]]&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Content Creators should look &#039;&#039;&#039;[[TCCP Content Creation]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Beta Tester for new DLC content. You will be part of the development team that makes it happen.&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP_Content_Creation&amp;diff=34454</id>
		<title>TCCP Content Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP_Content_Creation&amp;diff=34454"/>
		<updated>2022-11-10T16:08:52Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[TCCP]]&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look here &#039;&#039;&#039;[[TCCP Beta Testing]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions. This account will be the same for content creation and beta testing, so please do not try to create multiple accounts.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them. If the &#039;default&#039; thumbnail is not named &#039;thumbnail.jpg&#039;, it will not create the auto generated &#039;new&#039; session thumbnail when a new session is created.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
As a final note regarding traincar DLC packs. It is expected that locomotives and rolling stock scripts will not break default functionality.&lt;br /&gt;
&lt;br /&gt;
Examples of this are startup/shutdown scripts that are off by default. For the average user who purchases a loco with this, they will have no way to know how to startup the locomotive, and hence are stuck with a locomotive that to them simply does not work. For startup/shutdown scripts there are two options for this, one is to simply have the loco on by default and allow the player to choose to turn it off in the properties, and then allow them to go through the startup sequence. Another, as seen on the Frecciarossa train DLC, would be to have the train pop up with a message to provide startup options.&lt;br /&gt;
&lt;br /&gt;
Another example would be custom throttle/brake controls that prevent the HUD controls, DCC controls, or keyboard controls from working. Again the average player who purchases this DLC pack will not know what is happening and will see this content as being broken. In this case you must ensure that custom controls correctly respond to the HUD and keyboard.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
In order to get paid for your work, you will need a verified PayPal account. Then you will need an Affiliatly account linked to the PayPal account.&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP_Content_Creation&amp;diff=34453</id>
		<title>TCCP Content Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP_Content_Creation&amp;diff=34453"/>
		<updated>2022-11-10T16:08:37Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[TCCP]]&#039;&#039;&#039;&lt;br /&gt;
This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look here &#039;&#039;&#039;[[TCCP Beta Testing]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions. This account will be the same for content creation and beta testing, so please do not try to create multiple accounts.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them. If the &#039;default&#039; thumbnail is not named &#039;thumbnail.jpg&#039;, it will not create the auto generated &#039;new&#039; session thumbnail when a new session is created.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
As a final note regarding traincar DLC packs. It is expected that locomotives and rolling stock scripts will not break default functionality.&lt;br /&gt;
&lt;br /&gt;
Examples of this are startup/shutdown scripts that are off by default. For the average user who purchases a loco with this, they will have no way to know how to startup the locomotive, and hence are stuck with a locomotive that to them simply does not work. For startup/shutdown scripts there are two options for this, one is to simply have the loco on by default and allow the player to choose to turn it off in the properties, and then allow them to go through the startup sequence. Another, as seen on the Frecciarossa train DLC, would be to have the train pop up with a message to provide startup options.&lt;br /&gt;
&lt;br /&gt;
Another example would be custom throttle/brake controls that prevent the HUD controls, DCC controls, or keyboard controls from working. Again the average player who purchases this DLC pack will not know what is happening and will see this content as being broken. In this case you must ensure that custom controls correctly respond to the HUD and keyboard.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
In order to get paid for your work, you will need a verified PayPal account. Then you will need an Affiliatly account linked to the PayPal account.&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP_Beta_Testing&amp;diff=34452</id>
		<title>TCCP Beta Testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP_Beta_Testing&amp;diff=34452"/>
		<updated>2022-11-10T16:07:58Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Content Creators should look &#039;&#039;&#039;[[TCCP Content Creation]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Beta Tester for new DLC content. You will be part of the development team that makes it happen.&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34451</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34451"/>
		<updated>2022-11-10T16:02:03Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for the Trainz Content Creation Program or &#039;TCCP&#039;&lt;br /&gt;
&lt;br /&gt;
The TCCP allows developers and Trainz users to interact. Users with a valid TRS19 or TRS22 product can use this system. Beta testers can try new upcoming routes and rolling stock for a 2 week beta for free. No need for a membership.&lt;br /&gt;
&lt;br /&gt;
TCCP Beta Testers should look here &#039;&#039;&#039;[[TCCP Beta Testing]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TCCP Content Creators &#039;&#039;&#039;[[TCCP Content Creation]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page are under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
Beta Testers can use the content for free during the beta test periods. Any Trainz user with a valid license can sign up and take advantage of this.&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34450</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34450"/>
		<updated>2022-11-10T15:58:50Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for the Trainz Content Creation Program or &#039;TCCP&#039;&lt;br /&gt;
&lt;br /&gt;
The TCCP allows developers and Trainz users to interact. Users with a valid TRS19 or TRS22 product can use this system. Beta testers can try new upcoming routes and rolling stock for a 2 week beta for free. No need for a membership.&lt;br /&gt;
&lt;br /&gt;
TCCP Beta Testers should look here &#039;&#039;&#039;[[TCCP Beta Testing]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TCCP Content Creators &#039;&#039;&#039;[[TCCP Content Creation]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page are under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
Beta Testers can use the content for free during the beta test periods.&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP_Content_Creation&amp;diff=34449</id>
		<title>TCCP Content Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP_Content_Creation&amp;diff=34449"/>
		<updated>2022-11-10T15:50:28Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: Created page with &amp;quot;This page is a guide for Trainz Content Creation Program or &amp;#039;TCCP&amp;#039;&amp;lt;br&amp;gt; TCCP Beta Testers should look here &amp;#039;&amp;#039;&amp;#039;TCCP Beta Testing&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;Under Development&amp;#039;&amp;#039;&amp;#039;  The contents an...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look here &#039;&#039;&#039;[[TCCP Beta Testing]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions. This account will be the same for content creation and beta testing, so please do not try to create multiple accounts.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them. If the &#039;default&#039; thumbnail is not named &#039;thumbnail.jpg&#039;, it will not create the auto generated &#039;new&#039; session thumbnail when a new session is created.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
As a final note regarding traincar DLC packs. It is expected that locomotives and rolling stock scripts will not break default functionality.&lt;br /&gt;
&lt;br /&gt;
Examples of this are startup/shutdown scripts that are off by default. For the average user who purchases a loco with this, they will have no way to know how to startup the locomotive, and hence are stuck with a locomotive that to them simply does not work. For startup/shutdown scripts there are two options for this, one is to simply have the loco on by default and allow the player to choose to turn it off in the properties, and then allow them to go through the startup sequence. Another, as seen on the Frecciarossa train DLC, would be to have the train pop up with a message to provide startup options.&lt;br /&gt;
&lt;br /&gt;
Another example would be custom throttle/brake controls that prevent the HUD controls, DCC controls, or keyboard controls from working. Again the average player who purchases this DLC pack will not know what is happening and will see this content as being broken. In this case you must ensure that custom controls correctly respond to the HUD and keyboard.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
In order to get paid for your work, you will need a verified PayPal account. Then you will need an Affiliatly account linked to the PayPal account.&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34448</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34448"/>
		<updated>2022-11-10T15:42:15Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look here &#039;&#039;&#039;[[TCCP Beta Testing]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions. This account will be the same for content creation and beta testing, so please do not try to create multiple accounts.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them. If the &#039;default&#039; thumbnail is not named &#039;thumbnail.jpg&#039;, it will not create the auto generated &#039;new&#039; session thumbnail when a new session is created.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
As a final note regarding traincar DLC packs. It is expected that locomotives and rolling stock scripts will not break default functionality.&lt;br /&gt;
&lt;br /&gt;
Examples of this are startup/shutdown scripts that are off by default. For the average user who purchases a loco with this, they will have no way to know how to startup the locomotive, and hence are stuck with a locomotive that to them simply does not work. For startup/shutdown scripts there are two options for this, one is to simply have the loco on by default and allow the player to choose to turn it off in the properties, and then allow them to go through the startup sequence. Another, as seen on the Frecciarossa train DLC, would be to have the train pop up with a message to provide startup options.&lt;br /&gt;
&lt;br /&gt;
Another example would be custom throttle/brake controls that prevent the HUD controls, DCC controls, or keyboard controls from working. Again the average player who purchases this DLC pack will not know what is happening and will see this content as being broken. In this case you must ensure that custom controls correctly respond to the HUD and keyboard.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
In order to get paid for your work, you will need a verified PayPal account. Then you will need an Affiliatly account linked to the PayPal account.&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP_Beta_Testing&amp;diff=34447</id>
		<title>TCCP Beta Testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP_Beta_Testing&amp;diff=34447"/>
		<updated>2022-11-10T15:36:37Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: Created page with &amp;quot;This page is a guide for Trainz Content Creation Program or &amp;#039;TCCP&amp;#039;&amp;lt;br&amp;gt; TCCP Content Creators should look HERE  &amp;#039;&amp;#039;&amp;#039;Under Development&amp;#039;&amp;#039;&amp;#039;  The contents and the layout of this pag...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Content Creators should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Beta Tester for new DLC content. You will be part of the development team that makes it happen.&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34446</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34446"/>
		<updated>2022-11-10T15:31:57Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* Thumbnails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions. This account will be the same for content creation and beta testing, so please do not try to create multiple accounts.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them. If the &#039;default&#039; thumbnail is not named &#039;thumbnail.jpg&#039;, it will not create the auto generated &#039;new&#039; session thumbnail when a new session is created.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
As a final note regarding traincar DLC packs. It is expected that locomotives and rolling stock scripts will not break default functionality.&lt;br /&gt;
&lt;br /&gt;
Examples of this are startup/shutdown scripts that are off by default. For the average user who purchases a loco with this, they will have no way to know how to startup the locomotive, and hence are stuck with a locomotive that to them simply does not work. For startup/shutdown scripts there are two options for this, one is to simply have the loco on by default and allow the player to choose to turn it off in the properties, and then allow them to go through the startup sequence. Another, as seen on the Frecciarossa train DLC, would be to have the train pop up with a message to provide startup options.&lt;br /&gt;
&lt;br /&gt;
Another example would be custom throttle/brake controls that prevent the HUD controls, DCC controls, or keyboard controls from working. Again the average player who purchases this DLC pack will not know what is happening and will see this content as being broken. In this case you must ensure that custom controls correctly respond to the HUD and keyboard.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
In order to get paid for your work, you will need a verified PayPal account. Then you will need an Affiliatly account linked to the PayPal account.&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34445</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34445"/>
		<updated>2022-11-10T15:27:07Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* Set Up Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions. This account will be the same for content creation and beta testing, so please do not try to create multiple accounts.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
As a final note regarding traincar DLC packs. It is expected that locomotives and rolling stock scripts will not break default functionality.&lt;br /&gt;
&lt;br /&gt;
Examples of this are startup/shutdown scripts that are off by default. For the average user who purchases a loco with this, they will have no way to know how to startup the locomotive, and hence are stuck with a locomotive that to them simply does not work. For startup/shutdown scripts there are two options for this, one is to simply have the loco on by default and allow the player to choose to turn it off in the properties, and then allow them to go through the startup sequence. Another, as seen on the Frecciarossa train DLC, would be to have the train pop up with a message to provide startup options.&lt;br /&gt;
&lt;br /&gt;
Another example would be custom throttle/brake controls that prevent the HUD controls, DCC controls, or keyboard controls from working. Again the average player who purchases this DLC pack will not know what is happening and will see this content as being broken. In this case you must ensure that custom controls correctly respond to the HUD and keyboard.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
In order to get paid for your work, you will need a verified PayPal account. Then you will need an Affiliatly account linked to the PayPal account.&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34444</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34444"/>
		<updated>2022-11-10T15:22:56Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
As a final note regarding traincar DLC packs. It is expected that locomotives and rolling stock scripts will not break default functionality.&lt;br /&gt;
&lt;br /&gt;
Examples of this are startup/shutdown scripts that are off by default. For the average user who purchases a loco with this, they will have no way to know how to startup the locomotive, and hence are stuck with a locomotive that to them simply does not work. For startup/shutdown scripts there are two options for this, one is to simply have the loco on by default and allow the player to choose to turn it off in the properties, and then allow them to go through the startup sequence. Another, as seen on the Frecciarossa train DLC, would be to have the train pop up with a message to provide startup options.&lt;br /&gt;
&lt;br /&gt;
Another example would be custom throttle/brake controls that prevent the HUD controls, DCC controls, or keyboard controls from working. Again the average player who purchases this DLC pack will not know what is happening and will see this content as being broken. In this case you must ensure that custom controls correctly respond to the HUD and keyboard.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
In order to get paid for your work, you will need a verified PayPal account. Then you will need an Affiliatly account linked to the PayPal account.&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34443</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34443"/>
		<updated>2022-11-10T15:01:16Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
=Final Review=&lt;br /&gt;
&lt;br /&gt;
Once you have addressed all tickets opened during the beta test, which could mean that you will have to submit a new beta, again, to confirm the fixes. Your package will pass beta and go into Final Review. This is where it is now scrutinized by the N3V staff.&lt;br /&gt;
&lt;br /&gt;
Per Zec,&lt;br /&gt;
&amp;quot;&#039;&#039;Something I&#039;ve been meaning to do for quite a while is post up a bit of a &#039;guide&#039; on how we generally review DLC packs. This isn&#039;t a hard and fast method, but should help you guys to review your content yourselves before submission  There is a difference between routes/sessions and traincars, as they involve different aspects of gameplay. For all content, I will verify that the advertised content is included (ie route, sessions, traincars, consists, etc). This is based on what you advertise in the description (ie if you say there are 5 sessions and I only see 4, I&#039;ll send it back to you to double check).&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After verifying the content is installed, and is fully active, and no open tickets.&lt;br /&gt;
&lt;br /&gt;
==Routes / Sessions==&lt;br /&gt;
&lt;br /&gt;
For routes/sessions:&lt;br /&gt;
* Each session is loaded into Driver, and then verified that the session loads successfully&lt;br /&gt;
* Drive the session for a few minutes, or untill the first navigation mark or task is complete. This is to ensure that the session is starting correctly, and the initial rules are working correctly. It also ensures that the locomotives and rolling stock at the start of the session are working correctly (ie brakes releasing correctly, and so on).&lt;br /&gt;
* Take a quick fly over of the route to make sure it all is loading correctly&lt;br /&gt;
* If the DLC pack also advertises custom/specific locomotives and rolling stock, then this will also be reviewed using the below.&lt;br /&gt;
&lt;br /&gt;
==Traincar==&lt;br /&gt;
&lt;br /&gt;
For traincar DLC packs:&lt;br /&gt;
* Check that the advertised traincars and consists are present&lt;br /&gt;
* Place the traincars onto a blank route, that has the track sitting directly on top of water. This allows me to check that the traincar has a water reflection that works properly, looks like the traincar, and isn&#039;t badly broken/distorted.&lt;br /&gt;
* For passenger coaches, place them onto a test route with a passenger station to check that the doors work as expected with a passenger station.&lt;br /&gt;
* For all traincars, place them onto the KSC2 route, and do a check for obvious mesh/LOD issues (ie obvious changes in the look of the loco when moving toward/away from it). This includes distortions to the texture map, or smoothing issues, on lower LODs.&lt;br /&gt;
* At this point, also do a check that all controls work. This means that using keyboard and HUD controls work for all main controls (reverser, throttle, dynamic brake^, train brake, independent brake, headlight, ditch lights^, pantographs^, sander, and of course simple controls mode).&lt;br /&gt;
^The controls marked with this are &#039;optional&#039; on traincars, so are only checked where that item has them fitted. The independent brake, although not always fitted in the cab view, should generally be operational on traincars since the HUD control is available. Dynamic brake, OTOH, is generally acceptable if it is not functional (but it absolutely should be &lt;br /&gt;
functional on locos fitted with one).&lt;br /&gt;
* Quickly try any advertised scripted functions to make sure these work. &lt;br /&gt;
* For locos, take the locomotive for a short drive in Driver to make sure that they drive appropriately (note, this isn&#039;t necessarily a check for prototypical operation, but more just to make sure that they operate correctly as a locomotive in general). This also allows checking that sounds are working correctly/etc.&lt;br /&gt;
* For rolling stock, do the same, but use a builtin locomotive to haul them.&lt;br /&gt;
&lt;br /&gt;
==Review Results==&lt;br /&gt;
 &lt;br /&gt;
If any issues are found during review, these will be reported via the beta testing bug report system in TCCP. If no issues are found we will then process the DLC pack to PreviewPass for 2 weeks, then release publicly after the 2 week PreviewPass. Note that in some cases, very minor issues might be reported but we may still process to previewpass, these issues should be resolved in an update during previewpass or after release, normally we&#039;ll note this in the bug report.&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
Depending on the issues noted, we will generally let you know if you can request skip beta on the package after resolving the noted issues, however if we don&#039;t you can choose to request this after building the package. However if the issues noted were something that needs testing, we will reject the skip beta so that it can go through another round of beta testing. Otherwise we will review the DLC pack again, double checking that reported bugs are resolved.&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34404</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34404"/>
		<updated>2022-10-24T16:12:40Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* RequestPermit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(SecrityToken myToken, GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(myToken, train, 0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
*If you do not include all three parameters, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection(SecurityToken myToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(myToken, DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34403</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34403"/>
		<updated>2022-10-24T16:10:55Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* RequestPermit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(SecrityToken sToken, GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(sToken, train, 0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
*If you do not include all three parameters, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection(SecurityToken myToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(myToken, DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34402</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34402"/>
		<updated>2022-10-24T16:09:38Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* RequestPermit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(SecrityToken sToken, GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(sToken, train, 0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
*&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection(SecurityToken myToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(myToken, DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34401</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34401"/>
		<updated>2022-10-24T16:07:50Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* RequestPermit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(SecrityToken sToken, GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(sToken, train, &amp;quot;0&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
*&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection(SecurityToken myToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(myToken, DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34400</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34400"/>
		<updated>2022-10-24T15:51:46Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* SetDirection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(GameObject obj)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection(SecurityToken myToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(myToken, DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34399</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34399"/>
		<updated>2022-10-24T15:51:12Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* SetDirection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(GameObject obj)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection(SecurityToken sToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(sToken, DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34398</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34398"/>
		<updated>2022-10-24T15:46:07Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* SetDirection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(GameObject obj)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection(SecurityToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(SecurityToken, DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34397</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34397"/>
		<updated>2022-10-24T15:45:51Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* SetDirection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(GameObject obj)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection (SecurityToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(SecurityToken, DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be marked Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34396</id>
		<title>Class JunctionBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_JunctionBase&amp;diff=34396"/>
		<updated>2022-10-24T15:44:32Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* SetDirection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Library Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******JunctionBase *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Interface methods to control and obtain information about the status of Junction objects.&lt;br /&gt;
*This class relates equally to switch levers controlling spline track junctions and to the junction nodes attached to Fixed Track Junction objects.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants &amp;amp; Messages==&lt;br /&gt;
&lt;br /&gt;
===Junction States===&lt;br /&gt;
*These values define the directions possible through a junction object.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  DIRECTION_LEFT = 0 ||Left junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_FORWARD = 1 ||Forward junction direction (straight on for three way points).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_RIGHT = 2 ||Right junction direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_BACKWARD = -1 ||Backward junction direction (leading approach).&lt;br /&gt;
|-&lt;br /&gt;
|public define int  DIRECTION_NONE = 3 ||No junction direction or error condition.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Junction objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=50%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Junction||Toggled||Junction||Broadcast&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Enter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerEnter||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Stopped||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||InnerLeave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Junction]]||Leave||Junction||Train&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Enter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerEnter||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Stopped||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||InnerLeave||Train||Junction&lt;br /&gt;
|-&lt;br /&gt;
|[[Object Messages|Object]]||Leave||Train||Junction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
===AllowManualControl===&lt;br /&gt;
{{MethodHeader|public native voidAllowManualControl(bool allow)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;allow&#039;&#039;&#039; = True to allow the user to toggle the junction, false otherwise.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 AllowManualControl(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDebugString===&lt;br /&gt;
{{MethodHeader|public string GetDebugString(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A string that contains the node ID and name of the MapObject associated with this junction. If successful, the returned string will include the node ID and name of the MapObject. Otherwise an error string will be returned instead. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Interface.Print(GetDebugString());&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirection===&lt;br /&gt;
{{MethodHeader|public native int GetDirection(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the current direction of the junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int direction = GetDirection();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionToTrain===&lt;br /&gt;
{{MethodHeader|public native int GetDirectionToTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = A reference to a train located within 15 track stretches of the junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Junction States|Junction State]] constants indicating the track on which the train was found.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 int approachPath = GetDirectionToTrain(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*DIRECTION_NONE is returned if the train is not within range.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetGameObject===&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 GameObject go = junction.GetGameObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track junction the object returned is the embedded junction node.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetManualControl===&lt;br /&gt;
{{MethodHeader|public native bool GetManualControl(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the user is allowed to toggle this junction, false otherwise.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 bool locked = !GetManualControl();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMapObject===&lt;br /&gt;
{{MethodHeader|public native MapObject GetMapObject(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the MapObject associated with this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 MapObject mo = junction.GetMapObject();&lt;br /&gt;
;Notes&lt;br /&gt;
*For a trackside spline junction this method returns the junction lever object.&lt;br /&gt;
*For an embedded junction in a fixed track piece the object returned is the fixed track parent object.&lt;br /&gt;
*In either case null is returned on failure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionInnerReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionInnerReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionInnerReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,InnerEnter&#039;&#039; message to be sent to the Junction if any part of the train is within the inner trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JunctionReEnter===&lt;br /&gt;
{{MethodHeader|public native bool JunctionReEnter(int node)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;node&#039;&#039;&#039; = Node Id of train as returned by Train.GetId().&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.JunctionReEnter(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*The effect of this method is to cause a new &#039;&#039;Junction,Enter&#039;&#039; message to be sent to the Junction if any part of the train is within the default outer trigger radius.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestPermit(GameObject obj)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the junction. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestPermit(train);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RequestTrackPermit===&lt;br /&gt;
{{MethodHeader|public native Permit RequestTrackPermit(GameObject obj, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Object requesting the [[Class Permit|Permit]].&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the direction of the track relative to the current junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Permit for &#039;&#039;obj&#039;&#039; to control the specified track. &lt;br /&gt;
;Syntax;&lt;br /&gt;
 Permit permit = RequestTrackPermit(train, DIRECTION_LEFT);&lt;br /&gt;
;Notes&lt;br /&gt;
*Although a Permit is always returned, it may not necessarily be granted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDirection===&lt;br /&gt;
{{MethodHeader|public native bool SetDirection (SecurityToken, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = New direction to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 if (junction.SetDirection(DIRECTION_LEFT)) Interface.Print(&amp;quot;Junction now set to the left&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
*If you do not include the SecurityToken, the method will be labeled Obsolete.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SwitchForTrain===&lt;br /&gt;
{{MethodHeader|public native bool SwitchForTrain(Train train, int direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train that is to pass over the junction.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = One of the [[#Junction States|Junction State]] constants indicating the current position of the train relative junction.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the junction is changed, False if the direction is unchanged or if the specified direction was invalid for this junction.&lt;br /&gt;
;Syntax;&lt;br /&gt;
 junction.SwitchForTrain(train,DIRECTION_BACKWARD);&lt;br /&gt;
;Notes&lt;br /&gt;
*The new direction must be on the opposite side of the junction to the train&#039;s current position.&lt;br /&gt;
*This method switches the junction unconditionally, disregarding any Permits that may exist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class SceneryWithTrack#GetAttachedJunctions|SceneryWithTrack.GetAttachedJunctions()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetJunctionList|World.GetJunctionList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34258</id>
		<title>Class Router</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34258"/>
		<updated>2022-10-12T17:29:53Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* PostMessage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
*[[TrainzScript Language Reference|API Hierarchy]]&lt;br /&gt;
**Router&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The Router class handles the transmission of messages between game objects and contains methods to provide references to specific objects given their name or Id.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|public define int MESSAGE_BROADCAST = 0||The message will be sent to all objects in the Router&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetGameObject==&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(string uniqueName)&amp;lt;br&amp;gt;public native GameObject GetGameObject(int uniqueId)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;uniqueName&#039;&#039;&#039; = Name of object as assigned in Surveyor.&lt;br /&gt;
*&#039;&#039;&#039;uniqueId&#039;&#039;&#039; =  Id of object as assigned by the Router for each session.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject described, null if no such object exists.&lt;br /&gt;
;Syntax&lt;br /&gt;
 GameObject go = Router.GetGameObject(vehicle.GetName());&lt;br /&gt;
;Notes&lt;br /&gt;
*The objects name will normally be its username with a unique serial added by the game when the object is placed.&lt;br /&gt;
*This name can be edited by the user.&lt;br /&gt;
*Remember that not all objects will be named.&lt;br /&gt;
*Although Surveyor issues a warning on any attempt to name an object using a name which already exists, no restriction is actually enforced.&lt;br /&gt;
*As a result it is possible that a name will not be unique.&lt;br /&gt;
*Reference to an object&#039;s Id on the other hand is guaranteed to be unique for the current session.&lt;br /&gt;
*Ids are not preserved between sessions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
{{MethodHeader|public native void Router.Info(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.Info();&lt;br /&gt;
;Notes&lt;br /&gt;
*Logs current Router information to &#039;&#039;jetlog.txt&#039;&#039;.&lt;br /&gt;
*Used for debugging a session.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PostMessage==&lt;br /&gt;
{{MethodHeader|public obsolete native void PostMessage(int srcId, int dstId, string major, string minor, float delay)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;srcId&#039;&#039;&#039; = GameObject to specify as the message source.&lt;br /&gt;
*&#039;&#039;&#039;dstId&#039;&#039;&#039; = GameObject to specify as the message destination.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = Message major string.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = Message minor string.&lt;br /&gt;
*&#039;&#039;&#039;delay&#039;&#039;&#039; = Number of seconds to wait before the message is dispatched, can be 0.0.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.PostMessage(Router,Router.MESSAGE_BROADCAST,&amp;quot;Sinking&amp;quot;,&amp;quot;StartThePumps&amp;quot;,0.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Router.PostMessage provides the facility for code which does not belong to a GameObject thread to post a message,&lt;br /&gt;
*Since these scripts will not have a GameObject Id an alternative source must be specified.&lt;br /&gt;
*Specifying &#039;&#039;0&#039;&#039; as the source will make the message apper to emanate from the Router itself.&lt;br /&gt;
*Specifying MESSAGE_BROADCAST as the destination will send the message to all GameObjects on the map.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This Method is obsolete, it uses an integer lookup with the Router, which now needs to be an object lookup. To use PostMessage without the Router, use a GameObject PostMessage instead. Only the destination is required.&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), me.GetId(), &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
 Now - PostMessage(me, &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), nMyTrainID, &amp;quot;Animation-Event&amp;quot;, &amp;quot;Left-Opening&amp;quot;, 0.0);&lt;br /&gt;
 Now - PostMessage(myTrain, &amp;quot;Animation-Event&amp;quot;, &amp;quot;Left-Opening&amp;quot;, 0.0);&lt;br /&gt;
&lt;br /&gt;
 Was - MeshObject objAsset = cast&amp;lt;MeshObject&amp;gt;Router.GetGameObject(sAssetName);&lt;br /&gt;
 Now - MeshObject objAsset = cast&amp;lt;MeshObject&amp;gt;(cast&amp;lt;GameObject&amp;gt; msg.src);&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods== &lt;br /&gt;
*[[Class GameObject#ClearMessages|GameObject.ClearMessages()]]&lt;br /&gt;
*[[Class GameObject#PostMessage|GameObject.PostMessage()]]&lt;br /&gt;
*[[Class GameObject#SendMessage|GameObject.SendMessage()]]&lt;br /&gt;
*[[Class GameObject#Sniff|GameObject.Sniff()]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34257</id>
		<title>Class Router</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34257"/>
		<updated>2022-10-12T17:24:28Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* PostMessage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
*[[TrainzScript Language Reference|API Hierarchy]]&lt;br /&gt;
**Router&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The Router class handles the transmission of messages between game objects and contains methods to provide references to specific objects given their name or Id.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|public define int MESSAGE_BROADCAST = 0||The message will be sent to all objects in the Router&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetGameObject==&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(string uniqueName)&amp;lt;br&amp;gt;public native GameObject GetGameObject(int uniqueId)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;uniqueName&#039;&#039;&#039; = Name of object as assigned in Surveyor.&lt;br /&gt;
*&#039;&#039;&#039;uniqueId&#039;&#039;&#039; =  Id of object as assigned by the Router for each session.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject described, null if no such object exists.&lt;br /&gt;
;Syntax&lt;br /&gt;
 GameObject go = Router.GetGameObject(vehicle.GetName());&lt;br /&gt;
;Notes&lt;br /&gt;
*The objects name will normally be its username with a unique serial added by the game when the object is placed.&lt;br /&gt;
*This name can be edited by the user.&lt;br /&gt;
*Remember that not all objects will be named.&lt;br /&gt;
*Although Surveyor issues a warning on any attempt to name an object using a name which already exists, no restriction is actually enforced.&lt;br /&gt;
*As a result it is possible that a name will not be unique.&lt;br /&gt;
*Reference to an object&#039;s Id on the other hand is guaranteed to be unique for the current session.&lt;br /&gt;
*Ids are not preserved between sessions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
{{MethodHeader|public native void Router.Info(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.Info();&lt;br /&gt;
;Notes&lt;br /&gt;
*Logs current Router information to &#039;&#039;jetlog.txt&#039;&#039;.&lt;br /&gt;
*Used for debugging a session.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PostMessage==&lt;br /&gt;
{{MethodHeader|public obsolete native void PostMessage(int srcId, int dstId, string major, string minor, float delay)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;srcId&#039;&#039;&#039; = GameObject to specify as the message source.&lt;br /&gt;
*&#039;&#039;&#039;dstId&#039;&#039;&#039; = GameObject to specify as the message destination.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = Message major string.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = Message minor string.&lt;br /&gt;
*&#039;&#039;&#039;delay&#039;&#039;&#039; = Number of seconds to wait before the message is dispatched, can be 0.0.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.PostMessage(Router,Router.MESSAGE_BROADCAST,&amp;quot;Sinking&amp;quot;,&amp;quot;StartThePumps&amp;quot;,0.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Router.PostMessage provides the facility for code which does not belong to a GameObject thread to post a message,&lt;br /&gt;
*Since these scripts will not have a GameObject Id an alternative source must be specified.&lt;br /&gt;
*Specifying &#039;&#039;0&#039;&#039; as the source will make the message apper to emanate from the Router itself.&lt;br /&gt;
*Specifying MESSAGE_BROADCAST as the destination will send the message to all GameObjects on the map.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This Method is obsolete, it uses an integer lookup with the Router, which now needs to be an object lookup. To use PostMessage without the Router, use a GameObject PostMessage instead. Only the destination is required.&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), me.GetId(), &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
 Now - PostMessage(me, &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), nMyTrainID, &amp;quot;Animation-Event&amp;quot;, &amp;quot;Left-Opening&amp;quot;, 0.0);&lt;br /&gt;
 Now - PostMessage(myTrain, &amp;quot;Animation-Event&amp;quot;, &amp;quot;Left-Opening&amp;quot;, 0.0);&lt;br /&gt;
&lt;br /&gt;
==Related Methods== &lt;br /&gt;
*[[Class GameObject#ClearMessages|GameObject.ClearMessages()]]&lt;br /&gt;
*[[Class GameObject#PostMessage|GameObject.PostMessage()]]&lt;br /&gt;
*[[Class GameObject#SendMessage|GameObject.SendMessage()]]&lt;br /&gt;
*[[Class GameObject#Sniff|GameObject.Sniff()]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34256</id>
		<title>Class Router</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34256"/>
		<updated>2022-10-12T17:21:20Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* PostMessage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
*[[TrainzScript Language Reference|API Hierarchy]]&lt;br /&gt;
**Router&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The Router class handles the transmission of messages between game objects and contains methods to provide references to specific objects given their name or Id.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|public define int MESSAGE_BROADCAST = 0||The message will be sent to all objects in the Router&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetGameObject==&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(string uniqueName)&amp;lt;br&amp;gt;public native GameObject GetGameObject(int uniqueId)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;uniqueName&#039;&#039;&#039; = Name of object as assigned in Surveyor.&lt;br /&gt;
*&#039;&#039;&#039;uniqueId&#039;&#039;&#039; =  Id of object as assigned by the Router for each session.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject described, null if no such object exists.&lt;br /&gt;
;Syntax&lt;br /&gt;
 GameObject go = Router.GetGameObject(vehicle.GetName());&lt;br /&gt;
;Notes&lt;br /&gt;
*The objects name will normally be its username with a unique serial added by the game when the object is placed.&lt;br /&gt;
*This name can be edited by the user.&lt;br /&gt;
*Remember that not all objects will be named.&lt;br /&gt;
*Although Surveyor issues a warning on any attempt to name an object using a name which already exists, no restriction is actually enforced.&lt;br /&gt;
*As a result it is possible that a name will not be unique.&lt;br /&gt;
*Reference to an object&#039;s Id on the other hand is guaranteed to be unique for the current session.&lt;br /&gt;
*Ids are not preserved between sessions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
{{MethodHeader|public native void Router.Info(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.Info();&lt;br /&gt;
;Notes&lt;br /&gt;
*Logs current Router information to &#039;&#039;jetlog.txt&#039;&#039;.&lt;br /&gt;
*Used for debugging a session.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PostMessage==&lt;br /&gt;
{{MethodHeader|public obsolete native void PostMessage(int srcId, int dstId, string major, string minor, float delay)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;srcId&#039;&#039;&#039; = GameObject to specify as the message source.&lt;br /&gt;
*&#039;&#039;&#039;dstId&#039;&#039;&#039; = GameObject to specify as the message destination.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = Message major string.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = Message minor string.&lt;br /&gt;
*&#039;&#039;&#039;delay&#039;&#039;&#039; = Number of seconds to wait before the message is dispatched, can be 0.0.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.PostMessage(Router,Router.MESSAGE_BROADCAST,&amp;quot;Sinking&amp;quot;,&amp;quot;StartThePumps&amp;quot;,0.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Router.PostMessage provides the facility for code which does not belong to a GameObject thread to post a message,&lt;br /&gt;
*Since these scripts will not have a GameObject Id an alternative source must be specified.&lt;br /&gt;
*Specifying &#039;&#039;0&#039;&#039; as the source will make the message apper to emanate from the Router itself.&lt;br /&gt;
*Specifying MESSAGE_BROADCAST as the destination will send the message to all GameObjects on the map.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This Method is obsolete, it uses an integer lookup with the Router, which now needs to be an object lookup. To use PostMessage without the Router, use a GameObject PostMessage instead. Only the destination is required.&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), me.GetId(), &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
 Now - PostMessage(me, &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), nMyTrainID, &amp;quot;Animation-Event&amp;quot;, &amp;quot;Left-Opening&amp;quot;, 0.0);&lt;br /&gt;
 Now - PostMessage(myTrain, &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 0.0);&lt;br /&gt;
&lt;br /&gt;
==Related Methods== &lt;br /&gt;
*[[Class GameObject#ClearMessages|GameObject.ClearMessages()]]&lt;br /&gt;
*[[Class GameObject#PostMessage|GameObject.PostMessage()]]&lt;br /&gt;
*[[Class GameObject#SendMessage|GameObject.SendMessage()]]&lt;br /&gt;
*[[Class GameObject#Sniff|GameObject.Sniff()]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34255</id>
		<title>Class Router</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34255"/>
		<updated>2022-10-12T17:09:33Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* PostMessage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
*[[TrainzScript Language Reference|API Hierarchy]]&lt;br /&gt;
**Router&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The Router class handles the transmission of messages between game objects and contains methods to provide references to specific objects given their name or Id.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|public define int MESSAGE_BROADCAST = 0||The message will be sent to all objects in the Router&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetGameObject==&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(string uniqueName)&amp;lt;br&amp;gt;public native GameObject GetGameObject(int uniqueId)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;uniqueName&#039;&#039;&#039; = Name of object as assigned in Surveyor.&lt;br /&gt;
*&#039;&#039;&#039;uniqueId&#039;&#039;&#039; =  Id of object as assigned by the Router for each session.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject described, null if no such object exists.&lt;br /&gt;
;Syntax&lt;br /&gt;
 GameObject go = Router.GetGameObject(vehicle.GetName());&lt;br /&gt;
;Notes&lt;br /&gt;
*The objects name will normally be its username with a unique serial added by the game when the object is placed.&lt;br /&gt;
*This name can be edited by the user.&lt;br /&gt;
*Remember that not all objects will be named.&lt;br /&gt;
*Although Surveyor issues a warning on any attempt to name an object using a name which already exists, no restriction is actually enforced.&lt;br /&gt;
*As a result it is possible that a name will not be unique.&lt;br /&gt;
*Reference to an object&#039;s Id on the other hand is guaranteed to be unique for the current session.&lt;br /&gt;
*Ids are not preserved between sessions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
{{MethodHeader|public native void Router.Info(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.Info();&lt;br /&gt;
;Notes&lt;br /&gt;
*Logs current Router information to &#039;&#039;jetlog.txt&#039;&#039;.&lt;br /&gt;
*Used for debugging a session.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PostMessage==&lt;br /&gt;
{{MethodHeader|public obsolete native void PostMessage(int srcId, int dstId, string major, string minor, float delay)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;srcId&#039;&#039;&#039; = GameObject to specify as the message source.&lt;br /&gt;
*&#039;&#039;&#039;dstId&#039;&#039;&#039; = GameObject to specify as the message destination.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = Message major string.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = Message minor string.&lt;br /&gt;
*&#039;&#039;&#039;delay&#039;&#039;&#039; = Number of seconds to wait before the message is dispatched, can be 0.0.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.PostMessage(Router,Router.MESSAGE_BROADCAST,&amp;quot;Sinking&amp;quot;,&amp;quot;StartThePumps&amp;quot;,0.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Router.PostMessage provides the facility for code which does not belong to a GameObject thread to post a message,&lt;br /&gt;
*Since these scripts will not have a GameObject Id an alternative source must be specified.&lt;br /&gt;
*Specifying &#039;&#039;0&#039;&#039; as the source will make the message apper to emanate from the Router itself.&lt;br /&gt;
*Specifying MESSAGE_BROADCAST as the destination will send the message to all GameObjects on the map.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This Method is obsolete, it uses an integer lookup with the Router, which now needs to be an object lookup. To use PostMessage without the Router, use a GameObject PostMessage instead. Only the destination is required.&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), me.GetId(), &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
 Now - PostMessage(me, &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), nMyTrainID, &amp;quot;Animation-Event&amp;quot;, &amp;quot;Left-Opening&amp;quot;, 0.0);&lt;br /&gt;
 Now - PostMessage(myTrain, &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
&lt;br /&gt;
==Related Methods== &lt;br /&gt;
*[[Class GameObject#ClearMessages|GameObject.ClearMessages()]]&lt;br /&gt;
*[[Class GameObject#PostMessage|GameObject.PostMessage()]]&lt;br /&gt;
*[[Class GameObject#SendMessage|GameObject.SendMessage()]]&lt;br /&gt;
*[[Class GameObject#Sniff|GameObject.Sniff()]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34254</id>
		<title>Class Router</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Router&amp;diff=34254"/>
		<updated>2022-10-12T17:07:20Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* PostMessage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
*[[TrainzScript Language Reference|API Hierarchy]]&lt;br /&gt;
**Router&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The Router class handles the transmission of messages between game objects and contains methods to provide references to specific objects given their name or Id.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|public define int MESSAGE_BROADCAST = 0||The message will be sent to all objects in the Router&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetGameObject==&lt;br /&gt;
{{MethodHeader|public native GameObject GetGameObject(string uniqueName)&amp;lt;br&amp;gt;public native GameObject GetGameObject(int uniqueId)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;uniqueName&#039;&#039;&#039; = Name of object as assigned in Surveyor.&lt;br /&gt;
*&#039;&#039;&#039;uniqueId&#039;&#039;&#039; =  Id of object as assigned by the Router for each session.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the GameObject described, null if no such object exists.&lt;br /&gt;
;Syntax&lt;br /&gt;
 GameObject go = Router.GetGameObject(vehicle.GetName());&lt;br /&gt;
;Notes&lt;br /&gt;
*The objects name will normally be its username with a unique serial added by the game when the object is placed.&lt;br /&gt;
*This name can be edited by the user.&lt;br /&gt;
*Remember that not all objects will be named.&lt;br /&gt;
*Although Surveyor issues a warning on any attempt to name an object using a name which already exists, no restriction is actually enforced.&lt;br /&gt;
*As a result it is possible that a name will not be unique.&lt;br /&gt;
*Reference to an object&#039;s Id on the other hand is guaranteed to be unique for the current session.&lt;br /&gt;
*Ids are not preserved between sessions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Info==&lt;br /&gt;
{{MethodHeader|public native void Router.Info(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.Info();&lt;br /&gt;
;Notes&lt;br /&gt;
*Logs current Router information to &#039;&#039;jetlog.txt&#039;&#039;.&lt;br /&gt;
*Used for debugging a session.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PostMessage==&lt;br /&gt;
{{MethodHeader|public obsolete native void PostMessage(int srcId, int dstId, string major, string minor, float delay)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;srcId&#039;&#039;&#039; = GameObject to specify as the message source.&lt;br /&gt;
*&#039;&#039;&#039;dstId&#039;&#039;&#039; = GameObject to specify as the message destination.&lt;br /&gt;
*&#039;&#039;&#039;major&#039;&#039;&#039; = Message major string.&lt;br /&gt;
*&#039;&#039;&#039;minor&#039;&#039;&#039; = Message minor string.&lt;br /&gt;
*&#039;&#039;&#039;delay&#039;&#039;&#039; = Number of seconds to wait before the message is dispatched, can be 0.0.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Router.PostMessage(Router,Router.MESSAGE_BROADCAST,&amp;quot;Sinking&amp;quot;,&amp;quot;StartThePumps&amp;quot;,0.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Router.PostMessage provides the facility for code which does not belong to a GameObjject thread to post a message,&lt;br /&gt;
*Since these scripts will not have a GameObject Id an alternative source must be specified.&lt;br /&gt;
*Specifying &#039;&#039;0&#039;&#039; as the source will make the message apper to emanate from the Router itself.&lt;br /&gt;
*Specifying MESSAGE_BROADCAST as the destination will send the message to all GameObjects on the map.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This Method is obsolete, it uses an integer lookup with the Router, which now needs to be an object lookup&lt;br /&gt;
To use PostMessage without the Router, use a GameObject PostMessage instead.&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), me.GetId(), &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
 Now - PostMessage(me, &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
&lt;br /&gt;
 Was - Router.PostMessage (me.GetId(), nMyTrainID, &amp;quot;Animation-Event&amp;quot;, &amp;quot;Left-Opening&amp;quot;, 0.0);&lt;br /&gt;
 Now - PostMessage(myTrain, &amp;quot;Timer-Event&amp;quot;, &amp;quot;&amp;quot;, 2.0);&lt;br /&gt;
&lt;br /&gt;
==Related Methods== &lt;br /&gt;
*[[Class GameObject#ClearMessages|GameObject.ClearMessages()]]&lt;br /&gt;
*[[Class GameObject#PostMessage|GameObject.PostMessage()]]&lt;br /&gt;
*[[Class GameObject#SendMessage|GameObject.SendMessage()]]&lt;br /&gt;
*[[Class GameObject#Sniff|GameObject.Sniff()]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Using_Context_with_Trainzscript&amp;diff=34253</id>
		<title>Using Context with Trainzscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Using_Context_with_Trainzscript&amp;diff=34253"/>
		<updated>2022-10-12T14:34:29Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:context_icon.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
* Context is a freeware programmer&#039;s editor which can be downloaded from [https://www.contexteditor.org/downloads/ &#039;&#039;&#039;contexteditor.org/downloads/&#039;&#039;&#039;].&lt;br /&gt;
* Highlighters for script files and for config.txt files can be downloaded by [[Media:TrainzScript.chl.zip|&#039;&#039;&#039;Clicking Here&#039;&#039;&#039;]] These are not essential for TRS2006 but are needed for TS2009 onwards. They show keywords, text strings and numbers in different colours and help to show where there might be missing quote marks and other problems with your code. A highlighter for config.txt files is included.&lt;br /&gt;
* Install the program and copy the highlighter files to &#039;&#039;\Program Files\Context\Highlighters.&#039;&#039;&lt;br /&gt;
* To integrate the compiler  select &#039;&#039;Option\Environment Options&#039;&#039; from Context&#039;s menu and then select the &#039;&#039;Execute Keys&#039;&#039; tab.&lt;br /&gt;
* Click on &#039;&#039;Add&#039;&#039; and enter the file extension &#039;&#039;gs&#039;&#039;&lt;br /&gt;
* In the box at the top select one of the function keys and make these entries:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:ContextOptions.jpg]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Click OK to close the dialogue.&lt;br /&gt;
* Close Context.&lt;br /&gt;
* Create a new file called &#039;&#039;compile2006.bat&#039;&#039; in &#039;&#039;C:\Program Files\Auran\&#039;&#039; (use whatever name and location you prefer)&lt;br /&gt;
* Add this text to the batch file, you may need to modify paths or filenames:&lt;br /&gt;
&lt;br /&gt;
 @echo off&lt;br /&gt;
 set gsc=&amp;quot;C:\Program Files\Auran\TRS2006\Bin&amp;quot;&lt;br /&gt;
 set include=&amp;quot;C:\Program Files\Auran\TRS2006\Scripts&amp;quot;&lt;br /&gt;
 %gsc%\gsc.exe %1 -i%include% -pc:\windows\temp&lt;br /&gt;
 set gsc=&lt;br /&gt;
 set include=&lt;br /&gt;
 pause&lt;br /&gt;
&lt;br /&gt;
* Reopen Context and load a script file.&lt;br /&gt;
* Press F11, your script file will be saved and then checked by the compiler, if all has gone well you will see this:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:CompiledOK.jpg]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If there are any problems with the script details will be given together with the line number of the error.&lt;br /&gt;
* Interpreting these can be something of a black art, don&#039;t worry it will become easier as time passes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling in Context with TrainzUtil.exe for TS2009, TS2010, and TS12==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TrainzUtil.exe&#039;&#039;&#039; is used to compile scripts in TS2009 onwards.&lt;br /&gt;
&lt;br /&gt;
Set up a Context execute key as follows:&lt;br /&gt;
&lt;br /&gt;
 1. Open a trainz script in Context.  You must have a Trainz Script highlighter file installed.&lt;br /&gt;
 &lt;br /&gt;
 2. Call up the execute keys setup by clicking on &#039;Options/Environment Options&#039; in the main menu.&lt;br /&gt;
 &lt;br /&gt;
 3. Click on the &#039;Execute Keys&#039; tab to get the execute keys set-up window.  The window is the same&lt;br /&gt;
    as the one illustrated above.&lt;br /&gt;
 &lt;br /&gt;
 4. Click on a &#039;User exec key&#039; (eg F10)&lt;br /&gt;
 &lt;br /&gt;
 5. Assuming you have TS2010, put the following string, or equivalent for your installation, into&lt;br /&gt;
    the &#039;Execute&#039; box (including the quote signs)&lt;br /&gt;
    &#039;&#039;&#039;&amp;quot;C:\Program Files\Auran\TS2010\bin\TrainzUtil.exe&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 6. Put the following into the &#039;Start in&#039; box (including the quote signs)&lt;br /&gt;
     &#039;&#039;&#039;&amp;quot;%p&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
   &lt;br /&gt;
 7. Put the following, or equivalent for your installation, into the &#039;Parameters&#039; box&lt;br /&gt;
     &#039;&#039;&#039;compile %n -i&amp;quot;c:\Program Files\Auran\TS2010\Scripts&amp;quot; -pC:\temp&#039;&#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
 8. Turn on the &#039;Capture console output&#039;.&lt;br /&gt;
  &lt;br /&gt;
 9. In the &#039;Compiler output parser rule&#039; put the following&lt;br /&gt;
     &#039;&#039;&#039;%f(%l)&#039;&#039;&#039; &lt;br /&gt;
   &lt;br /&gt;
 10. Click on the &#039;Apply&#039; button to save.&lt;br /&gt;
&lt;br /&gt;
Your setup for TS2010 compiling should look as below:-&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ConTEXT_setup_TS2010.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Now when you press F10 the script should be compiled and error checked by TrainzUtil for TS2010.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling in Context with TrainzUtil.exe for Trainz A New Era==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TrainzUtil.exe&#039;&#039;&#039; can be used to syntax-check scripts in T:ANE.&lt;br /&gt;
&lt;br /&gt;
Please note that the T:ANE launch window must be open for this to work, and that you must set the advanced debugging options as below.&lt;br /&gt;
&lt;br /&gt;
[[Image:TANE_debug_setup_1.jpg]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also please note that I have T:ANE installed on E: drive (a solid state drive), and that I have moved my user data to that drive.&lt;br /&gt;
The settings below should work for the default locations of the data.&lt;br /&gt;
&lt;br /&gt;
Additionally note that this setup uses an undocumented feature for trainzutil.exe for T:ANE. The compile feature has been unsupported for some time now.  Scripts are now checked by the validation process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set up a Context execute key as follows:&lt;br /&gt;
&lt;br /&gt;
 1. Open a T:ANE trainz script in Context.  You must have a Trainz Script highlighter file installed.&lt;br /&gt;
 &lt;br /&gt;
 2. Call up the execute keys setup by clicking on &#039;Options/Environment Options&#039; in the main menu.&lt;br /&gt;
 &lt;br /&gt;
 3. Click on the &#039;Execute Keys&#039; tab to get the execute keys set-up window.  The window is the same&lt;br /&gt;
    as the one illustrated above.&lt;br /&gt;
 &lt;br /&gt;
 4. Click on a &#039;User exec key&#039; (eg F11)&lt;br /&gt;
 &lt;br /&gt;
 5. Assuming you have T:ANE, put the following string, or equivalent for your installation, into&lt;br /&gt;
    the &#039;Execute&#039; box (including the quote signs)&lt;br /&gt;
    &#039;&#039;&#039;&amp;quot;E:\N3V Games\Trainz A New Era\TrainzUtil.exe&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 6. Put the following into the &#039;Start in&#039; box (including the quote signs)&lt;br /&gt;
     &#039;&#039;&#039;&amp;quot;%p&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
   &lt;br /&gt;
 7. Put the following, or equivalent for your installation, into the &#039;Parameters&#039; box&lt;br /&gt;
     &#039;&#039;&#039;compile %n -i&amp;quot;E:\N3V Games\Trainz A New Era\resources\Scripts&amp;quot; -pC:\temp&#039;&#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
 8. Turn on the &#039;Capture console output&#039;.&lt;br /&gt;
  &lt;br /&gt;
 9. In the &#039;Compiler output parser rule&#039; put the following&lt;br /&gt;
     &#039;&#039;&#039;%f(%l)&#039;&#039;&#039; &lt;br /&gt;
   &lt;br /&gt;
 10. Click on the &#039;Apply&#039; button to save.&lt;br /&gt;
&lt;br /&gt;
Now when you press F11 the script should be syntax-checked by TrainzUtil for T:ANE.&lt;br /&gt;
&lt;br /&gt;
The image below shows a T:ANE trainz script in ConTEXT.&amp;lt;br&amp;gt;&lt;br /&gt;
Note the different colours for keywords, text, numbers and comments.&amp;lt;br&amp;gt;&lt;br /&gt;
The script has a deliberate error in line 93 to illustrate how the output from the syntax-check is displayed.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:TANE_script_in_ConTEXT.jpg]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Using_Context_with_Trainzscript&amp;diff=34252</id>
		<title>Using Context with Trainzscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Using_Context_with_Trainzscript&amp;diff=34252"/>
		<updated>2022-10-12T14:20:55Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: Updated ConTEXT website link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:context_icon.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
* Context is a freeware programmer&#039;s editor which can be downloaded from [https://www.contexteditor.org/downloads/ &#039;&#039;&#039;contexteditor.org/downloads/&#039;&#039;&#039;].&lt;br /&gt;
* Highlighters for script files and for config.txt files can be downloaded by [[Media:TrainzScript.chl.zip|clicking here.]] These are not essential for TRS2006 but are needed for TS2009 onwards. They show keywords, text strings and numbers in different colours and help to show where there might be missing quote marks and other problems with your code. A highlighter for config.txt files is included.&lt;br /&gt;
* Install the program and copy the highlighter files to &#039;&#039;\Program Files\Context\Highlighters.&#039;&#039;&lt;br /&gt;
* To integrate the compiler  select &#039;&#039;Option\Environment Options&#039;&#039; from Context&#039;s menu and then select the &#039;&#039;Execute Keys&#039;&#039; tab.&lt;br /&gt;
* Click on &#039;&#039;Add&#039;&#039; and enter the file extension &#039;&#039;gs&#039;&#039;&lt;br /&gt;
* In the box at the top select one of the function keys and make these entries:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:ContextOptions.jpg]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Click OK to close the dialogue.&lt;br /&gt;
* Close Context.&lt;br /&gt;
* Create a new file called &#039;&#039;compile2006.bat&#039;&#039; in &#039;&#039;C:\Program Files\Auran\&#039;&#039; (use whatever name and location you prefer)&lt;br /&gt;
* Add this text to the batch file, you may need to modify paths or filenames:&lt;br /&gt;
&lt;br /&gt;
 @echo off&lt;br /&gt;
 set gsc=&amp;quot;C:\Program Files\Auran\TRS2006\Bin&amp;quot;&lt;br /&gt;
 set include=&amp;quot;C:\Program Files\Auran\TRS2006\Scripts&amp;quot;&lt;br /&gt;
 %gsc%\gsc.exe %1 -i%include% -pc:\windows\temp&lt;br /&gt;
 set gsc=&lt;br /&gt;
 set include=&lt;br /&gt;
 pause&lt;br /&gt;
&lt;br /&gt;
* Reopen Context and load a script file.&lt;br /&gt;
* Press F11, your script file will be saved and then checked by the compiler, if all has gone well you will see this:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:CompiledOK.jpg]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If there are any problems with the script details will be given together with the line number of the error.&lt;br /&gt;
* Interpreting these can be something of a black art, don&#039;t worry it will become easier as time passes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling in Context with TrainzUtil.exe for TS2009, TS2010, and TS12==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TrainzUtil.exe&#039;&#039;&#039; is used to compile scripts in TS2009 onwards.&lt;br /&gt;
&lt;br /&gt;
Set up a Context execute key as follows:&lt;br /&gt;
&lt;br /&gt;
 1. Open a trainz script in Context.  You must have a Trainz Script highlighter file installed.&lt;br /&gt;
 &lt;br /&gt;
 2. Call up the execute keys setup by clicking on &#039;Options/Environment Options&#039; in the main menu.&lt;br /&gt;
 &lt;br /&gt;
 3. Click on the &#039;Execute Keys&#039; tab to get the execute keys set-up window.  The window is the same&lt;br /&gt;
    as the one illustrated above.&lt;br /&gt;
 &lt;br /&gt;
 4. Click on a &#039;User exec key&#039; (eg F10)&lt;br /&gt;
 &lt;br /&gt;
 5. Assuming you have TS2010, put the following string, or equivalent for your installation, into&lt;br /&gt;
    the &#039;Execute&#039; box (including the quote signs)&lt;br /&gt;
    &#039;&#039;&#039;&amp;quot;C:\Program Files\Auran\TS2010\bin\TrainzUtil.exe&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 6. Put the following into the &#039;Start in&#039; box (including the quote signs)&lt;br /&gt;
     &#039;&#039;&#039;&amp;quot;%p&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
   &lt;br /&gt;
 7. Put the following, or equivalent for your installation, into the &#039;Parameters&#039; box&lt;br /&gt;
     &#039;&#039;&#039;compile %n -i&amp;quot;c:\Program Files\Auran\TS2010\Scripts&amp;quot; -pC:\temp&#039;&#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
 8. Turn on the &#039;Capture console output&#039;.&lt;br /&gt;
  &lt;br /&gt;
 9. In the &#039;Compiler output parser rule&#039; put the following&lt;br /&gt;
     &#039;&#039;&#039;%f(%l)&#039;&#039;&#039; &lt;br /&gt;
   &lt;br /&gt;
 10. Click on the &#039;Apply&#039; button to save.&lt;br /&gt;
&lt;br /&gt;
Your setup for TS2010 compiling should look as below:-&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:ConTEXT_setup_TS2010.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Now when you press F10 the script should be compiled and error checked by TrainzUtil for TS2010.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling in Context with TrainzUtil.exe for Trainz A New Era==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TrainzUtil.exe&#039;&#039;&#039; can be used to syntax-check scripts in T:ANE.&lt;br /&gt;
&lt;br /&gt;
Please note that the T:ANE launch window must be open for this to work, and that you must set the advanced debugging options as below.&lt;br /&gt;
&lt;br /&gt;
[[Image:TANE_debug_setup_1.jpg]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also please note that I have T:ANE installed on E: drive (a solid state drive), and that I have moved my user data to that drive.&lt;br /&gt;
The settings below should work for the default locations of the data.&lt;br /&gt;
&lt;br /&gt;
Additionally note that this setup uses an undocumented feature for trainzutil.exe for T:ANE. The compile feature has been unsupported for some time now.  Scripts are now checked by the validation process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set up a Context execute key as follows:&lt;br /&gt;
&lt;br /&gt;
 1. Open a T:ANE trainz script in Context.  You must have a Trainz Script highlighter file installed.&lt;br /&gt;
 &lt;br /&gt;
 2. Call up the execute keys setup by clicking on &#039;Options/Environment Options&#039; in the main menu.&lt;br /&gt;
 &lt;br /&gt;
 3. Click on the &#039;Execute Keys&#039; tab to get the execute keys set-up window.  The window is the same&lt;br /&gt;
    as the one illustrated above.&lt;br /&gt;
 &lt;br /&gt;
 4. Click on a &#039;User exec key&#039; (eg F11)&lt;br /&gt;
 &lt;br /&gt;
 5. Assuming you have T:ANE, put the following string, or equivalent for your installation, into&lt;br /&gt;
    the &#039;Execute&#039; box (including the quote signs)&lt;br /&gt;
    &#039;&#039;&#039;&amp;quot;E:\N3V Games\Trainz A New Era\TrainzUtil.exe&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 6. Put the following into the &#039;Start in&#039; box (including the quote signs)&lt;br /&gt;
     &#039;&#039;&#039;&amp;quot;%p&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
   &lt;br /&gt;
 7. Put the following, or equivalent for your installation, into the &#039;Parameters&#039; box&lt;br /&gt;
     &#039;&#039;&#039;compile %n -i&amp;quot;E:\N3V Games\Trainz A New Era\resources\Scripts&amp;quot; -pC:\temp&#039;&#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
 8. Turn on the &#039;Capture console output&#039;.&lt;br /&gt;
  &lt;br /&gt;
 9. In the &#039;Compiler output parser rule&#039; put the following&lt;br /&gt;
     &#039;&#039;&#039;%f(%l)&#039;&#039;&#039; &lt;br /&gt;
   &lt;br /&gt;
 10. Click on the &#039;Apply&#039; button to save.&lt;br /&gt;
&lt;br /&gt;
Now when you press F11 the script should be syntax-checked by TrainzUtil for T:ANE.&lt;br /&gt;
&lt;br /&gt;
The image below shows a T:ANE trainz script in ConTEXT.&amp;lt;br&amp;gt;&lt;br /&gt;
Note the different colours for keywords, text, numbers and comments.&amp;lt;br&amp;gt;&lt;br /&gt;
The script has a deliberate error in line 93 to illustrate how the output from the syntax-check is displayed.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:TANE_script_in_ConTEXT.jpg]]&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34251</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34251"/>
		<updated>2022-10-12T14:06:34Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* Affiliatly Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
==Final Review==&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
Once you have set up your account you will be given an Affiliatly ID number. Log back into the TCCP website, and in the Content Creator Dashboard choose Options. Enter your ID and Save. WARNING: Double check your Affiliatly ID. Adding the wrong ID could mean the wrong account is paid!&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34250</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34250"/>
		<updated>2022-10-12T14:00:33Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* Affiliatly Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
==Final Review==&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel &#039;&#039;&#039;Affiliatly Account&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34249</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34249"/>
		<updated>2022-10-12T13:58:44Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: /* Affiliatly Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
==Final Review==&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel Affiliatly Account]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator? Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]). Commissions are 50% of the sale price for direct purchases. You will also receive commissions on Silver and Gold subscriptions that download your DLC content. The amount of these commissions vary and a detailed chart can be found under the TCCP website Documentation section.&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel? Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale. This could result in a total of 60% on a direct sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free. Sign up now to get your Affiliatly ID and begin earning commissions and royalties. The website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account. The amount shown may be less than you will actuallly receive as the subscription revenue does not show here, which is calculated on the processing date as it&#039;s a shared revenue.&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34248</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34248"/>
		<updated>2022-10-12T13:52:38Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
==Final Review==&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel Affiliatly Account]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator?&lt;br /&gt;
Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]).&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel?&lt;br /&gt;
Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a 10% commission on that sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free.&lt;br /&gt;
Sign up now to get your Affiliatly ID and begin earning commissions and royalties.&lt;br /&gt;
Welcome to the Trainz Affiliate Website.&lt;br /&gt;
&lt;br /&gt;
This website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account.&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;br /&gt;
&lt;br /&gt;
In order to get paid, you must have a PayPal account linked to your Affiliaty account. You will get paid on the 15th or 16th of each month, depending on your time zone and when they process your account. You must have at least $100 US in earnings before you will get paid.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34247</id>
		<title>TCCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TCCP&amp;diff=34247"/>
		<updated>2022-10-12T10:21:54Z</updated>

		<summary type="html">&lt;p&gt;Christopher824: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a guide for Trainz Content Creation Program or &#039;TCCP&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
TCCP Beta Testers should look HERE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
Trainz Content Creation Program or TCCP allows you to become a Registered Content Creator with N3V Auran. You will be eligible to upload Content which may be made available for download by Trainz users, and, for Approved Content, to receive a share of revenues for sales relating to your Content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
&lt;br /&gt;
==Set Up Account==&lt;br /&gt;
Your first step is to get a TCCP account at [https://tccp.auran.com/ &#039;&#039;&#039;tccp.auran.com&#039;&#039;&#039;]&lt;br /&gt;
When you create your account use your My Trainz username and password. You will be asked to accept the EULA terms and conditions.&lt;br /&gt;
&lt;br /&gt;
Once you have an account created you can find a lot more detailed instructions under [https://tccp.auran.com/documentation.php &#039;&#039;&#039;tccp.auran.com/documentation.php&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
This video also explains most of what you need to get up and running. It is a long video but is split into sections so you can skip to what you need: [https://www.youtube.com/watch?v=6J9Bhq5vIxk&amp;amp;t=65s &#039;&#039;&#039;DETAILED VIDEO&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
==Connect With Other Creators==&lt;br /&gt;
More heads are better than one. There are differnt ways to connect with other content creators and you should be involved with this. Trainz is a community based platform, and as such you need to be involed to help gaurantee success. You will find if you are a team player, you will benifit from the team. Here are some avenues to connect;&lt;br /&gt;
&lt;br /&gt;
* [https://forums.auran.com/trainz/forum.php Trainz Forums]&lt;br /&gt;
* Trainz Discord channel&amp;lt;br&amp;gt;For this you will need an invite, see the Trainz Forums above.&lt;br /&gt;
&lt;br /&gt;
=Creating A Package=&lt;br /&gt;
&lt;br /&gt;
==Thumbnails==&lt;br /&gt;
&lt;br /&gt;
Your primary asset(s), Routes, Sessions, Rolling Stock and Locos must have the proper set of thumbnails. To add the thumbnails to your asset, edit the config.txt and make sure it looks like the code below, take note of the dimensions and filenames listed for each thumbnail. If you do not have the correct size thumbnails or filenames, you will need to create or modify them.&lt;br /&gt;
&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;2.jpg&amp;quot;&lt;br /&gt;
     width                               1280&lt;br /&gt;
     height                              800&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              384&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==TCCP Manager==&lt;br /&gt;
Current TCCP projects can be from a TRS19 or TRS22 build. Do not try to create a package using a Beta Build. If you can submit your project in TRS19 SP5, then you can target both TRS19 and TRS22 customers. Open Trainz and look for the Developer Tab. It can be found from the Launcher and the Content Manager.&lt;br /&gt;
* Select &#039;Open TCCP Project List&#039;&lt;br /&gt;
* Right Click inside window and select &#039;Create New Project...&#039;&lt;br /&gt;
&lt;br /&gt;
Once the panel opens, type in a Title. Then type a description in the text box, it can be anything as these will not be the final title or description, so it could just be a note at this point. If you close this dialog without giving it a Title or a Description, you will get an error. If you wish to still quit, close the dialog a second time and it will abandon the project. If you close the dialog with a Title and Description, a TCCP Project ID will be assigned to your project and now can be found on the TCCP website.&lt;br /&gt;
&lt;br /&gt;
In the TCCP Project List, your project will now be listed. You can right click on it and it will give you the option of &#039;Edit Project...&#039; and &#039;View Project on TCCP Website...&#039;. &lt;br /&gt;
&lt;br /&gt;
When you choose edit project, the window that pops up it will now have your title on the menu bar. The first list box is where you place the assets you have made and wish to distribute. You will need to open a Content Manager window, and drag your creation(s) into it. The second box is which from the first box you want to encode as payware. You can now drag from the first box to the second box to populate it. If you are a route creator, and wish to have an unlocked base session, you would leave that session out of the second box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using newer asset versions where available==&lt;br /&gt;
Checkbox - &#039;&#039;need more info on this setting?&#039;&#039; Default leave unchecked.&lt;br /&gt;
&lt;br /&gt;
==Uploading==&lt;br /&gt;
&lt;br /&gt;
Once you have populated the two list boxes, click the &#039;Upload Package&#039; button on the bottom right of the dialog.&lt;br /&gt;
*.TZARC - Trainz Archive File&lt;br /&gt;
The manager will attempt to build your files into a .tzarc file. It will add every dependancy the package needs into the file. If succesful it will upload it to the TCCP build machine.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
* &#039;&#039;&#039;Payware&#039;&#039;&#039;&amp;lt;br&amp;gt;You can not include payware in your project, this includes dependencies.&lt;br /&gt;
* &#039;&#039;&#039;Packaged and not avialable&#039;&#039;&#039;&amp;lt;br&amp;gt;This will happen from time to time. There are different ways to fix this. You could edit your creation and remove the offending asset. You could clone the asset if the license allows or you have permission, then upload it to the DLS, then replace your old one with the new one from the DLS. Or you could open a helpdesk ticket if there is an earlier version on the DLS. If the only version available is the packaged one, then you must remove or clone.&lt;br /&gt;
* &#039;&#039;&#039;Unfeasable&#039;&#039;&#039;&amp;lt;br&amp;gt;You already have a built package on the TCCP website. You will need to go to the website and cancel the package, then delete the .tzarc file. You will now be able to upload your package.&lt;br /&gt;
* &#039;&#039;&#039;Unknown Errors&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=TCCP Package Setup=&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
&lt;br /&gt;
Once you have uploaded your .tzarc file you will need to login at the TCCP website and navigate to your file or Package. The top level, or the Apps Dashboard, has 3 major sections. Content, Beta Testing and Documentation. Your file will be in the Content section or the Content Creator Dashboard. At the bottom of the page will be a list of your projects. Click on the title of your package in the list to continue to the Content Creator Project.&lt;br /&gt;
&lt;br /&gt;
==Package==&lt;br /&gt;
&lt;br /&gt;
You are required to fill in all the fields before clicking the &#039;Update Package&#039; button at the bottom of this page. What is entered here can be changed before you submit it to the build machine, so don&#039;t be worried if it&#039;s not 100% accurate at this point. The Title and Description will overright the Trainz TCCP Manager, so this is important to remember if you need to modify your .tzac file and re-upload it.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
&lt;br /&gt;
Upload at least six 1280 (width) x 800 (height) marketing screenshots and one 600 (width) x 262 (height) Trainz Store header image for your product. Accepted upload formats: &#039;png&#039; or &#039;jpg&#039;. Please ensure to include a 1280x800 resolution version of the 600x262 header image in the screenshots section as well, as this is required for creating the header images for Steam.&lt;br /&gt;
&lt;br /&gt;
These images will not effect the images in your assets config.txt file.&lt;br /&gt;
&lt;br /&gt;
Optionally you can upload a YouTube video.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
&lt;br /&gt;
You can have only one .tzarc file uploaded for a project. If you need to change something, you will have to delete the file from this page. Depending at which stage your project is in, you may need to Cancel Beta and/or Cancel Project&lt;br /&gt;
&lt;br /&gt;
==Beta Testing==&lt;br /&gt;
&lt;br /&gt;
Before you submit for Beta Testing you should add your own questions as part of your Beta so testers have specific details to test with your content. You can add specific testing questions under the Test Plan Tools&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
&lt;br /&gt;
==Notifications==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Build Machine=&lt;br /&gt;
&lt;br /&gt;
Near the top of each Content Creator Project page is a status box showing the current build status of the package. Once your package has passed all the requirements, the Submit To Build Queue button will appear.&lt;br /&gt;
&lt;br /&gt;
* Prepare For Submission&lt;br /&gt;
* Building&amp;lt;br&amp;gt;Your package is building. It may take up to a couple of hours or more to build the project.&lt;br /&gt;
* Failed&lt;br /&gt;
* Success&amp;lt;br&amp;gt;Your package passed and can now be submitted for Beta Testing&lt;br /&gt;
* Live&amp;lt;br&amp;gt;N3V has approved your package and it is now on the store.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beta Testing=&lt;br /&gt;
&lt;br /&gt;
==Test Quesions==&lt;br /&gt;
&lt;br /&gt;
==Tickets==&lt;br /&gt;
&lt;br /&gt;
==Final Review==&lt;br /&gt;
&lt;br /&gt;
==Request Skip Beta==&lt;br /&gt;
&lt;br /&gt;
=Getting Paid=&lt;br /&gt;
&lt;br /&gt;
==Affiliatly Account==&lt;br /&gt;
&lt;br /&gt;
You will need to setup an [https://www.affiliatly.com/af-102715/affiliate.panel Affiliatly Account]&lt;br /&gt;
&lt;br /&gt;
Start earning royalties and commissions from your Trainz hobby today.&lt;br /&gt;
&lt;br /&gt;
Are you a Trainz Content Creator?&lt;br /&gt;
Expand your own website sales and earn commissions on all your items sold through the Trainz Store and via other online stores such as Steam and Mac App Store. (Submit your content through [https://tccp.auran.com/ &#039;&#039;&#039;this link&#039;&#039;&#039;]).&lt;br /&gt;
&lt;br /&gt;
Do you run a Trainz website or Youtube Channel?&lt;br /&gt;
Use your Affiliatly link to earn commissions on sales through our store. Each time a user clicks on your link then purchases an item in the next week, you earn a commission on that sale.&lt;br /&gt;
&lt;br /&gt;
Registration is free.&lt;br /&gt;
Sign up now to get your Affiliatly ID and begin earning commissions and royalties.&lt;br /&gt;
Welcome to the Trainz Affiliate Website.&lt;br /&gt;
&lt;br /&gt;
This website tracks the royalties earned for referrals and sales through our TrainzPortal store and shows payments to your nominated account.&lt;br /&gt;
&lt;br /&gt;
==PayPal Account==&lt;/div&gt;</summary>
		<author><name>Christopher824</name></author>
	</entry>
</feed>