PDA

Просмотр полной версии : Переменные в правилах и командах



TRam_
15.09.2013, 08:20
Пак недефолтных правил и команд с переменными - https://yadi.sk/d/vlfqnKNO4w-yuw

http://i.piccy.info/i7/eada6b5217e0a6c5dde8134455a51005/4-77-146/62347148/TRam_20130915_0000_500.jpg (http://i.piccy.info/i7/d6b96e164f8f9170c793db48b263ede1/4-77-146/61730986/TRam_20130915_0000.jpg)http://i.piccy.info/a3/2013-09-15-04-27/i7-5133090/500x281-r/i.gif (http://i.piccy.info/a3c/2013-09-15-04-27/i7-5133090/500x281-r)

Правило "Variable Check Rev 1" отличается от дефолтного тем, что может срабатывать будет сколько угодно раз . Также, если выставить "проверять условие каждые 5 секунд", правило будет дожидаться выполнения условия, после этого выполнит зависимые правила и завершится. Суть конструкции на скрине заключается в том, что первому подъехавшему поезду мы собираем только один маршрут, а всем остальным - два. Для этого:

1) начальное значение переменной выставлено как 0 (см. предыдущий скрин)
2) по проезду поезда происходит срабатывание правила AddVariable, оно прибавляет 1 к переменной
3) когда проходит следующий поезд, он активирует правило сравнения (так как там стоит условие - переменная x1 >= 1 , которое выполнено, когда x1 =1), которое, в свою очередь активирует правило сборки второго маршрута

Ограничение на переменную можно было не ставить - оно "для красоты". Триггеры Add AnyPath стоят последовательно один за другим.

http://i.piccy.info/i7/cbc68f21f8dce28ac91c475fe6fd4f10/4-77-164/5730374/TRam_20130915_0006_500.jpg (http://i.piccy.info/i7/da841314a260c76348ea4cd1de6e03ce/4-77-164/5437863/TRam_20130915_0006.jpg)http://i.piccy.info/a3/2013-09-15-13-00/i7-5135022/500x281-r/i.gif (http://i.piccy.info/a3c/2013-09-15-13-00/i7-5135022/500x281-r)

Правило Variable Random задаёт переменной случайное значение из выбранного диапазона.

Команда VariableIfElse создана уже давно, нужна, чтобы пропускать либо следующую, либо послеследующую команды (в зависимости от выполнения условия переменной). Её обсуждение есть тут - https://forum.trainzup.net/showthread.php?t=2098&p=217037&viewfull=1#post217037 .

Остальные две команды (ChangeSVariables и WaitUntilSVariable) используются соответственно для изменения переменных и для ожидания условия на переменную. Правда для этого нужно предварительно в правиле InputTable записать все операции со своими переменными:

http://i.piccy.info/i7/a44ef9999cbbd273da35969081115276/4-77-163/22272127/TRam_20130915_0005_500.jpg (http://i.piccy.info/i7/38a474b205f071c03b71689a6bcad25e/4-77-163/22028821/TRam_20130915_0005.jpg)http://i.piccy.info/a3/2013-09-15-12-44/i7-5134942/500x281-r/i.gif (http://i.piccy.info/a3c/2013-09-15-12-44/i7-5134942/500x281-r)

означают они:

(приравнять) x1= 8
y = y + 2
z = z - 10

(сравнить) a == 0
c > 5
temp < 12
etr >= -1
x1 <= 2


Складывать и вычитать друг из друга переменные напрямую нельзя. Но, как правило, это и не нужно - посчитать поезда, свободные пути, количество заработанных игроком очков можно и так :) .

Новое правило для выставления переменных при нажатии на ссылки в HTML-правиле
https://yadi.sk/d/XAnMZ4AkFF6n2w
В паке также тестовая карта и тестовый HTML.

http://i.piccy.info/i9/7f43a22f303ef16b60a9b0ac9afb4422/1565122469/23579/1328353/1_500.jpg (http://i.piccy.info/i9/b27e20298c44d57e5ac0a5f99d530081/1565122469/197267/1328353/1.png)http://i.piccy.info/a3/2019-08-06-20-14/i9-13325115/438x381-r/i.gif (http://i.piccy.info/a3c/2019-08-06-20-14/i9-13325115/438x381-r)

