Информация: Уважаемые посетители! В течение нескольких месяцев на форуме существовала проблема с регистрацией новых пользователей, о которой администрации стало известно недавно. Если вы ранее пытались зарегистрироваться на форуме, но не получили на ваш e-mail письмо с ссылкой для подтверждения регистрации, просим вас зарегистрироваться повторно. Приносим извинения за доставленные неудобства. Если вы все еще испытываете проблемы с регистрацией на форуме, обратитесь за помощью на e-mail: mr.angelo@railroadsim.net

LuaScript - для RS

Другие вопросы и проблемы разработки дополнений

Re: LuaScript - для RS

Сообщение Skif » 26.05.2017, 14:22

А я говорил, что в этой игре еще интересных фич - непочатый край.

Фактически, это тот же МСТС, но на относительно новом графическом и звуковом движке. Теоретически, можно расковырять его до состояния прадедушки вплоть до написания на его основе собственного продукта, если когда-либо выложат исходники (а чехи писали MSTSBin и без исходников ядра). Только стоит ли? Проще сваять с нуля игру на современном IDE.
Skif
 
Сообщения: 2871
Зарегистрирован: 01.10.2009, 17:42
Благодарил (а): 263 раз.
Поблагодарили: 813 раз.
Блог: Просмотр блога (2)
Имя: Дмитрий

Re: LuaScript - для RS

Сообщение i2GR » 26.05.2017, 21:29

Люди, да что вы там ТАКОЕ делаете то?!
Аватара пользователя
i2GR
 
Сообщения: 438
Зарегистрирован: 04.09.2008, 16:59
Благодарил (а): 188 раз.
Поблагодарили: 262 раз.
Блог: Просмотр блога (4)
Имя: Игорь

Re: LuaScript - для RS

Сообщение ista011 » 26.05.2017, 22:11

Кстати, есть у кого рабочий код тормозной магистрали состава и вагонного тормозного воздухораспределителя?
ista011
 
Сообщения: 410
Зарегистрирован: 04.12.2009, 22:20
Откуда: Москва
Благодарил (а): 22 раз.
Поблагодарили: 190 раз.
Играю в: RailWorks
Имя: Алексей

Re: LuaScript - для RS

Сообщение i2GR » 26.05.2017, 23:15

Нет, ибо не нужен от слова совсем
Аватара пользователя
i2GR
 
Сообщения: 438
Зарегистрирован: 04.09.2008, 16:59
Благодарил (а): 188 раз.
Поблагодарили: 262 раз.
Блог: Просмотр блога (4)
Имя: Игорь

Re: LuaScript - для RS

Сообщение Skif » 27.05.2017, 10:59

У меня на тормоза написана "надстройка", фактически, Trainbrake и превратился в "воздухораспределитель" под управлением рукояток кранов и связывающей их логики разобщительных кранов и блокировок.

Но дальше полезть не получится - в отличие от ТРС, скрипты TS не могут непосредственно влиять на переменные давления в тормозной системе и пневматике в целом. Тормоза в игре забиты весьма жестко и весьма глючно, код практически целиком перекочевал из МСТС.
Skif
 
Сообщения: 2871
Зарегистрирован: 01.10.2009, 17:42
Благодарил (а): 263 раз.
Поблагодарили: 813 раз.
Блог: Просмотр блога (2)
Имя: Дмитрий

Re: LuaScript - для RS

Сообщение ista011 » 27.05.2017, 11:34

Да у меня сейчас также, просто я отдельно от этого сделал тормозную магистраль и столкнулся с проблемой распределения воздуха по ней.
ista011
 
Сообщения: 410
Зарегистрирован: 04.12.2009, 22:20
Откуда: Москва
Благодарил (а): 22 раз.
Поблагодарили: 190 раз.
Играю в: RailWorks
Имя: Алексей

Re: LuaScript - для RS

Сообщение Света » 27.05.2017, 14:16

А в чём заключается проблема?
Я правильно понимаю, что "отдельно сделанная магистраль" - это сообщения, которые передаются из вагона управления по составу, с некоторой задержкой в каждом вагоне?
Извиняться — не значит быть воспитанным. Быть воспитанным — значит не допускать того, за что необходимо извиняться. (с)
Аватара пользователя
Света
 
Сообщения: 214
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 103 раз.
Поблагодарили: 240 раз.
Блог: Просмотр блога (2)
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение ista011 » 27.05.2017, 14:45

Так надо чтобы в каждом вагоне было одно давление (воздух то по магистрали распределяется равномерно, хоть и с задержкой), а воздействует на магистраль каждый вагон.
ista011
 
Сообщения: 410
Зарегистрирован: 04.12.2009, 22:20
Откуда: Москва
Благодарил (а): 22 раз.
Поблагодарили: 190 раз.
Играю в: RailWorks
Имя: Алексей

Re: LuaScript - для RS

Сообщение Света » 27.05.2017, 15:30

Я не совсем понимаю, какой смысл указывать вагону, в котором нет кабины, и, соответственно, тормозного крана, какое давление в ТМ.
Единственная причина, при которой в этом есть смысл, ИМХО - если надо рассчитать скорость приложения тормозного усилия. Других вариантов не вижу, потому что даже если запихать в каждый вагон код воздухораспределителя и рассчитывать силу торможения для каждого вагона персонально, эти данные вагон использовать не сможет - работать будет TrainBrakeControl ведущего локомотива, остальные игнорируются, а при попытке считывать их значения будут возвращать или nil, или 0.
То есть, какой бы алгоритм не был, но полный расчет тормозов должен происходить исключительно в кабине управления, частичный (для синхронизации) - в неактивных кабинах, на случай смены кабины (хотя, проще синхронизировать ключевые значения через внутренний обмен и не делать дополнительные вычисления). Просто нет смысла делать по другому. ИМХО.
Другое дело, если создавать полную имитацию ТМ. Например, для создания стоп-крана. Тогда смысл в этом есть.
Ну а организовать передачу давления ТМ от ведущего вагона/локомотива совсем ведь не сложно. С помощью SendConsistMessage ().
Извиняться — не значит быть воспитанным. Быть воспитанным — значит не допускать того, за что необходимо извиняться. (с)
Аватара пользователя
Света
 
Сообщения: 214
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 103 раз.
Поблагодарили: 240 раз.
Блог: Просмотр блога (2)
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение Skif » 27.05.2017, 18:50

Организовать передачу несложно, но максимум, на что ее можно использовать - поставить в вагоне манометр. Например, в вагоне метро. В этом и выражаются реализованные через жопу (хард кодом) тормоза - системные контролы и переменные нельзя переопределить или модифицировать скриптом, как на ведущем, так и на ведомом подвижном составе. Если бы не так, можно было бы и стоп-кран сделать (с этим как раз проблем нет - передай от него сообщение на локомотив сорвать Emergency на Trainbrake) , и нормальную работу не только тормозов, но и поездных проводов у многосекционников и МВПС. Но увы.
Skif
 
Сообщения: 2871
Зарегистрирован: 01.10.2009, 17:42
Благодарил (а): 263 раз.
Поблагодарили: 813 раз.
Блог: Просмотр блога (2)
Имя: Дмитрий

Re: LuaScript - для RS

Сообщение Света » 29.08.2017, 12:31

Функция-драйвер для локомотивного светофора.
Извиняться — не значит быть воспитанным. Быть воспитанным — значит не допускать того, за что необходимо извиняться. (с)
Аватара пользователя
Света
 
Сообщения: 214
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 103 раз.
Поблагодарили: 240 раз.
Блог: Просмотр блога (2)
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение i2GR » 29.08.2017, 14:41

дешифратор был бы интереснее
Аватара пользователя
i2GR
 
Сообщения: 438
Зарегистрирован: 04.09.2008, 16:59
Благодарил (а): 188 раз.
Поблагодарили: 262 раз.
Блог: Просмотр блога (4)
Имя: Игорь

Re: LuaScript - для RS

Сообщение Света » 30.08.2017, 15:04

Отказать - выше моих сил.

Дешифратор для версии 0.5

Инициализация:
Код: Выделить всё
    DataVersion = 0.5
   Sig_ST = {X = {10000, 10000, 10000, 10000}, Y = {10000, 10000, 10000, 10000}}
   SignMess = "0"
   gALSNSt = {X = "none", Y = "none"}
   gDistSig = {X = 0, Y = 0}
   pDistSig = {X = 0, Y = 0}
   gID = {X = "", Y = ""}
   ChFormat = {X = "none", Y = "none"}
   Timer ("ALSN_IN", 0.01)

