Need help with Enhanced Interlocking Tower

horacefithers

New member
Are there any EIT gurus out there in forum land?

I could use some help with getting trains through Bear Creek yard on the BC&SJ.

BCyard.jpg



I would like to run AI trains as background traffic traveling east and west the full length of the railroad spaced about 40 minutes apart so they don't overwhelm things...
I've gotten AI trains to run reliably through Hampton. However the AI drivers seem to have a penchant for getting lost in the Bear Creek yard and always end up in headlight staredowns.

Main track is priority 1.
Depot and arrival departure tracks are priority 2.
Other tracks are priority 3.
The locos have priority 1.

This priority scheme worked at Hampton so that a priority 1 train arriving held the main (if it was empty), otherwise it would take the siding.

I hoped this would work at Bear Creek, but it didn't. AI drivers often ended up in headlight stare downs - sometimes at signals A and M, other times in the middle of the yard (on main or AD1 or AD2)

JCitron talked up the merits of Enhanced Interlocking Towers to me, so I installed one at Bear Creek (I got one to work at Hampton before I tried Bear Creek). I programmed four paths
through the yard.
  • main eastward: A - G - I - O
  • main westward: P - I - G - B
  • A/D eastward : A - E - F - K - L - N
  • A/D westward: P - L - K - F - E - C

I set up a test case with locos about 1/2 mile away from the ends of the yard, programmed them with Navigate-Via commands to the near and far ends of the yard and un-paused the session.

The first train to get the either point a or point b is assigned a path on the main track.

The second train just sits at the other signal and waits and waits and waits.

I can see the EIT testing to see if there's a clear route, but it never seems to find one.

Questions:
1. Are there known problems with the EIT when a path has a LOT of path-lets?
2. Should the paths be complete all the way through the yard A to P (P to A in the other direction)? Would this cause deadlocks when opposing traffic beyond the yard that can't enter the yard because the tracks/turnouts are locked by the other train?
3. I configured the tower in Dynamic ownership mode. Should I have used Static mode?
4. The paths are configured to release small pieces of the paths as the owning train drives along the route clearing them. Other routes through the yard will include east and west end to the Depot Track, the Depot track to east and west yard end, access to class tracks, etc. It would be much more efficient if these non-full length paths could be accessed without waiting for trains in the yard to clear their entire path. Is this workable?
5. I use of 04 signals to guard the rear of junctions OK? Is it necessary or should they be omitted because the interlocking should guarantee that a train's entire path will be aligned?
6. Are the 08 signals necessary to make the interlocking tower work? Can 06 signals be used instead?
7. I have TRC compatibility set to disabled. Should this be turned on?
8. I've placed EITPathTriggers about 500 feet to the east and west of the yard to control the trigger distances. But with or without these seemed to make no difference.

I'm using the Enhanced TRC Interlocking Tower resource, rev 52. The Enhanced Interlocking library is rev 72 (iirc).

I've been through the yard three times looking for disconnected track, duplicate signals, and places where missing signals might be confusing.

Can anyone give me some suggestions of what to look for that could be causing the AI trains to end up staring at each other?

Or will the BC&SJ not have any AI background trains?

Thankz for your help,

Horace Fithers
 
Last edited:
Hi Horace

My first thing that I would try would be to make arrival/dep track 1 the path for Westbound trains and arrival/dep track 2 the path for Eastbound trains (or vice versa). That should prevent the cornfield meets. I'm assuming that the main line is single track so in a situation such as this it would be normal to have paths broken up into two sections, into the track and out of the track (including the main line) as it is likely that at some stage trains will need to wait there for passing one another. Depending on the complexity of the trackwork I may also use two EITs, each one controlling its own end of the yard and main.

EITs do have a learning curve and I spent two weeks learning as much as possible about them while I was laid up following a heart attack a couple of years ago, although I don't recomend this just to learn EITs. Once you get to grips with them they are extremely versatile and when set up properly will stop the AI scratching its head wondering which path to take as sometimes happens. I normally set up the entire route with EITs at every decision point. Once they are set up correctly you will no longer need the purple priority markers or the yellow direction markers as the AI no longer has to do any route planning.

The Navigate or drive commands don't work well with EITs as they try to plot their own paths which conflicts with the EITs efforts to set its path. I use the 'Autodrive' command (on DLS) by author 'brummfondel', kuid2:192081:4:5 which just drives the train to or through a trackmark without attempting any path setting of its own.

