![]() |
Om det här är ditt första besök, se till att gå till vår FAQ (finns även länk till FAQ i navigeringsmenyn ovan). Du kan behöva att registrera dig innan du kan posta (finns även en länk till registrering i navigeringsmenyn ovan). För att titta på inlägg, välj det forum som du vill besöka från de som är listade nedan. |
|
![]() |
|
Ämnesverktyg | Visningsalternativ |
|
![]() |
#1 | |||
Medlem
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
|
![]() Citat:
Att alla signaler skickar meddelanden när de slår om är inget man kan göra något åt, det är en del av den underliggande koden i Trainz som sköter. Varje gång man ställer om en signal så kommer den att tala om för alla som lyssnar att den har slagits om. Detta måste den ju göra för att föregående signal ska kunna märka att nästa signal slagits om och att den därför bör utvärdera om den skall slå om till annan signalbild också. Så teoretiskt sett borde man få samma problem med message overflows med andra signaler än de som har Svenolovs script, bara man har tillräckligt många av dem på sin bana. Svenolovs script fungerar ganska bra skulle jag vilja säga, särskilt för den äldre principen. Problemet är att Trainz begränsar antal meddelanden vilket skiter sig vid uppstart. Men när signalerna väl är igång så är det ju inga problem, då skickas bara enstaka meddelanden när en signal slås om. Det borde teoretiskt sett gå att lösa så att meddelandeköerna inte överflödas om man hittar rätt i hur signalerna initialiseras, så man kan fördröja den första uppdateringen, det är ju vad jag försöker att göra. Gäller bara att hitta hur allt sitter ihop. Jag jobbar vidare på det! ![]() För att sökningar följer hur växlar ligger vad det verkar. Så för att kolla båda spåren i en växel så måste man först söka på det spåret växeln ligger på, sedan lägga om den en gång för att söka längs det andra spåret och till sist lägga tillbaka växeln för att den ska ha rätt läge vid sessionens start. Citat:
Citat:
Gör det!
__________________
-k- |
|||
![]() |
![]() |
![]() |
#2 |
Medlem
Reg.datum: Mar 2006
Ort: Ljungby, Kronoberg, Sverige
Inlägg: 23
|
![]()
Tack för svaret och tack för ditt engagemang.
|
![]() |
![]() |
![]() |
#3 |
Medlem
Reg.datum: May 2011
Ort: Linköping
Inlägg: 32
|
![]()
Följer diskussionen med intresse och stannade till lite vid linjeplatssignaler.
Jag har en linjeplatssignal på min bana och gjorde ett enkelt experiment. Först öppnade jag sessionen i Surveyor med linjeplatssignalen på sin plats. Resultat: timeout på rad 185 185.jpg Därefter plockade jag bort signalen och öppnade sessionen igen i Surveyor. Resultat: timeout på rad 104 104.jpg Är ::FindApproachingTrains() ny i detta sammanhang? Slutsats? Tja, det är skillnad med och utan linjeplatssignal. Kanske någon annan kan komma fram till något djupare?! /Magnus |
![]() |
![]() |
![]() |
#4 | |
Medlem
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
|
![]() Citat:
__________________
-k- |
|
![]() |
![]() |
![]() |
#5 |
Medlem
Reg.datum: May 2011
Ort: Linköping
Inlägg: 32
|
![]()
Ok, ingen egentlig skillnad således.
Jag sökte också på Trainz forum och hittade följande inlägg: About timeout in scripts Det bekräftar det som korvtiger skrev i inlägg #29 i denna tråd: att man har begränsat den tid scriptet får köra innan det blir timeout och att man kortat ned denna tid i TANE jämfört med tidigare versioner av spelet. Avsikten tycks vara att förmå script- programmerarna att byta ut ineffektiva rutiner mot effektiva. Problemet med detta är att vissa uppgifter tar lång tid inte för att scriptet är dåligt programmerat eller använder ineffektiva rutiner, utan för att uppgiften i sig är komplex och kräver många beräkningar. Är det någon som vet om scriptet kan "pausa" på något sätt för att, så att säga, köpa sig ny tid innan det blir timeout? /Magnus |
![]() |
![]() |
![]() |
#6 | |
Medlem
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
|
![]() Citat:
Men då kan vi konstatera med säkerhet (vilket jag redan gjort efter egna tester) att timeout och message overflow inte är kopplade till varandra. Vi vet också varför vi har timeoutbuggen, vilket är ett steg framåt. Ska fråga på Trainz-forum om vad man bör göra när man faktiskt har script som behöver kanske flera sekunder att initialiseras. Men det borde gå att lösa på ett eller annat sätt att "köpa sig tid" som du säger. Antingen genom att lägga in ett par Sleep(0.001); så att scriptet sover/lämnar över CPU:n till andra trådar om det fungerar. I andra fall så har flera idéer som måste fungera, annars hade vi fått fel på vart och vartannat script. Är nästan säker på att det går att lösa i vilket fall, frågan är bara hur lätt det är att anpassa Svenolovs script utan att ha sönder något.
__________________
-k- |
|
![]() |
![]() |