Hola, José Pablo:
Ya quedó resuelto y más limpio. Se acabó el intríngulis y el rompedero de cabeza.
Te estoy más que agradecido por la gran ayuda que brindaste.
Ahora te cuento el resultado del experimento:
Primero recorrí toda la ruta en una actividad, donde circulaba yo sólo de punta a punta para descubrir en cuáles postes funcionaban o no las señales a Distancia (UKSemDist)
Si no hay ningún tren adelante obstruyendo, las señales Normal siguientes se van poniendo Libres.
Pero nuestro brazo inferior de distancia, busca hacia adelante, y si No encuentre el brazo de distancia requerido, o sea encuentra un brazo absoluto pero No de Distancia, entonces devuelve el estado Sigasp_Approach y se nos queda levantado y horizontal con luz Ámbar.
Podemos pasar igual, pero no nos informa cómo está la señal siguiente, por lo cual por las dudas ya debemos ir frenando.
El Track Monitor sigue mostrando Clear(Verde), porque devuelve el estado de la señal absoluta, el cual refleja el estado de la sección.
(No sé bien cuál factor es el que muestra, pero no el de la UKSemDist)
La UKSemDist, en cambio, parece reflejar el estado de la próxima UKSemDist, y no el de la próxima Absoluta, pero si encuentra una absoluta se pone restrictivo.
Hasta ahora, el Script de señales de las rutas europeas funcionaba de esta manera:
Si el sector no está obstruido, pide el estado de la próxima señal a distancia, y si la encuentra antes que otra refleja su estado con la función
Al usar, las mismas utilizan la función:
- Código: Seleccionar todo
dist_multi_sig_mr (SIGFN_NORMAL, SIGFN_DISTANCE) ==# SIGASP_STOP)
(Es una función de 2 variables).
Estuve leyendo algunas notas de UKtrainsim, donde tratan de la función "dist_multi_sig_mr", y sacan conclusiones similares y además las conocen muy bien porque las utilizan mucho.
Pero me extraña, que en el post no lo hayan resuelto ellos.
El Brazo inferior de distancia se mostrará en precaución cuando adelante haya una señal absoluta sola en el poste, como en estos casos mencionados.
Eso es lo que restringía un poco,
Y es porque el brazo inferior de distancia,
Para poder mostrarse inclinarse hacia abajo y con luz verde (Clear),
Requería y dependía de 2 cosas:
Próxima señal normal Libre, y próximo brazo de Distancia libre.
O sea, las 2 señales del mástil se van a bajar juntas, solamente, si el próximo poste es del mismo tipo de 2 señales y la de arriba de ellas está a Libre; O sino lo mismo para el caso que hacia delante encontremos una señal a distancia Sóla, precediendo a Absoluta Sóla y en posición de Libre.
O sea sí o sí tiene que encontrar adelante una a distancia y otra absoluta a Libre, para bajarse.
Pero en nuestro sistema hace falta que la de distancia sólo refleja al próximo brazo absoluto.
Entonces, basándome en el script de las señales luminosas de 3 aspectos, y simplificando el código para que sólo muestre los últimos 2,
Entonces la condición decisiva, además de las de bloqueo,
Es
- Código: Seleccionar todo
next_state = next_sig_lr (SIGFN_NORMAL);
if (next_state ==# SIGASP_STOP)
O sea, el Sigscr.dat quedó configurado así:
- Código: Seleccionar todo
SCRIPT UKSemDist
// UK Semephore (Distance) Modificado
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); // Captar estado de próxima señal normal
// Señal se muestra a precaución en estos 4 casos:
if (!enabled || // Not enabled/cleared to show natural state?
block_state() !=# BLOCK_CLEAR || // Block ahead not clear?
!route_set() || // Switch not set as per link?
(next_state ==# SIGASP_STOP) ) // Próxima señal normal a peligro
{
state = SIGASP_APPROACH_2;
}
// Si el Tramo a seguir está libre, y
// si próxima señal esá libre...
else
{
state = SIGASP_CLEAR_2;
}
// Get draw state
draw_state = def_draw_state (state);
Es que cuando utilizamos señales de este tipo, necesitamos mucho observar el brazo de Distancia, para monitorear ése tercer estado, ya que en realidad estamos utilizando 2 señales de 2 aspectos para representar 3.
Hay muchas partes de estas rutas, donde podemos encontrar una señal doble Absoluta/Distancia, porque a escasos 250 metros de allí nos encontremos con otra Absoluta, incluso tras una curva, y si la señal a distancia no se mueve, entonces no nos queda otra que aminorar hasta casi detenernos frente a ella, (si llegamos a frenar), y si está a vía Libre nos preguntaremos ¿para qué pusimos la señal a distancia si no funciona?
Después de esto, el otro problema a reparar era el del palo de señales Absoluta/Distancia, que no mostraban el estado correcto y no lo podía descubrir.
Revisando de todo, descubrí que en el editor de actividades, donde estaba esa señal me aparecían 2 marcadores de señales, pero en el editor de rutas sólo se veía uno.
Se ve que con tanto manipuleo, me quedó algo mal grabado en el TDB.
Quitaba ese poste de señales, abría el editor de actividades y se veía todavía uno, pero que no era visible en el editor de rutas.
Entonces lo que pasaba, es que en el TDB quedaron 2 señales juntas, una a escasos 4 metros de la otra, mientras que en el archivo.W no figuraban, por eso no se veían.
Claro, cuando la sección estaba ocupada, le primer señal se mostraba Clear/Verde, y al pasarla ya tocaba la otra en rojo y me sacaba de la actividad. Y por eso también, al tener la otra inmediata en rojo, la primera guardaba el aspecto Approach. Si no fuera por el EA no lo descubría.
Opté por quitar el pedazo de vía que pasaba por ahí, guardando los cambios.
Ahí me puso el cartelito que se iban a borrar tales marcadores platform, signal, etc….
Hice así y ahora sí arrancó en limpio.
Volví a colocar el mástil de 2 señales, en el mismo lugar.
Ahora muy bien, anda como yo quiero.
Para el caso del tren que tiene que avanzar y retroceder cambiando de vía,
Se baja la señal de maniobras, ya que en la 2° sección adelante le puse 1 tren estático que no se ve desde aquí.
Para el tren que sigue de largo, si tiene vía libre hasta la próxima estación, se baja el brazo absoluto superior. Si el sector está ocupado quedan las dos a peligro.
Este mismo juego de señales de Maniobra, para quienes recuerdan el ramal, se aplica también en las estaciones Olivos y San Isidro R
Anteriormente también traté de cambiar el tipo de Distancia por Shunting, pero no resultó, y también temo que eso injerte 2 señales consecutivas en el TDB como sucedió, generando una sección de pocos metros, difícil de interceptar. Por ahora la puedo dejar como distancia, en el funcionamiento.
Y todo esto, incluso el nuevo programa alemán de señales, me ayudaron a entender unos cuantos comandos de señales, para al menos personalizarlas con los comandos más conocidos.
Ahora, a seguir con la ruta, que aún está muy desnuda, y se viene la etapa de terminar de poblar todos los vacíos, implementando muchos objetos múltiples, como cuadras y barrios, porque sino, enseguida se llega a la peligrosa densidad de 1600 objetos/Tile, y con muchos huecos por rellenar. Y encima carezco de texturas para esos objetos.
Si aparece ahora alguna señal medio peculiar, se simula con algo existente y listo.
Y ahora, el buen ejemplo:
Casi no conozco a José Pablo; con pocos mensajes publicados, aportó datos utilísimos que ayudan a armar y construir, facilitando herramientas para que todos puedan hacer.
A ver si otros novicios imitan este ejemplo y contribuyen al aprendizaje y reducir el misterio, en vez de entrar siempre birlando, escorchando y reclamando prepotentes “Quiero esto, hagan aquello”
Muchos Saludos…