Svenska 3D-Tåg - Forum  
 

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.

Gå tillbaka   Svenska 3D-Tåg - Forum > N3V Trainz > Scenarios och scripts

 
 
Ämnesverktyg Visningsalternativ
Gammal 2011-01-22, 14:20   #10
ngtutp
Medlem
 
Reg.datum: Oct 2005
Ort: Sävsjö
Inlägg: 16
Standard

Citat:
Ursprungligen postat av svenolov Visa inlägg
Nu har jag tittat på koden och gjort ett tillägg som jag har testat. Det fungerar bra.

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()
    {
Sen måste du lägga till en "event handler" i wait() lopen. Allt mellan dom streckade linjerna ska med. Markerad med röd text. Kopiera och klistra.
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:
      {
-



Hej

Det fungerade jättebra
Tack så oerhört mycket

Hälsningar Robin
ngtutp besöker inte forumet just nu   Svara med citat
 


Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av
Forumhopp



Alla tider är GMT +2. Klockan är nu 17:41.


Powered by vBulletin® Version 3.7.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
© Svenska 3D-Tåg 2001-2009