I can't help with the signalling as I'm UK based and don't fully understand the US signalling system but I normally find that prototypical signalling works quite well when using EITs. I sometimes use invisible signals if I need to start or end a path where the distance between signals is too long.

EITs have a limit on how many path objects they can control rather than how many paths. This is currently 600 but I believe Pierre plans to reduce this to prevent other problems. I have EITs with more than 40 paths working quite happily.

Paths will set automatically when a train is 1 k (0.6 miles) from the start signal unless you have it set to manual. Path triggers are only needed if you need it to set the path earlier than that.

Place the EITs in the session layer as they don't work well when in the route layer, something to do with how they save their settings I believe.

Once you've got a basic understanding of EITs I would suggest looking at the other commands and rules designed to work with EITs which expand the capabilities of them.

I don't know if you've seen the documentation for them so I've added the links here.

http://online.ts2009.com/mediaWiki/index.php/Enhanced_Interlocking_Tower

http://online.ts2009.com/mediaWiki/index.php/Enhanced_Interlocking_Tower_Manager_Rule

http://online.ts2009.com/mediaWiki/index.php/MissionCodes_Manager

http://online.ts2009.com/mediaWiki/index.php/Enhanced_Interlocking_Tower_Tip_001

http://online.ts2009.com/mediaWiki/index.php/Mission_Code_Stops_and_TimeTables_Manager

Regards

Brian
 
A HUGE Thank You to you Brian. This looks like exactly what I need. I was just wondering whether the Navigate-Via commands I was using were fighting with the towers.

I've also been having terrible problems with the towers. If I set them up using Edit Route, then start a session and use ctrl-F1 to tweak them, there seem to be two instances, and the one in the Route file seems to get neutered. That is, subsequently using Edit Route to change an EIT, then going back to a Session results in the Edit Route changes getting overridden by whatever was present in the session. Here's a case where the unified Surveyor/Driver interface seems to be a complete disaster looking for a place to happen. I don't know how much hair I pulled out before I realized the EIT that I'd just edited wasn't the EIT that was present while driving. Sigh.

I'll try this tomorrow and see if things work better. I suspect using autopilot command will make a big difference.

Regards,
H.F.
 
Brian,
I took a quick peek at the Mission Codes stops and Time Table manager page. I was struct by the statement that the arrival times in a timetable are optional, but the departure times are mandatory.

I'm very interested in Timetable & Train Order operations - it's what I use on my HO scale BC&SJ layout to control multiple trains running without ANY signaling (except for the entry/exit to main staging). THe primary rule is all trains with a timetable must NEVER (without a train order changing the departure time) leave a station earlier than the departure time in the Employee Timetable. All other inferior trains depend on this to keep out of the way of their superiors.

Does this feature of the Time Table Manager suggest that it might be possible to implement AI Timetable and Train Order operation in Trainz?

Best regards again,
Horace Fithers
 
OK.

I moved the EIT tower to Session-layer

I switch to using AutoDrive.

Now the tower seems to be ignoring everything and makes no attempt to route trains at all.

Huh?

HF
 
Hi Horace.

with ITs (either N3V ITs or EITs) you have two things to do to make them work fine.

First one is defining the paths you will use for your different trains : this is done using the standard N3V path editor by clicking on the tower in surveyor with the ? Object tool, and you can enter all your paths definitions and options and also the tower options. As it was explained by Brian, it is better to have your tower and paths definition in the session layer (due to a bug with some incorrectly saved parameters if the tower is in the route layer) and to try to limit the number of path objects (total of number of objects referenced by all your paths in a tower) to about 450 maximum per tower (the tower is more sensitive to the total number of path objects than to the total number of paths) . This can be 40 paths with an average of 10 objects per path, or less paths with more objects or more paths with less objects.

