Форум Trainsim  

Вернуться   Форум Trainsim > Microsoft Train Simulator > MSTS - Маршруты

Ответ
 
Опции темы Опции просмотра
Старый 25.09.2021, 12:58   #1
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,764
Вы сказали Спасибо: 899
Поблагодарили 1,214 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
Нет, проходной оставался открытым при реверсе.
Да, это так. Подзабыл, прошу прощения. Ровно 10 лет назад я нацарапал на заборе тестил эту функцию "чистым тестом" с блэкджеком и шлюхами с фотографиями (к сожалению, сайты давно почили в бозе, и много материала утеряно). Описание теста прилагаю полным текстом сообщения, за исключением скринов..
Скрытый текст:

Немного о функции*enabled

Данная функция является внешней функцией относительно скрипта. Мы знаем, что в скриптах есть функции внешние, то есть прописаны они в другом месте - ехе-файле симулятора и изменять в работе самой функции мы ничего не можем (см.мануал) и есть функции, которые, теоретически, может прописать разработчик сигнализации внутри самого скрипта (чем и занимаюсь сейчас для создания своего варианта одностороннего пропуска).
Итак, enabled.
Кужувский разработчик пишет:

Код:

Contains TRUE (non-zero) if the current signal instance is enabled to show
its natural state, or FALSE otherwise.


Это значит, что функция возвращает единицу, если светофор включен, чтобы показать его состояние, в противном случае - выдает 0.
То есть не все светофоры на маршруте работают по скрипту, а только те, которые находятся впереди и позади сервиса на определенном расстоянии. Расстоянием здесь является не километраж и не количество узлов, как в подготовке маршрута МСТС, а количество светофоров. Какое кол-во светофоров будут enabled перед сервисом (кстати, не важно сервис ли это игрока или трафик) мы задаем в файле конфигурации сигнала в параметре SignalNumClearAhead. Небольшой тест покажет наглядно как это работает.
Я поставил на перегоне проходные светофоры (модели Тимаса), прописав в них SignalNumClearAhead (2), обычные сигналы проходного 3АБ, а при функции enabled = 0, или правильней - !enabled - синий.

Результат - перед сервисом 2 светофора зеленые, остальные - синие - !enabled. Это понятно. Цель теста - выяснить, что с остальными светофорами на перегоне. У нас еще три направления. На скрине мы видим, что за занятым сервисом блок-участком светофор красный, то есть enabled. За этим светофором, против хода сервиса,как и положено желтый, а уже перед ним - !enabled - синий.
Что происходит с противоположной стороны?


Перед сервисом 2 светофора становятся enabled красный и желтый. Светофоры же позади него сразу же становятся !enabled - синие.
Интересно, что если я возвращаюсь назад, то светофоры по мере удаления от них остаются enabled - зелеными. То есть если я вернусь на 2 блок-участка, то впереди меня будет не 2, а 4 зеленых светофора. В обратном же направлении, направлении движения, ни один светофор enabled не становится.

Нужное место я выделил под спойлером в последнем абзаце

Добавлено через 30 минут
Цитата:
Сообщение от КЕ Посмотреть сообщение
Но если б можно было передавать аспекты "вперед" по ходу сервиса.... Мечты!
Ну, с MSTS уже вряд ли что можно сделать. Но, мечты сбываются в наше время в Open Rails , и это дело обещают/сделано уже там. Но, как поётся в песне, "того, что нужно нам, всегда на свете нет..." Прграммировать светофоры для этого нужно с С#, а я вообще не знаю его, и в жизни программированием не занимаюсь.

Цитата:
Сообщение от КЕ Посмотреть сообщение
Насколько надежно это работало?
Всегда. Там никакого выпендрёжа нет, на самом деле. Вся цепочка светофоров NORMAL-ы, каждый работает по известным и накатанным функциям и зависит толькоот следующего сигнала. Единственное- пришлось поднять SignalNumClearAhead , а я это очень не люблю. Но, маршрут - мой личный, ворочу чего хочу, в сценариях, естественно, я это учитывал.

Последний раз редактировалось vicente; 25.09.2021 в 12:38.
vicente вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо vicente за это полезное сообщение:
Старый 25.09.2021, 13:05   #2
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 4,083
Вы сказали Спасибо: 8,772
Поблагодарили 2,572 раз(а) в 1,173 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
Прграммировать светофоры для этого нужно с С#...
В смысле - менять исходный код ORTS?
Цитата:
Сообщение от vicente Посмотреть сообщение
... Единственное- пришлось поднять SignalNumClearAhead , а я это очень не люблю. Но, маршрут - мой личный, ворочу чего хочу, в сценариях, естественно, я это учитывал.
Какое число было необходимым?
__________________
next_state == 7;

