<?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=Trev999</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=Trev999"/>
	<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/wiki/Special:Contributions/Trev999"/>
	<updated>2026-11-05T07:54:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10171</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10171"/>
		<updated>2017-09-23T04:53:50Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
 Pause game while message is displayed: - check to stop the game until this message is switched off&lt;br /&gt;
 Close previous popup windows: - check to close any Message Popups currently displayed before this message is shown&lt;br /&gt;
 Message location: Top Left/Top Right/Bottom Left/Bottom Right - select one&lt;br /&gt;
 Message Source: Custom text/A predefined HTML page (advanced)/A predefined string-table entry from a HTML asset (advanced) - select one&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: Custom text&#039;&#039;&#039;&lt;br /&gt;
 Icon: &amp;quot;Click here to set&amp;quot; - shows a list of texture icons. Select one to be displayed with the message&lt;br /&gt;
 Icon: &amp;quot;Clear icon&amp;quot; - clears any currently displayed icon&lt;br /&gt;
 Custom text: Enter text in dialogue box. You will be limited to about 6 lines of text&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined HTML page&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 HTML Page: - enter the filename of the HTML page to be displayed. The page must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.html&amp;quot; is optional.&lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional&lt;br /&gt;
 Autoplay Wave: - check to play the .wav sound file as soon as message is displayed. If unchecked sound will not be played.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined string-table entry from a HTML asset&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required string-table.&lt;br /&gt;
 String Table Token: - &lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional.&lt;br /&gt;
 Autoplay Wave: - check to play the .wav sound file as soon as message is displayed. If unchecked sound will not be played.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties (common to all these rules)&#039;&#039;&#039;&lt;br /&gt;
   variable-name&lt;br /&gt;
   conditions&lt;br /&gt;
   value&lt;br /&gt;
   text to use as a label in the HUD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal to&#039; &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change the value of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;text&#039;.&lt;br /&gt;
&lt;br /&gt;
Variables are saved in the session file and persist from one saved game to another.&lt;br /&gt;
They can be accessed/modified by the following &#039;&#039;&#039;driver commands&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Commands by trev999:&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Set S-Variable driver command: &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Skip if session-variable driver command: &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Wait until S-variable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Commands by atilabarut&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ChangeSVariables driver command: &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;WaitUntilSVariable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10170</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10170"/>
		<updated>2017-09-23T04:50:29Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
 Pause game while message is displayed: - check to stop the game until this message is switched off&lt;br /&gt;
 Close previous popup windows: - check to close any Message Popups currently displayed before this message is shown&lt;br /&gt;
 Message location: Top Left/Top Right/Bottom Left/Bottom Right - select one&lt;br /&gt;
 Message Source: Custom text/A predefined HTML page (advanced)/A predefined string-table entry from a HTML asset (advanced) - select one&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: Custom text&#039;&#039;&#039;&lt;br /&gt;
 Icon: &amp;quot;Click here to set&amp;quot; - shows a list of texture icons. Select one to be displayed with the message&lt;br /&gt;
 Icon: &amp;quot;Clear icon&amp;quot; - clears any currently displayed icon&lt;br /&gt;
 Custom text: Enter text in dialogue box. You will be limited to about 6 lines of text&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined HTML page&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 HTML Page: - enter the filename of the HTML page to be displayed. The page must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.html&amp;quot; is optional.&lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional&lt;br /&gt;
 Autoplay Wave: - check to play the .wav sound file as soon as message is displayed. If unchecked sound will not be played.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined string-table entry from a HTML asset&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required string-table.&lt;br /&gt;
 String Table Token: - &lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional.&lt;br /&gt;
 Autoplay Wave: - check to play the .wav sound file as soon as message is displayed. If unchecked sound will not be played.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties (common to all these rules)&#039;&#039;&#039;&lt;br /&gt;
   variable-name&lt;br /&gt;
   conditions&lt;br /&gt;
   value&lt;br /&gt;
   text to use as a label in the HUD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal to&#039; &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change the value of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;text&#039;.&lt;br /&gt;
&lt;br /&gt;
Variables are saved in the session file and persist from one saved game to another.&lt;br /&gt;
They can be accessed/modified by the following &#039;&#039;&#039;driver commands&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Commands by trev999:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set S-Variable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skip if session-variable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait until S-variable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Commands by atilabarut&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChangeSVariables driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WaitUntilSVariable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10168</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10168"/>
		<updated>2017-09-23T04:48:54Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
 Pause game while message is displayed: - check to stop the game until this message is switched off&lt;br /&gt;
 Close previous popup windows: - check to close any Message Popups currently displayed before this message is shown&lt;br /&gt;
 Message location: Top Left/Top Right/Bottom Left/Bottom Right - select one&lt;br /&gt;
 Message Source: Custom text/A predefined HTML page (advanced)/A predefined string-table entry from a HTML asset (advanced) - select one&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: Custom text&#039;&#039;&#039;&lt;br /&gt;
 Icon: &amp;quot;Click here to set&amp;quot; - shows a list of texture icons. Select one to be displayed with the message&lt;br /&gt;
 Icon: &amp;quot;Clear icon&amp;quot; - clears any currently displayed icon&lt;br /&gt;
 Custom text: Enter text in dialogue box. You will be limited to about 6 lines of text&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined HTML page&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 HTML Page: - enter the filename of the HTML page to be displayed. The page must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.html&amp;quot; is optional.&lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional&lt;br /&gt;
 Autoplay Wave: - check to play the .wav sound file as soon as message is displayed. If unchecked sound will not be played.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined string-table entry from a HTML asset&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 String Table Token: - &lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional.&lt;br /&gt;
 Autoplay Wave: - check to play the .wav sound file as soon as message is displayed. If unchecked sound will not be played.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties (common to all these rules)&#039;&#039;&#039;&lt;br /&gt;
   variable-name&lt;br /&gt;
   conditions&lt;br /&gt;
   value&lt;br /&gt;
   text to use as a label in the HUD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal to&#039; &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change the value of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;text&#039;.&lt;br /&gt;
&lt;br /&gt;
Variables are saved in the session file and persist from one saved game to another.&lt;br /&gt;
They can be accessed/modified by the following &#039;&#039;&#039;driver commands&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By trev999:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set S-Variable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skip if session-variable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait until S-variable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By atilabarut&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChangeSVariables driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WaitUntilSVariable driver command: &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10165</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10165"/>
		<updated>2017-09-23T04:44:57Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
 Pause game while message is displayed: - check to stop the game until this message is switched off&lt;br /&gt;
 Close previous popup windows: - check to close any Message Popups currently displayed before this message is shown&lt;br /&gt;
 Message location: Top Left/Top Right/Bottom Left/Bottom Right - select one&lt;br /&gt;
 Message Source: Custom text/A predefined HTML page (advanced)/A predefined string-table entry from a HTML asset (advanced) - select one&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: Custom text&#039;&#039;&#039;&lt;br /&gt;
 Icon: &amp;quot;Click here to set&amp;quot; - shows a list of texture icons. Select one to be displayed with the message&lt;br /&gt;
 Icon: &amp;quot;Clear icon&amp;quot; - clears any currently displayed icon&lt;br /&gt;
 Custom text: Enter text in dialogue box. You will be limited to about 6 lines of text&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined HTML page&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 HTML Page: - enter the filename of the HTML page to be displayed. The page must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.html&amp;quot; is optional.&lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional&lt;br /&gt;
 Autoplay Wave: - check to play .wav sound file. If unchecked sound will not be played even if you have specified its filename and HTML asset.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined string-table entry from a HTML asset&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 String Table Token: - &lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional.&lt;br /&gt;
 Autoplay Wave: - check to play .wav sound file. If unchecked sound will not be played even if you have specified its filename and HTML asset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties (common to all these rules)&#039;&#039;&#039;&lt;br /&gt;
   variable-name&lt;br /&gt;
   conditions&lt;br /&gt;
   value&lt;br /&gt;
   text to use as a label in the HUD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal to&#039; &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change the value of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;text&#039;.&lt;br /&gt;
&lt;br /&gt;
Variables are saved in the session file and persist from one saved game to another.&lt;br /&gt;
They can be accessed/modified by the following &#039;&#039;driver commands&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By trev999:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set S-Variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skip if session-variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait until S-variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By atilabarut&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChangeSVariables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WaitUntilSVariable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10164</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10164"/>
		<updated>2017-09-23T04:44:17Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
 Pause game while message is displayed: - check to stop the game until this message is switched off&lt;br /&gt;
 Close previous popup windows: - check to close any Message Popups currently displayed before this message is shown&lt;br /&gt;
 Message location: Top Left/Top Right/Bottom Left/Bottom Right - select one&lt;br /&gt;
 Message Source: Custom text/A predefined HTML page (advanced)/A predefined string-table entry from a HTML asset (advanced) - select one&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: Custom text&#039;&#039;&#039;&lt;br /&gt;
 Icon: &amp;quot;Click here to set&amp;quot; - shows a list of texture icons. Select one to be displayed with the message&lt;br /&gt;
 Icon: &amp;quot;Clear icon&amp;quot; - clears any currently displayed icon&lt;br /&gt;
 Custom text: Enter text in dialogue box. You will be limited to about 6 lines of text&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined HTML page&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 HTML Page: - enter the filename of the HTML page to be displayed. The page must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.html&amp;quot; is optional.&lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional&lt;br /&gt;
 Autoplay Wave: - check to play .wav sound file. If unchecked sound will not be played even if you have specified its filename and HTML asset.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined string-table entry from a HTML asset&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 String Table Token: - &lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional.&lt;br /&gt;
 Autoplay Wave: - check to play .wav sound file. If unchecked sound will not be played even if you have specified its filename and HTML asset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties (common to all these rules)&#039;&#039;&#039;&lt;br /&gt;
   variable-name&lt;br /&gt;
   conditions&lt;br /&gt;
   value&lt;br /&gt;
   text to use as a label in the HUD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal to&#039; &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change the value of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;text&#039;.&lt;br /&gt;
&lt;br /&gt;
 Variables are saved in the session file and persist from one saved game to another.&lt;br /&gt;
 They can be accessed/modified by the following &#039;&#039;driver commands&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By trev999:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set S-Variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skip if session-variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait until S-variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By atilabarut&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ChangeSVariables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WaitUntilSVariable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10161</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10161"/>
		<updated>2017-09-23T04:41:13Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
 Pause game while message is displayed: - check to stop the game until this message is switched off&lt;br /&gt;
 Close previous popup windows: - check to close any Message Popups currently displayed before this message is shown&lt;br /&gt;
 Message location: Top Left/Top Right/Bottom Left/Bottom Right - select one&lt;br /&gt;
 Message Source: Custom text/A predefined HTML page (advanced)/A predefined string-table entry from a HTML asset (advanced) - select one&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: Custom text&#039;&#039;&#039;&lt;br /&gt;
 Icon: &amp;quot;Click here to set&amp;quot; - shows a list of texture icons. Select one to be display with the message&lt;br /&gt;
 Icon: &amp;quot;Clear icon&amp;quot; - clears any currently displayed icon&lt;br /&gt;
 Custom text: Enter text in dialogue box. You will be limited to about 6 lines of text&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined HTML page&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 HTML Page: - enter the filename of the HTML page to be displayed. The page must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.html&amp;quot; is optional.&lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional&lt;br /&gt;
 Autoplay Wave: - check to play .wav sound file. If unchecked sound will not be played even if you have specified its filename the HTML asset.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Message Source Option: A predefined string-table entry from a HTML asset&#039;&#039;&#039;&lt;br /&gt;
 HTML Asset: - select the name of the HTML asset from those installed that contains the required HTML page&lt;br /&gt;
 String Table Token: - &lt;br /&gt;
 HTML Wave: - (optional) select the name of the HTML file containing the wave file to be played.&lt;br /&gt;
 Wave Name: - (optional) enter the name of a wave (.wav) sound file to be played. The sound file must be in the HTML asset identified above. Filename is not case sensitive. Extension &amp;quot;.wav&amp;quot; is optional.&lt;br /&gt;
 Autoplay Wave: - check to play .wav sound file. If unchecked sound will not be played even if you have specified its filename the HTML asset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties (common to all these rules)&#039;&#039;&#039;&lt;br /&gt;
   variable-name&lt;br /&gt;
   conditions&lt;br /&gt;
   value&lt;br /&gt;
   text to use as a label in the HUD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal to&#039; &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change the value of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;text&#039;.&lt;br /&gt;
&lt;br /&gt;
 Variables are saved in the session file and persist from one saved game to another.&lt;br /&gt;
 They can be accessed/modified by the following &#039;&#039;driver commands&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By trev999:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Set S-Variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Skip if session-variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Wait until S-variable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;By atilabarut&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;ChangeSVariables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;WaitUntilSVariable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10156</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10156"/>
		<updated>2017-09-23T04:21:34Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
 Pause game while message is displayed: - check to stop the game until this message is switched off&lt;br /&gt;
 Close previous popup windows: - check to close any Message Popups currently displayed before this message is shown&lt;br /&gt;
 Message location: Top Left/Top Right/Bottom Left/Bottom Right - select one&lt;br /&gt;
 Message Source: Custom text/A predefined HTML page (advanced)/A predefined string-table entry from a HTML asset (advanced) - select one&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Custom text option:&#039;&#039;&#039;&lt;br /&gt;
 Icon: &amp;quot;Click here to set&amp;quot; - shows a list of texture icons. Select one to be display with the message&lt;br /&gt;
 Custom text: Enter text in dialogue box. You will be limited to about 6 lines of text&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties (common to all these rules&#039;&#039;&#039;&lt;br /&gt;
   variable-name&lt;br /&gt;
   conditions&lt;br /&gt;
   value&lt;br /&gt;
   text to use as a label in the HUD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal to&#039; &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change amount of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;text&#039;.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10154</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10154"/>
		<updated>2017-09-23T04:05:31Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal to&#039; &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change amount of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;your-text&#039;.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10153</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10153"/>
		<updated>2017-09-23T04:04:48Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Variable Rules: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;variable-name&#039; is &#039;less than/greater than/equal&#039; to &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change amount of variable &#039;variable-name&#039;.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;variable-name&#039; every second.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;variable-name&#039; to the custom HUD with label &#039;your-text&#039;.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10152</id>
		<title>Session Rules By Categories With Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Session_Rules_By_Categories_With_Properties&amp;diff=10152"/>
		<updated>2017-09-23T03:56:28Z</updated>

		<summary type="html">&lt;p&gt;Trev999: /* Danger Rules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is under construction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TRAINZ A New Era SP2-List of Trainz Session Rules by Categories with Properties. &#039;&#039;&#039;All rules are the Copyright of N3V Games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Achievement Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achievement Check Rule:&#039;&#039;&#039; This rule allows you to customize session gameplay based on whether the player has received an achievement&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Industry Load Configuration Rule:&#039;&#039;&#039; Names industry, lock train&#039;s controls?, overrides begin load and begin unload&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Target object	??	name of object such as Power Station, Coal Pit or Portal&lt;br /&gt;
  Lock train&#039;s controls	checked	during a stopped load/unload operation&lt;br /&gt;
  Override &#039;begin load&#039; and &#039;begin unload&#039;	checked	# of seconds to override&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station Visited Check Rule:&#039;&#039;&#039; Waits for any train to call at one of the designated stations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	click	to choose from list&lt;br /&gt;
  Add Industry	click	to add from session list&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power Station Rule:&#039;&#039;&#039; Sets up Station and Consumers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Power Station	click	to choose from session Stations&lt;br /&gt;
  Consumers(Add Object)	click	to choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Check Rule:&#039;&#039;&#039; Check the progress of the amount of a resource and target object&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch industry queue or Watch vehicle 	fill-in	choose one or the other&lt;br /&gt;
  Note: Both have: Target Object, Queue:	click	to choose&lt;br /&gt;
  Complete when designated queue	fill-in	equals or exceeds required amount, falls below required amount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiple Resource Check Rule:&#039;&#039;&#039;	Checks resource for completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for the designated queues from 	choose	fall below, reach/exceed&lt;br /&gt;
  Units	number	amount of units&lt;br /&gt;
  Products	click	choose from session list&lt;br /&gt;
  Add Object	click	choose from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Add Rule:&#039;&#039;&#039; Sets up a game Objective with ID and display Name&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Priority	click	choose Above Normal, Below Normal, Normal, Optional, Urgent&lt;br /&gt;
  Completion Target	click	to set target number&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
  Display Name	click	insert Name&lt;br /&gt;
  Unique Objective ID	click	set ID&lt;br /&gt;
  Custom Message	insert	typed message in text area  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Check Rule:&#039;&#039;&#039; Executes child rules when objective is complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	insert ID number&lt;br /&gt;
  Mode	click	choose Wait for completion, Wait for failure, Wait for progress&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective Update Rule:&#039;&#039;&#039; Changes progress outcome according to Property choices&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Unique Objective ID	click	to set ID number&lt;br /&gt;
  Mode	click	Set objective as Decrement progress/Increment progress/Reset objective/Set objects as complete/Set objects as failed/Set progress/Set progress only if greater&lt;br /&gt;
  Amount	click	insert number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Begin Rule:&#039;&#039;&#039; Begins a ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Countdown requires a Starting Value	insert	hrs., min,sec&lt;br /&gt;
  1 through 5 stars, points for each star	insert	number of points&lt;br /&gt;
  Session timer mode	fill-in	chooses: Timer, Countdown, None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ranked Session Complete Rule:&#039;&#039;&#039; Completes the active ranked Session&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
   Set the active ranked session as	fill-in	choose: Complete, Failed&lt;br /&gt;
   Customize the completion message	check	insert text message&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Complete Rule:&#039;&#039;&#039; Set session to a percentage of completion&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set session to percent complete	click	to insert number in percent&lt;br /&gt;
  Separate achievements for completion 	check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Danger Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATP Speed Limiter Rule:&#039;&#039;&#039; Limits speed over set limit&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  speed limit over the set limit	mph&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speeding Check Rule:&#039;&#039;&#039; Checks to see if player control trains are over the speed &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Watch for trains travelling above the 	fill-in&lt;br /&gt;
  Allow an over speed tolerance of	click	to insert mph over posted limit&lt;br /&gt;
  Watch for trains travelling above a 	fill-in	to insert custom speed limit&lt;br /&gt;
  Warning: This method is very &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWS Configuration Rule:&#039;&#039;&#039; This rule configures the Trainz implementation of the Automatic Warning System when approaching signals&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Use modern sound set for unfitted cabs?	check&lt;br /&gt;
  Simulate AWS for unfitted cabs?	check&lt;br /&gt;
  Passive with HUD hidden	fill-in&lt;br /&gt;
  Active	fill-in&lt;br /&gt;
  Passive	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Derailment Rule:&#039;&#039;&#039;	Waits for a derailment to occur&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger derailment watch once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clean UP Derailed Trains Rule:&#039;&#039;&#039; Cleans up derailed train cars&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set delay to clean up derailed train cars 	values&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace Missing Vehicles Rule:&#039;&#039;&#039; Produce new trains to replace missing vehicles that have been removed from the session by the cleanup derailed vehicles rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Respawn trains if they are abandoned 	check&lt;br /&gt;
  Respawn trains	fill-in	choose: at their original locations, from portals from Session List&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage Check Rule:&#039;&#039;&#039; Checks for breaking couplers. No parameters.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Coupler Breakage HUDRule:&#039;&#039;&#039; HUD displays warning about coupler stress and breakage&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Show the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
  Hide the Coupler Breakage Display	fill-in	must choose one or the other&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Coupler Masks Rule:&#039;&#039;&#039; Set the coupling/decoupling  masks on the selected vehicles&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add vehicle	click	to select from session list&lt;br /&gt;
  Coupling Mask, Decoupling Mask : 	click	to select: lock or unlock&lt;br /&gt;
  Add All	click	to select all vehicle in session&lt;br /&gt;
  Delete All	click	to delete all vehicle from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Engaged Check Rule:&#039;&#039;&#039; Checks for safety systems making penalty applications on users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Safety System Isolated Check Rule:&#039;&#039;&#039; Checks for safety systems being isolated by users&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signal Passed At Danger Check Rule:&#039;&#039;&#039; Checks for Drivers passing signals at danger&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vehicle Physics Rule:&#039;&#039;&#039; Overrides the default vehicle physics properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;  &lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Cab sway level is set ? %	click	to insert percent of sway&lt;br /&gt;
  Traction boost is % ? while  sanding	click	to insert percent of boost&lt;br /&gt;
  Tractions reduced to ? % while 	click	to set traction percent&lt;br /&gt;
  Maximum tractive effort adjusted by ?	click	to insert percent amount&lt;br /&gt;
  Show coupler breakage in HUD Rule	check	to set&lt;br /&gt;
  Couplers break when coupling above ? 	click	to set speed&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to insert specific trains&lt;br /&gt;
  Couplers break at ? kN	check	to insert amount of force&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Navigation Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;DestSignTable Rule:&#039;&#039;&#039;	Table for creating a table of destination signs&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Enable Track Marks as destinations	check&lt;br /&gt;
  Enable table of destinations	check&lt;br /&gt;
  Import destination from texture-group. 	name&lt;br /&gt;
  Destination Name	name&lt;br /&gt;
  Enable industries/stations as 	check&lt;br /&gt;
  Interlocking Tower Configure Path	Alters settings on an interlocking tower path&lt;br /&gt;
  Interlocking Tower	choose	Name and Objects&lt;br /&gt;
  Interlocking Tower Path Selection UI	Will automatically react to messages from Interlocking &lt;br /&gt;
  Towers and display a path selection dialog to the player.  &lt;br /&gt;
  Disable by removing rule from session&lt;br /&gt;
  Show path activation message in Driver	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interlocking Tower Set Path Rule:&#039;&#039;&#039;	Will set the state of an interlocking tower path for a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Interlocking Tower	choose	Names and Objects&lt;br /&gt;
  Multiple Junction Alignment Check	Checks multiple junctions are in alignment&lt;br /&gt;
  Wait until the following junctions are 	choose	all or anyone&lt;br /&gt;
  Add junction	click	add junction from session list&lt;br /&gt;
  Add all	click	add all junctions from session list&lt;br /&gt;
  Delete all	click	deletes all junctions from rule list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Display Rule:&#039;&#039;&#039;	Creates a navigation point&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Navigation mode	choose, fill-in	All points must be completed in sequence, Points will be completed in sequence, but can be skipped, All points must be completed, but in any&lt;br /&gt;
  Note: See help icon for more &lt;br /&gt;
  Style	click	choose Required Stop, Automatic, Manual&lt;br /&gt;
  Display Text	insert	text&lt;br /&gt;
  Location	click	choose train vehicle from session list&lt;br /&gt;
  Train(optional)	choose	train from session list&lt;br /&gt;
  Unique set ID	name	must be lowercase and no spaces&lt;br /&gt;
  Icon	click	choose from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Point Complete Rule:&#039;&#039;&#039;	Marks a navigation point complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Mark navigation point	click	set index number&lt;br /&gt;
  Complete in set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Navigation Set Check Rule:&#039;&#039;&#039;	Checks if a navigation point is complete/incomplete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Checks if navigation point is set	click	set ID&lt;br /&gt;
  Is	click	Complete, Incomplete&lt;br /&gt;
  Navigation Set Clear	Clears a navigation point set&lt;br /&gt;
  Clear the navigation point set	click	to set ID&lt;br /&gt;
  Navigation Set Hide/Show	Show or hide navigation point set&lt;br /&gt;
  The navigation point	click	hide, show&lt;br /&gt;
  Navigation point set	click	to set ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schedule Rule:&#039;&#039;&#039;	Allows a schedule of timed events to be applied to a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Insert track mark	click	to select from session list&lt;br /&gt;
  Note: Both has an arrival and departure 	set time	hr:min:sec&lt;br /&gt;
  Current Train	click	to select from session list&lt;br /&gt;
  Insert destination	click	to select from session list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Junctions Rule:&#039;&#039;&#039;	Sets the selected junctions to a specific state &#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Add Junction	click	to select session junction list&lt;br /&gt;
  Add All	click&lt;br /&gt;
  Delete All	click&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Set Signal Extended Rule:&#039;&#039;&#039;	&#039;&#039;Warning: not compatible with Interlocking Tower Assets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Set signal	click	to select from session list&lt;br /&gt;
  State	&#039;	to select state from list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trigger Check Rule:&#039;&#039;&#039;	Waits for any train to enter one of the designated triggers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to choose from session list&lt;br /&gt;
  Add Trigger	click	to choose from session list&lt;br /&gt;
  Trigger only once	check	to set&lt;br /&gt;
  Wait for child rules to complete even if 	check	to set&lt;br /&gt;
  Only activate when the entering 	click	to choose forward, backward&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Navigation Point Rule:&#039;&#039;&#039;	Waits for a nav point to be complete&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Wait for navigation point ?	click	to choose from session list&lt;br /&gt;
  in set ? to be completed	click	to insert ID&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Train Stop/Start Rule:&#039;&#039;&#039;	Wait for a train to stop or start&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to set and choose from session list&lt;br /&gt;
  Wait for a train that matches the 	click	to choose: start moving, stop moving&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Driver Rules&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Type Rule&#039;&#039;&#039;	Sets control type&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Current control method is: Easy Mode, 	Choice	one of the three&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Control Check Rule:&#039;&#039;&#039;	Activates child rules based on the control method changes&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Excite child rules when: DCC mode is 	fill-in	one or the other&lt;br /&gt;
  Excite child rules: Every time control 	fill-in	one or the other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPC Rule:&#039;&#039;&#039; Emit Train On Trigger	Used to Emit Trains from the Central Portal Control on Triggers, Also works with the Un-Portal Rule&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Trigger	add Trigger&lt;br /&gt;
  Portal index from PCP	value&lt;br /&gt;
  Use UnPortal	yes/no&lt;br /&gt;
  Delay from Trigger to Emit: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable/Enable Industry Rule:&#039;&#039;&#039;	Disables vehicle load/unload for industry&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Apply to every vehicle in the session	fill-in&lt;br /&gt;
  Apply only to a specific vehicle list	fill-in	Add vehicle/Add all vehicles/Remove all vehicles&lt;br /&gt;
  Note: One of the Applies will always be &lt;br /&gt;
  Load/Unload for industry	Disable/Enable	choose Industry&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Rule:&#039;&#039;&#039;	Specify which commands will be available for the drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;:&lt;br /&gt;
  Navigate To Track mark- Driver command that allows a driver character to take a train to a specific track mark on the map. Will attempt to route around trains to get there.&lt;br /&gt;
  Navigate To TrackMarkList V2- No description.&lt;br /&gt;
  Navigate To Station V2- No description.&lt;br /&gt;
  Navigate Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey. Will attempt to route around trans to get there.&lt;br /&gt;
  Navigate To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will attempt to route around trains to get there.&lt;br /&gt;
  Drive Schedule- Driver command that causes the driver character to carry out the tasks specified by the train&#039;s schedule.&lt;br /&gt;
  Drive To- Allows a driver character to take a train either to a destination industry or a specific track in a destination industry. Will take the shortest path to get there.&lt;br /&gt;
  Drive Via Track mark- Driver command that allows a driver character to take a train through a specific track mark for its journey.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Station V2- No description.&lt;br /&gt;
  Drive To Track mark List V2- No description.&lt;br /&gt;
  Drive to Track mark- Driver command that allows a driver character to take a train to a specific trackmark on the map.  Will take the shortest path to get there.&lt;br /&gt;
  Drive To Industry- Drive to a specific industry.&lt;br /&gt;
  Change Destination Sign-Changes the destination signs of a train.&lt;br /&gt;
&lt;br /&gt;
  WaitFor- Pauses the driver&#039;s schedule for a set duration of time.&lt;br /&gt;
  Wait For Random- TRS2008: Wait for specified or optionally random period of time.&lt;br /&gt;
  Wait For Trigger- Tell a driver to wait until a trigger you selected is touched by a train you select(or any train).&lt;br /&gt;
  WaitUntil- No description.&lt;br /&gt;
&lt;br /&gt;
  VR Set Train Lamps-Driver command that sets the train lamps. &lt;br /&gt;
  Notify- Notifies the player of schedule progress/completion.&lt;br /&gt;
  Reverse Tram- Reverse a tram(max 2 cars).&lt;br /&gt;
  Couple- Couple train to designate vehicle. &lt;br /&gt;
  Decouple- Decouples the train at the specified vehicle.  &lt;br /&gt;
  UnCoupler From- A new Uncouple driver Command that allows you to uncouple from vehicle number n(with 0 being the first vehicle in the consist).&lt;br /&gt;
  Halt Train- Brings the train to a complete stop.&lt;br /&gt;
  Run Around- Instructs the driver to uncouple his locomotive from and run-around it to recouple up to the other end of the train.&lt;br /&gt;
  Terminate Passenger Train- This command will terminate a passenger train a the current passenger station. This will cause all of the passengers to disembark from the train. You must issue a &#039;Drive To&#039; command for a passenger &lt;br /&gt;
     station before using this command.&lt;br /&gt;
  Cab: Wait-Maintains current control state until some condition is met.&lt;br /&gt;
  Delete Train- Causes the train and its driver to be deleted from the session.&lt;br /&gt;
  Hornz- Driver sounds the train horn.&lt;br /&gt;
  Cab:	Set  Control-Sets a cab mode control.&lt;br /&gt;
  Headlights On/Off-Allows the driver to to switch the headlights on and off.&lt;br /&gt;
  Interior Lights Command- Driver command to switch interior lights on or off for the current train.&lt;br /&gt;
  Set Max Speed To- No description.&lt;br /&gt;
&lt;br /&gt;
  Release Junction - Lets a driver release the junction they have been holding.&lt;br /&gt;
  Move Turntable- TRS2008: Move turntable to a stop point .&lt;br /&gt;
&lt;br /&gt;
  Load- Loads the train&#039;s vehicles at the industry the driver is currently at with the train.&lt;br /&gt;
  Unload- Unload train vehicles at current industry location.&lt;br /&gt;
  Instant Load Command- Instantly load a train with a random product selected from its product que. Will not load locos or loco tenders.&lt;br /&gt;
  Instant Load Locos- Instantly load all locos in a train. Useful for trains generated automatically by portal etc. All locos with product queues(eg Phil_C&#039;s diesels) and all tenders will have all available queues loaded.&lt;br /&gt;
  Instant Unload- Instantly unload a train. Useful for trains generated automatically by portal etc. Every product queue found in each industry-activated car will be unloaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Command Check Rule:&#039;&#039;&#039;	Verifies the driver commands of a driver character&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for driver character to have 	add	driver, all, delete all&lt;br /&gt;
  Trigger Rule once	check&lt;br /&gt;
  Driver character to watch the 	name driver&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;Driver Main Menu Options Rule:&#039;&#039;&#039;	Show the Driver Main Menu Bar&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  The Driver Main Bar	choice	show/hide&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Schedule Rule&#039;&#039;&#039;	Execution of basic scheduled commands&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
  Note: Only one of the fill-in can be &lt;br /&gt;
  Driver Schedule Rule assigned to	name driver&lt;br /&gt;
  Commands	insert	driver commands in Drive Schedule&lt;br /&gt;
  Classic style: If there is a schedule 	fill-in&lt;br /&gt;
  Killer style: If there is a schedule 	fill-in&lt;br /&gt;
  Cooperative style: If there is a schedule 	fill-in&lt;br /&gt;
  Active style: Emit a new schedule, only 	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Driver Setup Rule:&#039;&#039;&#039;	Create the list of drivers for this session and assign them their orders&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Generate new Drivers for empty 	check&lt;br /&gt;
  The following drivers will be available	Driver&#039;s Name	Add&lt;br /&gt;
  Remove all existing Drivers first	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable/Disable Driver Commands Rule:&#039;&#039;&#039;	Enable/Disable specific driver commands on certain drivers&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Assign Driver commands	check	Driver Commands&lt;br /&gt;
  Train criteria	fill in	all trains&lt;br /&gt;
  Train criteria	list train	only trains matching criteria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MaxPermittedSpeed Rule:&#039;&#039;&#039;	Controls AI behavior. When active AI Trains only go as fast as permitted&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Config/txt file	tag	&#039;max_permitted_speed-60850 in mph or kph&lt;br /&gt;
  Add to config.txt and kuid-table for 	value	&amp;lt;KUID2:60850:88000:4&lt;br /&gt;
  Note: Old root level config tag will &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QuickDrive Rule:&#039;&#039;&#039;	Change the Session settings and add consists in Driver&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Set Time to	insert	time&lt;br /&gt;
  QuickDrive Consist Option List by &lt;br /&gt;
  Rate of Change	insert	rate as number times&lt;br /&gt;
  Enable gameplay Session Mode	check&lt;br /&gt;
  Enable in game help by default	check&lt;br /&gt;
  Set the default Control method to	fill-in	choose: Easy Mode, Realistic Mode&lt;br /&gt;
  Prevent player from changing this 	check&lt;br /&gt;
  Realistic mode requires achievement	add	Achievement&#039;s Name&lt;br /&gt;
  In Asset	choose	Auran achievements&lt;br /&gt;
  Set the default derailment realism level	fill-in	choose: Nome, Arcade, Realistic&lt;br /&gt;
  Prevent player from changing 10.0	check&lt;br /&gt;
  Set the default units to	fill-in	choose: Imperial, Metric, Default&lt;br /&gt;
  Open QuickDriver Window when 	check&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver On/Off Train Rule:&#039;&#039;&#039;	Waits for a Driver to get off of a train&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One or the other fill-ins must be &lt;br /&gt;
  Accept trains matching specific criteria	fill-in	to select from session list&lt;br /&gt;
  Accept all trains	fill-in	to set&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for a driver character to get ? a 	click	to select: On, Off&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Driver/Train to be Locally Owned Rule:&#039;&#039;&#039;	Waits for a specific driver or train car to be locally owned, Owned then executes child rules. If the driver/train car becomes unowned again the child rules are paused&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Wait for ownership of a specific Driver	fill-in	to set&lt;br /&gt;
  Wait for ownership of Driver 	fill-in	to set&lt;br /&gt;
  Note: One or the other fill-in must be &lt;br /&gt;
  Driver or Vehicle	click	to choose from session lists&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Arrangement of Session Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ordered List Rule:&#039;&#039;&#039;	 Child rules will be executed in order once this rule starts&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Note: One of the two must be chosen&lt;br /&gt;
  This process will repeat	fill-in	click to add number of repeats&lt;br /&gt;
  This process will repeat forever	fill-in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Progressive List Rule:&#039;&#039;&#039;	The first child rule is executed on the first run, second child executed on second run, etc.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  After last child run is executed	click	to choose: First child is chosen again, It will be &lt;br /&gt;
  used for all successive runs, Successive runs will &lt;br /&gt;
  do nothing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Random List Rule:&#039;&#039;&#039;	One of the child rules indented under this rule will be &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  executed randomly&lt;br /&gt;
  Once one of the child rule is ?? &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Reset List Rule:&#039;&#039;&#039;	Resets and starts all child rules in an ongoing infinite cycle&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simultaneous List Rule:&#039;&#039;&#039;	Child rules are executed simultaneously once this rules &lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Rules completes when	click	choose all rules have reached completed state, &lt;br /&gt;
  was completed state&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Camera Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cinematic Camera Rule:&#039;&#039;&#039;	Provides several different cinematic style cameras&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Lock camera controls for the duration	check&lt;br /&gt;
  Prevent rain control for duration	check&lt;br /&gt;
  Camera target:	name	any of the many objects in session&lt;br /&gt;
  Camera mode: Stationary, Circle 	fill-in&lt;br /&gt;
  Initial camera values: Pitch, Yaw, Zoom	value&lt;br /&gt;
  Total time to animate: seconds	value&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Camera Rule:&#039;&#039;&#039;	Sets the target object and properties of the camera. Preforming the selected properties&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Change the camera view mode to	check	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming&lt;br /&gt;
  Vehicle	fill-in	choose from session vehicles&lt;br /&gt;
  Set the camera flags to enable/disable 	check	to choose different properties from list&lt;br /&gt;
  Junction	fill-in	choose from session junctions&lt;br /&gt;
  Set the target objet of the camera to	check&lt;br /&gt;
  Map object	fill-in	choose from map objects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Camera View Mode Rule:&#039;&#039;&#039;	Waits for the camera to be changed to the designated view&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
  Trigger rule once	check	to set&lt;br /&gt;
  Wait for the camera to change to the ? 	click	to choose: Cab View, External View, Tracking &lt;br /&gt;
  View, Free Roaming View&lt;br /&gt;
  Wait for the camera to target vehicle ?	click	to choose form session list&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Message Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Close Message Popup Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 None&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Issues:&#039;&#039;&#039;&lt;br /&gt;
 This rule only appears to work if it is a child of the rule that triggered the Message Popup Rule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom Script Rule&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom scripted Rule. No Parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Custom HUD Rule:&#039;&#039;&#039; Show or hide the Custom Heads Up Display.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display HTML Pages Rule:&#039;&#039;&#039; Creates a browser to display the listed HTML files in order as a navigable sequence of pages.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timed limited display HTML Rule:&#039;&#039;&#039; Displays an html browser window for a limited time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Display Video Rule:&#039;&#039;&#039; Displays a page from a HTML assets in a browser window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;End Session Rule:&#039;&#039;&#039; End Session without saving.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fade in/out Rule:&#039;&#039;&#039; Fade in or out within seconds, color and opacity considered.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash HUD Icon Rule:&#039;&#039;&#039; Flashes a HUD panel icon for a set duration of time or instructs a HUD panel icon to start/stop.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Generic Tree Node Debug Window Rule:&#039;&#039;&#039; No description.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;InputTable Rule:&#039;&#039;&#039; Creating a list of message names to be used for various purposes.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Message Popup Rule:&#039;&#039;&#039; Displays a pop-up browser window and waits to be closed.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimap Options Rule:&#039;&#039;&#039; Sets the display options for the minimap.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Play Sound Rule:&#039;&#039;&#039; Plays a wav sound file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Debug Rule Rule:&#039;&#039;&#039; Executes the first child if debug mode is selected. Otherwise the second child. Once this child is complete, this rule will be complete.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Session Metadata Rule:&#039;&#039;&#039;	Sets session metadata in the config file. Info can be read by other systems and displayed to the player.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set Helper Icon Size Rule:&#039;&#039;&#039; Sets the size of helper icons such as the junction lever arrows.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Set HTML Page Rule:&#039;&#039;&#039; Instructs the Display HTML Pages rule to perform specific operations&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide HUD Panel Rule:&#039;&#039;&#039; Shows or hides a HUD panel.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Layer Rule:&#039;&#039;&#039; Shows or hides a layer from Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties:&#039;&#039;&#039;&lt;br /&gt;
 Show/Hide - click one to select&lt;br /&gt;
 &amp;quot;click here to set&amp;quot; - enter name of layer. Name is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Known Bugs:&#039;&#039;&#039;&lt;br /&gt;
 TANE (all versions) - layers set to &#039;&#039;&#039;Hide&#039;&#039;&#039; when a game is saved will be visible when the game is reloaded&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/Hide Minimap Rule:&#039;&#039;&#039; Shows the Driver the minimap window.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Show/hide on-screen help Rule:&#039;&#039;&#039; Shows or hides On-screen help in Driver.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait for Click on HUD Icon Rule:&#039;&#039;&#039; Waits for a click on the HUD Icon.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait on Waybill Screen/Main Screen Rule:&#039;&#039;&#039; Waits for the Waybill window to be opened.&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Startup Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer Rule:&#039;&#039;&#039; Enables this session to be taken online in a Multiplayer environment.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Startup Options Rule&#039;&#039;&#039; Specifies the starting options for the session.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Time Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clock Rule:&#039;&#039;&#039; Rule needed for animated clocks, you need to apply this rule to your session to make use of the animated clocks, see forum for code to include in you clock object to work with this rule.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timecheck Rule:&#039;&#039;&#039; Executes child rules at a certain time.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timing Check Rule:&#039;&#039;&#039; Triggers sub rules if called within the time window specified.&lt;br /&gt;
	&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wait Rule:&#039;&#039;&#039; Wait for number of seconds&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Variable Rules:&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Check Rule:&#039;&#039;&#039; If variable &#039;score&#039; is less than &#039;number&#039; the child rules will be executed in order.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Rule:&#039;&#039;&#039; Change amount of variable score.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Modify Continuous Rule:&#039;&#039;&#039; Adds a value to variable &#039;score&#039; every second.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Variable Show Rule:&#039;&#039;&#039; Adds the variable &#039;Score the custom HUD with label ?.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Weather Rules:&#039;&#039;&#039;==&lt;br /&gt;
	&lt;br /&gt;
&#039;&#039;&#039;EIRS Weather Rule NE USA Rule:&#039;&#039;&#039; Customize random weather rule relative to the North East Region of the United States.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weather Rule:&#039;&#039;&#039; Set the weather conditions.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9919</id>
		<title>HowTo/Hide- &amp; Unhide Meshes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9919"/>
		<updated>2017-08-19T17:00:06Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[HowTo/Your first Trainz Script]] we created the script:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; myscript.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CMyClass&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;re gonna use this little example for a vehicle. There is an ice cream truck on the DLS by misterairbrush (&amp;lt;kuid:414943:100987&amp;gt;). This ice cream truck has a door that can be opened or closed.&lt;br /&gt;
It looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_02_Truck_1.jpg]] [[File:Scripting_02_Truck_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
The truck comes equipped with two versions of the door, called meshes. One or the other mesh is visible at any one time but never both together. &lt;br /&gt;
We&#039;ll learn today how to hide the &amp;quot;wrong&amp;quot; and show the right mesh. Also we want users to be able to select an option in the &amp;quot;?&amp;quot;-Window of the scenery object to determine whether the door is to be open or closed.&lt;br /&gt;
&lt;br /&gt;
First we need a member variable to store the (user-selected) open/closed state of the door, then we need functions to save and load the information every time the session starts or is saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variables store values used in the game. These values can be changed by script and are stored in the computer&#039;s memory until needed.&lt;br /&gt;
&lt;br /&gt;
In Trainz Script there are four (well, really there are five, but we will ignore one this time!) data [[Types]] we can use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;bool&#039;&#039;&#039; - boolean constants true/false&lt;br /&gt;
* &#039;&#039;&#039;int&#039;&#039;&#039; - every number between -2147483647 and 2147483647 (a 32 Bit integer)&lt;br /&gt;
* &#039;&#039;&#039;string&#039;&#039;&#039; - characters&lt;br /&gt;
* &#039;&#039;&#039;float&#039;&#039;&#039; - numbers with a decimal point (32 Bit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;ll have a closer look at the &#039;&#039;&#039;bool&#039;&#039;&#039; type. The others will be explained another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, we only need a true/false value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;True&#039;&#039;&#039;: The user wants the door to be open&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;False&#039;&#039;&#039;: The user wants the door to be closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How do we declare a member variable? This is pretty easy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We begin by stating the data-type of our variable and then give it a name. Now we can use it.&lt;br /&gt;
This variable now is available in the whole CIceCreamTruck-Class, because we declared it before any other methods, so we may say it&#039;s a global variable (that isn&#039;t true, but it&#039;s easier to explain).&lt;br /&gt;
We may also declare variables within methods/functions. These then will only be accessible inside the function or method and not in other parts of the script.&lt;br /&gt;
In Trainz Script there are now real global variables (that&#039;s why I think we may call the members global, even if it&#039;s not true). We may only declare variables inside classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we will have a look at two new methods:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#GetProperties]] (GetProperties)&#039;&#039;&#039; - Save data to a soup&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#SetProperties]] (SetProperties)&#039;&#039;&#039; - Fetch data from a Soup&lt;br /&gt;
&lt;br /&gt;
These methods are implemented in native code. That means we don&#039;t have to worry about when they are called. We just have to override them. Trainz will call them whenever needed.  To override a class means to replace the built-in class with a new one that extends the functions of the original (the parent) while retaining all the original functionality.&lt;br /&gt;
Let&#039;s override them:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; GetProperties:&lt;br /&gt;
As I said above, the purpose of this function is to save data into a Soup. It expects a Soup-Object to be returned. You&#039;ll see that Soup is a class, not a data type.&lt;br /&gt;
&lt;br /&gt;
But we&#039;re able to declare class instances as variables too. (Look at: &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();)&lt;br /&gt;
&lt;br /&gt;
And again: The inherited is in there!&lt;br /&gt;
Every function/method we override has in most cases to inherit the parent classes method. The inherited statement calls GetProperties of Class MapObject. This makes sure, that every operation inside a method of the parent class is called too. Remember: We overrode the method. If we don&#039;t inherit it here again, the parent classes GetProperties-Method will never be called!&lt;br /&gt;
Only miss the call to inherited if you want to disable functionality for a class, if not, don&#039;t forget it.&lt;br /&gt;
&lt;br /&gt;
In the script above, we return the Soup directly, without any changes. What exactly &amp;quot;return types&amp;quot; are will be explained another time :) (it is too much detail to go into now!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; SetProperties:&lt;br /&gt;
In this method we get a parameter of type soup. We inherit the MapObject-Setproprties. This time we don&#039;t have to return any value. Here we will load the data from the Soup we got as parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Saving data&#039;&#039;&#039;&lt;br /&gt;
Think of soup as a container into which you throw pieces of paper with names and values. When you want to find out what you wrote on the paper you look through all the pieces until you find the name and then read off the value.   &lt;br /&gt;
I already explained that Soup is a class. So it may have members, and in fact it has. Look at: [[Class_Soup]]&lt;br /&gt;
&lt;br /&gt;
I use the variable name as the soup tag name, because it&#039;s convenient. The method &amp;quot;SetNamedTag&amp;quot; in class Soup is used to assign a value to each tag in the soup. We can access all public methods inside a class with the dereference operator, that&lt;br /&gt;
is a single dot (&#039;&#039;&#039;.&#039;&#039;&#039;). So, we call the function like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, [VALUE]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now in script, it looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you&#039;ll understand, why we have to return the Soup back to Trainz. We manipulate the values inside the Soup and Trainz has to be kept informed, if Trainz wants to save the Soup for us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Loading data&#039;&#039;&#039;&lt;br /&gt;
The opposite of &amp;quot;Setting data&amp;quot; (SetNamedTag) is &amp;quot;Getting data&amp;quot; (GetNamedTag). And, yes, Soup has a method called &amp;quot;GetNamedTag&amp;quot;, but it&#039;ll return the value as a string. We need a boolean value.&lt;br /&gt;
So, we could use the method &amp;quot;GetNamedTagAsBool&amp;quot;. It expects only one parameter, the name of our value inside the Soup. We can directly assign the value of &amp;quot;GetNamedTagAsBool&amp;quot; to our variable.&lt;br /&gt;
But this function has another variant which expects two parameters. The first one is the name of our value, and the other one is a default value, if the selected&lt;br /&gt;
value is not set in the Soup. We&#039;ll need to use that method because, if we place an object in surveyor, there are no values in the Soup. So, we can set an initial value for the door state. In our case we will set the initial door state to closed (so: m_bDoorOpened has to be false).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
If we add that part into our script it&#039;ll look like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can display and hide the meshes. But the object itself has to be prepared for it. The Ice cream truck has three meshes: The truck with a hole where the door should be, a door in the opened state and a door in the closed state. You also may achieve this by using animations, but this way is much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Truck_whole.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Truck with hole, where the door should be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_open.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in opened state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_closed.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in closed state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In script we reference the mesh-table entries of config.txt.&lt;br /&gt;
It may look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
mesh-table&lt;br /&gt;
{  &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;truck.im&amp;quot;&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-opened&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_opened.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-closed&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_closed.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All meshes we want to control by script may never have an auto-create value of 1! It has to be 0, otherwise we can&#039;t take the control over the meshes.&lt;br /&gt;
&lt;br /&gt;
Our CIceCreamTruck&#039;s parent class is MapObject. And MapObject&#039;s parent class is MeshObject, and there we will find a method &amp;quot;SetMeshVisible&amp;quot;.&lt;br /&gt;
We can use it directly, because we automatically inherit from MeshObject, too.&lt;br /&gt;
SetMeshVsible expects to receive three parameters: The name of our mesh-table entry, a state (true or false - [visible, invisible]) and a floating-point number that sets a fading time in seconds.&lt;br /&gt;
We&#039;ll leave the last parameter 0.0f.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;lt;/font&amp;gt;/&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have two meshes that have to be set. In script we&#039;ll hide/show them like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use our bool variable for indicating the mesh state. The opened mesh is set with the value of m_bDoorOpened. If m_bDoorOpened is true, the mesh will display, otherwise it&#039;ll be hidden.&lt;br /&gt;
The closed state mesh is set with the opposite value of m_bDoorOpened. This can be easily done by using the &#039;not&#039; operator &amp;quot;!&amp;quot;. Just place it in front of a boolean variable, to use the opposite value.&lt;br /&gt;
&lt;br /&gt;
Now you know how to control meshes. Because it will be too much for now, I&#039;ll give the last part of the script without explanation and move it to another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetDescriptionHTML&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; + &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;HTMLWindow&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;CheckBox&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;live://property/m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;) + &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;&amp;amp;amp;nbsp;Open door&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetPropertyType&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; LinkPropertyValue&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         {&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Hope you enjoyed and learned!&amp;lt;br&amp;gt;&lt;br /&gt;
Full example here: [[Media:TrainzDevIceCreamTruck.zip]] (Thanks to misterairbursh for the permission!)&lt;br /&gt;
&lt;br /&gt;
If you want to contact me, you may use this e-mail: callavsg@gmx.de&lt;br /&gt;
&lt;br /&gt;
callavsg&lt;br /&gt;
&lt;br /&gt;
Edited by --[[User:Trev999|Trev999]] ([[User talk:Trev999|talk]]) 02:28, 20 August 2017 (AEST)&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9918</id>
		<title>HowTo/Hide- &amp; Unhide Meshes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9918"/>
		<updated>2017-08-19T16:46:38Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[HowTo/Your first Trainz Script]] we created the script:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; myscript.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CMyClass&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;re gonna use this little example for a vehicle. There is an ice cream truck on the DLS by misterairbrush (&amp;lt;kuid:414943:100987&amp;gt;). This ice cream truck has a door that can be opened or closed.&lt;br /&gt;
It looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_02_Truck_1.jpg]] [[File:Scripting_02_Truck_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
The truck comes equipped with two versions of the door, called meshes. One or the other mesh is visible at any one time but never both together. &lt;br /&gt;
We&#039;ll learn today how to hide the &amp;quot;wrong&amp;quot; and show the right mesh. Also we want users to be able to select an option in the &amp;quot;?&amp;quot;-Window of the scenery object to determine whether the door is to be open or closed.&lt;br /&gt;
&lt;br /&gt;
First we need a member variable to store the (user-selected) open/closed state of the door, then we need functions to save and load the information every time the session starts or is saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variables store values used in the game. These values can be changed by script and are stored in the computer&#039;s memory until needed.&lt;br /&gt;
&lt;br /&gt;
In Trainz Script there are four (well, really there are five, but we will ignore one this time!) data [[Types]] we can use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;bool&#039;&#039;&#039; - boolean constants true/false&lt;br /&gt;
* &#039;&#039;&#039;int&#039;&#039;&#039; - every number between -2147483647 and 2147483647 (a 32 Bit integer)&lt;br /&gt;
* &#039;&#039;&#039;string&#039;&#039;&#039; - characters&lt;br /&gt;
* &#039;&#039;&#039;float&#039;&#039;&#039; - numbers with a decimal point (32 Bit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;ll have a closer look at the &#039;&#039;&#039;bool&#039;&#039;&#039; type. The others will be explained another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, we only need a true/false value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;True&#039;&#039;&#039;: The user wants the door to be open&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;False&#039;&#039;&#039;: The user wants the door to be closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How do we declare a member variable? This is pretty easy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We begin by stating the data-type of our variable and then give it a name. Now we can use it.&lt;br /&gt;
This variable now is available in the whole CIceCreamTruck-Class, because we declared it before any other methods, so we may say it&#039;s a global variable (that isn&#039;t true, but it&#039;s easier to explain).&lt;br /&gt;
We may also declare variables within methods/functions. These then will only be accessible inside the function or method and not in other parts of the script.&lt;br /&gt;
In Trainz Script there are now real global variables (that&#039;s why I think we may call the members global, even if it&#039;s not true). We may only declare variables inside classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we will have a look at two new methods:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#GetProperties]] (GetProperties)&#039;&#039;&#039; - Save data to a soup&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#SetProperties]] (SetProperties)&#039;&#039;&#039; - Fetch data from a Soup&lt;br /&gt;
&lt;br /&gt;
These methods are implemented in native code. That means we don&#039;t have to worry about when they are called. We just have to override them. Trainz will call them whenever needed.  To override a class means to replace the built-in class with a new one that extends the functions of the original (the parent) while retaining all the original functionality.&lt;br /&gt;
Let&#039;s override them:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; GetProperties:&lt;br /&gt;
As I said above, the purpose of this function is to save data into a Soup. It expects a Soup-Object to be returned. You&#039;ll see that Soup is a class, not a data type.&lt;br /&gt;
&lt;br /&gt;
But we&#039;re able to declare class instances as variables too. (Look at: &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();)&lt;br /&gt;
&lt;br /&gt;
And again: The inherited is in there!&lt;br /&gt;
Every function/method we override has in most cases to inherit the parent classes method. The inherited statement calls GetProperties of Class MapObject. This makes sure, that every operation inside a method of the parent class is called too. Remember: We overrode the method. If we don&#039;t inherit it here again, the parent classes GetProperties-Method will never be called!&lt;br /&gt;
Only miss the call to inherited if you want to disable functionality for a class, if not, don&#039;t forget it.&lt;br /&gt;
&lt;br /&gt;
In the script above, we return the Soup directly, without any changes. What exactly &amp;quot;return types&amp;quot; are will be explained another time :) (it is too much detail to go into now!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; SetProperties:&lt;br /&gt;
In this method we get a parameter of type soup. We inherit the MapObject-Setproprties. This time we don&#039;t have to return any value. Here we will load the data from the Soup we got as parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Saving data&#039;&#039;&#039;&lt;br /&gt;
Think of soup as a container into which you throw pieces of paper with names and values. When you want to find out what you wrote on the paper you look through all the pieces until you find the name and then read off the value.   &lt;br /&gt;
I already explained that Soup is a class. So it may have members, and in fact it has. Look at: [[Class_Soup]]&lt;br /&gt;
&lt;br /&gt;
I use the variable name as the soup tag name, because it&#039;s convenient. The method &amp;quot;SetNamedTag&amp;quot; in class Soup is used to assign a value to each tag in the soup. We can access all public methods inside a class with the dereference operator, that&lt;br /&gt;
is a single dot (&#039;&#039;&#039;.&#039;&#039;&#039;). So, we call the function like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, [VALUE]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now in script, it looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you&#039;ll understand, why we have to return the Soup back to Trainz. We manipulate the values inside the Soup and Trainz has to be kept informed, if Trainz wants to save the Soup for us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Loading data&#039;&#039;&#039;&lt;br /&gt;
The opposite of &amp;quot;Setting data&amp;quot; (SetNamedTag) is &amp;quot;Getting data&amp;quot; (GetNamedTag). And, yes, Soup has a method called &amp;quot;GetNamedTag&amp;quot;, but it&#039;ll return the value as a string. We need a boolean value.&lt;br /&gt;
So, we could use the method &amp;quot;GetNamedTagAsBool&amp;quot;. It expects only one parameter, the name of our value inside the Soup. We can directly assign the value of &amp;quot;GetNamedTagAsBool&amp;quot; to our variable.&lt;br /&gt;
But this function has another variant which expects two parameters. The first one is the name of our value, and the other one is a default value, if the selected&lt;br /&gt;
value is not set in the Soup. We&#039;ll need to use that method because, if we place an object in surveyor, there are no values in the Soup. So, we can set an initial value for the door state. In our case we will set the initial door state to closed (so: m_bDoorOpened has to be false).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
If we add that part into our script it&#039;ll look like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can display and hide the meshes. But the object itself has to be prepared for it. The Ice cream truck has three meshes. The truck with a hole where the door is, a door in the opened state and a door in the closed state. You also may achieve this by using animations, but this way is much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Truck_whole.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Truck with hole, where the door should be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_open.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in opened state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_closed.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in closed state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In script we reference the mesh-table entries of config.txt.&lt;br /&gt;
It may look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
mesh-table&lt;br /&gt;
{  &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;truck.im&amp;quot;&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-opened&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_opened.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-closed&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_closed.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All meshes we want to control by script may never have an auto-create value of 1! It has to be 0, otherwise we can&#039;t take the control over the meshes.&lt;br /&gt;
&lt;br /&gt;
Our CIceCreamTruck&#039;s parent class is MapObject. And MapObject&#039;s parent class is MeshObject, and there we will find a method &amp;quot;SetMeshVisible&amp;quot;.&lt;br /&gt;
We can use it directly, because we automatically inherit from MeshObject, too.&lt;br /&gt;
SetMeshVsible expects to receive three parameters: The name of our mesh-table entry, a state (true or false - [visible, invisible]) and a floating-point number that sets a fading time in seconds.&lt;br /&gt;
We&#039;ll leave the last parameter 0.0f.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;lt;/font&amp;gt;/&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have two meshes, that have to be set. In script we&#039;ll hide/show them like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use our bool variable for indicating the mesh state. The opened mesh is set with the value of m_bDoorOpened. If m_bDoorOpened is true, the mesh will display, otherwise it&#039;ll be hidden.&lt;br /&gt;
The closed state mesh is set with the opposite value of m_bDoorOpened. This can be easily done by using the &#039;not&#039; operator &amp;quot;!&amp;quot;. Just place it in front of a boolean variable, to use the opposite value.&lt;br /&gt;
&lt;br /&gt;
Now you know how to control meshes. Because it will be too much for now, I&#039;ll give the last part of the script without explanation and move it to another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetDescriptionHTML&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; + &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;HTMLWindow&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;CheckBox&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;live://property/m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;) + &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;&amp;amp;amp;nbsp;Open door&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetPropertyType&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; LinkPropertyValue&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         {&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Hope you enjoyed and learned!&amp;lt;br&amp;gt;&lt;br /&gt;
Full example here: [[Media:TrainzDevIceCreamTruck.zip]] (Thanks to misterairbursh for the permission!)&lt;br /&gt;
&lt;br /&gt;
If you want to contact me, you may use this e-mail: callavsg@gmx.de&lt;br /&gt;
&lt;br /&gt;
callavsg&lt;br /&gt;
&lt;br /&gt;
Edited by --[[User:Trev999|Trev999]] ([[User talk:Trev999|talk]]) 02:28, 20 August 2017 (AEST)&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9917</id>
		<title>HowTo/Hide- &amp; Unhide Meshes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9917"/>
		<updated>2017-08-19T16:41:53Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[HowTo/Your first Trainz Script]] we created the script:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; myscript.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CMyClass&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;re gonna use this little example for a vehicle. There is an ice cream truck on the DLS by misterairbrush (&amp;lt;kuid:414943:100987&amp;gt;). This ice cream truck has a door that can be opened or closed.&lt;br /&gt;
It looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_02_Truck_1.jpg]] [[File:Scripting_02_Truck_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
The truck comes equipped with two versions of the door, called meshes. One or the other mesh is visible at any one time but never both together. &lt;br /&gt;
We&#039;ll learn today how to hide the &amp;quot;wrong&amp;quot; and show the right mesh. Also we want users to be able to select an option in the &amp;quot;?&amp;quot;-Window of the scenery object to determine whether the door is to be open or closed.&lt;br /&gt;
&lt;br /&gt;
First we need a member variable to store the (user-selected) open/closed state of the door, then we need functions to save and load the information every time the session starts or is saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variables store values used in the game. These values can be changed by script and are stored in the computer&#039;s memory until needed.&lt;br /&gt;
&lt;br /&gt;
In Trainz Script there are four (well, really there are five, but we will ignore one this time!) data [[Types]] we can use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;bool&#039;&#039;&#039; - boolean constants true/false&lt;br /&gt;
* &#039;&#039;&#039;int&#039;&#039;&#039; - every number between -2147483647 and 2147483647 (a 32 Bit integer)&lt;br /&gt;
* &#039;&#039;&#039;string&#039;&#039;&#039; - characters&lt;br /&gt;
* &#039;&#039;&#039;float&#039;&#039;&#039; - numbers with a decimal point (32 Bit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;ll have a closer look at the &#039;&#039;&#039;bool&#039;&#039;&#039; type. The others will be explained another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, we only need a true/false value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;True&#039;&#039;&#039;: The user wants the door to be open&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;False&#039;&#039;&#039;: The user wants the door to be closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How do we declare a member variable? This is pretty easy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We begin by stating the data-type of our variable and then give it a name. Now we can use it.&lt;br /&gt;
This variable now is available in the whole CIceCreamTruck-Class, because we declared it before any other methods, so we may say it&#039;s a global variable (that isn&#039;t true, but it&#039;s easier to explain).&lt;br /&gt;
We may also declare variables within methods/functions. These then will only be accessible inside the function or method and not in other parts of the script.&lt;br /&gt;
In Trainz Script there are now real global variables (that&#039;s why I think we may call the members global, even if it&#039;s not true). We may only declare variables inside classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we will have a look at two new methods:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#GetProperties]] (GetProperties)&#039;&#039;&#039; - Save data to a soup&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#SetProperties]] (SetProperties)&#039;&#039;&#039; - Fetch data from a Soup&lt;br /&gt;
&lt;br /&gt;
These methods are implemented in native code. That means we don&#039;t have to worry about when they are called. We just have to override them. Trainz will call them whenever needed.  To override a class means to replace the built-in class with a new one that extends the functions of the original (the parent) while retaining all the original functionality.&lt;br /&gt;
Let&#039;s override them:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; GetProperties:&lt;br /&gt;
As I said above, the purpose of this function is to save data into a Soup. It expects a Soup-Object to be returned. You&#039;ll see that Soup is a class, not a data type.&lt;br /&gt;
&lt;br /&gt;
But we&#039;re able to declare class instances as variables too. (Look at: &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();)&lt;br /&gt;
&lt;br /&gt;
And again: The inherited is in there!&lt;br /&gt;
Every function/method we override has in most cases to inherit the parent classes method. The inherited statement calls GetProperties of Class MapObject. This makes sure, that every operation inside a method of the parent class is called too. Remember: We overrode the method. If we don&#039;t inherit it here again, the parent classes GetProperties-Method will never be called!&lt;br /&gt;
Only miss the call to inherited if you want to disable functionality for a class, if not, don&#039;t forget it.&lt;br /&gt;
&lt;br /&gt;
In the script above, we return the Soup directly, without any changes. What exactly &amp;quot;return types&amp;quot; are will be explained another time :) (it is too much detail to go into now!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; SetProperties:&lt;br /&gt;
In this method we get a parameter of type soup. We inherit the MapObject-Setproprties. This time we don&#039;t have to return any value. Here we will load the data from the Soup we got as parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Saving data&#039;&#039;&#039;&lt;br /&gt;
Think of soup as a container into which you throw pieces of paper with names and values. When you want to find out what you wrote on the paper you look through all the pieces until you find the name and then read off the value.   &lt;br /&gt;
I already explained that Soup is a class. So it may have members, and in fact it has. Look at: [[Class_Soup]]&lt;br /&gt;
&lt;br /&gt;
I use the variable name as the soup tag name, because it&#039;s convenient. The method &amp;quot;SetNamedTag&amp;quot; in class Soup is used to assign a value to each tag in the soup. We can access all public methods inside a class with the dereference operator, that&lt;br /&gt;
is a single dot (&#039;&#039;&#039;.&#039;&#039;&#039;). So, we call the function like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, [VALUE]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now in script, it looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you&#039;ll understand, why we have to return the Soup back to Trainz. We manipulate the values inside the Soup and Trainz has to be kept informed, if Trainz wants to save the Soup for us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Loading data&#039;&#039;&#039;&lt;br /&gt;
The opposite of &amp;quot;Setting data&amp;quot; (SetNamedTag) is &amp;quot;Getting data&amp;quot; (GetNamedTag). And, yes, Soup has a method called &amp;quot;GetNamedTag&amp;quot;, but it&#039;ll return the value as a string. We need a boolean value.&lt;br /&gt;
So, we could use the method &amp;quot;GetNamedTagAsBool&amp;quot;. It expects only one parameter, the name of our value inside the Soup. We can directly assign the value of &amp;quot;GetNamedTagAsBool&amp;quot; to our variable.&lt;br /&gt;
But this function has another variant which expects two parameters. The first one is the name of our value, and the other one is a default value, if the selected&lt;br /&gt;
value is not set in the Soup. We&#039;ll need to use that method because, if we place an object in surveyor, there are no values in the Soup. So, we can set an initial value for the door state. In our case we will set the initial door state to closed (so: m_bDoorOpened has to be false).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
If we add that part into our script it&#039;ll look like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can display and hide the meshes. But the object itself has to be prepared for it. The Ice cream truck has three meshes. The truck with a hole where the door is, a door in the opened state and a door in the closed state. You also may achieve this by using animations, but this way is much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Truck_whole.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Truck with hole, where the door should be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_open.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in opened state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_closed.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in closed state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In script we reference the mesh-table entries of config.txt.&lt;br /&gt;
It may look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
mesh-table&lt;br /&gt;
{  &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;truck.im&amp;quot;&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-opened&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_opened.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-closed&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_closed.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All meshes we want to control by script may never have an auto-create value of 1! It has to be 0, otherwise we can&#039;t take the control over the meshes.&lt;br /&gt;
&lt;br /&gt;
Our CIceCreamTruck&#039;s parent class is MapObject. And MapObject&#039;s parent class is MeshObject, and there we will find a method &amp;quot;SetMeshVisible&amp;quot;.&lt;br /&gt;
We can use it directly, because we automatically inherit from MeshObject, too.&lt;br /&gt;
SetMeshVsible expects three parameters. The name of our mesh-table entry, a state (true, false - [visible, invisible]) and a floating-point number that sets a fading time in seconds.&lt;br /&gt;
We&#039;ll leave the last parameter 0.0f.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;lt;/font&amp;gt;/&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have two meshes, that have to be set. In script we&#039;ll hide/show them like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use our bool variable for indicating the mesh state. The opened mesh is set with the value of m_bDoorOpened. If m_bDoorOpened is true, the mesh will display, otherwise it&#039;ll be hidden.&lt;br /&gt;
The closed state mesh is set with the opposite value of m_bDoorOpened. This can be easily done by using the &#039;not&#039; operator &amp;quot;!&amp;quot;. Just place it in front of a boolean variable, to use the opposite value.&lt;br /&gt;
&lt;br /&gt;
Now you know how to control meshes. Because it will be too much for now, I&#039;ll give the last part of the script without explanation and move it to another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetDescriptionHTML&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; + &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;HTMLWindow&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;CheckBox&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;live://property/m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;) + &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;&amp;amp;amp;nbsp;Open door&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetPropertyType&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; LinkPropertyValue&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         {&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Hope you enjoyed and learned!&amp;lt;br&amp;gt;&lt;br /&gt;
Full example here: [[Media:TrainzDevIceCreamTruck.zip]] (Thanks to misterairbursh for the permission!)&lt;br /&gt;
&lt;br /&gt;
If you want to contact me, you may use this e-mail: callavsg@gmx.de&lt;br /&gt;
&lt;br /&gt;
callavsg&lt;br /&gt;
&lt;br /&gt;
Edited by --[[User:Trev999|Trev999]] ([[User talk:Trev999|talk]]) 02:28, 20 August 2017 (AEST)&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9916</id>
		<title>HowTo/Hide- &amp; Unhide Meshes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9916"/>
		<updated>2017-08-19T16:39:29Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[HowTo/Your first Trainz Script]] we created the script:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; myscript.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CMyClass&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;re gonna use this little example for a vehicle. There is an ice cream truck on the DLS by misterairbrush (&amp;lt;kuid:414943:100987&amp;gt;). This ice cream truck has a door that can be opened or closed.&lt;br /&gt;
It looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_02_Truck_1.jpg]] [[File:Scripting_02_Truck_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
The truck comes equipped with two versions of the door, called meshes. One or the other mesh is visible at any one time but never both together. &lt;br /&gt;
We&#039;ll learn today how to hide the &amp;quot;wrong&amp;quot; and show the right mesh. Also we want users to be able to select an option in the &amp;quot;?&amp;quot;-Window of the scenery object to determine whether the door is to be open or closed.&lt;br /&gt;
&lt;br /&gt;
First we need a member variable to store the (user-selected) open/closed state of the door, then we need functions to save and load the information every time the session starts or is saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variables store values used in the game. These values can be changed by script and are stored in the computer&#039;s memory until needed.&lt;br /&gt;
&lt;br /&gt;
In Trainz Script there are four (well, really there are five, but we will ignore one this time!) data [[Types]] we can use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;bool&#039;&#039;&#039; - boolean constants true/false&lt;br /&gt;
* &#039;&#039;&#039;int&#039;&#039;&#039; - every number between -2147483647 and 2147483647 (a 32 Bit integer)&lt;br /&gt;
* &#039;&#039;&#039;string&#039;&#039;&#039; - characters&lt;br /&gt;
* &#039;&#039;&#039;float&#039;&#039;&#039; - numbers with a decimal point (32 Bit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;ll have a closer look at the &#039;&#039;&#039;bool&#039;&#039;&#039; type. The others will be explained another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, we only need a true/false value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;True&#039;&#039;&#039;: The user wants the door to be open&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;False&#039;&#039;&#039;: The user wants the door to be closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How do we declare a member variable? This is pretty easy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We begin by stating the data-type of our variable and then give it a name. Now we can use it.&lt;br /&gt;
This variable now is available in the whole CIceCreamTruck-Class, because we declared it before any other methods, so we may say it&#039;s a global variable (that isn&#039;t true, but it&#039;s easier to explain).&lt;br /&gt;
We may also declare variables within methods/functions. These then will only be accessible inside the function or method and not in other parts of the script.&lt;br /&gt;
In Trainz Script there are now real global variables (that&#039;s why I think we may call the members global, even if it&#039;s not true). We may only declare variables inside classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we will have a look at two new methods:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#GetProperties]] (GetProperties)&#039;&#039;&#039; - Save data to a soup&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#SetProperties]] (SetProperties)&#039;&#039;&#039; - Fetch data from a Soup&lt;br /&gt;
&lt;br /&gt;
These methods are implemented in native code. That means we don&#039;t have to worry about when they are called. We just have to override them. Trainz will call them whenever needed.  To override a class means to replace the built-in class with a new one that extends the functions of the original (the parent) while retaining all the original functionality.&lt;br /&gt;
Let&#039;s override them:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; GetProperties:&lt;br /&gt;
As I said above, the purpose of this function is to save data into a Soup. It expects a Soup-Object to be returned. You&#039;ll see that Soup is a class, not a data type.&lt;br /&gt;
&lt;br /&gt;
But we&#039;re able to declare class instances as variables too. (Look at: &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();)&lt;br /&gt;
&lt;br /&gt;
And again: The inherited is in there!&lt;br /&gt;
Every function/method we override has in most cases to inherit the parent classes method. The inherited statement calls GetProperties of Class MapObject. This makes sure, that every operation inside a method of the parent class is called too. Remember: We overrode the method. If we don&#039;t inherit it here again, the parent classes GetProperties-Method will never be called!&lt;br /&gt;
Only miss the call to inherited if you want to disable functionality for a class, if not, don&#039;t forget it.&lt;br /&gt;
&lt;br /&gt;
In the script above, we return the Soup directly, without any changes. What exactly &amp;quot;return types&amp;quot; are will be explained another time :) (it is too much detail to go into now!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; SetProperties:&lt;br /&gt;
In this method we get a parameter of type soup. We inherit the MapObject-Setproprties. This time we don&#039;t have to return any value. Here we will load the data from the Soup we got as parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Saving data&#039;&#039;&#039;&lt;br /&gt;
Think of soup as a container into which you throw pieces of paper with names and values. When you want to find out what you wrote on the paper you look through all the pieces until you find the name and then read off the value.   &lt;br /&gt;
I already explained that Soup is a class. So it may have members, and in fact it has. Look at: [[Class_Soup]]&lt;br /&gt;
&lt;br /&gt;
I use the variable name as the soup tag name, because it&#039;s convenient. The method &amp;quot;SetNamedTag&amp;quot; in class Soup is used to assign a value to each tag in the soup. We can access all public methods inside a class with the dereference operator, that&lt;br /&gt;
is a single dot (&#039;&#039;&#039;.&#039;&#039;&#039;). So, we call the function like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, [VALUE]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now in script, it looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you&#039;ll understand, why we have to return the Soup back to Trainz. We manipulate the values inside the Soup and Trainz has to be kept informed, if Trainz wants to save the Soup for us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Loading data&#039;&#039;&#039;&lt;br /&gt;
The opposite of &amp;quot;Setting data&amp;quot; (SetNamedTag) is &amp;quot;Getting data&amp;quot; (GetNamedTag). And, yes, Soup has a method called &amp;quot;GetNamedTag&amp;quot;, but it&#039;ll return the value as a string. We need a boolean value.&lt;br /&gt;
So, we could use the method &amp;quot;GetNamedTagAsBool&amp;quot;. It expects only one parameter, the name of our value inside the Soup. We can directly assign the value of &amp;quot;GetNamedTagAsBool&amp;quot; to our variable.&lt;br /&gt;
But this function has another variant which expects two parameters. The first one is the name of our value, and the other one is a default value, if the selected&lt;br /&gt;
value is not set in the Soup. We&#039;ll need to use that method because, if we place an object in surveyor, there are no values in the Soup. So, we can set an initial value for the door state. In our case we will set the initial door state to closed (so: m_bDoorOpened has to be false).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
If we add that part into our script it&#039;ll look like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can display and hide the meshes. But the object itself has to be prepared for it. The Ice cream truck has three meshes. The truck with a hole where the door is, a door in the opened state and a door in the closed state. You also may achieve this by using animations, but this way is much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Truck_whole.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Truck with hole, where the door should be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_open.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in opened state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_closed.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in closed state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In script we reference the mesh-table entries of config.txt.&lt;br /&gt;
It may look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
mesh-table&lt;br /&gt;
{  &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;truck.im&amp;quot;&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-opened&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_opened.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-closed&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_closed.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All meshes we want to control by script may never have an auto-create value of 1! It has to be 0, otherwise we can&#039;t take the control over the meshes.&lt;br /&gt;
&lt;br /&gt;
Our CIceCreamTruck&#039;s parent class is MapObject. And MapObject&#039;s parent class is MeshObject, and there we will find a method &amp;quot;SetMeshVisible&amp;quot;.&lt;br /&gt;
We can use it directly, because we automatically inherit from MeshObject, too.&lt;br /&gt;
SetMeshVsible expects three parameters. The name of our mesh-table entry, a state (true, false - [visible, invisible]) and a floating-point number that sets a fading time in seconds.&lt;br /&gt;
We&#039;ll leave the last parameter 0.0f.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;lt;/font&amp;gt;/&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have two meshes, that have to be set. In script we&#039;ll hide/show them like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use our bool variable for indicating the mesh state. The opened mesh is set with the value of m_bDoorOpened. If m_bDoorOpened is true, the mesh will display, otherwise it&#039;ll be hidden.&lt;br /&gt;
The closed state mesh is set with the opposite value of m_bDoorOpened. This can be easily done by using the [[not]] operator &amp;quot;!&amp;quot;. Just place it in front of a boolean variable, to use the opposite value.&lt;br /&gt;
&lt;br /&gt;
Now you know how to control meshes. Because it will be too much for now, I&#039;ll give the last part of the script without explanation and move it to another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetDescriptionHTML&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; + &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;HTMLWindow&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;CheckBox&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;live://property/m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;) + &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;&amp;amp;amp;nbsp;Open door&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetPropertyType&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; LinkPropertyValue&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         {&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Hope you enjoyed and learned!&amp;lt;br&amp;gt;&lt;br /&gt;
Full example here: [[Media:TrainzDevIceCreamTruck.zip]] (Thanks to misterairbursh for the permission!)&lt;br /&gt;
&lt;br /&gt;
If you want to contact me, you may use this e-mail: callavsg@gmx.de&lt;br /&gt;
&lt;br /&gt;
callavsg&lt;br /&gt;
&lt;br /&gt;
Edited by --[[User:Trev999|Trev999]] ([[User talk:Trev999|talk]]) 02:28, 20 August 2017 (AEST)&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9915</id>
		<title>HowTo/Hide- &amp; Unhide Meshes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9915"/>
		<updated>2017-08-19T16:36:44Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[HowTo/Your first Trainz Script]] we created the script:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; myscript.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CMyClass&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;re gonna use this little example for a vehicle. There is an ice cream truck on the DLS by misterairbrush (&amp;lt;kuid:414943:100987&amp;gt;). This ice cream truck has a door that can be opened or closed.&lt;br /&gt;
It looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_02_Truck_1.jpg]] [[File:Scripting_02_Truck_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
The truck comes equipped with two versions of the door, called meshes. One or the other mesh is visible at any one time but never both together. &lt;br /&gt;
We&#039;ll learn today how to hide the &amp;quot;wrong&amp;quot; and show the right mesh. Also we want users to be able to select an option in the &amp;quot;?&amp;quot;-Window of the scenery object to determine whether the door is to be open or closed.&lt;br /&gt;
&lt;br /&gt;
First we need a member variable to store the (user-selected) open/closed state of the door, then we need functions to save and load the information every time the session starts or is saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variables store values used in the game. These values can be changed by script and are stored in the computer&#039;s memory until needed.&lt;br /&gt;
&lt;br /&gt;
In Trainz Script there are four (well, really there are five, but we will ignore one this time!) data [[Types]] we can use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;bool&#039;&#039;&#039; - boolean constants true/false&lt;br /&gt;
* &#039;&#039;&#039;int&#039;&#039;&#039; - every number between -2147483647 and 2147483647 (a 32 Bit integer)&lt;br /&gt;
* &#039;&#039;&#039;string&#039;&#039;&#039; - characters&lt;br /&gt;
* &#039;&#039;&#039;float&#039;&#039;&#039; - numbers with a decimal point (32 Bit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;ll have a closer look at the &#039;&#039;&#039;bool&#039;&#039;&#039; type. The others will be explained another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, we only need a true/false value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;True&#039;&#039;&#039;: The user wants the door to be open&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;False&#039;&#039;&#039;: The user wants the door to be closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How do we declare a member variable? This is pretty easy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We begin by stating the data-type of our variable and then give it a name. Now we can use it.&lt;br /&gt;
This variable now is available in the whole CIceCreamTruck-Class, because we declared it before any other methods, so we may say it&#039;s a global variable (that isn&#039;t true, but it&#039;s easier to explain).&lt;br /&gt;
We may also declare variables within methods/functions. These then will only be accessible inside the function or method and not in other parts of the script.&lt;br /&gt;
In Trainz Script there are now real global variables (that&#039;s why I think we may call the members global, even if it&#039;s not true). We may only declare variables inside classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we will have a look at two new methods:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#GetProperties]] (GetProperties)&#039;&#039;&#039; - Save data to a soup&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#SetProperties]] (SetProperties)&#039;&#039;&#039; - Fetch data from a Soup&lt;br /&gt;
&lt;br /&gt;
These methods are implemented in native code. That means we don&#039;t have to worry about when they are called. We just have to override them. Trainz will call them whenever needed.  To override a class means to replace the built-in class with a new one that extends the functions of the original (the parent) while retaining all the original functionality.&lt;br /&gt;
Let&#039;s override them:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; GetProperties:&lt;br /&gt;
As I said above, the purpose of this function is to save data into a Soup. It expects a Soup-Object to be returned. You&#039;ll see that Soup is a class, not a data type.&lt;br /&gt;
&lt;br /&gt;
But we&#039;re able to declare class instances as variables too. (Look at: &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();)&lt;br /&gt;
&lt;br /&gt;
And again: The inherited is in there!&lt;br /&gt;
Every function/method we override has in most cases to inherit the parent classes method. The inherited statement calls GetProperties of Class MapObject. This makes sure, that every operation inside a method of the parent class is called too. Remember: We overrode the method. If we don&#039;t inherit it here again, the parent classes GetProperties-Method will never be called!&lt;br /&gt;
Only miss the call to inherited if you want to disable functionality for a class, if not, don&#039;t forget it.&lt;br /&gt;
&lt;br /&gt;
In the script above, we return the Soup directly, without any changes. What exactly &amp;quot;return types&amp;quot; are will be explained another time :) (it is too much detail to go into now!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; SetProperties:&lt;br /&gt;
In this method we get a parameter of type soup. We inherit the MapObject-Setproprties. This time we don&#039;t have to return any value. Here we will load the data from the Soup we got as parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Saving data&#039;&#039;&#039;&lt;br /&gt;
Think of soup as a container into which you throw pieces of paper with names and values. When you want to find out what you wrote on the paper you look through all the pieces until you find the name and then read off the value.   &lt;br /&gt;
I already explained that Soup is a class. So it may have members, and in fact it has. Look at: [[Class_Soup]]&lt;br /&gt;
&lt;br /&gt;
I use the variable name as the soup tag name, because it&#039;s convenient. The method &amp;quot;SetNamedTag&amp;quot; in class Soup is used to assign a value to each tag in the soup. We can access all public methods inside a class with the dereference operator, that&lt;br /&gt;
is a single dot (&#039;&#039;&#039;.&#039;&#039;&#039;). So, we call the function like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, [VALUE]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now in script, it looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you&#039;ll understand, why we have to return the Soup back to Trainz. We manipulate the values inside the Soup and Trainz has to be kept informed, if Trainz wants to save the Soup for us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Loading data&#039;&#039;&#039;&lt;br /&gt;
The opposite of &amp;quot;Setting data&amp;quot; (SetNamedTag) is &amp;quot;Getting data&amp;quot; (GetNamedTag). And, yes, Soup has a method called &amp;quot;GetNamedTag&amp;quot;, but it&#039;ll return the value as a string. We need a boolean value.&lt;br /&gt;
So, we could use the method &amp;quot;GetNamedTagAsBool&amp;quot;. It expects only one parameter, the name of our value inside the Soup. We can directly assign the value of &amp;quot;GetNamedTagAsBool&amp;quot; to our variable.&lt;br /&gt;
But this function has another variant which expects two parameters. The first one is the name of our value, and the other one is a default value, if the selected&lt;br /&gt;
value is not set in the Soup. We&#039;ll need to use that method because, if we place an object in surveyor, there are no values in the Soup. So, we can set an initial value for the door state. In our case we will set the initial door state to closed (so: m_bDoorOpened has to be false).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
If we add that part into our script it&#039;ll look like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can display and hide the meshes. But the object itself has to be prepared for it. The Ice cream truck has three meshes. The truck with a hole where the door is, a door in the opened state and a door in the closed state. You also may achieve this by using animations, but this way is much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Truck_whole.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Truck with hole, where the door should be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_open.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in opened state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_closed.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in closed state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In script we reference the mesh-table entries of config.txt.&lt;br /&gt;
It may look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
mesh-table&lt;br /&gt;
{  &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;truck.im&amp;quot;&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-opened&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_opened.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-closed&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_closed.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All meshes we want to control by script may never have an auto-create value of 1! It has to be 0, otherwise we can&#039;t take the control over the meshes.&lt;br /&gt;
&lt;br /&gt;
Our CIceCreamTruck&#039;s parent class is MapObject. And MapObject&#039;s parent class is MeshObject, and there we will find a method &amp;quot;SetMeshVisible&amp;quot;.&lt;br /&gt;
We can use it directly, because we automatically inherit from MeshObject, too.&lt;br /&gt;
SetMeshVsible expects three parameters. The name of our mesh-table entry, a state (true, false - [visible, invisible]) and a floating-point number that sets a fading time in seconds.&lt;br /&gt;
We&#039;ll leave the last parameter 0.0f.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;lt;/font&amp;gt;/&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have two meshes, that have to be set. In script we&#039;ll hide/show them like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use our bool variable for indicating the mesh state. The opened mesh is set with the value of m_bDoorOpened. If m_bDoorOpened is true, the mesh will display, otherwise it&#039;ll be hidden.&lt;br /&gt;
The closed state mesh is set with the opposite value of m_bDoorOpened. This can be easily done by using the [not] operator &amp;quot;!&amp;quot;. Just place it in front of a boolean variable, to use the opposite value.&lt;br /&gt;
&lt;br /&gt;
Now you know how to control meshes. Because it will be too much for now, I&#039;ll give the last part of the script without explanation and move it to another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetDescriptionHTML&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; + &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;HTMLWindow&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;CheckBox&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;live://property/m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;) + &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;&amp;amp;amp;nbsp;Open door&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetPropertyType&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; LinkPropertyValue&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         {&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Hope you enjoyed and learned!&amp;lt;br&amp;gt;&lt;br /&gt;
Full example here: [[Media:TrainzDevIceCreamTruck.zip]] (Thanks to misterairbursh for the permission!)&lt;br /&gt;
&lt;br /&gt;
If you want to contact me, you may use this e-mail: callavsg@gmx.de&lt;br /&gt;
&lt;br /&gt;
callavsg&lt;br /&gt;
&lt;br /&gt;
Edited by --[[User:Trev999|Trev999]] ([[User talk:Trev999|talk]]) 02:28, 20 August 2017 (AEST)&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9914</id>
		<title>HowTo/Hide- &amp; Unhide Meshes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9914"/>
		<updated>2017-08-19T16:28:50Z</updated>

		<summary type="html">&lt;p&gt;Trev999: Corrected spelling and grammar and made explanations clearer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[HowTo/Your first Trainz Script]] we created the script:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; myscript.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CMyClass&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;re gonna use this little example for a vehicle. There is an ice cream truck on the DLS by misterairbrush (&amp;lt;kuid:414943:100987&amp;gt;). This ice cream truck has a door that can be opened or closed.&lt;br /&gt;
It looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_02_Truck_1.jpg]] [[File:Scripting_02_Truck_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
The truck comes equipped with two versions of the door, called meshes. One or the other mesh is visible at any one time but never both together. &lt;br /&gt;
We&#039;ll learn today how to hide the &amp;quot;wrong&amp;quot; and show the right mesh. Also we want users to be able to select an option in the &amp;quot;?&amp;quot;-Window of the scenery object to determine whether the door is to be open or closed.&lt;br /&gt;
&lt;br /&gt;
First we need a member variable to store the (user-selected) open/closed state of the door, then we need functions to save and load the information every time the session starts or is saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variables store values used in the game. These values can be changed by script and are stored in the computer&#039;s memory until needed.&lt;br /&gt;
&lt;br /&gt;
In Trainz Script there are four (well, really there are five, but we will ignore one this time!) data [[Types]] we can use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;bool&#039;&#039;&#039; - boolean constants true/false&lt;br /&gt;
* &#039;&#039;&#039;int&#039;&#039;&#039; - every number between -2147483647 and 2147483647 (a 32 Bit integer)&lt;br /&gt;
* &#039;&#039;&#039;string&#039;&#039;&#039; - characters&lt;br /&gt;
* &#039;&#039;&#039;float&#039;&#039;&#039; - numbers with a decimal point (32 Bit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;ll have a closer look at the &#039;&#039;&#039;bool&#039;&#039;&#039; type. The others will be explained another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, we only need a true/false value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;True&#039;&#039;&#039;: The user wants the door to be open&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;False&#039;&#039;&#039;: The user wants the door to be closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How do we declare a member variable? This is pretty easy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We begin by stating the data-type of our variable and then give it a name. Now we can use it.&lt;br /&gt;
This variable now is available in the whole CIceCreamTruck-Class, because we declared it before any other methods, so we may say it&#039;s a global variable (that isn&#039;t true, but it&#039;s easier to explain).&lt;br /&gt;
We also may declare variables within methods/functions. These then will only be accessable inside the function or method and not in other parts of the script.&lt;br /&gt;
In Trainz Script there are now real global variables (that&#039;s why I think we may call the members global, even if it&#039;s not true). We may only declare variables inside classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we will have a look at two new methods:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#GetProperties]] (GetProperties)&#039;&#039;&#039; - Save data to a soup&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#SetProperties]] (SetProperties)&#039;&#039;&#039; - Fetch data from a Soup&lt;br /&gt;
&lt;br /&gt;
These methods are implemented in native code. That means we don&#039;t have to worry about when they are called. We just have to override them. Trainz will call them whenever needed.  To override a class means to replace the built-in class with a new one that extends the functions of the original (the parent) while retaining all the original functionality.&lt;br /&gt;
Let&#039;s override them:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; GetProperties:&lt;br /&gt;
As I said above, the purpose of this function is to save data into a Soup. It expects a Soup-Object to be returned. You&#039;ll see that Soup is a class, not a data type.&lt;br /&gt;
&lt;br /&gt;
But we&#039;re able to declare class instances as variables too. (Look at: &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();)&lt;br /&gt;
&lt;br /&gt;
And again: The inherited is in there!&lt;br /&gt;
Every function/method we override has in most cases to inherit the parent classes method. The inherited statement calls GetProperties of Class MapObject. This makes sure, that every operation inside a method of the parent class is called too. Remember: We overrode the method. If we don&#039;t inherit it here again, the parent classes GetProperties-Method will never be called!&lt;br /&gt;
Only miss the call to inherited if you want to disable functionality for a class, if not, don&#039;t forget it.&lt;br /&gt;
&lt;br /&gt;
In the script above, we return the Soup directly, without any changes. What exactly &amp;quot;return types&amp;quot; are will be explained another time :) (it is too much detail to go into now!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; SetProperties:&lt;br /&gt;
In this method we get a parameter of type soup. We inherit the MapObject-Setproprties. This time we don&#039;t have to return any value. Here we will load the data from the Soup we got as parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Saving data&#039;&#039;&#039;&lt;br /&gt;
Think of soup as a container into which you throw pieces of paper with names and values. When you want to find out what you wrote on the paper you look through all the pieces until you find the name and then read off the value.   &lt;br /&gt;
I already explained that Soup is a class. So it may have members, and in fact it has. Look at: [[Class_Soup]]&lt;br /&gt;
&lt;br /&gt;
I use the variable name as the soup tag name, because it&#039;s convenient. The method &amp;quot;SetNamedTag&amp;quot; in class Soup is used to assign a value to each tag in the soup. We can access all public methods inside a class with the dereference operator, that&lt;br /&gt;
is a single dot (&#039;&#039;&#039;.&#039;&#039;&#039;). So, we call the function like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, [VALUE]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now in script, it looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you&#039;ll understand, why we have to return the Soup back to Trainz. We manipulate the values inside the Soup and Trainz has to be kept informed, if Trainz wants to save the Soup for us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Loading data&#039;&#039;&#039;&lt;br /&gt;
The opposite of &amp;quot;Setting data&amp;quot; (SetNamedTag) is &amp;quot;Getting data&amp;quot; (GetNamedTag). And, yes, Soup has a method called &amp;quot;GetNamedTag&amp;quot;, but it&#039;ll return the value as a string. We need a boolean value.&lt;br /&gt;
So, we could use the method &amp;quot;GetNamedTagAsBool&amp;quot;. It expects only one parameter, the name of our value inside the Soup. We can directly assign the value of &amp;quot;GetNamedTagAsBool&amp;quot; to our variable.&lt;br /&gt;
But this function has another variant which expects two parameters. The first one is the name of our value, and the other one is a default value, if the selected&lt;br /&gt;
value is not set in the Soup. We&#039;ll need to use that method because, if we place an object in surveyor, there are no values in the Soup. So, we can set an initial value for the door state. In our case we will set the initial door state to closed (so: m_bDoorOpened has to be false).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
If we add that part into our script it&#039;ll look like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can display and hide the meshes. But the object itself has to be prepared for it. The Ice cream truck has three meshes. The truck with a hole where the door is, a door in the opened state and a door in the closed state. You also may achieve this by using animations, but this way is much easier.&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Truck_whole.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Truck with hole, where the door should be&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_open.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in opened state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_closed.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in closed state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In script we reference the mesh-table entries of config.txt.&lt;br /&gt;
It may look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
mesh-table&lt;br /&gt;
{  &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;truck.im&amp;quot;&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-opened&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_opened.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-closed&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_closed.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All meshes we want to control by script may never have an auto-create value of 1! It has to be 0, otherwise we can&#039;t take the control over the meshes.&lt;br /&gt;
&lt;br /&gt;
Our CIceCreamTruck&#039;s parent class is MapObject. And MapObject&#039;s parent class is MeshObject, and there we will find a method &amp;quot;SetMeshVisible&amp;quot;.&lt;br /&gt;
We can use it directly, because we automatically inherit from MeshObject, too.&lt;br /&gt;
SetMeshVsible expects three parameters. The name of our mesh-table entry, a state (true, false - [visible, invisible]) and a floating-point number that sets a fading time in seconds.&lt;br /&gt;
We&#039;ll leave the last parameter 0.0f.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;lt;/font&amp;gt;/&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have two meshes, that have to be set. In script we&#039;ll hide/show them like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use our bool variable for indicating the mesh state. The opened mesh is set with the value of m_bDoorOpened. If m_bDoorOpened is true, the mesh will display, otherwise it&#039;ll be hidden.&lt;br /&gt;
The closed state mesh is set with the opposite value of m_bDoorOpened. This can be easily done by using the [not] operator &amp;quot;!&amp;quot;. Just place it in front of a boolean variable, to use the opposite value.&lt;br /&gt;
&lt;br /&gt;
Now you know how to control meshes. Because it will be too much for now, I&#039;ll give the last part of the script without explanation and move it to another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetDescriptionHTML&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; + &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;HTMLWindow&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;CheckBox&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;live://property/m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;) + &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;&amp;amp;amp;nbsp;Open door&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetPropertyType&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; LinkPropertyValue&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         {&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Hope you enjoyed and learned!&amp;lt;br&amp;gt;&lt;br /&gt;
Full example here: [[Media:TrainzDevIceCreamTruck.zip]] (Thanks to misterairbursh for the permission!)&lt;br /&gt;
&lt;br /&gt;
If you want to contact me, you may use this e-mail: callavsg@gmx.de&lt;br /&gt;
&lt;br /&gt;
callavsg&lt;br /&gt;
&lt;br /&gt;
Edited by --[[User:Trev999|Trev999]] ([[User talk:Trev999|talk]]) 02:28, 20 August 2017 (AEST)&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9911</id>
		<title>HowTo/Hide- &amp; Unhide Meshes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Hide-_%26_Unhide_Meshes&amp;diff=9911"/>
		<updated>2017-08-16T17:14:14Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[HowTo/Your first Trainz Script]] we created the script:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; myscript.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CMyClass&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;re gonna use this little example for a vehicle. There is an ice cream truck on the DLS by misterairbrush (&amp;lt;kuid:414943:100987&amp;gt;). This ice cream truck has a door that can be opened or closed.&lt;br /&gt;
It looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_02_Truck_1.jpg]] [[File:Scripting_02_Truck_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
The truck comes equipped with two versions of the door, called meshes. One or the other mesh is visible at any one time but never both together. &lt;br /&gt;
We&#039;ll learn today how to hide the &amp;quot;wrong&amp;quot; and show the right mesh. Also we want users to be able to select an option in the &amp;quot;?&amp;quot;-Window of the scenery object to determine whether the door is to be open or closed.&lt;br /&gt;
&lt;br /&gt;
First we need a member variable to store the (user-selected) open/closed state of the door, then we need functions to save and load the information every time the session starts or is saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variables store values used in the game. These values can be changed by script and are stored in the computer&#039;s memory until needed.&lt;br /&gt;
&lt;br /&gt;
In Trainz Script there are four (well, really there are five, but we will ignore one this time!) data [[Types]] we can use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;bool&#039;&#039;&#039; - boolean constants true/false&lt;br /&gt;
* &#039;&#039;&#039;int&#039;&#039;&#039; - every number between -2147483647 and 2147483647 (a 32 Bit integer)&lt;br /&gt;
* &#039;&#039;&#039;string&#039;&#039;&#039; - characters&lt;br /&gt;
* &#039;&#039;&#039;float&#039;&#039;&#039; - numbers with a decimal point (32 Bit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today we&#039;ll have a closer look at the &#039;&#039;&#039;bool&#039;&#039;&#039; type. The others will be explained another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, we only need a true/false value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;True&#039;&#039;&#039;: The user wants the door to be opened&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;False&#039;&#039;&#039;: The user wants the door to be closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How do we declare a member variable? This is pretty easy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We begin with the data-type of our variable and then give it a name. Now we can use it.&lt;br /&gt;
This variable now is available in the whole CIceCreamTruck-Class, because we declared it before any other methods, so we may say it&#039;s a global variable (that isn&#039;t true, but it&#039;s easier to explain).&lt;br /&gt;
We also may declare variables within methods/functions. These then will only be accessable inside the function or method and not on other places in the script.&lt;br /&gt;
In Trainz Script there are now real global variables (that&#039;s why I think we may call the members global, even if it&#039;s not true). We only may declare variables inside classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, we will have a look at two new methods:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#GetProperties]] (GetProperties)&#039;&#039;&#039; - Save data to a soup&lt;br /&gt;
* &#039;&#039;&#039;[[Class_PropertyObject#SetProperties]] (SetProperties)&#039;&#039;&#039; - Fetch data from a Soup&lt;br /&gt;
&lt;br /&gt;
These methods are implemented in native code. That means we don&#039;t have to care about when they are called. We just have to override them. Trainz will call them whenever needed.  To override a class means to replace the built-in class with a new one that extends the functions of the original (the parent) while retaining all the original functionality.&lt;br /&gt;
Let&#039;s override them:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; GetProperties:&lt;br /&gt;
As I said above, the purpose of this function is to save data into a Soup. It expects a Soup-Object to be returned. You&#039;ll see, that Soup is a class, not a data type.&lt;br /&gt;
&lt;br /&gt;
But we&#039;re able to declare class instances as variables too. (Look at: &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();)&lt;br /&gt;
&lt;br /&gt;
And again: The inherited is in here!&lt;br /&gt;
Every function/method we override has in most cases to inherit the parent classes method. The inherited in here calls GetProperties of Class MapObject. This makes sure, that every operation inside a method of the parent class is called too. Remember: We overrided the method. If we don&#039;t inherit it here again, the parent classes GetProperties-Method will never be called!&lt;br /&gt;
Only miss the call to inherited if you want to disable functionallity for a class, if not, don&#039;t forget it.&lt;br /&gt;
&lt;br /&gt;
In the script above, we return the Soup directly, without any operation. What exactly &amp;quot;return types&amp;quot; are will be explained another time :) (it will be too much detail to go into now!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; SetProperties:&lt;br /&gt;
In this method we get a paramter of type soup. We inherit the MapObject-Setproprties. This time we don&#039;t have to return any value. Here we will load the data from the Soup we got as paramter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Saving data&#039;&#039;&#039;&lt;br /&gt;
Think of soup as a container into which you throw pieces of paper with names and values. When you want to find out what you wrote on the paper you look through all the pieces until you find the name and then read off the value.   &lt;br /&gt;
I already explained that Soup is a class. So it may have members, and in fact it has. Look at: [[Class_Soup]]&lt;br /&gt;
&lt;br /&gt;
I use the variable name as the soup tag name, because it&#039;s convenient. The method &amp;quot;SetNamedTag&amp;quot; in class Soup is used to assign a value to each tag in the soup. We can access all public methods inside a class with the dereference operator, that&lt;br /&gt;
is a single dot (&#039;&#039;&#039;.&#039;&#039;&#039;). So, we call the function like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, [VALUE]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now in script, it looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you&#039;ll understand, why we have to return the Soup back to Trainz. We manipulate the values inside the Soup and Trainz has to know it, if Trainz should save the Soup for us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Loading data&#039;&#039;&#039;&lt;br /&gt;
The oppisite of &amp;quot;Setting data&amp;quot; (SetNamedTag) is &amp;quot;Getting data&amp;quot; (GetNamedTag). And, yes, Soup has a method called &amp;quot;GetNamedTag&amp;quot;, but it&#039;ll return the value as a string. We need a boolean value.&lt;br /&gt;
So, we will use the method &amp;quot;GetNamedTagAsBool&amp;quot;. It expects only one paramter, the name of our value inside the Soup. We can directly assign the value of &amp;quot;GetNamedTagAsBool&amp;quot; to our variable.&lt;br /&gt;
But this is a oveerloaded function. There are some variants. Another variant expects two parameters. The first one is the name of our value, and the other one is a standard value, if the selected&lt;br /&gt;
value is not set in the Soup. We&#039;ll need that one! Because if we place an object in surveyor, there are no values inside the Soup. So, we can set an initial value for the door state. In our case we will set the initial door state to closed (so: m_bDoorOpened has to be false).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
If we put that part into our script it&#039;ll look like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we can display and hide the meshes. But the object itself has to be prepared for it. The Ice cream truck has three meshes. The truck with a whole where the door is, a door in opened state and a door in closed state. You also may achieve this by using animations, but this way is pretty easier.&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Truck_whole.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Truck with whole, where the door is&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_open.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in opened state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scripting_2_Doors_closed.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Door in closed state&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In script we reference the mesh-table entries of config.txt.&lt;br /&gt;
It may look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
mesh-table&lt;br /&gt;
{  &lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;truck.im&amp;quot;&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-opened&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_opened.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   door-closed&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;door_closed.im&amp;quot;&lt;br /&gt;
     auto-create                         0&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All meshes we want to control by script may never have an auto-create value of 1! It has to be 0, otherwise we can&#039;t take the control over the meshes.&lt;br /&gt;
&lt;br /&gt;
Our CIceCreamTruck&#039;s parent class is MapObject. And MapObject&#039;s parent class is MeshObject, and there we will find a method that is called &amp;quot;SetMeshVisible&amp;quot;.&lt;br /&gt;
We can use it directly, because we automatically inherit from MeshObject, too.&lt;br /&gt;
SetMeshVsible expects three parameters. The name of our mesh-table entry, a state (true, false - [visible, invisible]) and a floating number that sets a fading time in seconds.&lt;br /&gt;
We&#039;ll leave the last parameter 0.0f.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;NAME&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;lt;/font&amp;gt;/&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have two meshes, that has to be set. In script we&#039;ll hide/show them like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We can use our bool variable for indicating the mesh state. The opened mesh is set with the value of m_bDoorOpened. If m_bDoorOpened is true, the mesh will display, otherwise it&#039;ll hide.&lt;br /&gt;
The closed state mesh is set with the oppsite value of m_bDoorOpened. This can be easily done by using the &amp;quot;!&amp;quot;-operator. Just place it in front of a boolean variable, to use the opposite value.&lt;br /&gt;
&lt;br /&gt;
Now you know how to control meshes. Because it will be too much for now, I&#039;ll give the last part of the script without explanation and move it to another time :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; icecreamtruck.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CIceCreamTruck&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;bool&#039;&#039;&#039;&amp;lt;/font&amp;gt;        &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;Soup&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetNamedTag&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; SetProperties&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Soup&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pSoup&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;GetNamedTagAsBool&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;false&#039;&#039;&#039;&amp;lt;/font&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-opened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;SetMeshVisible&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;door-closed&amp;quot;&amp;lt;/font&amp;gt;, !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#FF8000&amp;quot;&amp;gt;0.0f&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetDescriptionHTML&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;void&#039;&#039;&#039;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;();&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt; + &amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;HTMLWindow&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;CheckBox&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;live://property/m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;) + &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;&amp;amp;amp;nbsp;Open door&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sHtml&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public string&#039;&#039;&#039; GetPropertyType&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt; = &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;link&amp;quot;&amp;lt;/font&amp;gt;;&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;return&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sRet&amp;lt;/font&amp;gt;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; LinkPropertyValue&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;string&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;sPropertyId&amp;lt;/font&amp;gt; == &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;m_bDoorOpened&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
         {&lt;br /&gt;
             &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt; = !&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;m_bDoorOpened&amp;lt;/font&amp;gt;;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Hope you enjoyed an learned!&amp;lt;br&amp;gt;&lt;br /&gt;
Full example here: [[Media:TrainzDevIceCreamTruck.zip]] (Thanks to misterairbursh for the permission!)&lt;br /&gt;
&lt;br /&gt;
If you want to contact me, you may use this e-mail: callavsg@gmx.de&lt;br /&gt;
&lt;br /&gt;
callavsg&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Your_first_Trainz_Script&amp;diff=9910</id>
		<title>HowTo/Your first Trainz Script</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Your_first_Trainz_Script&amp;diff=9910"/>
		<updated>2017-08-16T15:59:39Z</updated>

		<summary type="html">&lt;p&gt;Trev999: --~~~~ corrected spelling and grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Scripting is one of most powerful tools when creating trainz assets.&lt;br /&gt;
More and more content creators are using scripts to extend the funciontallity of their contents,&lt;br /&gt;
so scripters, like me, get a lot of request for script work.&lt;br /&gt;
Finally, I thought, even for small functionallity, it&#039;ll be a good idea, if more people know how to script.&lt;br /&gt;
&lt;br /&gt;
I&#039;m from Germany and this is my first article here, so feel free to send corrections or if you have the permission,&lt;br /&gt;
feel free to correct this article on your own!&lt;br /&gt;
&lt;br /&gt;
First, let us take a theoretical approach:&lt;br /&gt;
&lt;br /&gt;
Trainz Script is a small programming language and has many similar aspects to Java or C++. I&#039;ll say it&#039;s a kind of a Framework,&lt;br /&gt;
that allows us to implement new features based on built-in classes and their members.&lt;br /&gt;
That means we have to assign our assets to a script class. Without a custom script, we do it by selecting the kind of our asset&lt;br /&gt;
in config.txt. A kind of &amp;quot;scenery&amp;quot; (not &amp;quot;scenery-trackside&amp;quot;!) will assign the class &amp;quot;MapObject&amp;quot; to our asset.&lt;br /&gt;
So, if we want to extend our asset of [[Class MapObject]], we&#039;ll have to extend the class itself.&lt;br /&gt;
Extending a class means to create a custom script file with a custom class declaration inside of it that inherits from the [[Class MapObject]].&lt;br /&gt;
&amp;quot;MapObject&amp;quot; then becomes our parent class and we have all functionallity of this class within our custom implemented class.&lt;br /&gt;
&lt;br /&gt;
A basic script may look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; myscript.gs&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;include&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt;&amp;quot;MapObject.gs&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;class&amp;lt;/font&amp;gt;&#039;&#039;&#039; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;CMyClass&amp;lt;/font&amp;gt; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;isclass&amp;lt;/font&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;MapObject&amp;lt;/font&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 {&lt;br /&gt;
     &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;public void&#039;&#039;&#039; Init&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#800000&amp;quot;&amp;gt;&#039;&#039;&#039;Asset&#039;&#039;&#039;&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;)&lt;br /&gt;
     {&lt;br /&gt;
         &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
As you see in the little script above, our class already has a member function. This member function (Init) is the most important member we have to implement.&lt;br /&gt;
This little function initializes our class and inherits all the properties of our parent class (see: &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;(&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;pAsset&amp;lt;/font&amp;gt;);).&lt;br /&gt;
Without that function with its call to &amp;lt;font color=&amp;quot;#0000C0&amp;quot;&amp;gt;&#039;&#039;&#039;inherited&#039;&#039;&#039;&amp;lt;/font&amp;gt;, functionality of our asset is not granted, because in this case our parent class won&#039;t be initialized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Never forget the &amp;quot;Init&amp;quot;-Method (method = function within class)!&lt;br /&gt;
&lt;br /&gt;
2. Never forget to call &amp;quot;inherited&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the config.txt of our asset, we need to set two new tags!&lt;br /&gt;
The first tag is the &amp;quot;script&amp;quot;-tag and the second one is the &amp;quot;class&amp;quot;-tag. We have to fill these tags with our script information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;script&#039;&#039;&#039;: The filename of our script&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;class&#039;&#039;&#039;: The class we created for our &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case the config.txt may look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trainz-build                            3.7&lt;br /&gt;
kuid                                    [...]&lt;br /&gt;
category-class                          &amp;quot;[...]&amp;quot;&lt;br /&gt;
category-region                         &amp;quot;[...]&amp;quot;&lt;br /&gt;
category-era                            &amp;quot;[...]&amp;quot;&lt;br /&gt;
kind                                    &amp;quot;scenery&amp;quot;&lt;br /&gt;
description                             &amp;quot;[...]&amp;quot;&lt;br /&gt;
username                                &amp;quot;[...]&amp;quot;&lt;br /&gt;
script                                  &amp;quot;myscript.gs&amp;quot;&lt;br /&gt;
class                                   &amp;quot;CMyClass&amp;quot;&lt;br /&gt;
&lt;br /&gt;
thumbnails&lt;br /&gt;
{&lt;br /&gt;
    [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mesh-table&lt;br /&gt;
{&lt;br /&gt;
    [...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
kuid-table&lt;br /&gt;
{&lt;br /&gt;
    [...]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; What we&#039;ve learned today:&lt;br /&gt;
- If we want to extend the functionallity of an asset, we have to extend the Trainz-Script-Class that belongs to our asset (here [[Class MapObject]])&lt;br /&gt;
&lt;br /&gt;
- We extend our class by implementing a custom class that inherits from our parent class (CMyClass inherits from [[Class MapObject]])&lt;br /&gt;
&lt;br /&gt;
- All Trainz-Classes that assets can inherit from have the Init-Method and custom classes have to implement the Init-Method, too!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to contact me, you may use this e-mail: callavsg@gmx.de&lt;br /&gt;
&lt;br /&gt;
Until next time!&lt;br /&gt;
&lt;br /&gt;
callavsg&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Arrays&amp;diff=8939</id>
		<title>Arrays</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Arrays&amp;diff=8939"/>
		<updated>2016-06-14T17:24:25Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Declaration, Initialisation &amp;amp; Population==&lt;br /&gt;
*Arrays need to be declared and initialised before they can be accessed, and it will usually be necessary to populate the array with meaningful data.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MethodHeader|Declaration}}&lt;br /&gt;
*A declaration reserves memory for the variable and allocates a name for that particular array.  This is analogous to a housing developer buying a site and reserving it for future construction.&lt;br /&gt;
&lt;br /&gt;
*To declare an array you must first define the type of object which the array will contain, followed by opening and closing square braces and the name you will use to reference the array variable.&lt;br /&gt;
&lt;br /&gt;
*Just as residential developments can consist of any building type, arrays can consist of almost any class, including classes which you have defined yourself.&lt;br /&gt;
&lt;br /&gt;
 Vehicle[] vehicles;&lt;br /&gt;
 int[] numberList;&lt;br /&gt;
 string[] words;&lt;br /&gt;
 GameObject[] objects;&lt;br /&gt;
 MyOwnClass[] myObjects;&lt;br /&gt;
&lt;br /&gt;
{{MethodHeader|Initialisation}}&lt;br /&gt;
*In the same way that a developer must decide how many units he wants to build, you must decide how many members your array will initially be able to contain.  You will be able to make the array larger or smaller later, for now you are just setting the initial size.&lt;br /&gt;
*To initialise the array you use the keyword new, followed by the class of object that the array is to contain and the initial number of members in square brackets.&lt;br /&gt;
&lt;br /&gt;
 vehicles = new Vehicle[5];&lt;br /&gt;
 numberList = new int[10];&lt;br /&gt;
 words = new string[2];&lt;br /&gt;
 objects = new GameObject[3];&lt;br /&gt;
 myObjects = new MyOwnClass[7];&lt;br /&gt;
&lt;br /&gt;
*It is possible, and often convenient, to declare and initialise the array in a single statement:&lt;br /&gt;
&lt;br /&gt;
 Vehicle[] vehicles = new Vehicle[5];&lt;br /&gt;
 int[] numberList = new int[10];&lt;br /&gt;
 string[] words = new string[2];&lt;br /&gt;
 GameObject[] objects = new GameObject[3];&lt;br /&gt;
 MyOwnClass[] myObjects = new MyOwnClass[7];&lt;br /&gt;
&lt;br /&gt;
{{MethodHeader|Population}}&lt;br /&gt;
*We now have a plot of land and some completed buildings but it will still be meaningless to call at an individual house because no-one will be living there.&lt;br /&gt;
&lt;br /&gt;
*You can populate the individual elements by assigning a value to an indexed position in the array. The syntax for this is:&lt;br /&gt;
&lt;br /&gt;
 vehicles[0] = GetMyTrain().GetVehicles[3];&lt;br /&gt;
 numberList[0] = 0;&lt;br /&gt;
 words[3] = &amp;quot;sentences&amp;quot;&lt;br /&gt;
 objects[0] = me;&lt;br /&gt;
 myObjects[2] = Router.GetGameObject(&amp;quot;my sibling&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
{{MethodHeader|Array Methods}}&lt;br /&gt;
*A further shortcut is to use a method which returns an array to initialise and populate your array in a single statement.  Often the same statement can also contain the declaration:&lt;br /&gt;
&lt;br /&gt;
 Vehicle[] vehicles = World.GetVehicleList();&lt;br /&gt;
 int[] numberList = GetNumberList(1,10);&lt;br /&gt;
 string[] words = Str.Tokens(&amp;quot;comma,separated,list&amp;quot;,&amp;quot;,&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
*You can write your own methods to return arrays:&lt;br /&gt;
&lt;br /&gt;
 int[] GetNumberList(int start, int count) {&lt;br /&gt;
   int[] result = new int[0];&lt;br /&gt;
   int i;&lt;br /&gt;
   for (i = start; i &amp;lt; count; i++) {&lt;br /&gt;
     result[result.size()] = i;&lt;br /&gt;
   }&lt;br /&gt;
   return result;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Array Operators==&lt;br /&gt;
{{MethodHeader|Appending to an Array}}&lt;br /&gt;
*This is a syntax which allows you to increase the size of a properly initialised array by adding a new member to the end. Since array indexing starts at zero, the last member will always be &#039;&#039;array[array.size() - 1]&#039;&#039;.  &lt;br /&gt;
&lt;br /&gt;
*Trying to read from &#039;&#039;array[array.size()]&#039;&#039; will result in a range error because you are attempting to access a location which does not exist.&lt;br /&gt;
&lt;br /&gt;
*Assigning to &#039;&#039;array[array.size()]&#039;&#039; however, will create a new member and increment the number of items in the array.&lt;br /&gt;
&lt;br /&gt;
 vehicles[vehicles.size()] = me;&lt;br /&gt;
&lt;br /&gt;
{{MethodHeader|Indexing}}&lt;br /&gt;
*A subscript enclosed in square brackets serves to define an individual item within an array.  The notation will only be meaningful if that particular item has a value assigned. Assuming that this is the case when it isn&#039;t is a common error, and one that can be very difficult to find.&lt;br /&gt;
&lt;br /&gt;
*Given these statements:&lt;br /&gt;
&lt;br /&gt;
 int[] numbers = new int[3];&lt;br /&gt;
 numbers[0] = 0;&lt;br /&gt;
 numbers[2] = 2;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;numbers[0]&#039;&#039; will return zero as an integer&lt;br /&gt;
*&#039;&#039;numbers[2]&#039;&#039; will return the value 2&lt;br /&gt;
*&#039;&#039;numbers[1]&#039;&#039; however will return null since no value has been assigned to that particular item.&lt;br /&gt;
&lt;br /&gt;
*Array indexing starts at zero (don&#039;t ask why) and finishes at &#039;&#039;array.size() - 1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{MethodHeader|Range Indexing}}&lt;br /&gt;
*Whilst it is straightforward to erase a value from an array by assigning it to null, this doesn&#039;t affect the size of the array itself.&lt;br /&gt;
&lt;br /&gt;
*Given these statements:&lt;br /&gt;
&lt;br /&gt;
 int[] numbers = new int[3];&lt;br /&gt;
 numbers[0] = 0;&lt;br /&gt;
 numbers[1] = 1;&lt;br /&gt;
 numbers[2] = 2;&lt;br /&gt;
&lt;br /&gt;
*Making the assignment &#039;&#039;numbers[2] = null&#039;&#039; will clear out the value but the array will still contain 3 items.&lt;br /&gt;
&lt;br /&gt;
*You can delete items and reduce the size of the array at the same time by specifying a range index like this:&lt;br /&gt;
&lt;br /&gt;
 numbers[0,1] = null;&lt;br /&gt;
&lt;br /&gt;
*The first index is the position of the item to remove and the second is one greater than the position of the last item.&lt;br /&gt;
&lt;br /&gt;
 numbers[0,1] = null removes the first item&lt;br /&gt;
 numbers[2,3] = null removes the last item&lt;br /&gt;
&lt;br /&gt;
*Array range indexing is an important tool for use with strings (which are really arrays of characters)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{MethodHeader|size()}}&lt;br /&gt;
*&#039;&#039;array.size()&#039;&#039; returns a count of the items in the array, this is no guarantee that all of the items have a value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{anchor|copy}}{{MethodHeader|copy()}}&lt;br /&gt;
*&#039;&#039;copy()&#039;&#039; creates a duplicate of the array, the syntax is:&lt;br /&gt;
&lt;br /&gt;
 int[] old = new int[3];&lt;br /&gt;
 int[] new;&lt;br /&gt;
 new.copy(old);&lt;br /&gt;
&lt;br /&gt;
*There is a subtle difference between copying an array and creating a duplicate reference to it by assignment.  In the case above, the array &#039;&#039;new&#039;&#039; is an entirely separate variable from the array &#039;&#039;old&#039;&#039;. Changing the values of one will not affect the other.&lt;br /&gt;
&lt;br /&gt;
 int[] old = new int[3];&lt;br /&gt;
 int[] new;&lt;br /&gt;
 new = old;&lt;br /&gt;
&lt;br /&gt;
*will produce a similar result at first glance, but in this case assigning a new value to &#039;&#039;new[1]&#039;&#039; will also change the value of &#039;&#039;old[1]&#039;&#039;. This is because the assignment effectively creates an alternative name for the same data.&lt;br /&gt;
&lt;br /&gt;
==Code Samples==&lt;br /&gt;
{{MethodHeader|Array Handling Methods}}&lt;br /&gt;
*These are example routines which carry out some basic operations on string arrays, all the routines are case sensitive.  They can be used for other object types with appropriate modification.&lt;br /&gt;
&lt;br /&gt;
*Member returns true if the string &#039;s&#039; is contained within the array &#039;strings&#039;.&lt;br /&gt;
&lt;br /&gt;
 public bool Member(string[] strings, string s) {&lt;br /&gt;
   int n;&lt;br /&gt;
   bool result = false;&lt;br /&gt;
   if (strings.size() == 0) {return result;}&lt;br /&gt;
   for (n = 0; n &amp;lt; strings.size(); n++) {&lt;br /&gt;
     if (s == strings[n]) {&lt;br /&gt;
       result = true;&lt;br /&gt;
       break;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   return result;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*Add will append string &#039;s&#039; to the end of the array &#039;strings&#039; as long as &#039;s&#039; is not already present.&lt;br /&gt;
&lt;br /&gt;
 public void Add(string[] strings, string s) {&lt;br /&gt;
   if (Member(strings,s)) return;&lt;br /&gt;
   else {strings[strings.size()] = s;}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*Remove will delete any instance of string &#039;s&#039; from the array and reduce the size of the array accordingly.&lt;br /&gt;
&lt;br /&gt;
 public void Remove(string[] strings, string s) {&lt;br /&gt;
   int n;&lt;br /&gt;
   if (strings.size() == 0) return;&lt;br /&gt;
   for (n = 0; n &amp;lt; strings.size(); n++) {&lt;br /&gt;
     if (s == strings[n]) {strings[n,n+1] = null;}&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*Sort will perform a case sensitive alpha sort of the strings in the array. This is a flagged bubble sort, simple but slow, and is fine for most small arrays.  For large arrays you should write your own quicksort method.&lt;br /&gt;
&lt;br /&gt;
 public void Sort(string[] strings) {&lt;br /&gt;
   int x,y;&lt;br /&gt;
   string temp;&lt;br /&gt;
   bool flag;&lt;br /&gt;
   for (x = 0; x &amp;lt; strings.size(); x++) {&lt;br /&gt;
     flag = false;&lt;br /&gt;
     for (y = 0; y &amp;lt; strings.size() - 1; y++) {&lt;br /&gt;
       if (strings[y] &amp;gt; strings[y + 1]) {&lt;br /&gt;
         temp = strings[y + 1];&lt;br /&gt;
         strings[y + 1] = strings[y];&lt;br /&gt;
         strings[y] = temp;&lt;br /&gt;
         flag = true;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     if (!flag) break;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help/HelpHowTo&amp;diff=8406</id>
		<title>Help/HelpHowTo</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help/HelpHowTo&amp;diff=8406"/>
		<updated>2015-07-04T07:30:57Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To access the Help Mode drop-down menu, click on the question mark icon on the right uppermost corner.&lt;br /&gt;
[[File:Help mode.jpg|400px|left]]&lt;br /&gt;
&lt;br /&gt;
== View Trainz Help ==&lt;br /&gt;
&lt;br /&gt;
This opens a browser window within Trainz to display the&lt;br /&gt;
Online Wiki, specificaly on how to use the different driving modes.&lt;br /&gt;
&lt;br /&gt;
== Get help on... ==&lt;br /&gt;
&lt;br /&gt;
By first clicking this option and then clicking on an object that&lt;br /&gt;
you wish to query, Trainz will open the in-game browser&lt;br /&gt;
taking you to the wiki entry providing details or help for that&lt;br /&gt;
object.&lt;br /&gt;
&lt;br /&gt;
== View Session Instructions ==&lt;br /&gt;
This opens the Session Instructions window. Use it to review what you must do in the current session.&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:Menu_Routes&amp;diff=2897</id>
		<title>Help:Menu Routes</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:Menu_Routes&amp;diff=2897"/>
		<updated>2011-08-14T08:21:56Z</updated>

		<summary type="html">&lt;p&gt;Trev999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Routes Menu will display all the routes you have. It allows you to select a route to edit or drive etc.&lt;/div&gt;</summary>
		<author><name>Trev999</name></author>
	</entry>
</feed>