The second very important point is how you will activate a path for your train. paths needs at run time to be activated to be used, and this can be done using automatic path selection or manual path selection.
Automatic path selection is done when a train approaches a path entry signal at about 0.5 mile, and should work fine when using DriveTo/DriveVia driver command. Do not use NavigateTo/NavigateVia driver command when driving in an IT area as these commands will try to use an alternate path as soon as the train is stopped by a signal, which may happen if you have to wait for path avaibility. Automatic path selection do not work with Autodrive driver command, which are the adequate driver commands to use when using manual path selection.
Manual path selection is done using specific driver commands ITSetPath (or ITSetPathAndWaitActive or ITSetPathandWaitNotRed) to request a specific path to be activated before auto driving along the path using adequate Autodrive driver commands.
in general beginners with ITs starts with automatic path selection using DriveTo/DriveVia driver commands, but will switch to manual path selection when they will have learn enough on how to use ITs and want to overcome the inherent limitations of automatic path selection.
You can also mix the methods using automatic path selection in some situations and manual path selection in some other situations where you find manual path selection more convenient.
Take care that you need to set at the path level if your path will support only manual path selection, automatic selection only for Ai trains, automatic path selection only for player trains, or automatic selection for both AI and player trains which is the default value.
There is a last method for automatic path selection which is to use Mission Code Manager rule but that is another learning curve level to learn.

If you are just starting with ITs, my recommandation is to start by defining paths with manual path selection using ITSetPath and to use ITSetPath family driver commands to set path and Autodrive driver command to follow easily the activated path. This enables to understand how ITs works and then you can understand better afterward how automatic path selection can do with only DriveTo/DriveVia driver command or how Mission Command Manager can be used for automatic path selection.

To come back to your route, as explained by Brian, you need to have paths for entering your arrival/departure tracks from each side West - East of your area and also paths for leaving your arrival/departure tracks to your destination side West - East of your area. Set all your paths to Manual mode only. and to use a path just use an ITSetPath for the path you want to use followed by an Autodrive command to a destination track mark, and you will see the path being activated and that your train will follow the path until your destination track mark.
And remember the basics of ITs : 1 - define the path with manual selection option to use in surveyor ; 2 - activate the path using ITSetPath command ; 3 - Autodrive along the path using Autodrive driver command. And when you will master using ITs in manual mode, then you may learn how to replace using ITSetPath by automatic path selection, if you wish and prefer, learning how automatic path selection analyses your current DriveTo command to auto select the most adequate path to destination.

If you need any more help do not hesitate to ask me on how to use EIT either using forum posts or PM message. and good luck and fun learning how to use EIT and MCM and later STT. it may take a little time but it is worth doing it to control and master AI operations.

Regards.
Pierre.
 
Last edited:
What is to the East of P? What is to the West of A?

Does a single track just go on forever or is there double track, or at least, a passing siding on either side?

Are you manually driving trains in the area shown and are the AI's just pass-thrus?

==Z04
<=====\==Y 02 L=====B04
=======>========\============<...
>=====/==========\ C04
===A04============\==== West Exten ======...


Shouldn't signals B & C be Type 04's?

Between P & "East" there should be a West facing 04 (Q).

The W/E Path should begin at A and end on the passing siding on the East side.
The E/W Path should begin at a signal on the passing siding on the East side and end at Z.


Unless you absolutely need the signals on the main (BCEMNOP etc.) remove them. That way your EIT path is just a simple entry signal to exit signal.




Aside: What did you use to create the track plan representation?
 
What is to the East of P? What is to the West of A?

Does a single track just go on forever or is there double track, or at least, a passing siding on either side?

Are you manually driving trains in the area shown and are the AI's just pass-thrus?

==Z04
<=====\==Y 02 L=====B04
=======>========\============<...
>=====/==========\ C04
===A04============\==== West Exten ======...


Shouldn't signals B & C be Type 04's?

Between P & "East" there should be a West facing 04 (Q).

The W/E Path should begin at A and end on the passing siding on the East side.
The E/W Path should begin at a signal on the passing siding on the East side and end at Z.


Unless you absolutely need the signals on the main (BCEMNOP etc.) remove them. That way your EIT path is just a simple entry signal to exit signal.




Aside: What did you use to create the track plan representation?

Sorry to take so long to get back to you. I put the AI and the EITs on hold in a mad thrash to get the route up on the DLS.
Then I installed 106618 and Surveyor crashes to desktop on Edit Route before the Surveyor interface displays. It appears this may be due to an EIT issue of some sort.

To answer your questions:

East is single track to the end of the line - about 60 miles distant (with 8 stations along the way). West is single track for about 30 miles (passing through four stations along the way) and then becomes double track. Some stations have a single passing track, other have two or more passing tracks. Only one station, Hampton (the next station east of Bear Creek) has an EIT.

I would like to have the AI trains running in the background while a human engineer drive other trains. At this time the AI trains would be end to end pass through runs.