Последний раз редактировалось КЕ; 25.09.2021 в 13:08.
КЕ вне форума   Ответить с цитированием
Старый 25.09.2021, 13:33   #3
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,764
Вы сказали Спасибо: 899
Поблагодарили 1,214 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
Какое число было необходимым?
7
vicente вне форума   Ответить с цитированием
Старый 25.09.2021, 13:51   #4
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,764
Вы сказали Спасибо: 899
Поблагодарили 1,214 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
В смысле - менять исходный код ORTS?
Нет. Исходный код меняют разрабы. Есть там определённая процедура изменения кода. "Открытость" состоит в том, что любой желающий может предложить изменения в коде, а команда вносит эти изменения в тестовые версии по своему усмотрению. Русификацию, например, делает твой "визави" на форуме Игоря... ну, тот, что в беседу тебя внёс на elvastower.com , ссылку на которую ты мне кинул
Речь идёт о замене sigscr.dat на программу на С#.

Кстати, молодёжь, кто знает Шарп? Я вообще в нем ни бум-бум!
Может кто-нибудь набрость какой-нибудь скрипт сигнальной головы? Я имею в виду перевод из этого недо-С в С#... Я бы глянул и смекнул: что к чему. Потому что самоучитель я ниасиливаю (стар?), да и времени, если честно - совсем на него нет. Туплю на азах, в общем.
Форма скрипта в с# такова:
Цитата:
using System;
using Orts.Simulation.Signalling;

namespace ORTS.Scripting.Script
{ public class MYSIGNALTYPE : CsSignalScript // мой сигнальный тип - название Signal_Head
{
public override void Initialize()
{
// Perform some initializations here, taking into account // that no route information is available at this point
}
public override void Update()
{
// Set the aspect of your signal here depending on route state } public override void HandleSignalMessage(int signalId, string message)
{} } }
vicente вне форума   Ответить с цитированием
Старый 25.09.2021, 13:59   #5
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
Кстати, молодёжь, кто знает Шарп? Я вообще в нем ни бум-бум!
Да проблема не в языке, а в самом проекте, нужно ведь изучить сорцы OR, прочитать даташиты по их функционалу, что и как подавать в эти переопределяющие методы ovveride. Сам язык понять можно быстро по ютуб урокам.

Судя по всему вся логика в Update. А вот HandleSignalMessage это что не очень понял, то ли для отладки, то ли обмен инфой между сигналами.

Последний раз редактировалось roman5; 25.09.2021 в 14:02.
roman5 вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо roman5 за это полезное сообщение:
Старый 25.09.2021, 13:44   #6
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
Прграммировать светофоры для этого нужно с С#, а я вообще не знаю его, и в жизни программированием не занимаюсь.
Удобный язык для программирования, еще qt c++ мощная штука. В msts внешнее апи очень урезанное, даже под отладку нормальных возможностей не дали - из скрипта невозможно определить с каким из шейпов идет работа. Приходится извращаться: снимать user1-4 опции у нужных сигналов, чтобы получить уникальный набор future.

Я тут поборол сигналку на БМО 1.8. Покопав далее скрипт distance входных сигналов заметил такое:

Код:
if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		WORK1 = opp_sig_mr ( SIGFN_NORMAL );
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_ONE_WAY = 1; }
		WORK1 = opp_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_RESTRICTING ) { opp_POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_POEZD = 1; }
	}

	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		if ( ( block_state() ==# BLOCK_OCCUPIED || POEZD !=# 0 ) && opp_POEZD !=# 1 ) { state = SIGASP_STOP_AND_PROCEED; }
		if ( opp_ONE_WAY ==# 1 || opp_POEZD ==# 2 ) { state = SIGASP_STOP_AND_PROCEED; }
	}
Оказывается для удержания направления перегона используют не только SAP в distance, но и SAP в normal проходных сигналов.

Глянул код голов normal у проходных, нашел это:

Код:
state = SIGASP_STOP;
	if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD !=# 1 ) {
		if ( block_state() !=# BLOCK_CLEAR || POEZD ==# 2 || ONE_WAY ==# 1 ) { state = SIGASP_STOP_AND_PROCEED; }
	}
То есть, если сигналы включены, то distance POEZD = 0 по скрипту и занятые участки будут в normal SAP ставить.

А выше это в коде:

Код:
WORK1 = next_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { ONE_WAY = 1; }
Обеспечивает удержание sap на головах normal, где участки уже clear.

Направление перегона переключается не в Иванцево, а в Драчеево, то есть с другого конца, по редактору видно, что enable не дотягивает до входного, его скрипт не срабатывает. Попробовал увеличить вAPK_3AB_YGR_YW_DISTANCE параметр SignalNumClearAhead до 15. Теперь работает на тестовой сцене.
roman5 вне форума   Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо roman5 за это полезное сообщение:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипты Вл ~sejo~ TrainZ - Подвижной состав 2 25.09.2010 18:11
Как эта конфигурация ? vita IT, компьютеры, электроника 9 02.06.2009 00:26
Заказы на скрипты TRam_ TrainZ — Об игре 5 03.04.2009 16:25
MSTS-конфигурация компьютера GeneZone MSTS - Об игре 6 03.03.2008 21:03
Trainz 2006 SP1 Конфигурация PC vita TrainZ — Об игре 18 11.02.2008 00:11


Текущее время: 17:28. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim
TopList Нажми для появления дома Trainsim на карте Intermap
Что это?