Форум Trainsim  

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

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

Цитата:
Сообщение от КЕ Посмотреть сообщение
Какое число было необходимым?
7
vicente вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА

 
Старый 25.09.2021, 13:44   #722
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 за это полезное сообщение:
Старый 25.09.2021, 13:51   #723
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 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   #724
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, 14:16   #725
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Рома, я писал, что не вижу по Иванцево буфера изменения направления. Головы входного "хватают" STOP_AND_PROCEED с выходного и соответственно - противоположное направление. А как в Драчеево это переключается? Там стоит дополнительный служебный маркер?

И, это... спасибо за проделанную работу. Дотошный

Добавлено через 4 минуты
Источник скачивается на сайте. Если понимаешь язык, можешь разобраться не только с сигналкой, но и с другими интересующими вещами в соответствующих cs файлах. Меня интересует пока только синтаксис

Добавлено через 11 минут
Цитата:
Сообщение от roman5 Посмотреть сообщение
Судя по всему вся логика в Update. А вот HandleSignalMessage это что не очень понял, то ли для отладки, то ли обмен инфой между сигналами.
Если честно, пока (подчёркиваю- пока), вся эта авантюра с С# - довольно спорна. Но, старое поколение уходит, может быть, в скором времени вся логика, заимствованная из MSTS будет переписана. Это не есть хорошо, ИМХО, так как совместимость с MSTS - основоопределяющее условие, которое было заявлено при открытии проекта. Сейчас она (совместимость эта) всё дальше и дальше. Главная причина перехода на С#-скрипты - уаеличение аспектов, которых тупым американцам кое-кому там не хватает. Снятие информации с предыдущего светофора промелькнуло в одном из постов, но с тех пор по теме - тишина. Синтаксис, как я уже сказал, моя главная проблема, но беглым просмотром sc я узнаю знакомые функции. Пока по сигналам "сзади" - глухо.
vicente вне форума   Ответить с цитированием
Старый 25.09.2021, 14:39   #726
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
Головы входного "хватают" STOP_AND_PROCEED с выходного и соответственно - противоположное направление.
Не совсем так, выходные вроде тут вообще не участвуют, у них нету в distance SAP. Между входным и выходными стоят служебные маркеры: они выдают res на занятые либо копируют distance с выходного, но там все кроме sap. То есть когда появляется поезд на станции, входной видит res состояние на маркере. И тут делает себе sap:
Код:
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; }
При чем тут несколько вариантов, opp_POEZD=0 для станции отправления:
1. Поезд еще на станции POEZD=2 - попадаем в первый if, потом выезжаем за маркер, тут по block_state() начинает sap удерживаться.
2. На Драчеево стоит маркер около входного встречный.
3. Когда заезжаем за входной, на встречном проходном скрипт делает на normal голове аспект sap, благодаря этому теперь opp_ONE_WAY=1 помогает держать перегон.
В тех случаях, где входной и встречный проходной не рядом стоят, то за счет встречного маркера у входного делается opp_POEZD=2 - состояние res встречного маркера.

Таким образом, opp_ONE_WAY помогает держать sap на перегоне, если туда заедут по удалению не сколько поездов, переменная будет скинута, как только последний поезд заедет за входной станции прибытия.

Добавлено через 14 минут
Немножко скринов еще сделал.

Скрытый текст:


На 1-2 скринах: никого нет, сигналка в обе стороны включена.
На 3: трафик появился, белый на маркере, sap подхватился.
На 4-5 выезд со станции. Переключение маркера на clear2 - перегон свободен за ним.
На 6-7: проходной изначально stop normal, по проезду на sap перешел.
roman5 вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо roman5 за это полезное сообщение:
Старый 25.09.2021, 17:09   #727
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 3,981
Вы сказали Спасибо: 8,664
Поблагодарили 2,510 раз(а) в 1,132 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

У всех скрины открываются? А то у меня - нет.
__________________
next_state == 7;
КЕ на форуме   Ответить с цитированием
Старый 25.09.2021, 17:19   #728
Predator
Опытный
 
