Форум Trainsim  

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

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

По БМО, у меня нет 1.8 (и не хочу ), так что, помощник в маршруте я - никакой.

Интересно, всё-таки, с "запоминалкой" для MSTS. Если попробовать заявить две переменные, скажем, m и n . Вначале поставить безусловное равенство m = n ;, а дальше - if (условие) { n = 1;} else (другое условие) { n = 0; }, m будет "помнить" значение n когда ни одно из условий не выполняется?
vicente вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


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

 
Старый 29.09.2021, 16:32   #797
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
m будет "помнить" значение n когда ни одно из условий не
Да, ведь присваивание до if.
Код:
float m;float n;
m=5;
n=5;

// далее какой код, меняющий n

// тут m по прежнему 5
Я правильно понял вопрос ?

Добавлено через 4 минуты
Цитата:
Сообщение от vicente Посмотреть сообщение
По БМО, у меня нет 1.8 (и не хочу )
Эхх, а я хотел узнать, как бороться с нежеланием симулятора прокладывать маршрут по узлам иногда. С сигналкой я понимаю как, я начинаю смотреть скрипт, чтобы понять почему так работает. А вот как бороться с внутренним алгоритмом прокладки маршрута не знаю.
roman5 вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо roman5 за это полезное сообщение:
Старый 29.09.2021, 16:46   #798
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Да. Совершенно точно.
Проблема в том, что в обычном С/С++ - всё ясно. А здесь - нужно проверять.
Я, когда тестил оппозиты, на одном из тестов не получил вполне ожидаемый результат. Причина - до if у меня 2 строки "наоборот" стояли: сначала я снимал данные со светофора, а потом - определял этот светофор. Повторюсь: скрипт - статический. Я боюсь, что не сработает это постоянное присваивание m значения n "из-под" if. Именно из-за программы.

Добавлено через 8 минут
Хотя... нет. Немного не так. Вопрос был:
Цитата:
(...)
float m;
float n;
(...)

