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

LuaScript - для RS

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

Тухляк на форуме

Сообщение i2GR » 28.06.2016, 18:54

РВ уже уже трогается, поэтому по такой странной логике есть заготовка скрипта управления пантографами на примере двухкабинного лока
Код: Выделить всё
-- Таблица, описывающее управление пантографами
tPantograph      =   {
-- внутри нее таблицы (ключи таблиц = текст = имя контрола)
               
               -- таблица положений переключателя
               Switch      =   {
                           
                           -- передний
                           ["FrontPantoSwitch"]   = -1,
                           -- задний
                           ["RearPantoSwitch"]      = -1
                           },
               
               -- ссылка на анимацию в конфиге
               Animation   =   {
               
                           -- аналогично
                           ["FrontPantoSwitch"]   = "frontP",
                           ["RearPantoSwitch"]      = "rearP"
                           },
               -- состояние пантографа поднят = true
               Moved      =   {
                           ["FrontPantoSwitch"]   = false,
                           ["RearPantoSwitch"]      = false
                           },
               -- значение напряжения на пантографе            
               Voltage      =   {
                           ["FrontPantoSwitch"]   = 0,
                           ["RearPantoSwitch"]      = 0
                           }
               } -- tPantograph

               
-- функция в таблице tPantograph, вызываемая из системной функции OnControlValueChange(name, index, value)
function tPantograph:Controls(name, index, value)

-- присвоение контролу нового значения
Call("SetControlValue", name, index, value)

-- если значение 0 или 1 (ключ полностью переключен)
if value == 0 or value == 1 then

-- изменить соответствующее значение в таблице tPantograph.Switch для данного переключателя
   for k, v in pairs(self.Switch) do if string.find(name , k) then self.Switch[k] = -1 + 2*value end end
end -- if
end -- func


-- функция в таблице tPantograph, вызываемая из системной функции Update(time) каждый кадр при управлении.
function tPantograph:EWKUpdate(t)

-- проверка состояния каждого пантографа
for k, v in pairs(self.Switch) do

   -- получение информация, завершилась ли анимация поднятия/опускания
   self.Moved[k] = Call("*:AddTime", self.Animation[k], v * t --[[* 0.03]])
   
   -- если переключатель в положении ВКЛ и анимация завершилась
   if self.Switch[k] == 1 and self.Moved[k] ~= 0 then
      
      -- на этом пантографе есть напряжение (да, даже на неэлектрифицированном пути)
      self.Voltage[k] = 1
      
   -- иначе если    переключатель в положении ВЫКЛ
   elseif self.Switch[k] == -1   then
   
      -- на этом пантографе нет напряжения
      self.Voltage[k] = 0
   end
end -- for

-- если хотя бы на одном из пантографов есть напряжение (хотя бы один поднят)
if self.Voltage["FrontPantoSwitch"] + self.Voltage["RearPantoSwitch"] > 0 then
   
   
   -- установка соответствующих системных контролов в положение ВКЛ
   Call( "SetControlValue", "PantographControl", 0, 1)
   Call( "SetControlValue", "Voltage", 0, 1)

-- если оба пантографа опущены или только начали опускаться
else

   -- отключение компрессоров (если компрессора были включены, то точно их выключить, но это совсем другая история)
   tCompressor:Controls("swt_Compressor1", 0, 0)
   tCompressor:Controls("swt_Compressor2", 0, 0)
   
   -- установка соответствующих системных контролов в положение ВЫКЛ
   Call( "SetControlValue", "PantographControl", 0, 0)
   Call( "SetControlValue", "Voltage", 0, 0)
   -- VoltageBase = 0
end --if
end --func

-- управление пантографами под ботом
function tPantograph:PUpdate(t)
--пусто
end -- func


-- функция в таблице tPantograph, вызываемая из системной функции OnCameraEnter(cabEndWithCamera, carriageCam) при смене кабины (!)
-- условие о смене кабины не показано
function tPantograph:ChangeCab()

-- смена привязки анимации пантографов при смене кабины, чтобы пантограф был "передним" относительно положения активной кабины
tPantograph.Animation["FrontPantoSwitch"], tPantograph.Animation["RearPantoSwitch"] = tPantograph.Animation["RearPantoSwitch"], tPantograph.Animation["FrontPantoSwitch"]

end -- func
-- опускание пантографа на 146% при запуске карты (вызывается из функции Initialise())
function tPantograph:Initialise()
for k, v in pairs(self.Switch) do
   self.Moved[k] = Call("*:AddTime", self.Animation[k], -5)
end
end   


P.S. есть еще пример тяги
Аватара пользователя
i2GR
 
Сообщения: 419
Зарегистрирован: 04.09.2008, 16:59
Благодарил (а): 161 раз.
Поблагодарили: 256 раз.
Блог: Просмотр блога (4)
Имя: Игорь

Re: LuaScript - для RS

Сообщение Света » 01.07.2016, 09:49

Всем доброго дня!

Обнаружился один нюанс в обработке скриптов, из-за которого совершенно безошибочный скрипт может оказаться нерабочим или,как минимум, будет сбоить.
Нюанс заключается в том, что вызов, имеющий форму "Call( "_", _, _, _ )", является, по сути, программным прерыванием и имеет более высокий приоритет, чем продолжение основного кода.
Поэтому, если в логике скрипта запланирован вызов, после которого должно быть продолжение работы по результатах этого вызова, есть большая вероятность, что работа будет некорректна.

Покажу на примере.
Для того, чтобы заставить вагон выполнять кое-какие действия, была разработана пользовательская функция, которая логически состояла из двух частей. Одна часть вызывалась из функции Update, вторая - из OnConsistMessage. В первую часть из Update передавалась команда на очистку всех данных; также здесь происходил вызов Call( "SendConsistMessage", _, _, _ ), который и стал причиной сбоя.
Смысл функции заключался в том, чтобы сделать сброс, затем сделать запрос локомотиву и выйти из неё, а потом, получив от локомотива ответ (положительный или отрицательный), вызвать эту же функцию из OnConsistMessage, и обработать ответ.
На практике так не получилось. По логике функции надо было выяснить, отправилось сообщение локомотиву или нет. Вместе с тем, мне не хотелось запускать пустой вызов
Код: Выделить всё
front_probe = Call("SendConsistMessage", 0, 0, 0)
Поэтому мне показалась вполне уместной конструкция
Код: Выделить всё
front_probe = Call("SendConsistMessage", msg, "код_запроса", 1);
Вроде всё неплохо: отправляется запрос локомотиву, одновременно проводится тест сцепки.
Проблема в том, что сделав отсылку сообщения локомотиву, движок прекратил выполнение функции, и начал обрабатывать функцию OnConsistMessage локомотива. В процессе обработки был отправлен ответ на запрос, поэтому движок прекратил работу над скриптом локомотива (а именно функцией OnConsistMessage) и снова переключился на скрипт вагона, на функцию OnConsistMessage, которая приняла ответ локомотива. Эта функция вызвала мою пользовательскую функцию, которая начала выполняться со второй части. Естественно, дальше работа функции была неправильной, так как первая часть пока ещё не отработана и переменная front_probe имеет некорректное значение. Закончив выполнение второй части функции, движок её закрыл, затем закончил и закрыл функцию OnConsistMessage вагона, затем закончил и закрыл функцию OnConsistMessage локомотива, и только после этого продолжил выполнение первой части пользовательской функции вагона. Хотя в этом уже не было необходимости.
Процесс несколько запутанный, и мне трудно описать его в нескольких фразах. Но я надеюсь, что основную мысль мне передать удастся.
Аватара пользователя
Света
 
Сообщения: 139
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 64 раз.
Поблагодарили: 156 раз.
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение Света » 09.07.2016, 22:13

.
Последний раз редактировалось Света 16.07.2016, 08:39, всего редактировалось 1 раз.
Аватара пользователя
Света
 
Сообщения: 139
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 64 раз.
Поблагодарили: 156 раз.
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение BooYa » 10.07.2016, 00:15

Могу только апплодировать всем скриптёрам. :clap2: Если б я так мог ))
Самурай без меча подобен самураю с мечом, но только без меча.
Аватара пользователя
BooYa
 
Сообщения: 1907
Зарегистрирован: 24.01.2010, 16:30
Откуда: Екатеринбург
Благодарил (а): 507 раз.
Поблагодарили: 1631 раз.
Играю в: RailWorks
Роль: Разработчик
Имя: Андрей

Re: LuaScript - для RS

Сообщение i2GR » 10.07.2016, 22:36

Ну начинается! )))))
Тот же метод Макса, только третьими словами.
)))
"nill" есть опечатка (8-я строчка)
Разогнавшись на 8-й позиции до 70 км/ч после переключения на 1-ю получим 0 тяги. и 0 А.
Уважаемые знатоки 0 А в такой ситуации это есть правда?

И еще вопросцы:
1. Каковы мои "ошибки и спорные моменты".
2. Как отвязать регулятор от HUDa, точнее как привязать к нему виртуальный контрол?
Аватара пользователя
i2GR
 