Ant.taranish
15.09.2013, 11:27
TRam_, в паке нет правила Variable Setup, команды ChangeSVariables и WaitUntilSVariable более старые, чем те что есть в дефолте и на DLS, при этом идут под другим куидом.
Поясни, пожалуйста, пример на скриншоте: какое условие проверяется с помощью переменной, и какие маршруты собираются?

TRam_
15.09.2013, 20:00
в паке нет правила Variable Setupудали AddVariable - правило установится вместо него.

команды ChangeSVariables и WaitUntilSVariable более старыеудалил их, оставил только "новую" ChangeSVariables (WaitUntilSVariable и InputTable дефолтные).

---------- Сообщение добавлено в 17:47 ---------- Предыдущее сообщение размещено в 15:48 ----------

ссылку обновил.

---------- Сообщение добавлено в 20:00 ---------- Предыдущее сообщение размещено в 17:47 ----------

И добавил последнюю важную команду серии - "Задать случайное значение переменной".

NickLon
16.09.2013, 15:15
TRam_, а разве связка
Variable Check
-AddAnyPath
работает? Хм, странно. У меня - ни в какую.

TRam_
16.09.2013, 15:17
NickLon, это не "Variable Check" а "Variable Check Rev 1". Ты скачай из шапки, они все там. Естественно переделанные.

Sandrilyon
20.09.2013, 23:03
TRam_, я как-то спрашивал у тебя насчет команды, в которой можно задать рэндомное значение для переменной. Раз уж тема заведена про переменные, можешь такую команду склепать? Например, задать значение от 0 до 10 (хотя бы) или до 100.

TRam_
20.09.2013, 23:06
Команды нет, а вот правило уже есть. В шапке ссылка.

Sandrilyon
20.09.2013, 23:09
Лучше бы команду, конечно...

TRam_
21.09.2013, 03:28
Лучше бы команду, конечно...ну если лучше, держи - http://yadi.sk/d/5ZcdTftl9dBG5

---------- Сообщение добавлено в 03:28 ---------- Предыдущее сообщение размещено в 03:26 ----------

рандомизирует внутри диапазона от 0 до 10

TRam_
28.09.2013, 22:15
Небольшой апдейт для Variable Setup

http://yadi.sk/d/R7SJXyimA4WHb

http://i.piccy.info/i8/ba310813f6b3f235644b87085ba35e40/1380395599/22978/615605/TRam_20130928_0000_500.jpg (http://i.piccy.info/i8/2dc08c5843c8fc08032eb1449aaa6bf3/1380395599/91361/615605/TRam_20130928_0000.jpg)http://i.piccy.info/a3/2013-09-28-19-13/i8-5202845/500x326-r/i.gif (http://i.piccy.info/a3c/2013-09-28-19-13/i8-5202845/500x326-r)

NickLon
28.09.2013, 22:52
Вов, громаднейшее тебе спасибо! Посмотрел уже...
...

Sandrilyon
29.09.2013, 11:14
TRam_, description. :mocking:

TRam_
29.09.2013, 11:29
Ещё вчера поправил. Ссылка та же.

NickLon
30.09.2013, 11:55
рандомизирует внутри диапазона от 0 до 10
А зачем это может понадобится?

TRam_
30.09.2013, 12:11
выбрать случайный путь приёма, например.

Sandrilyon
30.09.2013, 12:34
У меня вообще определяет пассажирским поездам останавливаться на станции или нет, грузовым - загрузиться после выхода из портала или ехать порожними, и также грузовым - вероятность захода на станцию на боковой путь для стоянки. Чем больше путей приема - тем больше вероятность.

NickLon
30.09.2013, 15:02
Не, я, конечно, люблю рандомность, но не до такой же степени. Это не рандомность, это - хаос. Одной из причин катастрофы на ст.Каменская ЮВЖД в конце 80-х и стало то, что пассажирский не стал останавливаться на станции. То есть, диспетчеры вместо того, чтобы перевести пассажирский на боковой и подальше от главного, дали указание локомотивной бригаде не останавливаться на станции, следуя по главному (или отправиться гораздо раньше времени, что-то такое). А пассажиры, не долго думая, открыли стоп-кран. В результате два хвостовых вагона неуправляемый ВЛ80С прошил насквозь и остановился только на третьем на крыше.
Так что, такая рандомность на железной дороге - это хаос и беда.
Но смысл понял. Спасибо. Использовать не буду.