Perhaps B & C should be type 04 along with N and O at the east end. My knowledge of signaling is minimal, I'm known in my local HO scale ops group for running a dark railroad (no signals) using TT&TO.

I don't understand the need for a Q signal between P and East at all.

The W/E path should end on the A/D extension on the east side? I have no tracks labeled "passing siding".
Ditto for the E/W path.
These are in fact the paths that I was attempting to use.

Removing the signals from the main, would mean human train crews would have little warning that they will be diverted off the main - at least no until they are close enough to a turnout to read the switchstand... However, I suppose that removing signals would simplify the EIT's path configurations.

Would you believe I used PhotoShop to make the diagram? I'm paying the monthly Adobe tax so I might as well use the software...

I'll probably start signal & interlocking mud wrassling again in the near future (once I get the route to work again under 106618. Sigh...

Horace Fithers
 
Hi Horace

Removing the signals would render the EITs inoperable. Paths have to start and finish at a signal.

Regards

Brian
 
It appears that there may be a problem with Enhance Interlocking Towers and build 106618. This manifests itself by my BCSJ-507 route failing to load in Surveyor every time. Surveyor seems to be grinding away initialized for Edit Route, but about the time I would expect to see the Surveyor interface pop up on screen, the Trainz program exits to the desktop.

Removing the enhanced interlocking tower from the database has allowed a number of people who experienced the crash, to load, edit, and run on the route.

Is anyone seeing a relationship between the interlock tower objects (or the path triggers) and build 106618?

In this case the EITs in the route would still have been in the route-layer.

N3V has disavowed all knowledge of the secretaries actions with respect to EITs (they're not our code so we ain't gonna do anything about it...)

Regards,

Horace Fithers
 
Normally Pguy content are one of the best working assets you can get. This guy needs a medal for his support and the passion to update with every new game version. Sometimes it's the combination of everything, mostly some script problems.

Did you get "red bugs"? It's a icon which came up when there are problems. See what assets need to change. Everything which is listed there, when you load a route or session, should replaced in route or session layer. For me, this solved many CTDs also for my testers.

This is what I get from N3V the last time I report CTDs.
1. Launcher > Trainz Settings > Dev > Enable advanced debug tools = true
2. Launcher > Trainz Settings > Dev > Show script exception notifications = true
3. Exit out of and restart the Launcher
4. Now load the route/ session having the issue in surveyor
- do you see a red bug icon? Does it include any text?
5. Now load the route/session in driver
- do you see a red bug icon? Does it include any text?

After you get messages by the red bug icon, select all, right click and "show content". Then you have the CM view of the problematic content. Select all of them and deactivate them, restart the game and have a look what happens now.
 
Hi Horace.

May be you are not used to, but third party assets are supported by their authors and not by N3V, so it is normal that they advise you to contact me if you have any problem using EIT on your route and session under build 106618.

When there is any problem, my first recommandation is that you check again (I suppose you have already done it) that you have the last DLS versions for all my used assets on your route.

Today EIT version 71 has been released on DLS : it should not change EITs behavior as it is only a fix for some very specific problems encountered with v70 under Tane SP4 and TRS19 standard (not under the plus versions). But v71 has been tested as usual with Tane SP4 build 105766, TRS19 standard build 105096, TRS19 Plus base build 105100 and last TRS19 Plus version build 106618 with no apparent problems for all the recurrent tests cases I use for final checks before releasing to DLS.

If you have problems when running with the last versions for all assets, it is then recommended that as escd84 told you in the previous post that you have the enable advanced debug tools enabled with show script exceptions enabled, so that if any script encounters an error you will be notfied about what happeneed and many times looking at the detailsof the exception error it may be sufficient to have some idea about thje problem.
After the next step is to enable the option "log debug information" in each EITs so that all the underlying script code will trace the script calls and events in the Trainz log, which may help to find what was the last things the scripts have done before the problem occured.

And finaly, you can always also send me a cdp with your route and session (with also all locally modified assets used that I cannot download form DLS) with also a description on how to reproduce the problem so that I can try to repro your problem on my test configuration to find what may have happened and if needed develop a fix if there is flaw in the underlying script code …

I will send you by PM my email adress so that if needed you can send me a cdp with what I need to look at …

As I live in France and I am currently locked down at home at least until May 11th, I should have some available time to look more in details to your problem in the next days and weeks ...

Regards.
Pierre.
 