Сообщения: 419
Зарегистрирован: 04.09.2008, 16:59
Благодарил (а): 161 раз.
Поблагодарили: 256 раз.
Блог: Просмотр блога (4)
Имя: Игорь

Re: LuaScript - для RS

Сообщение Света » 11.07.2016, 00:40

Тот же метод Макса, только третьими словами.
Покажите место, где я это отрицаю.
"nill" есть опечатка (8-я строчка)
Не опечатка, а вариант написания, лучше воспринимаемый. С этой опечаткой скрипт успешно работает уже несколько месяцев.
Разогнавшись на 8-й позиции до 70 км/ч после переключения на 1-ю получим 0 тяги. и 0 А.
Да. Именно так. И я потому и спрашиваю в нескольких местах интернет-пространства, как должно быть, чтобы было правильно. Не моя вина, что я не машинист и не имею ни малейшего представления, как должно быть на самом деле. Если кто-то мне укажет на ошибку и объяснит, в чем конкретно она заключается и как надо сделать, чтобы было правильно, я её исправлю. И поблагодарю того человека.
Как бы то ни было, логика скрипта от этого не страдает, а я публикую именно фрагмент скрипта, а не таблицу.
Каковы мои "ошибки и спорные моменты".
Ошибка - утверждение, что "Единственный недостаток схемы – нельзя управлять тягой двигателя красненькой ручкой на HUD и само положение ручки будет плавать автоматически в зависимости от рассчитанного значения контрола Regulator.". Которое я опровергаю. Особенно мне странно читать такое утверждение после моего Вам письма, где я ссылаюсь на конкретную модель локомотива, в которой это реализовано.
Спорный момент - Ваши слова "во-вторых, этот по написанию и оптимизирован, и практически унифицирован.". По поводу оптимизации писать не буду, у каждого своя правда, но называть унифицированным вырванный из контекста фрагмент... Вы можете в 5 строках описать порядок вставки Вашего кода для начинающего скриптера?
Как отвязать регулятор от HUDa, точнее как привязать к нему виртуальный контрол?
Вы никак пытаетесь обвинить меня во лжи? Я никогда не пишу непроверенную информацию. Вы можете привести хоть одно мое сообщение, отправленное Вам, где информация не подтверждена материалами?
Я продолжу эту традицию. Предлагаю посмотреть ролик:
youtu.be Видео от : youtu.be

Будете дальше доказывать, что "нельзя управлять тягой двигателя красненькой ручкой на HUD и само положение ручки будет плавать"? Ролик не монтирован, если что.
Аватара пользователя
Света
 
Сообщения: 139
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 64 раз.
Поблагодарили: 156 раз.
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение djus » 11.07.2016, 01:17

Своя (копейка) скрипт? Спор!. И за HUD-а ?
Интересно сколько пользователей, пользуется данной хренью.
Аватара пользователя
djus
 
Сообщения: 77
Зарегистрирован: 22.01.2013, 01:15
Откуда: Объект 19
Благодарил (а): 165 раз.
Поблагодарили: 121 раз.
Играю в: RailWorks
Имя: виталий

Re: LuaScript - для RS

Сообщение hellishfire » 11.07.2016, 01:28

Я пользуюсь. Иногда удобнее крутить виртуальные рычаги. Поэтому, я хотел бы, чтобы и виртуальный и у кабинный рычаг были равноправными. Надо ориентироваться на всех пользователей.
hellishfire
 
Сообщения: 91
Зарегистрирован: 14.12.2012, 20:50
Откуда: Москва
Благодарил (а): 140 раз.
Поблагодарили: 80 раз.
Играю в: RailWorks
Роль: Разработчик
Имя: Игорь

Re: LuaScript - для RS

Сообщение djus » 11.07.2016, 02:30

hellishfire писал(а): Надо ориентироваться на всех пользователей.

Я не против. Видимо сужу по себе,но даже в обычной ситуации (надо узнать профиль, или ограничение скорости на участке.) F3 вполне хватает.
А набирать позиции или проводить "Ступени" торможения можно и с F5.
Я привык на Клаве. Кстати всем советую! А про Рычажок красный (Отформатировать)
Чистое ИМХО
Аватара пользователя
djus
 
Сообщения: 77
Зарегистрирован: 22.01.2013, 01:15
Откуда: Объект 19
Благодарил (а): 165 раз.
Поблагодарили: 121 раз.
Играю в: RailWorks
Имя: виталий

Re: LuaScript - для RS

Сообщение i2GR » 11.07.2016, 03:21

Ну продолжается)))

