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

LuaScript - для RS

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

Re: LuaScript - для RS

Сообщение ista011 » 06.08.2013, 00:03

supermax писал(а):АКБ - это про аккумуляторную батарею речь?


Да.
ista011
 
Сообщения: 410
Зарегистрирован: 04.12.2009, 22:20
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 188 раз.
Играю в: Train Simulator Classic
Имя: Алексей

Re: LuaScript - для RS

Сообщение supermax » 06.08.2013, 00:18

Я логику АКБ написал свою.
1. Есть дефолтное значение - 50 В.
2. Из этого значения дискретно (раз в секунду) отнимаю расход мощности потребителями (БФ, прожектор - при чём различен расход для тусклого и яркого, освещение ходовой части, освещение кабины - тоже зависит яркое или тусклое).
3. Но раз есть расход, должна быть и зарядка, если включён вентилятор низкий/высокий (загорается ГУ светодиод) идёт зарядка постепенная батареи микродолями, но она превышает расход всех потребителей (т.е. если даже всё включить хватает и на потребителей и на зарядку).
4. Если идёт постепенная разрядка то и уменьшаю Range источникам света (см. SetRange в моём блоге по скриптам под катом, где вызовы Call), т.е. урезаю потребителям потребляемую мощность.
Код небольшой в сумме :)
7 раз подумай - 1 раз напиши.
supermax
 
Сообщения: 596
Зарегистрирован: 24.08.2011, 14:03
Откуда: Краснодар
Благодарил (а): 66 раз.
Поблагодарили: 237 раз.
Блог: Просмотр блога (2)
Играю в: Train Simulator Classic
Имя: Максим

Re: LuaScript - для RS

Сообщение ista011 » 06.08.2013, 02:05

Черт, я понял, что у меня в скрипте не работают SendConsistMessage. Сообщения передаются только если в блюпринте выставить параметр "применить к составу". Что-то я не вкурил :)
ista011
 
Сообщения: 410
Зарегистрирован: 04.12.2009, 22:20
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 188 раз.
Играю в: Train Simulator Classic
Имя: Алексей

Re: LuaScript - для RS

Сообщение supermax » 06.08.2013, 02:28

Это где такой параметр? Не припомню что-то. Есть у контрола насколько помню булево - чтобы значение контрола синхронизировать у всех единиц ПС, но оно не работает(
Сейчас не смогу скинуть, как днем попаду к компу скину кусок скрипта с комментариями касательно вольтметра АКБ :)
7 раз подумай - 1 раз напиши.
supermax
 
Сообщения: 596
Зарегистрирован: 24.08.2011, 14:03
Откуда: Краснодар
Благодарил (а): 66 раз.
Поблагодарили: 237 раз.
Блог: Просмотр блога (2)
Играю в: Train Simulator Classic
Имя: Максим

Re: LuaScript - для RS

Сообщение ista011 » 06.08.2013, 02:45

Спасибо, буду ждать.

P.S. неожтданно SendConsistMessage оживил пантографы, но если не отпустив кнопку переключиться на другой вид, то он перестанет работать. Двери не оживил, точнее то есть, то нет, но только на половине состава, хотя скрипт везде одинаковый.

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

Re: LuaScript - для RS

Сообщение supermax » 06.08.2013, 03:03

forum54/topic6949-30.html#p212246
Если код остался как там, то следует также копнуть, что отправка идет только в одном направлении. Я к примеру отправлял для пантографа и вперёд и назад. Вперёд - 0, назад - 1. При чем направление может меняться, когда меняем направления движения. Поэтому и делается отправка вперёд/назад +ретранслятор для проталкивания сообщений дальше :)
7 раз подумай - 1 раз напиши.
supermax
 
Сообщения: 596
Зарегистрирован: 24.08.2011, 14:03
Откуда: Краснодар
Благодарил (а): 66 раз.
Поблагодарили: 237 раз.
Блог: Просмотр блога (2)
Играю в: Train Simulator Classic
Имя: Максим

Re: LuaScript - для RS

Сообщение ista011 » 06.08.2013, 03:27

Надо разобраться, как это всё реализовать. Код я уже поменял не раз:)
ista011
 
Сообщения: 410
Зарегистрирован: 04.12.2009, 22:20
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 188 раз.
Играю в: Train Simulator Classic
Имя: Алексей

