NML версия набора (обсуждаем только вопросы кода!)

Модераторы: eraserkry, Smoky555, ihim4, Wowan, Группа модераторов

Re: NML версия набора

Сообщение дворник » Сб дек 31, 2011 20:15

Ну, хотя бы сам grf.
Вложения
xussr.grf.7z
(323.72 Кб) Скачиваний: 234
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора

Сообщение дворник » Вс янв 01, 2012 23:41

Крытые вагоны - наше всё. Расширен список перевозимых грузов.
Добавлена рефрижераторная секция.

xussr.284.grf.7z
(327.5 Кб) Скачиваний: 247


При добавлении последней был выбор - сделать конструктор или же секцию целиком. Секция состоит из 5 вагонов: 4 грузовых по бокам, 1 дизельный в середине.

Для конструктора нужны раздельные данные по грузовым и дизельному вагону - масса, вместимость груза. В xls заданы параметры для всей секции. Плюс для конструктора нужны правила сцепки составов, которые ещё не придуманы. И конечно же, надо знать, как собирать секции. Конструктор для реализации требует 2 идентификатора моделей - по одному на каждый тип вагона. При этом в депо и списках будут корректно показаны данные по каждому вагону, что приятно.

Реализация секции - вещь нетривиальная. Подход с livery_override работает для локомотивов (так сделаны тендеры у паровозов, всего один ID, разделяется между всеми паровозами, вид тендера определяется описателем ливреи конкретной модели паровоза, это удобно), но не работает для вагонов. А делать вагоны локомотивами и потом обнулять тягу - не наш метод. Да и сортировка ПС при этом меняется.

Подход с использованием одного ID работает и красиво выглядит только пока мы не задаём параметров. Вот код на NML:
Код: Выделить всё
// описываем размеры пофрагментно
switch (FEAT_TRAINS, SELF, rs5_shorten_vehicle,
  (position_in_vehid_chain % 10))
{
  0: return SHORTEN_TO_8_8; // грузовой
  1: return SHORTEN_TO_5_8;
  2: return SHORTEN_TO_8_8; // грузовой
  3: return SHORTEN_TO_5_8;
  4: return SHORTEN_TO_8_8; // дизельный
  5: return SHORTEN_TO_2_8;
  6: return SHORTEN_TO_8_8; // грузовой
  7: return SHORTEN_TO_5_8;
  8: return SHORTEN_TO_8_8; // грузовой
  9: return SHORTEN_TO_5_8;
  return CB_RESULT_NO_MORE_ARTICULATED_PARTS;
}

// для отрисовки
switch (FEAT_TRAINS, SELF, rs5int_get_spriteset,
  (position_in_vehid_chain % 10))
{
  0: rs5_cargo_spriteset;
  2: rs5_cargo_spriteset;
  4: rs5_diesel_spriteset;
  6: rs5_cargo_spriteset;
  8: rs5_cargo_spriteset;
  dummy_spriteset; // не отображаем
}


Вагончики ездят идеально, всего один ценный ID.
Но из-за того, что в меню покупки используется тот же самый вызов articulated_part, что и после неё, то количество перевозимого груза увеличивается в 10 раз, по кол-ву частей. Обойти сие нельзя, поскольку для вызовов cargo_capacity из меню покупки не доступны переменные ПС и не передаётся параметр позиции ПС в articulated_part.

Поэтому было потрачено 2 ID, причём поскольку использовать волшебную переменную 61 для получения информации о соседях можно при отрисовке, но нельзя при вызове shorten_vehicle, то эти 2 ID придётся тратить на каждую секцию вагонов различной составности. Что жалко.
А работает оно так: первый ID использован для описания секции РС-5 (дата, вес и пр. параметры), у него же выставлен articulated_part, ссылающийся на второй ID

Код: Выделить всё
// секция из 5-ти вагонов, одна от первого ID, 9 от второго ID
switch (FEAT_TRAINS, SELF, rs5_articulated_part,
  extra_callback_info1)
{
  1..9: return rs5int;
  return CB_RESULT_NO_MORE_ARTICULATED_PARTS;
}

Самый первый вагон рисуется здесь.

Второй ID ничего не возит, но возвращает правильные размеры и рисует все остальные вагоны:

Код: Выделить всё
switch (FEAT_TRAINS, SELF, rs5int_shorten_vehicle,
  position_in_vehid_chain)
{
//  0: return SHORTEN_TO_8_8;
  0: return SHORTEN_TO_5_8;
  1: return SHORTEN_TO_8_8;
  2: return SHORTEN_TO_5_8;
  3: return SHORTEN_TO_8_8;
  4: return SHORTEN_TO_2_8;
  5: return SHORTEN_TO_8_8;
  6: return SHORTEN_TO_5_8;
  7: return SHORTEN_TO_8_8;
  8: return SHORTEN_TO_5_8;
  return CB_RESULT_NO_MORE_ARTICULATED_PARTS;
}

switch (FEAT_TRAINS, SELF, rs5int_get_spriteset1,
  position_in_vehid_chain)
{
  1: rs5_cargo_spriteset;
  3: rs5_diesel_spriteset;
  5: rs5_cargo_spriteset;
  7: rs5_cargo_spriteset;
  dummy_spriteset;
}


В итоге видим в игровом меню Рефрижераторную секцию РС-5. Но какой ценой. :)
Если бы разработчики openttd сделали какой-нибудь признак (переменную), позволяющий различить состояния покупки и существования ПС, то можно было бы экономить ID.
Хорошо хоть для GRF8 их порядка 16384, а не 128, как до него.
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора

Сообщение Mag1989 » Пн янв 02, 2012 15:35

Рефрыжыратора нету.
Mag1989
Машинист
Машинист
 
Сообщения: 47
Зарегистрирован: Пт янв 22, 2010 10:13
Откуда: Украіна (м.Хмельницький)

Re: NML версия набора

Сообщение Wowan » Пн янв 02, 2012 15:42

дворник, а вот теперь все то же самое, но попроще (у меня игры пока нет под рукой, потом посмотрю) - ты секцию таки сделал единой, или конструктором?
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: NML версия набора

Сообщение дворник » Пн янв 02, 2012 17:32

Mag1989 писал(а):Рефрыжыратора нету.


Есть, где-то с 1986-1988 годов. В конце списка вагонов.

Wowan писал(а):ты секцию таки сделал единой


Единой. С конструктором есть некоторые сложности, связанные с правильным сцеплением вагонов.

И кстати, на диагональных видах вагоны рефсекции надо опустить.
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора

Сообщение Wowan » Пн янв 02, 2012 17:52

Рефы я поставил так, как Георгий нарисовал - посмотрю еще в игре, но должны правильно стоять.
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: NML версия набора

Сообщение Wowan » Вт янв 03, 2012 18:59

дворник писал(а):Есть, где-то с 1986-1988 годов. В конце списка вагонов.
Скачал последнюю грфку, покрутил годы туда-сюда - таки нету рефсекции. :wink:
И как бы это в параметрах по умолчанию отключить Align cars?
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: NML версия набора

Сообщение дворник » Вт янв 03, 2012 20:21

Wowan писал(а):Скачал последнюю грфку, покрутил годы туда-сюда - таки нету рефсекции.


Последняя в этом сообщении. И она там есть, с года 1988-го гарантировано с учётом рандома. Само собой, нужны соответствующие предприятия продуктов питания. Я тестирую в основном в арктическом климате, с продуктовыми заводами.

Wowan писал(а):И как бы это в параметрах по умолчанию отключить Align cars?

Можно. С выравниванием сочленёнок только разберусь.
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора

Сообщение дворник » Ср янв 04, 2012 16:02

Последняя промежуточная версия.
- добавлен крытый вагон для скота,
- правильное выравнивание спрайтов при развороте транспорта (видно на Клопе по Ctrl+Click)
- переименованы параметры и их поведение
- в раздел отладочного транспорта переведён align car и эксперименты с секцией РС-5
- в порядке эксперимента добавлена контактная сеть из статических объектов xUSSR, без иконок, отключается в параметрах
- показывается версия сборки набора

ВАЖНО! Поскольку это альфа-версия, то совместимость с предыдущими версиями не гарантируется, возможны перестановки ID транспорта, приводящие к краху игры. Перед переключением GRF на лету рекомендуется предварительно загнать весь транспорт с линий в депо, возможно, некоторые ПС придётся продать и купить заново.

xussr.297.grf.7z
(331.86 Кб) Скачиваний: 238
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора

Сообщение дворник » Вс янв 08, 2012 23:48

Последняя промежуточная версия.
+ добавлен крытый вагон для автомобилей
+ новая минимальная ревизия openttd теперь 23744, в ней исправлена ошибка, не позволяющая сочетать транспорт GRF7 и GRF8, теперь к ПС набора можно цеплять стандартные вагоны, предварительно разрешив их в параметрах
+ добавлена электросекция СН
+ пороговая скорость электровозов, когда они опускают пантографы, теперь 62 (было 50). Теперь они красиво выезжают из депо
+ несколько исправлений найденных ошибок
+ хит этой версии - добавлен конструктор для электропоезда ЭР1, собирается из 3-х типов вагонов.

Для ЭР1 реализована визуализация в депо:
а) если поезд нельзя выпустить из депо, над первым вагоном состава (локомотивом) показан значок с кирпичом
б) если вагон в составе стоит на неправильном месте, над ним показан значок крестик
Текстовые сообщения и пояснения так же присутствуют.
Если собранный состав ЭР1 прицепить с зажатым Ctrl к др. локомотиву, он будет ехать с опущенными пантографами без тяги.

Хотелось бы увидеть мнение, помогают ли значки в депо ориентироваться при сборке состава и разобраться с конструктором.

xussr.310.grf.7z
(346.72 Кб) Скачиваний: 238
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора

Сообщение Sch.aa » Пн янв 09, 2012 00:27

Да, помогают.
Как вариант, "кирпич" можно заменить на светофор
Изображение
Аватара пользователя
Sch.aa
Машинист
Машинист
 
Сообщения: 56
Зарегистрирован: Пт авг 27, 2010 10:09
Откуда: Москва

Re: NML версия набора

Сообщение дворник » Пн янв 09, 2012 00:56

Кстати, поскольку свои рельсы пока ещё не готовы, рекомендуется использовать набор "UK Railway Set tracks", доступный на бананах или через встроенную в игру систему загрузки онлайн-контента.
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора

Сообщение vitya » Пн янв 09, 2012 12:25

Последнюю версию еще не смотрел.. А по предыдущим есть вопрос - в дальнейшем планируется сделать электровозы не конструктором? По крайней мере те локомотивы, кыоторые работают только в 2 секции, тот же ЧС7, ЧС8 и т.д. И двухсекционные, которые вынесены отдельной моделькой тоже должны идти не конструктором. Конструктор хорош для дизель-поездов, электричек. Для локомотивов можно, которые работают в 2, 3 секции (тот же ВЛ11). Но в этом случае они должны быть одинаковыми в списке покупки. То есть типа "секция ТЭ10В". А если идет как локомотив 2ТЭ10 - то должны бы сразу 2 секции покупаться...
Аватара пользователя
vitya
Начальник станции
Начальник станции
 
Сообщения: 108
Зарегистрирован: Вт май 09, 2006 20:47

Re: NML версия набора

Сообщение дворник » Пн янв 09, 2012 13:23

По вопросу применения конструктора всё ещё нахожусь в раздумье.
Единообразие - либо он, либо не он - важный элемент освоения и использования любой игры.

Скажем, те которые должны быть только 2-х или N-секционными, можно не выпускать из депо с соответствующим сообщением и значком в депо.

Те локомотивы, что ездят только в N секций, можно конечно выделить в частный случай, но пока не решил, стоит ли так сделать.
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: NML версия набора (обсуждаем только вопросы кода!)

Сообщение Wowan » Пн янв 09, 2012 14:59

Народ, большая просьба не засорять ветку. Здесь - только вопросы кода, программной части набора. Остальное, что касается игровой части - почему так нарисовано/не нарисовано, почему характеристики выставлены так или иначе - это в соседней ветке.

По существу дискуссии - я за простоту. Если "неделимые" локомотивы (ВЛ8, ЧС7 и т.д.) не ездят в одну секцию, то конструктор им не нужен - проще, быстрее и удобнее покупать их сразу целиком, двух- или трехсекционными.
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Пред.След.

Вернуться в xUSSR Set

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

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

cron