trensim.comSimulación Ferroviaria
   

Señal repetidora

Objetos para incorporar en rutas MSTS

Moderador: Moderadores

Señal repetidora

Notapor edsolis » Dom Dic 11, 2005 3:08 pm

Hola a todos,

Quisiera incorporar a una ruta una señal luminosa repetidora, es decir, que repita el estado en que se encuentre la siguiente señal. ¿Alguien sabe como implementarla?

Saludos,
Objetivo: jugar a los trenes.
Avatar de Usuario
edsolis
Bibliotecario
 
Mensajes: 2492
Registrado: Sab Feb 26, 2005 1:48 pm
Ubicación: 7ª Zona

Notapor Marc » Dom Dic 11, 2005 3:55 pm

La señal indicadora de salida (http://www.trensim.com/lib/pafiledb.php?lib=msts&action=file&id=467) la configuré como DISTANCE.

Código: Seleccionar todo
   SignalType ( "ESRNIndSal"
      SignalFnType ( DISTANCE )
      SignalLightTex ( "indsaltex" )

      SignalLights ( 1
         SignalLight ( 0 "White Light"
            Position ( 0 2.9 0.21 )
            Radius ( 0.3 )
         )
      )
      SignalDrawStates ( 2
         SignalDrawState ( 0
            "Unlit"
         )
         SignalDrawState ( 1
            "Pass"
            DrawLights ( 1
               DrawLight ( 0 )
            )   
         )
      )
      SignalAspects ( 2
         SignalAspect ( APPROACH_1         "Unlit" )
         SignalAspect ( CLEAR_1            "Pass" )
      )
   )


En cualquier caso te sugiero, si no lo has hecho ya, consultar la documentacion de Pere Comas: http://www.trensim.com/lib/pafiledb.php?lib=msts&action=file&id=60
Avatar de Usuario
Marc
grupo TrenSim
 
Mensajes: 4284
Registrado: Jue Ago 28, 2003 11:24 pm
Ubicación: Barcelona

Notapor edsolis » Dom Dic 11, 2005 4:35 pm

Muchas gracias Marc,

Creo que el ejemplo que me das es justo lo que necesitaba, voy a probar si soy capaz de aplicarlo a la señal que quiero implementar.

Saludos,
Avatar de Usuario
edsolis
Bibliotecario
 
Mensajes: 2492
Registrado: Sab Feb 26, 2005 1:48 pm
Ubicación: 7ª Zona

Notapor edsolis » Dom Dic 11, 2005 6:15 pm

Mi gozo en un pozo:

Modificar el sigcfg.dat está chupao pero el sigscr.dat es otra cosa. No tengo ni idea de cómo modificar el script para que la señal se comporte como repetidora.
Avatar de Usuario
edsolis
Bibliotecario
 
Mensajes: 2492
Registrado: Sab Feb 26, 2005 1:48 pm
Ubicación: 7ª Zona

Notapor Pintotren » Dom Dic 11, 2005 7:15 pm

Hola a todos.

Edsolis, podías indicar cuantos colores puede mostrar la señal que quieres que sea repetida.

Saludos.
José Luis.
Pintotren
 
Mensajes: 192
Registrado: Dom Jun 26, 2005 11:03 am
Ubicación: Pinto (Madrid)

Notapor edsolis » Dom Dic 11, 2005 7:36 pm

Pintotren,

Colores sólo uno, blanco, pero la señal tiene tres aspectos posibles:
1.- Preaviso de STOP.
2.- Preaviso de APPROACH_2 ó APPROACH_3.
3.- Preaviso de CLEAR_2.

Adjunto imagen aclaratoria.
Adjuntos
JpRepeater.GIF
JpRepeater.GIF (1.9 KiB) Visto 8093 veces
Objetivo: jugar a los trenes.
Avatar de Usuario
edsolis
Bibliotecario
 
Mensajes: 2492
Registrado: Sab Feb 26, 2005 1:48 pm
Ubicación: 7ª Zona

Notapor Pintotren » Dom Dic 11, 2005 8:22 pm

Hola de nuevo.
Partiendo de la base de que en el archivo Sigcfg esté todo correctamente configurado.

Prueba a hacer esto:

Modifica el SCRIPT a partir de esta lienea
next_state=next_sig_lr (SIGFN_NORMAL);

IF (next_state ==# SIGASP_STOP)
{
state =SIGASP_STOP;
}
else if next_state ==# SIGASP APPROACH_2 || next_state ==# SIGASP_APPROACH_3)
{
state = SIGASP_APPROACH_2;
}
else
{
state = SIGASP_CLEAR_2;
}
}// Get draw state
draw_state = def_draw_state ( state );

Hace algún tiempo hice algo parecido a lo que tu quieres y creo que era así.
Vamos a ver si hay suerte y si no seguiremos estudiando.

Saludos.

José Luis.
Pintotren
 
Mensajes: 192
Registrado: Dom Jun 26, 2005 11:03 am
Ubicación: Pinto (Madrid)

Notapor Marc » Dom Dic 11, 2005 8:39 pm

Del script de la señal indicadora de salida,
Código: Seleccionar todo
SCRIPT ESRNIndSal

// Señal indicadora de salida: muestra el estado de la señal de salida

   extern float   block_state ();
   extern float   route_set ();
   extern float   next_sig_lr ();
   extern float   def_draw_state ();
   extern float   state;
   extern float   draw_state;
   extern float   enabled;
   float      next_state;

   next_state = next_sig_lr (SIGFN_NORMAL);
   

   if ( next_state ==# SIGASP_STOP || next_state ==# SIGASP_STOP_AND_PROCEED)
   {
      state = SIGASP_APPROACH_1;
   }
   else
   {
      state = SIGASP_CLEAR_1;
   }

   
// Get draw state
   draw_state = def_draw_state (state);



Tienes que fijarte en el siguiente fragmento del código anterior, del que he numerado las líneas:

Código: Seleccionar todo
1:   next_state = next_sig_lr (SIGFN_NORMAL);
   

2:   if ( next_state ==# SIGASP_STOP || next_state ==# SIGASP_STOP_AND_PROCEED)
      {
3:      state = SIGASP_APPROACH_1;
      }
4:   else
      {
5:      state = SIGASP_CLEAR_1;
      }


La primera línea debes dejarla tal cual, obtiene el estado de la señal siguiente.
La línea 2 evalua si la señal siguiente está en Parada o en Rebase Autorizado (según las señales tipo RENFE). Si dicha condición es cierta se ejecuta la línea 3 y sino la 5. Dichas líneas determinan el aspecto que presentará nuestra propia señal de acuerdo con lo especificado en el sigcfg.dat de más arriba.

Por tanto, teniendo en cuenta lo que intentas hacer, esa parte del código podría quedar más o menos así:

Código: Seleccionar todo
1:   next_state = next_sig_lr (SIGFN_NORMAL);
   

2:   if ( next_state ==# SIGASP_STOP)
      {
3:      state = SIGASP_APPROACH_1;
      }
4:   else if ( next_state ==# APPROACH_2 || next_state ==# APPROACH_3 )
      {
5:      state = SIGASP_APPROACH_2;
      }
6:   else
      {
7:      state = SIGASP_CLEAR_1;
      }


Ten en cuenta que las líneas 3, 5 y 7 deberás cambiarlas por lo que hayas configurado en el sigcfg.dat.
[date=1134330071]
José Luis: he visto que mientras escribía la respuesta has contestado, pero veo que esencialmente decimos lo mismo :wink:
Avatar de Usuario
Marc
grupo TrenSim
 
Mensajes: 4284
Registrado: Jue Ago 28, 2003 11:24 pm
Ubicación: Barcelona

Notapor edsolis » Dom Dic 11, 2005 10:41 pm

Tras varios avisos de error al cargar el simulador causados por la falta de algún símbolo y efectuar las oportunas correcciones, el script ha quedado como sigue, pero ahora el MSTS no carga la ruta, no lo entiendo:
Código: Seleccionar todo
[...]

///////////////////////////////////////////////////////////////////////////////
SCRIPT JpDistance

// Japan 7 Light Signal (Distance)

   extern float   block_state ();
   extern float   route_set ();
   extern float   next_sig_lr ();
   extern float   def_draw_state ();
   extern float   state;
   extern float   draw_state;
   extern float   enabled;
   float         next_state;

next_state=next_sig_lr (SIGFN_NORMAL);

if (next_state ==# SIGASP_STOP)
{
state =SIGASP_STOP;
}
else if (next_state ==# SIGASP_APPROACH_2 || next_state ==# SIGASP_APPROACH_3)
{
state = SIGASP_APPROACH_2;
}
else
{
state = SIGASP_CLEAR_2;
}
// Get draw state
draw_state = def_draw_state ( state );

// End of File

La definición de la señal en el sigcfg.dat:
Código: Seleccionar todo
[...]

SignalType ( "JpDistance"
      SignalFnType ( DISTANCE )
      SignalLightTex ( "ltex" )
      SignalLights ( 7
         SignalLight ( 0 "White Light"
            Position ( 0 0.33 0 )
            Radius ( 0.055 )
            )
         SignalLight ( 1 "White Light"
            Position ( 0 0.55 0 )
            Radius ( 0.055 )
            )
         SignalLight ( 2 "White Light"
            Position ( 0 0.11 0 )
            Radius ( 0.055 )
            )
         SignalLight ( 3 "White Light"
            Position ( 0.15 0.19 0 )
            Radius ( 0.055 )
            )
         SignalLight ( 4 "White Light"
            Position ( -0.15 0.47 0 )
            Radius ( 0.055 )
            )
         SignalLight ( 5 "White Light"
            Position ( 0.2 0.33 0 )
            Radius ( 0.055 )
            )
         SignalLight ( 6 "White Light"
            Position ( -0.2 0.33 0 )
            Radius ( 0.055 )
            )
      )
      SignalDrawStates ( 3
         SignalDrawState ( 0      "StopD"
            DrawLights ( 3
               DrawLight ( 0 )
               DrawLight ( 5 )
               DrawLight ( 6 )
            )
         )
         SignalDrawState ( 1      "ApproachD"
               DrawLights ( 3
                                 DrawLight ( 0 )
                  DrawLight ( 3 )
                  DrawLight ( 4 )
               )
         )
         SignalDrawState ( 2      "ClearD"
               DrawLights ( 3
                                 DrawLight ( 0 )
                  DrawLight ( 1 )
                  DrawLight ( 2 )
               )
         )
      )
      SignalAspects ( 3
         SignalAspect ( STOP      "StopD" )
         SignalAspect ( APPROACH_2      "ApproachD" )
         SignalAspect ( CLEAR_2               "ClearD" )
      )
   )

[...]

SignalShape (
      "JP1Signal6.s"
      "Japan 7 Light Signal (Distance)"
      SignalSubObjs ( 1
         SignalSubObj ( 0
            "HEAD1"
            "Signal Head 1"
            SigSubType ( SIGNAL_HEAD )
            SigSubSType ( "JpDistance" )
         )
      )
   )

[...]
Última edición por edsolis el Lun Dic 12, 2005 10:29 pm, editado 1 vez en total
Avatar de Usuario
edsolis
Bibliotecario
 
Mensajes: 2492
Registrado: Sab Feb 26, 2005 1:48 pm
Ubicación: 7ª Zona

Notapor edsolis » Dom Dic 11, 2005 11:31 pm

Bueno, lo de desaparecer la ruta ya está arreglado, parece ser que por alguna razón se había dañado la track database y la he vuelto a reconstruir. :)
Avatar de Usuario
edsolis
Bibliotecario
 
Mensajes: 2492
Registrado: Sab Feb 26, 2005 1:48 pm
Ubicación: 7ª Zona

Notapor edsolis » Lun Dic 12, 2005 10:32 pm

Gracias Marc y Pintotren, las señales ya están funcionado correctamente en su correspondiente ruta.
Avatar de Usuario
edsolis
Bibliotecario
 
Mensajes: 2492
Registrado: Sab Feb 26, 2005 1:48 pm
Ubicación: 7ª Zona

Notapor Marc » Mar Dic 13, 2005 12:22 am

:app:
Avatar de Usuario
Marc
grupo TrenSim
 
Mensajes: 4284
Registrado: Jue Ago 28, 2003 11:24 pm
Ubicación: Barcelona

Notapor Pintotren » Mar Dic 13, 2005 7:19 pm

Me alegro que todo funcione

Saludos.
José Luis.
Pintotren
 
Mensajes: 192
Registrado: Dom Jun 26, 2005 11:03 am
Ubicación: Pinto (Madrid)


Volver a Objetos para rutas MSTS

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados