Donate with PayPal button New New

+ Ответить в теме
Страница 3 из 5 ПерваяПервая 1 2 3 4 5 ПоследняяПоследняя
Показано с 21 по 30 из 49

Тема: Разветвленная сеть команд

  1. #21
    Почетный пользователь Аватар для Kompozitor
    Регистрация
    20.07.2010
    Страна
    Адрес
    Харьков
    Сообщений
    5,945

    По умолчанию

    Цитата Сообщение от TRam_ Посмотреть сообщение
    И как она бы отслеживала поездную обстановку?
    Допустим, по расстоянию до того самого трексайда и в зависимости от порядка поездов, движущихся к трексайду на подходе к станции, от их приоритета.

  2. #Trainz
    Реклама
    Регистрация
    Постоянная
    Адрес
    Весь мир
    Сообщений
    Много

    Donate with PayPal button N3v New New

     

  3. #22
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    в зависимости от порядка поездов, движущихся к трексайду на подходе к станции, от их приоритета
    Простейший случай с 2мя приоритетами разобран тут - http://trainz.org.ru/mediawiki/index...g_at_trackside

  4. #23
    Пользователь Аватар для NickLon
    Регистрация
    23.09.2009
    Страна
    Адрес
    Москва
    Возраст
    50
    Сообщений
    2,427
    Автор

    По умолчанию

    Kompozitor, то, что ты предложил, конечно очень близко к идеальному графику движения поезда. Но это уже из области "Нью-Васюков", куда "автоматически переезжает столица".
    Не нужно, не нужно всё усложнять! Это, если вообще реализуемо, настолько сложно, что даже если скриптеры это и напишут, чтобы в этом потом обычному пользователю разобраться и, что главное, правильно настроить, чтобы это всё как надо ездило, как минимум нужно походить на курсы ДСП, ДНЦ, если таковые существуют.
    Вот если реализуют то, что в первом сообщении, то есть мою идею, то это уже будет колоссальный прорыв! А уподобляться Манилову из "Мертвых душ" Гоголя - неблагодарное занятие.
    Тем более, что, как сказал TRam_, многое уже есть. Достаточно только это всё правильно применить. Например, в твоём случае и грузовой и скорый за ним идут в одном направлении, как я понял. Следовательно, электра никогда навстречу до прохождения скорого не выйдет. А на грузовой либо сработает правило Overtaking at trackside, либо при грамотном составлении ситуации в зависимости от значений определенных переменных грузовой пойдет на боковой чтобы либо отдать вагоны под маневры, либо забрать их после маневров. Тут разветвленная сеть команд помогла бы, конечно, но это не критично, так как и без неё ситуация реализуема.
    Иногда мы принимаем такие решения, которым тараканы в голове аплодируют стоя.

  5. Сказал спасибо:


  6. #24
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Оочень давно висела эта идея с ветвлением... Ну что ж, и до неё у меня дошли руки.

    http://narod.ru/disk/51494804001.4bb..._else.cdp.html

    Итак, создан гибрид CopyCommand и CheckVariable. Первая команда, которая работает по принципу си-шной
    Код:
    if()
    {
    }
    else
    {
    }
    VariableIfElse

    В зависимости от выполнения условия, заданного в ней, убирает из списка команд либо следующую, либо "через одну" команду. Соответственно в эти 2 места можно поместить CopyComand из SheduleRule, благодаря чему ряд команд будет настолько разветвлённым, насколько мы этого пожелаем.




    Но есть одно "но". Список переменных, задаваемых дефолтным правилом Variable Modify , не виден в редакторе. Поэтому было сделано дополнительное правило, которая позволяет уже в редакторе добавлять переменные - VariableAdd . Правда, правило с очень ограниченной функциональностью...

  7. Сказали спасибо: (3)


  8. #25
    Пользователь Аватар для Ant.taranish
    Регистрация
    21.03.2011
    Страна
    Возраст
    33
    Сообщений
    582

    По умолчанию

    TRam_, посмотрел, отличная штука. Что не очень нравится - то, что в правиле можно добавить только одну переменную и то, что значения ограничены диапазоном 1-10 (даже 0 нет). Я бы предложил задавать условия аналогично команде SVariable - в правиле InputTable вписывать условие целиком. Если тут есть какие-то подводные камни, то хотя бы добавить в VariableAdd возможность указать несколько переменных. В принципе никакого другого функционала от него и не требуется.

    Раз уж появилась такая команда, выскажу свою идею, какой команды не хватает в дополнение к ней. Которая бы собственно меняла значение переменной. Смысл не в том, чтобы сделать альтернативу правилу. Главное, что команда позволит проверить правилом Variable Check выполнение команды ботом, что во многих случаях гораздо удобнее, чем проверять события наезда на триггер, остановки поезда итп. Еще это позволит увязать выполнение команд одного бота с выполнением команд других. Конкретных вариантов применения может быть сколько угодно, большой простор для создания сложных логических взаимосвязей в сессии.
    Здесь тоже можно задавать операции целиком в InputTable, например "mvar,x,set,10", "mvar,y,add,5", "mvar,z,sub,3", где "mvar" - префикс, по которому команда определяет, какие записи выводить в список условий, далее переменная, оператор и значение. Все эти условия в правиле легко клонируются и редактируются, работать с ними не труднее, чем с раскрывающимися списками.

  9. #26
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Цитата Сообщение от Ant.taranish Посмотреть сообщение
    VariableAdd возможность указать несколько переменных.
    а что мешает добавить сразу несколько этих правил ? Просто мне не хотелось долго возиться с ним, чтоб получить ещё один аналог Variable Modify с добавлением условий, как в SetJunctions. Кстати в Variable Modify я сколько не пытался задать 0 переменной, этого у меня не вышло. Потому и сделал в команде с 1.

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

    Здесь тоже можно задавать операции целиком в InputTable, например "mvar,x,set,10", "mvar,y,add,5", "mvar,z,sub,3",
    ну так есть же такая команда, ChangeSVariables . Поддерживает, судя по скрипту, префиксы set, inc и dec . Соответственно инкриментирование и декриментирование - сложение и вычитание. Если нет доступа к DLS - http://narod.ru/disk/51542527001.96f...ables.cdp.html

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

    У WaitUntilSVariable список знаков таков:

    eq =

    gt >

    lt <

    ge >=

    le <=


    Но всё равно, мне подход с InputTable не нравится. Почему - не знаю.
    Последний раз редактировалось TRam_; 03.06.2012 в 15:04.

  10. Сказал спасибо:


  11. #27
    Пользователь Аватар для Ant.taranish
    Регистрация
    21.03.2011
    Страна
    Возраст
    33
    Сообщений
    582

    По умолчанию

    Цитата Сообщение от TRam_ Посмотреть сообщение
    а что мешает добавить сразу несколько этих правил?
    в принципе ничего
    Кстати в Variable Modify я сколько не пытался задать 0 переменной, этого у меня не вышло.
    вообще 0 прекрасно задается... Если помнишь, в моем сценарии я для наглядности вводил переменную "движение", которая принимала значение 0 при остановке и 1 при начале движения.
    Цитата Сообщение от TRam_ Посмотреть сообщение
    ну так есть же такая команда, ChangeSVariables
    Видимо я плохо искал Или же она появилась на DLS недавно. В любом случае спасибо за наводку.

  12. #28
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Цитата Сообщение от Ant.taranish Посмотреть сообщение
    вообще 0 прекрасно задается... Если помнишь, в моем сценарии я для наглядности вводил переменную "движение", которая принимала значение 0 при остановке и 1 при начале движения.
    задать 1 а потом вычесть 1 можно, да. А вот задать именно 0 сразу - нельзя.

    В любом случае спасибо за наводку.
    ссылку кинул в предыдущем посте.

  13. #29
    Пользователь Аватар для NickLon
    Регистрация
    23.09.2009
    Страна
    Адрес
    Москва
    Возраст
    50
    Сообщений
    2,427
    Автор

    По умолчанию

    Между прочим, будьте осторожны с правилом Scheck Variables! Она как-то странно реагирует на 0. При старте сессии, когда с переменной ничего не делалось, у неё не 0, а некое "ПустоеЗначение". Более того, даже когда вы значению переменной прибавите 1, а затем вычтете 1, если в этот момент никакой ПС не ждет значения 0 этой переменной WainUntilSVariables, то впоследствии этот 0 ПС и не увидит. Так и будет стоять ждать. Поэтому в своё время я не стал работать с нулем, а со значимыми значениями (1,2 и т.д.)

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

    Володя, отлично твоё новшество сработало! Это то, что мне надо было!
    "Теперь пойдет уж музыка не та!
    У нас запляшут лес и горы!"
    Спасибо!
    Только, правда, я не понял, почему оно "помнит" какие-то другие переменные, в отличие от тех, которые я задал в VariableAdd.

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

    Цитата Сообщение от TRam_ Посмотреть сообщение
    задать 1 а потом вычесть 1 можно, да. А вот задать именно 0 сразу - нельзя.
    Почему нельзя? И в InputTable тоже нельзя? Или это как раз тот самый Ахтунг, о котором я писал выше?
    Иногда мы принимаем такие решения, которым тараканы в голове аплодируют стоя.

  14. #30
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Цитата Сообщение от NickLon Посмотреть сообщение
    Или это как раз тот самый Ахтунг, о котором я писал выше?
    видимо да.

    ---------- Сообщение добавлено в 18:29 ---------- Предыдущее сообщение размещено в 18:25 ----------

    Цитата Сообщение от NickLon Посмотреть сообщение
    Только, правда, я не понял, почему оно "помнит" какие-то другие переменные
    все переменные, которые оказались в библиотеке SessionVariables, отображаются в команде. Видимо какие-то правила всё же могут их сохранять в редакторе.

+ Ответить в теме

Ваши права

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