Re: LuaScript - для RS

Сообщение supermax » 06.08.2013, 13:00

Код: Выделить всё
 function Initialise ()
prevBatteryTime = 0
source1 = 0
source2 = 0
source3 = 0
source4 = 0
source5 = 0
source6 = 0
chargeBattery = 0
end

function OnControlValueChange(name, index, value)
if(name == "tm_LightingChassis") then
        if(value == 1) then
         Call("Wheel01_Left_Light:Activate", 1)
         Call("Wheel01_Right_Light:Activate", 1)
         Call("Wheel02_Left_Light:Activate", 1)
         Call("Wheel02_Right_Light:Activate", 1)
         Call("Wheel03_Left_Light:Activate", 1)
         Call("Wheel03_Right_Light:Activate", 1)
         Call("Wheel04_Left_Light:Activate", 1)
         Call("Wheel04_Right_Light:Activate", 1)
         source1 = 0.0008   
      else
         Call("Wheel01_Left_Light:Activate", 0)
         Call("Wheel01_Right_Light:Activate", 0)
         Call("Wheel02_Left_Light:Activate", 0)
         Call("Wheel02_Right_Light:Activate", 0)
         Call("Wheel03_Left_Light:Activate", 0)
         Call("Wheel03_Right_Light:Activate", 0)
         Call("Wheel04_Left_Light:Activate", 0)
         Call("Wheel04_Right_Light:Activate", 0)
         source1 = 0   
      end
end
end

function Update(time)
simulationTime = Call( "*:GetSimulationTime") --время начала симуляции   
--------------------------------------------------------------------------------------
  --Зарядка батареи при включённом МВ---------------------------------------------------
   if(Call( "*:GetControlValue", "vnt_low", 0 ) == 1 and Call("*:GetControlValue", "Voltmeter_battery", 0) < 50) then
      chargeBattery = 0.0036
   elseif(Call( "*:GetControlValue", "vnt_hight", 0 ) == 1 and Call("*:GetControlValue", "Voltmeter_battery", 0) < 50) then
      chargeBattery = 0.0048
   else
      chargeBattery = 0
   end 
--------------------------------------------------------------------------------------
  --Симуляция вольтметра батареи--------------------------------------------------------
   if(simulationTime >= prevBatteryTime + 1) then
       Call("*:SetControlValue", "Voltmeter_battery", 0, Call("*:GetControlValue", "Voltmeter_battery", 0) - source1 - source2 - source3 - source4 - source5 - source6 + chargeBattery)
        prevBatteryTime = simulationTime
      --------------------------------------------------------------------------------------
      --Изменение интенсивности освещения в зависимости от заряда батареи------------------
      Call( "Front_Light_dim:SetRange", 1.02 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Front_Light_bright:SetRange", 4.09 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "CabLight_bright:SetRange", 0.1 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "CabLight_bright2:SetRange", 0.1 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "CabLight_dim:SetRange", 0.04 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "CabLight_dim2:SetRange", 0.04 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Wheel01_Left_Light:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Wheel01_Right_Light:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Wheel02_Left_Light:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Wheel02_Right_Light:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Wheel03_Left_Light:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Wheel03_Right_Light:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Wheel04_Left_Light:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "Wheel04_Right_Light:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "LeftBufer:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))
      Call( "RightBufer:SetRange", 0.2 * Call("*:GetControlValue", "Voltmeter_battery", 0))   
    end

Вот, вроде ничего не забыл. Инициализация переменных, в OnControlValueChange есть расход потребителя и он меняется на нулевое значение или какое-то конкретное, в зависимости включён ли потребитель в низковольтную цепь. В Update раз в секунду вычитаю расход всех источников, а если и работает МВ, то включаю зарядку дополнительно (chargeBattery) и там же раз в секунду от текущего значения АКБ высчитываю дальность света, если базовое 50 В - то 50 * на коэффициенты и получаем числа из конфигов света - базовые расстояния, если падает напряжение (не включён МВ долгое время) то свет начнёт пропорционально проседать...
Касательно синхронизации: она корявенькая в РВ, тоже столкнулся с многими проблемами. Но синхронизировать базу - пантограф получилось нормально.
7 раз подумай - 1 раз напиши.
supermax
 
Сообщения: 596
Зарегистрирован: 24.08.2011, 14:03
Откуда: Краснодар
Благодарил (а): 66 раз.
Поблагодарили: 237 раз.
Блог: Просмотр блога (2)
Играю в: Train Simulator Classic
Имя: Максим

Re: LuaScript - для RS

Сообщение ista011 » 06.08.2013, 13:14

А можно анимацию запускить не из Update? Если просто выбрать состав, то секунд через 30 анимация будет работать только на одном вагоне.

Добавлено спустя 5 минут 51 секунду:
Спасибо! В скрипте батареи разобрался. Действительно очень простой, надо только придумать:)
ista011
 
Сообщения: 410
Зарегистрирован: 04.12.2009, 22:20
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 188 раз.
Играю в: Train Simulator Classic
Имя: Алексей

Re: LuaScript - для RS

Сообщение ista011 » 10.08.2013, 16:48

Практически сразу после выбора состава в нём перестают синхронизироваться вагоны. Во всех местах, гдде надо, прописаны "SendConsistMessage", причем я их потом переписал, чтобы они не через SetControlValue выставляли свойства, а через специальную функцию и переменные, но и это не помогло. По началу работает, а потом нет. Как быть?
ista011
 
Сообщения: 410
Зарегистрирован: 04.12.2009, 22:20
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 188 раз.
Играю в: Train Simulator Classic
Имя: Алексей

Re: LuaScript - для RS

Сообщение i2GR » 17.04.2015, 13:45

Вопрос из серии очевидное-невероятное:
Код: Выделить всё
-- идентификаторы сообщений для SendConsistMessage
LOCO_ID = 313101200
RETURN_V0 = LOCO_ID + 4

Чему равно RETURN_V0?

313101200+4 = 313101204 ?

Код: Выделить всё
outid = "" --math.random(1,1000)
logfile = io.output("Assets/RailroadSim/LOCO/LOCO"..outid..".txt")
logfile:write("RETURN_V0 "..tostring(RETURN_V0))

в итоге в Assets/RailroadSim/LOCO/LOCO.txt:
RETURN_V0 313101216

:beak: где и что я делаю не так?
Аватара пользователя
i2GR
 
Сообщения: 540
Зарегистрирован: 04.09.2008, 16:59
Благодарил (а): 260 раз.
Поблагодарили: 303 раз.
Блог: Просмотр блога (4)
Имя: Игорь

Re: LuaScript - для RS

Сообщение радиомастер » 17.04.2015, 21:09

А чему равен LOCO_ID ?
Объекты от радиомастера для RailWorks бесплатно Способ поддержки ПСБ 2200 0303 3116 4229 Save DONBASS People from Kiev Agression
Аватара пользователя
радиомастер
 
Сообщения: 2378
Зарегистрирован: 23.10.2010, 18:42
Откуда: Макеевка
Благодарил (а): 1371 раз.
Поблагодарили: 1888 раз.
Блог: Просмотр блога (4)
Играю в: Train Simulator Classic
Роль: Разработчик
Имя: Костик

Re: LuaScript - для RS

Сообщение le Sandro » 17.04.2015, 23:06

И в какой системе счисления? В десятиричной? или в другой? например, в восьмиричной или семиричной.
Для восьмирички немного не вяжется операция сложения.
Аватара пользователя
le Sandro
 
Сообщения: 2708
Зарегистрирован: 30.03.2005, 00:14
Откуда: Пенза
Благодарил (а): 1605 раз.
Поблагодарили: 1162 раз.
Блог: Просмотр блога (2)
Играю в: Train Simulator Classic
Роль: Разработчик

Re: LuaScript - для RS

Сообщение A1iv » 18.04.2015, 13:08

возврат для лока(ов) с такими-то ID, указанных через запятую (по идее). 4ка здесь вообще непонятно зачем. Если и вагонам, то они мертвы.
SendConsistMessage слышал не работает, для сигналки если применять его.
Аватара пользователя
A1iv
 
Сообщения: 442
Зарегистрирован: 27.10.2011, 03:30
Откуда: РФ, Тверская обл.
Благодарил (а): 506 раз.
Поблагодарили: 118 раз.
Блог: Просмотр блога (10)
Имя: Алексей

Re: LuaScript - для RS

Сообщение i2GR » 19.04.2015, 18:21

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

Пред.След.

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

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

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

cron