Last edited:
This is what I get from your session <kuid:884720:100346> BCSJ-507 - Default in surveyor. Unfortunately, as you can see, partly in German. But you see also some problems with Interlocking towers (green marked). But the cause is nothing bad. You have some signals in different towers which causes the error, but that can be repaired quickly. Pguy can certainly help you there. The others then have to be examined more closely. But that relates to my version of the game and my database. Ultimately is important what is displayed to you in your game.

This assets produce the script problems in my version.

<kuid2:82412:300675:1>,<kuid:648132:89851>,<kuid:216325:100054>,<kuid:421503:15012>,<kuid2:82412:300676:1>,<kuid2:82412:300674:1>,<kuid:438995:1169>

Part I

; <NULL> Tile[-11,47](3)> Ein oder mehrere Elemente konnten nicht vollständig geladen werden. Klicken sie auf 'Mehr' für detaillierte Informationen.- <kuid:648132:89851> Read error when loading item 11405678 (classID: mIND, assetID: <kuid:648132:89851>, worldListID:3 result: 0, read 103 bytes, expected 166)
; <NULL> Tile[-34,111](3)> Ein oder mehrere Elemente konnten nicht vollständig geladen werden. Klicken sie auf 'Mehr' für detaillierte Informationen.
- <kuid:648132:89851> Read error when loading item 12919360 (classID: mIND, assetID: <kuid:648132:89851>, worldListID:3 result: 0, read 111 bytes, expected 174)
; <NULL> Tile[0,-22](3)> Ein oder mehrere Elemente konnten nicht vollständig geladen werden. Klicken sie auf 'Mehr' für detaillierte Informationen.
- <kuid:648132:89851> Read error when loading item 3557348 (classID: mIND, assetID: <kuid:648132:89851>, worldListID:3 result: 0, read 102 bytes, expected 165)
; <NULL> Tile[3,-13](3)> Ein oder mehrere Elemente konnten nicht vollständig geladen werden. Klicken sie auf 'Mehr' für detaillierte Informationen.
- <kuid:648132:89851> Read error when loading item 3392894 (classID: mIND, assetID: <kuid:648132:89851>, worldListID:3 result: 0, read 97 bytes, expected 160)
; <NULL> Tile[0,-10](3)> Ein oder mehrere Elemente konnten nicht vollständig geladen werden. Klicken sie auf 'Mehr' für detaillierte Informationen.
- <kuid:648132:89851> Read error when loading item 3012624 (classID: mIND, assetID: <kuid:648132:89851>, worldListID:3 result: 0, read 99 bytes, expected 162)
- <NULL> Signal.SetSignalStateEx> Insufficient rights. This Signal (Signal 13305064) is owned by another object (Interlocking Tower 13307162) and cannot be modified. (file signal.gs)
; <NULL> Script class: EnhancedInterlockingTowerPath
; <NULL> Object: GSGameObject{0000000040C5D330; class:GSClass{00000000355CE1D8: EnhancedInterlockingTowerPath}, refcount:4}
; <NULL> Script callstack
; <NULL> function $bool@Signal::SetSignalStateEx(SecurityToken,int,string), line -1
; <NULL> function $bool@EnhancedInterlockingTowerPath::SetObjectsOwned2(SecurityToken,bool,bool), line 1286
; <NULL> function $void@EnhancedInterlockingTowerPath::SetObjectsOwned(SecurityToken,bool,bool), line 1600
- <NULL> Signal.SetSignalStateEx> Insufficient rights. This Signal (Signal 13305064) is owned by another object (Interlocking Tower 13307162) and cannot be modified. (file signal.gs)
; <NULL> Script class: EnhancedInterlockingTowerPath
; <NULL> Object: GSGameObject{0000000040C5DBF0; class:GSClass{00000000355CE1D8: EnhancedInterlockingTowerPath}, refcount:4}
; <NULL> Script callstack
; <NULL> function $bool@Signal::SetSignalStateEx(SecurityToken,int,string), line -1
; <NULL> function $bool@EnhancedInterlockingTowerPath::SetObjectsOwned2(SecurityToken,bool,bool), line 1286
; <NULL> function $void@EnhancedInterlockingTowerPath::SetObjectsOwned(SecurityToken,bool,bool), line 1600
- <NULL> Signal.SetSignalStateEx> Insufficient rights. This Signal (Signal 13305074) is owned by another object (Interlocking Tower 13307162) and cannot be modified. (file signal.gs)
; <NULL> Script class: EnhancedInterlockingTowerPath
; <NULL> Object: GSGameObject{000000006AC51310; class:GSClass{00000000355CE1D8: EnhancedInterlockingTowerPath}, refcount:4}
; <NULL> Script callstack
; <NULL> function $bool@Signal::SetSignalStateEx(SecurityToken,int,string), line -1
; <NULL> function $bool@EnhancedInterlockingTowerPath::SetObjectsOwned2(SecurityToken,bool,bool), line 1286
; <NULL> function $void@EnhancedInterlockingTowerPath::SetObjectsOwned(SecurityToken,bool,bool), line 1600
- <NULL> Signal.SetSignalStateEx> Insufficient rights. This Signal (Signal 13305074) is owned by another object (Interlocking Tower 13307162) and cannot be modified. (file signal.gs)
; <NULL> Script class: EnhancedInterlockingTowerPath
; <NULL> Object: GSGameObject{000000006AC51AF0; class:GSClass{00000000355CE1D8: EnhancedInterlockingTowerPath}, refcount:4}
; <NULL> Script callstack
; <NULL> function $bool@Signal::SetSignalStateEx(SecurityToken,int,string), line -1
; <NULL> function $bool@EnhancedInterlockingTowerPath::SetObjectsOwned2(SecurityToken,bool,bool), line 1286
; <NULL> function $void@EnhancedInterlockingTowerPath::SetObjectsOwned(SecurityToken,bool,bool), line 1600

 
Part II from the script exception notification