Sandrilyon
30.09.2013, 15:25
Нужно просто выкинуть из головы, что используется рэндомность. Если до всего у меня был один пасс. поезд с расписанием от одного портала до другого с тремя остановками на станции, то мне раньше захотелось создать еще одно такое расписание только уже для скорого поезда, который из тех 3 остановок остановится только на одной. Для этого пришлось бы разделить портальный трафик для пасс. составов на тех, которые едут с 3-мя остановками, и тех, которые - с одной. Это не проблема. Но тогда на карте будет точно понятно, что, например, ЧС4-189 будет следовать со всеми остановками по станциям, а ЧС4т-559 - только с одной. Дело в том, что Я это буду всегда знать! И это вносит элемент "ожиданности". А вот когда по выходящему из портала составу не поймешь, где на протяжении маршрута у него будут остановки, тогда становится интереснее. Поезда спокойно следуют своим командам, независимо от того, знаешь ты о ни все или нет! В данном случае - лучше не знать.

Доделаю сессию, можешь потом глянуть, как это получилось.

У меня просто другой взгляд на ботовский трафик. :mocking:

Ant.taranish
07.10.2013, 19:58
Выявил следующее: если команда IfElse variable идет первой в списке команд, полученном из БОК, она выкидывается, и выполняются обе идущие за ней команды. Соответственно решение - ставить перед ней любую другую команду.

Ant.taranish
25.10.2013, 23:52
Еще одна интересная особенность команды IfElse variable: она не работает, если за ней через одну идет другая IfElse variable, и при этом условие ложно. Выполняется первая команда, которая должна была удалиться. В этой связи интересно вернуться к этому и последующим 3 постам (https://forum.trainzup.net/showthread.php?t=2098&p=218381&viewfull=1#post218381). Похоже, обсуждаемые там конструкции так и не были проверены на практике.

TRam_
25.10.2013, 23:57
если за ней через одну идет другая IfElse variableименно ifelse или copycommand с ifelse самой первой?

потому что скобки обозначали copycommand. Но проверок взаимодействия ifelse между собой и между copycommand действительно не делал.

Ant.taranish
26.10.2013, 00:03
TRam_, именно ifelse. Первая из двух команд проверяет наличие списка из БОК и вставляет его с заменой имеющегося. Она выполняется, хотя должна удалиться, т.к. условие ложно.

TRam_
26.10.2013, 00:08
вставь вторую ifelse в shedule rule и добавляй через copycommand. По крайней мере я предполагал именно такое использование вложенных ifelse. А что с багом сделать пока не знаю. Потому что на самом деле команда работает так - копирует имеющееся у машиниста расписание, удаляет в нём нужную из команд, вставляет расписание на место и завершается.

Ant.taranish
26.10.2013, 00:17
TRam_, я просто вставлю на место второй команды пустышку wait 1 second, а уже за ней следующую IfElse:) Так что, я думаю, можно ничего не делать, я просто отписался, что есть такой нюанс.

Sandrilyon
26.10.2013, 00:43
Так и есть. Две подряд команды не работают. Сам это еще в самом начале пользования заметил, но не стал писать, поскольку удалось обходить это командой "Ждать 1 сек".

Ant.taranish
26.12.2013, 11:12
TRam_, раз уж в команде IfElsevariable нет значения 0, можно ли хотя бы добавить значение -1? Это позволит однозначно определять отрицательное значение, а также определять ноль двумя проверками.
Кстати, твое правило Variable Setup вроде присваивает переменным значения в редакторе, это не снимает проблему "пустого значения" в сессии? А то, может, и 0 теперь можно сделать.

---------- Сообщение добавлено 26.12.2013 в 13:12 ---------- Предыдущее сообщение размещено 25.12.2013 в 14:00 ----------