Света
По поводу оптимизации жора системных ресурсов, кадров в секунду, я, наверное, спорить не буду.
По поводу вырванности из контекста кусок прокомментирован практически построчно.
Вы никак пытаетесь обвинить меня во лжи?

я спрашивал. Странно было бы если я их не задал. В том и задача форумного общения, чтобы не ограничиваться простыми словами "тут неправильно", как на экзамене.
Ключ к ответу на свой вопрос получил. Спасибо.
Но, как обычно, починилось одно, теперь чинить надо другое и в два раза сложнее
Аватара пользователя
i2GR
 
Сообщения: 419
Зарегистрирован: 04.09.2008, 16:59
Благодарил (а): 161 раз.
Поблагодарили: 256 раз.
Блог: Просмотр блога (4)
Имя: Игорь

Re: LuaScript - для RS

Сообщение Skif » 11.07.2016, 10:31

Касаемо HUD-а - я был бы тоже очень рад узнать, как создать пользовательский HUD. Это мешает мне довести до конца работу с ТУ7А, чтобы выложить его в релиз. Без HUD-а полноценно управлять им можно только с использованием TS HeLper. Так что был бы очень признателен за мануал по созданию элементов HUD-а.

Касаемо скрипта - хорош нападать на Свету, спасибо бы сказали. У меня, например, есть и третий метод, основанный на скриптах Макса, в частности, напомню про то, что надо учесть и включение ослабления поля (ручное и автоматическое), а в случае гидропередачи - смену режима (на моей семерке реализовано всеми способами - ручное/авто).
Skif
 
Сообщения: 2599
Зарегистрирован: 01.10.2009, 17:42
Благодарил (а): 236 раз.
Поблагодарили: 708 раз.
Блог: Просмотр блога (2)
Имя: Дмитрий

Re: LuaScript - для RS

Сообщение Света » 11.07.2016, 12:40

Skif писал(а):Касаемо HUD-а - я был бы тоже очень рад узнать, как создать пользовательский HUD. Это мешает мне довести до конца работу с ТУ7А, чтобы выложить его в релиз