Регистрация: 01.10.2012
Адрес: Рядом с Вами)
Сообщений: 260
Вы сказали Спасибо: 71
Поблагодарили 96 раз(а) в 38 сообщениях
Predator стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
У всех скрины открываются? А то у меня - нет.
У меня не открываются.
Predator вне форума   Ответить с цитированием
Старый 25.09.2021, 19:03   #729
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 3,981
Вы сказали Спасибо: 8,664
Поблагодарили 2,510 раз(а) в 1,132 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

Ром, скрины проверь - не открываются!

Добавлено через 1 час 3 минуты
Цитата:
Сообщение от vicente Посмотреть сообщение
Синтаксис, как я уже сказал, моя главная проблема, но беглым просмотром sc я узнаю знакомые функции. Пока по сигналам "сзади" - глухо.
Сюда бы еще Рому RWM, он тоже вроде программер. Жаль, давно пропал с форумов...
__________________
next_state == 7;
КЕ на форуме   Ответить с цитированием
Старый 25.09.2021, 19:40   #730
Predator
Опытный
 
Регистрация: 01.10.2012
Адрес: Рядом с Вами)
Сообщений: 260
Вы сказали Спасибо: 71
Поблагодарили 96 раз(а) в 38 сообщениях
Predator стоит на развилке (репутация по умолчанию)
По умолчанию

Ребята, а есть ли способ решения задачи, при которой бы сервис игрока или трафика, смог бы выехать за сигнал светофора, после чего сделав реверс в сторону этого же светофора, уже по заранее проложенному пути? Насколько мне известно, это невозможно, так как на светофоре горит красный и как только проезжаешь его, игра заканчивается.
Predator вне форума   Ответить с цитированием
Старый 25.09.2021, 19:45   #731
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 3,981
Вы сказали Спасибо: 8,664
Поблагодарили 2,510 раз(а) в 1,132 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

В MSTS - разгонись, потом КМ в ноль, и реверс назад. Проедешь закрытый сигнал без разбора у начальника депо!
__________________
next_state == 7;
КЕ на форуме   Ответить с цитированием
Старый 25.09.2021, 21:08   #732
Predator
Опытный
 
Регистрация: 01.10.2012
Адрес: Рядом с Вами)
Сообщений: 260
Вы сказали Спасибо: 71
Поблагодарили 96 раз(а) в 38 сообщениях
Predator стоит на развилке (репутация по умолчанию)
По умолчанию

А как трафик в этом случае поведёт себя?
Predator вне форума   Ответить с цитированием
Старый 25.09.2021, 21:21   #733
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 3,981
Вы сказали Спасибо: 8,664
Поблагодарили 2,510 раз(а) в 1,132 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

Встанет у красного, разумеется.
__________________
next_state == 7;

Последний раз редактировалось КЕ; 26.09.2021 в 01:23.
КЕ на форуме   Ответить с цитированием
Старый 25.09.2021, 21:55   #734
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
У всех скрины открываются? А то у меня - нет.
Перезалил, хотел с яндекс диск дать ссылки на оригинальные скрины, не пожатые.
Скрытый текст:










roman5 вне форума   Ответить с цитированием
Старый 25.09.2021, 22:24   #735
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
Олег, ты говоришь про это? -
Именно


Цитата:
Сообщение от КЕ Посмотреть сообщение
Нашёл интересное замечание в наших давних сообщениях:
"Как молоды мы были, как молоды мы были..."
Именно так эта функция описана кужувцами в Документации по сигнализациям MSTS . Не я один "сел в лужу" с оппозитами, надо сказать в своё оправдание. Вполне себе уважаемые Буржуи в отношении сигнализаций, тоже не вкуривали этот вопрос, пока знающие люди не разъяснили. На данный момент, совершенно очевидно: как работают функции с префиксом opp_
vicente вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо vicente за это полезное сообщение:
Ответ


Здесь присутствуют: 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


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


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