Добавил 0, никаких проблем при использовании variable setup. Заодно меня постигла простая истина, что можно самому легко изменить набор значений в раскрывающемся списке.

MacSergey
20.09.2014, 20:53
Правило "Variable Check Rev 1" отличается от дефолтного тем, что срабатывать будет сколько угодно раз . Также, если выставить "проверять условие каждые 5 секунд", правило будет дожидаться выполнения условия, после этого выполнит зависимые правила и завершится.

использую это правило. оно стоит у меня на 1 уровне. проверяет значение переменной каждые 5 секунд. настает момент, когда условие истино. выполняются подправила, в том числи и то, что эту переменную опять меняет.
как я понимаю, после этого правило перестает проверять переменную? как сделать что бы оно продолжило это делать?

TRam_
20.09.2014, 22:00
Предлагаю использовать Ordered list с опцией Forever на первом уровне, а на втором - ожидание переменной

MacSergey
20.09.2014, 22:10
TRam_, сейчас попробую. а можно как-нибудь правило variable modify исправить, что бы оно тоже могло запускаться много раз?

TRam_
20.09.2014, 22:31
что бы оно тоже могло запускаться много раз?В данном случае имеется в виду что будет запускатся несколько раз с дочерними правилами. А variable modify дочерних правил обычно не несёт, поэтому будет работать и в дефолтном виде.

MacSergey
20.09.2014, 23:05
TRam_, Да, действительно, ты прав. а вот дефолтное Wait тоже кажется срабатывает только 1 раз?

antikiller_bm
03.10.2014, 20:14
TRam_, variable check не работает. Она никак не реагирует на изменение переменных.
Переменные задаются, команды срабатывают на них, а вот правило это ни в какую. Сделай что нибудь, оно очень нужно.

Константин
03.10.2014, 20:38
А я думал, что только у меня не работае.

NickLon
06.10.2014, 10:14
antikiller_bm, Константин, странно. У меня всё работает. Вот, сначала объявляю переменную olk_n:
http://savepic.ru/6091064m.jpg (http://savepic.ru/6091064.jpg)
А потом в ветках правил обрабатываю её и на основании её значения выполняются те или иные ветки правил:
http://savepic.ru/6073656m.jpg (http://savepic.ru/6073656.jpg)

Может быть вы правило проверки переменной не то используете? У меня именно Variable Check Rev.1
P.S. Да, между прочим, может быть у вас дальнейшая проверка не срабатывает из-за того, что вы неверно условия проверки ставите? Вот у меня на этих скринах, например, есть потенциальная ошибка. Если идет грузовой, а за ним два подряд пассажирских. Тогда ничего вообще не соберется. Но я пошел на это сознательно (не стал переделывать) так как на БАМе два пассажирских подряд, которые нужно пропустить - это скорее нонсенс.

antikiller_bm
06.10.2014, 14:08
Я кажется догадываюсь в чем проблема. Правило не ожидает изменения переменной, оно проверяет ее однократно при своем выполнении, я правильно понял?

NickLon
06.10.2014, 16:02
Разумеется! В моём случае, как только поезд, удовлетворяющий условиям в Trigger Chack Enhanced, наедет на триггер, так сразу и запуститься дальнейшая цепочка. В том числе и правила работы с переменной. Есть и другие возможности. Но об этом надо говорить уже в другой теме.

TRam_
06.10.2014, 17:55
antikiller_bm, в опциях правила есть галочка - ждать или не ждать изменение переменной

NickLon
06.10.2014, 18:33
TRam_, не совсем так, там просто есть установка, что проверяться переменная будет каждые 5 секунд. Это хорошо, если проверку переменной ставить в корень правил. А если она будет чему-то подчинена и надо ждать как бы второго события, тапа, одно - поезд приехал на станцию, и второе - можно разбирать состав. Так вот, если поставить проверять каждые 5 секунд, то однажды состав наедет на триггер и дальше каждые 5 секунд будет идти проверка, пока вновь переменная не станет ложна. За 5 секунд что можно сделать? Отцепить вагон? Вот и получится +100500, например, активирований списка команд машинисту в БОК. Так что, так себе полезная возможность.

