![]() |
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: Oct 2005
Ort: Sävsjö
Inlägg: 16
|
![]()
Hej
Kan en trigger känna av ett tåg även om de står stilla på en trigger? Försöker få det att funka i driver setup att tåg a skall vänta på att tåg b skall aktivera trigger c. Problemet är att om tåg b redan står på triggern så fattar inte tåg a det i sitt körschema ![]() Tack på förhand ![]() |
![]() |
![]() |
![]() |
#2 |
Medlem
Reg.datum: Oct 2010
Ort: Filipstad
Inlägg: 239
|
![]()
Kan du inte prova att köra loket precis förbi triggern, och där stanna? Då funkar det garanterat.
Jag är rätt säker på att loket måste passera innan den löser ut. Såg plötsligt att det inte var så du menade riktigt, men det går att ställa in triggern så att den gäller endast "en gång". Om du kryssar ur den rutan, så kanske det funkar? Senast redigerad av Hobo den 2011-01-21 klockan 12:44. |
![]() |
![]() |
![]() |
#3 | |
Medlem
Reg.datum: Oct 2005
Ort: Sävsjö
Inlägg: 16
|
![]() Citat:
Det går inte välja om du lägger in det i körschemat för en förare i "driver setup" ![]() |
|
![]() |
![]() |
![]() |
#4 | |
Medlem
Reg.datum: Apr 2004
Ort: Lom - Norway
Inlägg: 1 272
|
![]() Citat:
2. Eller att tåg b redan har stannat på triggern innan du ger instruktionen att tåg a ska vänta. Rätt? Om något av ovanstående påståenden är rätt så måste triggern sända ett meddelande efter det att tåg a får instruktionen att vänta. Och det gör den inte. Triggern sänder sitt meddelande när lok b stannar, så tåg a måste ligga i "vänteläge" just i det ögonblicket. Så svaret på din fråga är nej, om man inte ger den instruktionen att göra så (i ett skript). En trigger (som namnet antyder) triggar på dynamiska händelser, den ligger inte och sänder meddelanden hela tiden. Det är tre händelser som en trigger känner av. Meddelandet sänds endast en gång per händelse. 1. Enter. Sänder ett meddelande när ett tåg kommmer innanför triggerns radie. 2. Stopped. Sänder ett meddelande när ett tåg stannar och befinner sig innanför radien. Om tåget rör sig efter denna händelse och stannar igen utan att ha lämnat triggern, så sänds meddelandet på nytt. 3. Leave. Sänder ett meddelande när ett tåg lämnar triggerns radie. EDIT: En sak till som är bra att känna till när det gäller en trigger. En triggers avkänningsområde är en cirkel (anges med en radie). Det betyder att den känner av ett område, snarare än en sträcka på spåret. Den kan alltså känna av flera spår, om spåren ligger inom samma cirkel (radie). Om man bara är intresserad av vad som händer på ett visst spår, ska man använda en Trackmark istället. Avkänningsområdet för en Trackmark anges också med en radie, men den känner bara av spåret som den är placerad på. En Trackmark känner också av rikningen i förhållande till ett tåg, medan en Trigger inte är riktningskänslig.
__________________
svenolov I Trainz vet man att det omöjliga är möjligt (bevingade ord myntade av Nisse). Senast redigerad av svenolov den 2011-01-21 klockan 15:16. |
|
![]() |
![]() |
![]() |
#5 | |
Medlem
Reg.datum: Oct 2005
Ort: Sävsjö
Inlägg: 16
|
![]() Citat:
Ditt andra påstående är rätt att tåg b redan står på trigger c när instruktionen för tåg a att han skall vänta på att tåg b skall trigga trigger c. Är det lätt att ändra i scriptet så han ligger å sänder hela tiden då ett tåg befinner sig på en trigger? Tack på förhand ![]() |
|
![]() |
![]() |
![]() |
#6 | |
Medlem
Reg.datum: Apr 2004
Ort: Lom - Norway
Inlägg: 1 272
|
![]() Citat:
__________________
svenolov I Trainz vet man att det omöjliga är möjligt (bevingade ord myntade av Nisse). |
|
![]() |
![]() |
![]() |
#7 | |
Medlem
Reg.datum: Oct 2005
Ort: Sävsjö
Inlägg: 16
|
![]() Citat:
Jag använder mig utav "WaitForTrigger" <KUID2:57344:80001:2> Ha de så bra ![]() |
|
![]() |
![]() |
![]() |
#8 |
Medlem
Reg.datum: Apr 2004
Ort: Lom - Norway
Inlägg: 1 272
|
![]()
Ok, jag ska titta på den och återkommer med ett bättre svar.
__________________
svenolov I Trainz vet man att det omöjliga är möjligt (bevingade ord myntade av Nisse). |
![]() |
![]() |
![]() |
#9 | |
Medlem
Reg.datum: Apr 2004
Ort: Lom - Norway
Inlägg: 1 272
|
![]() Citat:
Komandot testar nu om det redan står ett tåg på triggern. Om det står ett tåg där så händer detta. 1. Om man valt "Any Train" så avslutas kommandot direkt. 2. Om man har angett ett visst lok, och loket överenstämmer med tågets lok, så avslutas kommandot. Komandot uppför sig alltså precis likadant, som om/när tåget anländer till triggern. Ingenting av originalkoden är ändrad. Det är bara två tillägg som behöver göras. 1. Klona kommandot först, så att det får din kuid. 2. Redigera filen waitfortriggerschedulecommand.gs enligt nedan. Efter raden Message msg; och före raden wait() lägger du in följande rad. Markerad med röd text. Kod:
Message msg; train.PostMessage(train, "Train", "CheckTrigger", 2.0); // added by Sven wait() { Obs! De två första och de två sista raderna i nedanstående kod, är från originalkoden. Kod:
wait() { // Check trigger added 110121 by Sven // ======================================================================================= on "Train", "CheckTrigger": { MapObject nextItem = null; Vehicle vehicle = null; GSTrackSearch gst = trig.BeginTrackSearch(true); int distance = gst.GetDistance(); while (!vehicle and (distance < 5)) { nextItem = gst.SearchNext(); distance = gst.GetDistance(); if (nextItem) vehicle = cast<Vehicle>nextItem; } if (!vehicle) { gst = trig.BeginTrackSearch(false); distance = gst.GetDistance(); while (!vehicle and (distance < 5)) { nextItem = gst.SearchNext(); distance = gst.GetDistance(); if (nextItem) vehicle = cast<Vehicle>nextItem; } } if (vehicle) { Train v_train = vehicle.GetMyTrain(); if (v_train and v_train.IsStopped()) { Locomotive loco = v_train.GetFrontmostLocomotive(); if (loco and (loco.GetName() == trainId)) { Interface.Print(loco.GetName()+" has entered trigger ''" +trig.GetName()+"''"); break; } else if (trainId == "") { Interface.Print("A train has entered trigger ''" +trig.GetName()+"''"); break; } } } train.PostMessage(train, "Train", "CheckTrigger", 2.0); continue; } // Check trigger end. // ======================================================================================= on "Object", "Enter", msg: {
__________________
svenolov I Trainz vet man att det omöjliga är möjligt (bevingade ord myntade av Nisse). Senast redigerad av svenolov den 2011-01-22 klockan 03:34. |
|
![]() |
![]() |
![]() |
#10 | |
Medlem
Reg.datum: Oct 2005
Ort: Sävsjö
Inlägg: 16
|
![]() Citat:
Hej Det fungerade jättebra ![]() Tack så oerhört mycket ![]() Hälsningar Robin |
|
![]() |
![]() |