; <NULL> $savegame_err_unknown_vers
; <NULL> ReplicationManager::LoadReplicationNodesFromStream
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569827 was without a Train, placed in dummy Train 147
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569821 was without a Train, placed in dummy Train 145
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569825 was without a Train, placed in dummy Train 143
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569823 was without a Train, placed in dummy Train 141
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569817 was without a Train, placed in dummy Train 139
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569819 was without a Train, placed in dummy Train 137
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569891 was without a Train, placed in dummy Train 135
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569889 was without a Train, placed in dummy Train 133
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569885 was without a Train, placed in dummy Train 131
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569881 was without a Train, placed in dummy Train 129
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569879 was without a Train, placed in dummy Train 127
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569877 was without a Train, placed in dummy Train 125
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569883 was without a Train, placed in dummy Train 123
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569893 was without a Train, placed in dummy Train 121
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569887 was without a Train, placed in dummy Train 119
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569873 was without a Train, placed in dummy Train 117
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569869 was without a Train, placed in dummy Train 115
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569861 was without a Train, placed in dummy Train 113
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569867 was without a Train, placed in dummy Train 111
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569859 was without a Train, placed in dummy Train 109
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569865 was without a Train, placed in dummy Train 107
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569857 was without a Train, placed in dummy Train 105
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569875 was without a Train, placed in dummy Train 103
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569871 was without a Train, placed in dummy Train 101
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569863 was without a Train, placed in dummy Train 99
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569855 was without a Train, placed in dummy Train 97
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569851 was without a Train, placed in dummy Train 95
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569849 was without a Train, placed in dummy Train 93
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569853 was without a Train, placed in dummy Train 91
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569845 was without a Train, placed in dummy Train 89
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569841 was without a Train, placed in dummy Train 87
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569835 was without a Train, placed in dummy Train 85
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569831 was without a Train, placed in dummy Train 83
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569837 was without a Train, placed in dummy Train 81
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569833 was without a Train, placed in dummy Train 79
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569829 was without a Train, placed in dummy Train 77
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569847 was without a Train, placed in dummy Train 75
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569843 was without a Train, placed in dummy Train 73
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 10569839 was without a Train, placed in dummy Train 71
- <NULL> TrainControls::SetReplicationData> Failed to load vehicle spec <kuid:216325:100054>
- <kuid:216325:100054> TADGetSpecFromAsset> no local file available for <kuid:216325:100054> [<kuid:216325:100054>]
- <kuid:216325:100054> TADGetSpecFromAsset> Unknown asset <kuid:216325:100054>
; <kuid:216325:100054> Lade Objekt <kuid:216325:100054>
! <kuid2:82412:300676:1> ProductSpec> missing 'icon-texture' tag for product '<kuid2:82412:300676:1> "TUME-300676-Steel-Pipes"'
; <kuid2:82412:300676:1> Lade Objekt <kuid2:82412:300676:1>
! <kuid2:82412:300675:1> ProductSpec> missing 'icon-texture' tag for product '<kuid2:82412:300675:1> "TUME-300675-Steel-Pipes"'
; <kuid2:82412:300675:1> Lade Objekt <kuid2:82412:300675:1>
! <kuid2:82412:300674:1> ProductSpec> missing 'icon-texture' tag for product '<kuid2:82412:300674:1> "TUME-300674-Steel-Pipes"'
; <kuid2:82412:300674:1> Lade Objekt <kuid2:82412:300674:1>
- <NULL> TrainControls::SetReplicationData> Failed to load vehicle spec <kuid:438995:1169>
- <kuid:438995:1169> TADGetSpecFromAsset> no local file available for <kuid:438995:1169> [<kuid:438995:1169>]
- <kuid:438995:1169> TADGetSpecFromAsset> Unknown asset <kuid:438995:1169>
; <kuid:438995:1169> Lade Objekt <kuid:438995:1169>
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309046 was without a Train, placed in dummy Train 59
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309118 was without a Train, placed in dummy Train 57
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309048 was without a Train, placed in dummy Train 55
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309044 was without a Train, placed in dummy Train 53
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309116 was without a Train, placed in dummy Train 51
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309120 was without a Train, placed in dummy Train 49
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309092 was without a Train, placed in dummy Train 47
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309088 was without a Train, placed in dummy Train 45
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309094 was without a Train, placed in dummy Train 43
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309090 was without a Train, placed in dummy Train 41
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309086 was without a Train, placed in dummy Train 39
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309078 was without a Train, placed in dummy Train 37
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309072 was without a Train, placed in dummy Train 35
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309080 was without a Train, placed in dummy Train 33
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309082 was without a Train, placed in dummy Train 31
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309074 was without a Train, placed in dummy Train 29
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309084 was without a Train, placed in dummy Train 27
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309076 was without a Train, placed in dummy Train 25
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309062 was without a Train, placed in dummy Train 23
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309070 was without a Train, placed in dummy Train 21
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309068 was without a Train, placed in dummy Train 19
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309066 was without a Train, placed in dummy Train 17
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309064 was without a Train, placed in dummy Train 15
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309058 was without a Train, placed in dummy Train 13
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309054 was without a Train, placed in dummy Train 11
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309052 was without a Train, placed in dummy Train 9
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309050 was without a Train, placed in dummy Train 7
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309060 was without a Train, placed in dummy Train 5
- <NULL> TrainControls::ValidateRemovedVehicles> Vehicle 13309056 was without a Train, placed in dummy Train 3
- <NULL> TrainControls::SetReplicationData> Failed to load vehicle spec <kuid:421503:15012>
 