---------- Сообщение добавлено в 19:33 ---------- Предыдущее сообщение размещено в 19:27 ----------

Хотя, может я и не совсем прав: следующим шагом можно поставить правило изменения переменной... Хм, надо подумать, где это можно применить, где костыли пока применяю.

antikiller_bm
07.10.2014, 11:14
NickLon, меняй переменную вместе с выполнением команд.

ZVERSKY
07.10.2015, 18:04
Подскажите, правило zxPath AddAnyPathOnTrigger работает только с триггерами? Не нашёл у себя правила zxPath AddAnyPath, думал может z7xPath AddAnyPath заработает мало ли, но нифига:unknown:. А так было бы неплохо, если мы не знаем по какому пути проследует наш поезд
http://savepic.net/7398390m.jpg (http://savepic.net/7398390.htm)

TRam_
07.10.2015, 18:44
думал может z7xPath AddAnyPath заработает мало ли, но нифигаДа, z7-xPath работает только с будкой z7-xPath.


zxPath AddAnyPathOnTrigger работает только с триггерами?
Только. Могу попробовать сделать вариант для работы с поездами...

ZVERSKY
07.10.2015, 19:11
Только. Могу попробовать сделать вариант для работы с поездами...
Если это, конечно, будет не затруднительно. У меня сейчас вся сессия упёрлась...

NickLon
07.10.2015, 22:53
Только. Могу попробовать сделать вариант для работы с поездами...
А это как?:ai: На что и где будет реагировать правило? :scratch_one-s_head:

TRam_
07.10.2015, 22:59
Это будет другое правило с другим куидом, с заданием локомотива либо вагона, которому строить маршрут...

NickLon
07.10.2015, 23:06
TRam_, а сейчас что, разве это не?
http://savepic.ru/7933028m.jpg (http://savepic.ru/7933028.jpg)

TRam_
07.10.2015, 23:09
нет. Это фильтр для проезжающего ПС, на какие реагировать, а на какие - нет.

NickLon
07.10.2015, 23:14
TRam_, Вов, у меня такое чувство, что ты "созрел" для создания чего-то нового, более совершенного чем zxPath? Типа, отдохнувший от Trainz, как и я. Не? А если это так, то я могу тебе отличное техническое задание разрисовать! И уже всё созданное туда непременно должно вписываться. То есть, всё с нуля... Ну, разве что для TANE. Только у меня очень большое разочарование по поводу этой "Тани". Стоит ли на неё ставки делать - сомневаюсь.

---------- Сообщение добавлено в 23:14 ---------- Предыдущее сообщение размещено в 23:12 ----------

Тогда я не понял. В какой момент то строить маршрут какому-то ПС? Что он должен проехать, если не триггер?

TRam_
08.10.2015, 00:29
в данном случае маршрут какому-то заданному ПС.


ты "созрел" для создания чего-то нового, более совершенного чем zxPathЕщё нет. Касательно ТАНИ - там ограничения на длину "одномоментно выполяющегося скрипта" из-за чего нельзя проверить все маршруты (либо сгенерировать маневровые) за один "такт". Как это обходить, пока не знаю.

Ant.taranish
08.10.2015, 11:34
Могу попробовать сделать вариант для работы с поездами...
Это было бы замечательно. Я давно говорил, что встроенная проверка триггера неудачное решение. При использовании этого правила как дочернего она только мешает и провоцирует баги вроде дублирующихся маршрутов

Schultz
14.02.2016, 00:39
TRam_, я понимаю, что я тебя уже достал, но помоги тупенькому: как с помощью переменных сделать, чтобы при проезде определенным поездом определенной точки на карте другой состав начинал движение? Скачал я правила эти, посмотрел на них, почесал репу... может объяснишь хоть немножко?:wacko2:

Sandrilyon
14.02.2016, 01:00
Schultz, первому поезду на нужной точке назначаешь команду SVariable (установить значение переменной), а другому - команду Wait Variable (ждать переменную). Например, первый поезд устанавливает переменную wait в значение 1, а второй поезд ждет пока переменная wait будет, к примеру, больше 0 (>0).

Schultz
14.02.2016, 01:19
Sandrilyon, а как привязать переменную к нужной точке? Маркером каким то специальным или триггером?

Sandrilyon
14.02.2016, 02:03
Schultz, поставить триггер на путь, добавить правило Trigger Check, указать в правиле этот триггер и поезд (если нужно), а в дочернем правиле вставить Variable Modify.
Это если делать правилами. Я привык больше командами.

Serega_82
14.02.2016, 12:44
А есть какое-либо видео или документация по использованию переменных? Типа гайда

TRam_
14.02.2016, 14:15
Serega_82, нету. Самое непонятное я отскринил в начале этой темы, а далее уже тебе выдумывать как и где их применять.

rustik
16.02.2016, 22:24
TRam_, Прочитал тему (Организация автоматического диспетчера на однопутке) Евгения и твою. По маленьку въезжаю в суть, и тут застопорился! В правиле Variable Setup нужно прописывать все переменные как обьяснял BUGOR или же переписать то что у тебя на скринах?

TRam_
17.02.2016, 03:29
rustik, так, как объяснил BUGOR. У меня в данной теме просто примеры того, как это выглядит и что значит.

Serega_82
28.08.2016, 13:51
Не подскажите правило для отображения переменных в режиме машиниста и его(правила) настройки?

a605
28.08.2016, 14:13
Не подскажите правило для отображения переменных в режиме машиниста и его(правила) настройки?

Называется "Variable show". С настройками там все просто - сам разберешься. Обязательное условие - отображение панели "Driver HUD" (добавляется правилом "Display Driver HUD").

Alcogolist
02.01.2017, 14:48
Почему у меня правило Variable show отображает переменную score, без возможности ее изменить? Или я что-то неправильно делаю. То есть, когда я добавляю правило Variable show, там в настройках стоит score, как изменить я не понимаю, кликаю на название, ничего не происходит

NickLon
03.01.2017, 11:31
Alcogolist, score - это то место, куда следует с клавиатуры ввести имя переменной. После лова lable вместо none с клавиатуры ввести подсказку, которая будет отображаться перед значением переменной в Disolay Custom Hud. Соответствующие галки везде должны быть выставлены.
Разумеется, переменные должны быть введены с помощью правил Variable Setup или Input table.

Alcogolist
04.01.2017, 19:52
Я нажимаю добавить правило variable show. Место, для ввода у меня это только поле lable, тобишь метка для отображения. Нажимаю на слово score-ничего. При добавлении правила тоже никаких окошек для ввода нет. Как мне вписать другую переменную?

Alcogolist
17.04.2017, 18:41
Ребята, неужели никто таки не смотрел мое последнее сообщение?

TRam_
17.04.2017, 18:51
Alcogolist, скрин сделай. Случаем не русский язык в настройках выставлен?

Alcogolist
17.04.2017, 22:34
TRam_,Да. У меня стоит русификатор. Убрал его и все заработало. Спасибо

B.U.G.O.R.
11.06.2018, 18:53
Input Table это чьего авторства? Кого-то из наших? оДЛСить бы..

TRam_
11.06.2018, 23:12
Input TableНе нашего и входят в дефолт ещё наверно с 2006 трейнза (вроде бы)

B.U.G.O.R.
12.06.2018, 11:03
Да, точно. Я просто сначала в КМ посмотрел, и только потом уже в самом ТРС.

РыцарьРР
19.06.2018, 02:16
Input Table


с 2006 трейнза
В 2004 SP4, если быть точнее. В этом же патче появилась возможность возить пассажиров.

TRam_
27.06.2018, 05:04
Обновил команду VariableIfElse, теперь она может переключать в том числе команды вставки из библиотеки - https://yadi.sk/d/uMncjxVW3YTKcc . Больше не нужно будет вставлять по два набора команд для выбора 2х библиотек

B.U.G.O.R.
27.06.2018, 10:46
Больше не нужно будет вставлять по два набора команд для выбора 2х библиотек
Подробней, че-то не врубился. На ДЛС залил?

TRam_
27.06.2018, 10:56
че-то не врубилсячтобы можно было в случае наподобие https://youtu.be/1uvBZgkVOvo?t=9m15s в else также вставлять copycommand. И чтоб copycommand могла копировать список, в котором первой идёт команда ifelse