Всё реализуется через конфиг Engine.
Пример:
Код: Выделить всё
   <cControlContainerBlueprint-cControlValue d:id="2629">
      <ControlName d:type="cDeltaString">Regulator</ControlName>
      <DefaultValue d:type="sFloat32">0</DefaultValue>
      <MinimumValue d:type="sFloat32">0</MinimumValue>
      <MaximumValue d:type="sFloat32">1</MaximumValue>
      <BriefDescription d:type="cDeltaString">Power Handle</BriefDescription>
      <DetailedDescription d:type="cDeltaString">Power Handle</DetailedDescription>
      <ApplyToConsist d:type="cDeltaString">eTrue</ApplyToConsist>
      <HUDControlID d:type="sUInt32">0</HUDControlID>
      <InterfaceElements>
         <cControlContainerBlueprint-cInteriorNotchedLever d:id="2639">
            <ElementName d:type="cDeltaString">Regulator_Intermediate</ElementName>
            <DifficultyType d:type="cDeltaString">StopGo</DifficultyType>
            <PickTransformName d:type="cDeltaString">Throttle</PickTransformName>
            <MovementType d:type="cDeltaString">MoveLeftRight</MovementType>
            <AnalogInputSensitivity d:type="sFloat32">1</AnalogInputSensitivity>
            <DigitalInputSensitivity d:type="sFloat32">1</DigitalInputSensitivity>
            <AnimationName d:type="cDeltaString"></AnimationName>
            <OutputInterface d:type="cDeltaString">eCab</OutputInterface>
            <RestInNotchedPosition d:type="cDeltaString">eTrue</RestInNotchedPosition>
            <NumberOfNotches d:type="sFloat32">9</NumberOfNotches>
         </cControlContainerBlueprint-cInteriorNotchedLever>
      </InterfaceElements>
   </cControlContainerBlueprint-cControlValue>
   <cControlContainerBlueprint-cControlValue d:id="2650">
      <ControlName d:type="cDeltaString">VirtualThrottle</ControlName>
      <DefaultValue d:type="sFloat32">0</DefaultValue>
      <MinimumValue d:type="sFloat32">0</MinimumValue>
      <MaximumValue d:type="sFloat32">8</MaximumValue>
      <BriefDescription d:type="cDeltaString"> Throttle Handle</BriefDescription>
      <DetailedDescription d:type="cDeltaString"></DetailedDescription>
      <ApplyToConsist d:type="cDeltaString">eFalse</ApplyToConsist>
      <HUDControlID d:type="sUInt32">0</HUDControlID>
      <InterfaceElements>
         <cControlContainerBlueprint-cInteriorIrregularNotchedLever d:id="2660">
            <ElementName d:type="cDeltaString">Regulator_Intermediate</ElementName>
            <DifficultyType d:type="cDeltaString">StopGo</DifficultyType>
            <PickTransformName d:type="cDeltaString">throttle</PickTransformName>
            <MovementType d:type="cDeltaString">MoveLeftRight</MovementType>
            <AnalogInputSensitivity d:type="sFloat32">1</AnalogInputSensitivity>
            <DigitalInputSensitivity d:type="sFloat32">5</DigitalInputSensitivity>
            <AnimationName d:type="cDeltaString">Zima\Addon\RailVehicles\Diesel\DM62\1731\CabView\dm62_throttle</AnimationName>
            <OutputInterface d:type="cDeltaString">eCab</OutputInterface>
            <RestInNotchedPosition d:type="cDeltaString">eTrue</RestInNotchedPosition>
            <DisplayNotchName d:type="cDeltaString">eTrue</DisplayNotchName>
            <Notch>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2672">
                  <Identifier d:type="cDeltaString">Stop</Identifier>
                  <Value d:type="sFloat32">0</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2675">
                  <Identifier d:type="cDeltaString">1</Identifier>
                  <Value d:type="sFloat32">1</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2678">
                  <Identifier d:type="cDeltaString">2</Identifier>
                  <Value d:type="sFloat32">2</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2681">
                  <Identifier d:type="cDeltaString">3</Identifier>
                  <Value d:type="sFloat32">3</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2684">
                  <Identifier d:type="cDeltaString">4</Identifier>
                  <Value d:type="sFloat32">4</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2687">
                  <Identifier d:type="cDeltaString">5</Identifier>
                  <Value d:type="sFloat32">5</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2690">
                  <Identifier d:type="cDeltaString">6</Identifier>
                  <Value d:type="sFloat32">6</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2693">
                  <Identifier d:type="cDeltaString">7</Identifier>
                  <Value d:type="sFloat32">7</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
               <cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData d:id="2696">
                  <Identifier d:type="cDeltaString">8</Identifier>
                  <Value d:type="sFloat32">8</Value>
               </cControlContainerBlueprint-cInteriorIrregularNotchedLever-cNotchData>
            </Notch>
         </cControlContainerBlueprint-cInteriorIrregularNotchedLever>
      </InterfaceElements>
   </cControlContainerBlueprint-cControlValue>


Имена позиций, их количество и значения - всё взято с потолка. Это черновик. Остальные элементы HUD-а - тормоза, реверсор, амперметр и т.д. - в разработке. Это схема для дизеля с электрической тягой, насколько такая конфигурация будет работать в других типах локомотивов, сказать не могу. Надеюсь с ТУ7А работать будет.
Аватара пользователя
Света
 
Сообщения: 139
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 64 раз.
Поблагодарили: 156 раз.
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение Skif » 11.07.2016, 12:51

Это же описание обычного Control из Engine blueprint.

Как создать элемент HUD (чтобы он отображался в панели по F3 или F4) и привязать к нему любой контрол из ControlValues ?
Skif
 
Сообщения: 2599
Зарегистрирован: 01.10.2009, 17:42
Благодарил (а): 236 раз.
Поблагодарили: 708 раз.
Блог: Просмотр блога (2)
Имя: Дмитрий

Re: LuaScript - для RS

Сообщение Света » 11.07.2016, 13:24

Skif
Это Вы уже много от меня хотите. Я пишу конкретно о ползунке тяги на HUD-е. У меня была цель сделать перелинковку, и мне это удалось. А панель по F3 или F4 меня не интересовала и у меня не было даже попыток работать в этом направлении. И, скорей всего, ближайшее время не будет, так как есть более приоритетная задача. Поэтому в этом вопросе пока ничем помочь не смогу :nenay:
Аватара пользователя
Света
 
Сообщения: 139
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 64 раз.
Поблагодарили: 156 раз.
Играю в: RailWorks
Роль: Разработчик

Re: LuaScript - для RS

Сообщение Skif » 11.07.2016, 13:51

Панель, вызываемая по F3 и F4 - это и есть HUD. Полный по F4 и сокращенный по F3.
Skif
 
Сообщения: 2599
Зарегистрирован: 01.10.2009, 17:42
Благодарил (а): 236 раз.
Поблагодарили: 708 раз.
Блог: Просмотр блога (2)
Имя: Дмитрий

Пред.След.

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

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

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