Part III from the script exception notification

- <kuid:421503:15012> TADGetSpecFromAsset> no local file available for <kuid:421503:15012> [<kuid:421503:15012>]
- <kuid:421503:15012> TADGetSpecFromAsset> Unknown asset <kuid:421503:15012>
; <kuid:421503:15012> Lade Objekt <kuid:421503:15012>
; <NULL> Spielspeicherwarnung: Ein oder mehrere Knoten konnten während des Ladens nicht erstellt werden.
- <NULL> 2-D-0: doesn't exist
- <NULL> 2-5-0: doesn't exist
- <NULL> 2-1-0: doesn't exist
- <NULL> Signal.SetSignalStateEx> Insufficient rights. This Signal (Signal 13305064) is owned by another object (Interlocking Tower 13307162) and cannot be modified. (file signal.gs)
; <NULL> Script class: EnhancedInterlockingTowerPath
; <NULL> Object: GSGameObject{0000000040C5D330; class:GSClass{00000000355CE1D8: EnhancedInterlockingTowerPath}, refcount:4}
; <NULL> Script callstack
; <NULL> function $bool@Signal::SetSignalStateEx(SecurityToken,int,string), line -1
; <NULL> function $bool@EnhancedInterlockingTowerPath::SetObjectsOwned2(SecurityToken,bool,bool), line 1286
; <NULL> function $void@EnhancedInterlockingTowerPath::SetObjectsOwned(SecurityToken,bool,bool), line 1600
- <NULL> Signal.SetSignalStateEx> Insufficient rights. This Signal (Signal 13305064) is owned by another object (Interlocking Tower 13307162) and cannot be modified. (file signal.gs)
; <NULL> Script class: EnhancedInterlockingTowerPath
; <NULL> Object: GSGameObject{0000000040C5DBF0; class:GSClass{00000000355CE1D8: EnhancedInterlockingTowerPath}, refcount:4}
; <NULL> Script callstack
; <NULL> function $bool@Signal::SetSignalStateEx(SecurityToken,int,string), line -1
; <NULL> function $bool@EnhancedInterlockingTowerPath::SetObjectsOwned2(SecurityToken,bool,bool), line 1286
; <NULL> function $void@EnhancedInterlockingTowerPath::SetObjectsOwned(SecurityToken,bool,bool), line 1600
- <NULL> Signal.SetSignalStateEx> Insufficient rights. This Signal (Signal 13305074) is owned by another object (Interlocking Tower 13307162) and cannot be modified. (file signal.gs)
; <NULL> Script class: EnhancedInterlockingTowerPath
; <NULL> Object: GSGameObject{000000006AC51310; class:GSClass{00000000355CE1D8: EnhancedInterlockingTowerPath}, refcount:4}
; <NULL> Script callstack
; <NULL> function $bool@Signal::SetSignalStateEx(SecurityToken,int,string), line -1
; <NULL> function $bool@EnhancedInterlockingTowerPath::SetObjectsOwned2(SecurityToken,bool,bool), line 1286
; <NULL> function $void@EnhancedInterlockingTowerPath::SetObjectsOwned(SecurityToken,bool,bool), line 1600
- <NULL> Signal.SetSignalStateEx> Insufficient rights. This Signal (Signal 13305074) is owned by another object (Interlocking Tower 13307162) and cannot be modified. (file signal.gs)
; <NULL> Script class: EnhancedInterlockingTowerPath
; <NULL> Object: GSGameObject{000000006AC51AF0; class:GSClass{00000000355CE1D8: EnhancedInterlockingTowerPath}, refcount:4}
; <NULL> Script callstack
; <NULL> function $bool@Signal::SetSignalStateEx(SecurityToken,int,string), line -1
; <NULL> function $bool@EnhancedInterlockingTowerPath::SetObjectsOwned2(SecurityToken,bool,bool), line 1286
; <NULL> function $void@EnhancedInterlockingTowerPath::SetObjectsOwned(SecurityToken,bool,bool), line 1600
 