B.U.G.O.R.
27.06.2018, 11:07
Хм, странно. Что-то у меня в памяти висит, что я уже когда-то делал подобное. Ну да ладно, на ДЛС-то отправил обновление?

TRam_
27.06.2018, 11:17
B.U.G.O.R., ждёт подтверждения

Sandrilyon
27.06.2018, 11:47
TRam_, т.е. можно один ifelse вставлять в другой ifelse?

TRam_
27.06.2018, 11:56
Sandrilyon, второй внутри CopyCommand'а. Хотя можно и снаружи, но тогда первый будет удалять либо второй ifelse, либо первую команду второго ifelse (соответственно второй ifelse удалит либо свою вторую, либо команду, следующую за его набором - то есть лучше делать с помощью библиотек или CopyCommand'ов)

---------- Сообщение добавлено в 11:56 ---------- Предыдущее сообщение размещено в 11:53 ----------

И да, теперь ifelse будет дожидаться наличия хотя бы 2х команд после себя, но условие будет проверено только в момент начала выполнения.

a605
10.07.2018, 14:54
Прошу помощи... Есть четыре переменных, каждой из которых одновременно (в пределах 0-15 секунд) должно присвоиться значение из одного и того же массива значений от 1 до 5, при этом значение каждой переменной должно быть уникальным. Весь день пробую разные комбинации, но не могу добиться одновременной уникальности значений всех четырех переменных. Имеет ли задача решение?

B.U.G.O.R.
10.07.2018, 15:29
a605, есть сразу мысля сходу, но там городить придется. Нужен лок, который будет ождидать команду из БОК, в которой будет случайная активация. В первой группе команд 4 команды с присвоением первой переменной такого-то значения. После присвоения этого значения сразу ожидание следующей группы, где такая же тема, только для второй переменной. И так для всех. А, чтобы избежать одинакового значения, надо перед присвоением номера переменной ставить команды деактивации списка команд в последующих переменных, в которых идет присвоение такого же числа. Хз, это я так, первая мысля.

a605
10.07.2018, 17:18
это я так, первая мысля.
Еще раз спасибо! Система работает и заявленная цель (разные значения переменных) достигается. Но, если очереди команд внесены в библиотеку последовательно в порядке возрастания, то вторая и последующие переменные принимают значения тоже в порядке возрастания. Поэтому совет от меня: поменяйте их местами в произвольном порядке.

B.U.G.O.R.
10.07.2018, 17:32
a605, http://images.vfl.ru/ii/1531233108/c6371407/22430775_m.jpg (http://vfl.ru/fotos/c637140722430775.html)

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

a605
10.07.2018, 17:41
можешь сделать их активацию в случайном порядке, тогда у тебя каждый раз будут разные переменные, даже если ты по порядку их вносишь
Так и есть. Век живи - век учись.

TRam_
05.09.2018, 00:32
По просьбе Sandrilyon'а добавил группировку переменных в командах VariableIfElse и Variable Random - https://yadi.sk/d/vlfqnKNO4w-yuw (ставить с пропуском)

RZD29RUS
21.01.2019, 17:44
Подскажите пожалуйста по порталам сигналки SU, всё настроил, станцию в конце карты сделал из невидимых, локомотив доехал ботомашинистом до маркера, удалился, но выбило жука, что - то про AI Driving Speed. В чём может быть проблема?

TRam_
21.01.2019, 18:01
что - то про AI Driving SpeedЗначит писать надо было в тему ботомашиста - ошибка у этой команды.

RZD29RUS
21.01.2019, 18:17
Значит писать надо было в тему ботомашиста - ошибка у этой команды


Ой блин чёрт, не туда. Извиняюсь. Модераторы, переместите сообщение в тему по БМ.

TRam_
07.08.2019, 11:29
Сделал по просьбе a605 правило отображения HTML, которое обрабатывает нажатия на ссылки и при этом изменяет значения переменных в соответствии с настроенной таблицей - https://yadi.sk/d/XAnMZ4AkFF6n2w
В паке также тестовая карта и тестовый HTML.