Системная функция приема сообщений:
Код: Выделить всё
function OnCustomSignalMessage (ConsistMessage)

   SignMess = ConsistMessage
   SecurityDevicesLogic("code")
   
end

Блок дешифратора:
Код: Выделить всё
function SecurityDevicesLogic(argument)
   if argument == "code" then         -- прием и фильтрация кода. Добавить фильтр от других возможных кодов
      local ChFormat_pos = string.find (SignMess, "[~*=+]")
      local ChFormat_data = string.sub(SignMess, ChFormat_pos, ChFormat_pos)
      ID = string.sub(SignMess,11, ChFormat_pos-1);
      if DataVersion == "0.5" then
         Code = tonumber(string.sub(SignMess,1,2))
         Dist = tonumber(string.sub(SignMess,6,10))
         table.insert (Sig_ST.X, 1, Dist)
         table.remove (Sig_ST.X)
         local pval = 9999
         for k, val in ipairs (Sig_ST.X) do
            if val < pval then
               pval = val
            end
         end
         if pval == Dist then
            if Speed > -0.005 and not front then
               ChFormat.Res = ChFormat_data
               gALSNSt.Res, gDistSig.Res, gID.Res = Code, Dist, ID
               Timer ("ALSN_IN", 3, "restart")   -- контроль поступления сообщений
            end
         end
      elseif DataVersion == "0.6" then --другие каналы дешифратора

      elseif DataVersion == "0.7" then --другие каналы дешифратора

      end
   end
end


В таблицах дешифратора присутствует некоторая избыточность - это из-за того, что они используются совместно этим дешифратором и дешифратором 0.7 версии.

В переменную DataVersion необходимо загрузить версию используемой сигналки.

Результат помещается в таблицы:
- gALSNSt.Res - показания светофора;
- gDistSig.Res - расстояние до светофора;
- gID.Res - обозначение светофора (на литерной табличке);
- ChFormat.Res - "частота тока" для фильтра ("~", "*", "+", "=")

Дешифратор использует функцию Timer (). Завершение отсчета свидетельствует о прекращении приема кодов. Для этого в обработчике принятых кодов я сначала проверяю состояние таймера, а только потом, если отсчет не завершен, считываю данные из результатирующих таблиц.
Извиняться — не значит быть воспитанным. Быть воспитанным — значит не допускать того, за что необходимо извиняться. (с)
Аватара пользователя
Света
 
Сообщения: 214
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 103 раз.
Поблагодарили: 240 раз.
Блог: Просмотр блога (2)
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение i2GR » 30.08.2017, 21:45

да...тяжеленько понять, что происходит))
Аватара пользователя
i2GR
 
Сообщения: 438
Зарегистрирован: 04.09.2008, 16:59
Благодарил (а): 188 раз.
Поблагодарили: 262 раз.
Блог: Просмотр блога (4)
Имя: Игорь

Re: LuaScript - для RS

Сообщение Света » 02.09.2017, 18:40

Если Вы сделали в Вашем локомотиве кнопку глушения двигателя или полного отключения всех систем, будьте готовы к тому, что этот локомотив будет заглушен, если в начале сценария он будет расположен дальше, чем за 3 км от игрока. В случае, если этот локомотив заспаунится в сценарии квик-драйва - он проедет мимо как призрак. Без дыма, без огней, а если скриптованная тяга - то ещё и молча...
А все потому, что у симулятора есть плохая привычка устанавливать все контролы в стартовое положение не во время инициализации, а когда игрок приблизится на расстояние 2300 метров от локомотива. И если кнопка отключения предусмотрена - она сработает.
Защита от такого самоуправства очень проста: повесить на такие критические органы управления дополнительные условия, проверяющие, игроку или боту принадлежит локомотив. И, если боту, то блокировать. Помогает )).

i2GR писал(а):да...тяжеленько понять, что происходит))
Если есть какие вопросы - без проблем, я помогу разобраться. Но расписывать построчно как-то не было желания - не факт, что кому-то этот модуль нужен, да и не тянет эта функция на завершенный блок :)
Извиняться — не значит быть воспитанным. Быть воспитанным — значит не допускать того, за что необходимо извиняться. (с)
Аватара пользователя
Света
 
Сообщения: 214
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 103 раз.
Поблагодарили: 240 раз.
Блог: Просмотр блога (2)
Играю в: RailWorks
Роль: Разработчик

Пред.След.

Вернуться в [RW] Другие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1