m = n;
if (block_state () !=# 0)
{
state = 1;
n = 1;
}
else if (next_sig_lr (SigFn_NORMAL) ==# 1)
{
state = 3;
n = 0;
}
else
{
state = 7;
}
Когда не выполняется ни if, ни else if, будет ли m в последнем значении n?

Добавлено через 1 минуту
Особое замечание по отступам: с телефона их съедает сайт, а мне недосуг рисовать. Так что... с Вами наши извинения
vicente вне форума   Ответить с цитированием
Старый 29.09.2021, 16:58   #799
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
Когда не выполняется ни if, ни else if, будет ли m в последнем значении n?
В m будет то значение, которое в нее сохранили последний раз, оно не изменится, если позже поменяешь значение n. У нас тут нету ни ссылок, ни указателей, обычные переменные, в которые "по значению" сохраняются.

Кстати еще по стилю скриптов, вместо цифр 0,1,2 стоит писать зарезервированные константы, то есть тут:
if( block_state() != #0) пишем вместо 0 константу Block_clear. По поводу state тоже самое.
А то такой скрипт читаешь и нужно лезть в документацию, вспоминать в каком порядке там идут эти константы.

Кстати а чему изначально тут (...) эти переменные заданы. Они ведь там инициализируются ? Спрашиваю, чтобы понимать смысл сохранения перед if.

Последний раз редактировалось roman5; 29.09.2021 в 17:02.
roman5 вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо roman5 за это полезное сообщение:
Старый 29.09.2021, 18:00   #800
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Это я так коряво пытался обозначить, что там пропущееы заявления и это кусок скрипта (и так понятно, да, больше не буду...

Кто-нибудь из вас может проверить эту байду в MSTS? Позязя...

Добавлено через 42 минуты
А я, для себя, "как только, так и сразу" проверю в Open Rails. Если будет запоминать - возможно, это решит мою проблему с таймерами при загрузке игры

Последний раз редактировалось vicente; 29.09.2021 в 17:20.
vicente вне форума   Ответить с цитированием
Старый 29.09.2021, 19:40   #801
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 3,980
Вы сказали Спасибо: 8,657
Поблагодарили 2,510 раз(а) в 1,132 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
... Если попробовать заявить две переменные, скажем, m и n . Вначале поставить безусловное равенство m = n ;, а дальше - if (условие) { n = 1;} else (другое условие) { n = 0; }, m будет "помнить" значение n когда ни одно из условий не выполняется?

А потом, обновляя аспекты, сим "пройдёт" по скрипту, и всё снова сбросится!
Но проверить сейчас не могу...
Цитата:
Сообщение от roman5 Посмотреть сообщение
Кстати еще по стилю скриптов, вместо цифр 0,1,2 стоит писать зарезервированные константы, то есть тут:
if( block_state() != #0) пишем вместо 0 константу Block_clear
Так - и писали всегда. Цифрами только аспекты.
__________________
next_state == 7;

Последний раз редактировалось КЕ; 29.09.2021 в 19:39.
КЕ вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо КЕ за это полезное сообщение:
Старый 29.09.2021, 20:17   #802
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
А потом, обновляя аспекты, сим "пройдёт" по скрипту, и всё снова сбросится!
Но проверить сейчас не могу...
Обнуляться-то почему? "Заява" идёт без присвоения значения. В этом - суть.
float n;
а не
float n = 0;
vicente вне форума   Ответить с цитированием
Старый 29.09.2021, 20:52   #803
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 3,980
Вы сказали Спасибо: 8,657
Поблагодарили 2,510 раз(а) в 1,132 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

Было у меня что-то подобное, тоже такая переменная - не соххранялась.
Но проверим потом, конечно.
__________________
next_state == 7;
КЕ вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо КЕ за это полезное сообщение:
Старый 29.09.2021, 23:00   #804
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
Обнуляться-то почему? "Заява" идёт без присвоения значения. В этом - суть.
float n;
а не
float n = 0;
Без присвоения ? Там ведь либо 0, либо что попало (в с++ компиляторы работают по разному: одни 0 по умолчанию ставят, другие ничего не делают). Что ты пытаешься в m закинуть из n, если в n даже не задал ничего.
roman5 вне форума   Ответить с цитированием
Старый 30.09.2021, 06:37   #805
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
Было у меня что-то подобное, тоже такая переменная - не соххранялась.
Но проверим потом, конечно.
Повторение, мать его. В Open Rails не запоминает. Как я его не "крутил". И в начало ставил, и в "хвост" и под ифами присваивал значение m = n. Задавал начальные значения (0, 5...). Фигос. Только заходит под if, где нет условия - все переменные - в 0.

Добавлено через 3 минуты
А, вот, таймер во время загрузки, похоже, отключить удастся. Один из тестов - получилось. Уже совсем перед сном. О полном успехе говорить рано, но похоже не только удастся отключить внешний триггер Open Rails, но и привязать к этому и мои новые таймеры, которые здесь публиковал.
vicente вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо vicente за это полезное сообщение:
Старый 30.09.2021, 10:39   #806
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 3,980
Вы сказали Спасибо: 8,657
Поблагодарили 2,510 раз(а) в 1,132 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

Что за внешний триггер?
И похоже, что переменная принимает нулевое значение при ее объявлении, и что это происходит каждый раз при "проходе" скрипта.
__________________
next_state == 7;
КЕ вне форума   Ответить с цитированием
Старый 30.09.2021, 15:05   #807
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от КЕ Посмотреть сообщение
Что за внешний триггер?
Цитата:
Сигнальные функции:

Activate_Timing_Trigger (): активирует триггер по времени.

Check_Timing_Trigger (n): проверяет триггер по времени и возвращает истину, если он был установлен более n секунд назад.

Эти две функции позволяют выполнять действия с сигналами, запускаемые по времени, например фиксированная задержка по времени при открытии светофора и т. д.
Я на проходных испоьзую их для "оттяжки" на несколько секунд момента визуального переключения сигнала с разрешающего на запрещающее показание (см.мои ролики - там это есть), а на светофорах перед стрелками, как я писал раннее, оттягиваю открытие сигнала, имитируя проследлвание изостыков/сч.осей и время требуемое СЦБ на отработку маршрута перед открытием сигнала.

Добавлено через 57 минут
https://youtu.be/fHOKLFgCmNU


Добавлено через 1 минуту
Вот она - визуальная "оттяжка" момента переключения проходного с использованием вышеупомянутых функций
vicente вне форума   Ответить с цитированием
Старый 30.09.2021, 15:20   #808
КЕ
Разработчик
 
Аватар для КЕ
 
Регистрация: 05.04.2011
Адрес: Малыгинская эстакада
Сообщений: 3,980
Вы сказали Спасибо: 8,657
Поблагодарили 2,510 раз(а) в 1,132 сообщениях
КЕ стоит на развилке (репутация по умолчанию)
По умолчанию

И к это пишется - в конфиге, или еще где-то?
__________________
next_state == 7;
КЕ вне форума   Ответить с цитированием
Старый 30.09.2021, 17:20   #809
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

На втором видео - иммитация открытия светофора с задержкой из-за работы СЦБ/дежурного:
https://youtu.be/Hg5M-ETih_0


Добавлено через 14 минут
Цитата:
Сообщение от КЕ Посмотреть сообщение
И к это пишется - в конфиге, или еще где-то?
Ничего в конфиге не пишется. В рамке в посте 807 описано: как делать в скрипте. Выбираешь какое-то положение, например, в последнем случае, я включаю триггер этот когда светофор заблокирован, проверку триггера - в условия открытия сигнала. И получается такая "няма"

Добавлено через 20 минут
Проблема с этими триггерами - при загрузке сценария, они вообще не учитываются. То есть, если я поставил
Check_Timing_Trigger*(n)
в условие, оно не будет выполняться пока игра загружается! То есть, светофор на последнем видео при "просчете" трафиков , стартующих до времени старта игрока, будет закрыт! В простых сценариях, может, это не так существенно - сценаристу нужно просто это учитывать. Там же вся движуха стартует практически вместе с игроком. Но, я ишраю по другому. У меня и в Activity Mode всё расписание проигрывается, а в Timetable Mode - там по умолчанию просчитывается всё расписание с 00:00. Поездная ситуация при старте игрока, скажем, в 7:00 у меня в Timetable была очень печальная. Всё стоит на входных/выходных, куча AI поездов не стартовала и была изгнана сцаными тряпками выброшена из симуляции. На проходных - спокойней. Там привязан не аспект, а показание. В смысле, то, что ты видешь на видео - зелёный остаётся, на самом деле светофор, как только нос ездючины поравнялся с ним, сразу же становится STOP , при этом зелёный свет горит ещё 5 секунд.

Добавлено через 14 минут
Вторая проблема, для меня, во всяком случае - таймер этот можно использовать только единожды в сигнальной голове. Он один. В коде самой игры есть clock , он себе бежит, первой функцией мы просто включаем секундомер и таймер считает "с того момента". Я не могу его дважды стартовать- второй старт собъёт мне условие первого. То есть, оба "таймера" включатся. Возможно, теоретически, можно поставить в двух условиях, но эти условия должны "не соприкасаться," друг с другом. Мне лично, это не подходит. Да, и не могу себе представить, что кому-то где-то удастся так разделить работу сигнальной головы.

Добавлено через 44 минуты
А, хочется "няшности"! Чтобы и то, что на первом видео и на втором, работало на одном светофоре! Касаемо входных, у меня стоит 45 секунд, плюс - каждый маневровый имеет свой триггер не 15 секунд (в нынешней версии, грядёт коренная переделка всей логики - все Main-светофоры будут работать по-другому), получается на входном - минута, 1:15 и т.д. - зависит от количества маневровых на пути сервиса и положения стрелок.выходные - 20 секунд (я уже писал, что в идеале - сделать "птички" в настройках светофора с разным временем, но где взять время на всё это?). К этому всему нужно "присобачить" delay на смене показания, когда ездючина проезжает маркер... Вот здесь и пригодится тот "таймер" внутри скрипта, что ч на днях здесь написал "онлайн" Причём, "моих" таймеров можно пихать в скрипт сколько угодно.
vicente вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо vicente за это полезное сообщение:
Старый 30.09.2021, 22:24   #810
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,765
Вы сказали Спасибо: 899
Поблагодарили 1,213 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Константин, а ты не пробовал "впаривать" USER5, USER6 и так далее? Вы не проверяли это дело с Игорем, случайно?
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


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


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