http://i.piccy.info/i9/7f43a22f303ef16b60a9b0ac9afb4422/1565122469/23579/1328353/1_500.jpg (http://i.piccy.info/i9/b27e20298c44d57e5ac0a5f99d530081/1565122469/197267/1328353/1.png)http://i.piccy.info/a3/2019-08-06-20-14/i9-13325115/438x381-r/i.gif (http://i.piccy.info/a3c/2019-08-06-20-14/i9-13325115/438x381-r)

Bogodaroff
15.05.2020, 18:17
Всем привет. Ради интереса (вдруг кому пригодится) дополнил команду ChangeSVariable.

Добавил операторы:

"gcw" - в заданную переменную записывает количество вагонов (в InputTable svar,var,gcw,0). Бывает нужно при разборке состава, погрузки/выгрузки вагонов.
"gct" - в заданную переменную записывает номер пути, на котором стоит поезд (в InputTable svar,var,gct,0). Мне например таким образом удобнее записывать номер пути, нежели через тот же БОК и триггер ловить поезд. Для работы необходим sU mrk с настройками номера пути.
"case" - конструкция switch...case. Исходя из значения переменной позволяет выбрать ту или иную команду (примерно как ifelse, только выбор идет не из двух команд, а из сколько угодно). (InputTable svar,var,case,n где n - максимальное значение, которое может принять переменная (так же это количество команд после команда "case")

За кривое описание извините, я не поэт =)

Ссылка: https://yadi.sk/d/HHMTqB--nbVSgQ
Автор изначальной версии команды (без моих вставок): atilabarut

Rock-sett
15.05.2020, 22:08
...дополнил команду ChangeSVariable....
Bogodaroff, на ДЛС будет эта команда?

Bogodaroff
16.05.2020, 15:40
Если очень нужно - могу залить

Rock-sett
16.05.2020, 19:46
Bogodaroff, загрузка на ДЛС, это наилучший вариант. Залейте как будет время, пожалуйста.

Bogodaroff
16.05.2020, 21:06
Окей =)

---------- Сообщение добавлено в 21:06 ---------- Предыдущее сообщение размещено в 21:04 ----------

В течении 24 часов будет на DLS

Sandrilyon
21.09.2020, 12:56
TRam_, можешь для TRS19 добавить возможность создавать вложенные списки для команды WaitUntilSVariable?

<kuid2:131986:1006:1> WaitUntilSVariable
При добавлении большего количества переменных они перестают отображаться в списке.
Для команд VariableIfElse и Variable Random такие списки создаются.

---------- Сообщение добавлено в 12:56 ---------- Предыдущее сообщение размещено в 02:27 ----------

Только сейчас заметил, что это не Владимира ассет.
Заглянул в скрипт - там вроде заложено создание подменю, но почему-то не работает.

TRam_
21.09.2020, 13:18
Sandrilyon, возможно не в то подменю положено.

Sandrilyon
21.09.2020, 13:25
TRam_, да, так и есть. Переставил, разбитие на группы заработало.

RZD29RUS
01.03.2021, 20:10
Есть такая идея у меня, но не знаю, позволит ли Trainz её полноценно воплотить.


Суть заключается в создании полноценной смены машиниста маневрового тепловоза, но не просто последовательно проехать по собранным ДСП маршрутам, а выполнить набор заданий:
Собрать состав с определённым количеством вагонов, как только количество вагонов достигнет нужной отметки, уезжаем в депо, смена закончена, перед уездом можно посмотреть сцену, как уже магистральный локомотив прицепляется и уезжает в закат, набор команд для него естественно активируется только после того, как мы сформировали состав. Формирование хотелось бы сделать особым, чтобы наше задание заключалось скажем в использовании только хопперов, а другие вагоны переменная игнорировала.
Вопрос:
Можно ли в игре, в качестве переменной использовать количество вагонов в составе и тип подвижной единицы, чтобы значение повышалось на единицу только при прицепке конкретного вагона?

Bogodaroff
27.07.2021, 11:41
В теории можно. У меня где то была команда с подсчетом вагонов в составе, правда без определения типа

Donate with PayPal button

New New