Hi.

First reaction to the last messages posted by escd84.

- the read error when loading an item error is not good at all, as it means that the saved route or session is partially corrupted with some missing data inside the file, preventing loading some of the saved assets. Depending on the assets not being reloaded many things may happen to the route and session reloaded … it may explain some of the other problems with vehicles without a train, which is also a sign of some corrupted data in the route/session file ...
- the errors about insufficient rights in EIT should not happen, except if a target signal belongs to two distinct paths in two distinct static towers. If you use dynamic tower this should not be a problem encountered except for entry signals that can only belong to paths insisde the same tower. Normally these script errors are only registered in the log and should not make TRS2019 crash to desktop ...

Difficult to say anything more without having a copy of the route and session (with also any locally modified assets not available on DLS) to try to recover the route/session from these read errors.
The first step is to re obtain a safe uncorrupted route/session file (with no read errors). This can either be done by reloading a previous backup of the route/session if available, or to try by disabling the not reloadable assets to reload the route/session with some missing assets, that you will need to purge in a second step to obtain this safe uncorrupted route/session files. You will need then to save this new route/session and the last step will be to re add the missing assets but starting from a safe uncorrupted situation and with also a backup to restart if they are again some new problems.

Sorry to have not better news, but corrupted route/session data file are always bad news to process if you have not a recent safe backup to restart from.

Only my advice.
Regards.
Pierre.

*** EDIT *** 19:25 CEE Time
I have just found your session on DLS and I am currently downloading it and all its dependencies to try to repro the problem and see what can be done. Sorry but I did not understand before that everything was available on DLS and I was waiting for a cdp which is the common method used by other route/session creators to send me things to look at when the route/session is not available on DLS ...
 
Last edited:
Okay, installed the session <kuid:884720:100346> BCSJ-507 - Default in another database with exactly the same dependencies i have and only get the warnings from the interlocking tower. No trace of the others. No CTDs in this database, only really bad performance in surveyor but smooth as hell in driver.

The game is magic! Sooo....

tenor.gif
 
Hi Pierre,

Version 71 fixed the crash to desktop problem with the BCSJ-507 route.

Thanks for your hard work on this.

Horace Fithers
 
Back
Top