OpenTTD Spring 2013 2.4.291

OpenTTD - современная игра, клон Transport Tycoon Deluxe с открытым исходным кодом, написанный на C и С++. Содержит ряд ключевых улучшений и возможность игры по сети. На данный момент это главное направление развития игры.

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

Re: OpenTTD Spring 2013 2.4.291

Сообщение Se7en » Вт дек 05, 2017 01:38

Разбирался тут с работой GS, и возник вопрос:
Скрипт использует функцию GSTown.GetLastMonthSupplied для получения количества грузов, созданных городом за прошлый месяц и поставленных на станции, однако в Spring2013 к этому значению прибавляется объем грузов, выгруженных на городских станциях, что приводит к некорректной работе скрипта, неправильному отображению в окне города количества грузов, поставленных городом на станции за прошлый месяц.
А также это приводит к неправильному вычислению GSTown.GetLastMonthTransportedPercentage, который вычисляется как:
inline byte GetPercentTransported(CargoID cid) const { return this->supplied[cid].old_act * 256 / (this->supplied[cid].old_max + 1); }
и в случае, если old_act > old_max возвращает некорректное значение.

Проблема, судя по всему, находится в economy.cpp, DeliverGoods():

/* Increase town's counter for town effects */
const CargoSpec *cs = CargoSpec::Get(cargo_type);
if(cs->town_effect == TE_FOOD || cs->town_effect == TE_WATER)
st->town->received[cs->town_effect].new_act += (accepted * 1000 * (cs->multipliertowngrowth == 0 ? 256 : cs->multipliertowngrowth)) >> 8; // food rate in kg, water rate in litres
else
st->town->received[cs->town_effect].new_act += (accepted * (cs->multipliertowngrowth == 0 ? 256 : cs->multipliertowngrowth)) >> 8;
st->town->supplied[cs->Index()].new_act += accepted;

В стандартном OpenTTD 1.7 этот код выглядит как:

/* Increase town's counter for town effects */
const CargoSpec *cs = CargoSpec::Get(cargo_type);
st->town->received[cs->town_effect].new_act += accepted;

То есть st->town->supplied[cs->Index()].new_act вроде как не должен тут меняться, кроме того, в Spring2013 модифицируется полученное количество грузов (для еды и воды умножается на 1000), что тоже приведет к некорректной работе скриптов, использующих эти значения.

Можно это как-то исправить, чтобы функции GSTown возвращали корректные значения?
Update: заменил товары на грузы для точности.

И еще вопрос, пытался скомпилировать OpenTTD Spring 2013 Patchpack v2.4.291 source в VS2010 по инструкции отсюда:
https://wiki.openttd.org/Compiling_on_W ... 2B%2B_2012

Вылезли ошибки:
7>zlibstat.lib(gzwrite.obj) : error LNK2005: _vsnprintf already defined in string.obj
7>LIBCMT.lib(sprintf.obj) : error LNK2005: _sprintf already defined in libfreetype2.lib(bdf.obj)
7>rail_cmd.obj : error LNK2001: unresolved external symbol "unsigned int _opengfx_grf_file_index" (?_opengfx_grf_file_index@@3IA)
7>rail_cmd.obj : error LNK2001: unresolved external symbol "unsigned int _first_user_grf_file_index" (?_first_user_grf_file_index@@3IA)
7>icuuc.lib(unames.obj) : error LNK2001: unresolved external symbol ___report_rangecheckfailure
...
ну и так далее.

Проблема, видимо, в первых _vsnprintf already defined и _sprintf already defined. Подскажите, как это исправить?
Последний раз редактировалось Se7en Ср дек 06, 2017 15:24, всего редактировалось 2 раз(а).
Se7en
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 11
Зарегистрирован: Ср июл 26, 2017 15:05

Re: OpenTTD Spring 2013 2.4.291

Сообщение pi1985 » Вт дек 05, 2017 16:12

по быстрому. supplied обозначает "поставлено", в не " произведено", т. е. всё верно.
pi1985
Президент
Президент
 
Сообщения: 676
Зарегистрирован: Вт апр 03, 2012 23:10
Откуда: Донбассъ - Забайкалье

Re: OpenTTD Spring 2013 2.4.291

Сообщение Se7en » Вт дек 05, 2017 16:17

pi1985 писал(а):по быстрому. supplied обозначает "поставлено", в не " произведено", т. е. всё верно.

По логике это именно поставлено городом на городские станции. Нигде больше такого кода нет, я смотрел транк, стабильный и JGR - там везде все корректно считается, и поставки товаров и процент перевозки.
Se7en
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 11
Зарегистрирован: Ср июл 26, 2017 15:05

Re: OpenTTD Spring 2013 2.4.291

Сообщение pi1985 » Вт дек 05, 2017 16:24

Ок, проверим. Кода также ого конечно, нет, так как патч только тут такой.
pi1985
Президент
Президент
 
Сообщения: 676
Зарегистрирован: Вт апр 03, 2012 23:10
Откуда: Донбассъ - Забайкалье

Re: OpenTTD Spring 2013 2.4.291

Сообщение pi1985 » Ср дек 06, 2017 03:51

Se7en писал(а):Разбирался тут с работой GS, и возник вопрос:
Скрипт использует функцию GSTown.GetLastMonthSupplied для получения количества товаров, созданных городом за прошлый месяц и поставленных на станции, однако в Spring2013 к этому значению прибавляется объем товаров, выгруженных на городских станциях, что приводит к некорректной работе скрипта, неправильному отображению в окне города количества товаров, поставленных городом на станции за прошлый месяц.


Насколько я помню, город сам производит только два груза: пассажиры и почту (в ECS ещё туристов), но не производит товары. Патч использует только те грузы, которые имеют пометку TE_GOODS, TE_FOOD или TE_WATER). Ни пассажиры, ни почта, ни туристы к этим категориям не относятся (для них есть свои категории TE_PASSENGERS и TE_MAIL), поэтому патч работает правильно (хотя можно сделать, чтобы эти категории так же учитывались).

Но в общем, согласен, использовать Town::supplied[] для хранения количества привезенного груза неправильно и нужно создать что-то вроде Town::delivered[].

А каким образом город начал производить товары?
pi1985
Президент
Президент
 
Сообщения: 676
Зарегистрирован: Вт апр 03, 2012 23:10
Откуда: Донбассъ - Забайкалье

Re: OpenTTD Spring 2013 2.4.291

Сообщение Se7en » Ср дек 06, 2017 15:21

Насколько я помню, город сам производит только два груза: пассажиры и почту (в ECS ещё туристов), но не производит товары. Патч использует только те грузы, которые имеют пометку TE_GOODS, TE_FOOD или TE_WATER). Ни пассажиры, ни почта, ни туристы к этим категориям не относятся (для них есть свои категории TE_PASSENGERS и TE_MAIL), поэтому патч работает правильно (хотя можно сделать, чтобы эти категории так же учитывались).

А каким образом город начал производить товары?

Товары имелись в виду в общем смысле как груз, то есть в данном случае пассажиры.
При разгрузке транспорта на станции количество пассажиров прибавляется к значению supplied, это неправильно, потому что supplied это пассажиры, которых произвел сам город и поставил на городские станции, через это вычисляется процент перевозки пассажиров как supplied/max за прошлый месяц.
Также при прибытии воды и еды на городские станции значение received умножается на 1000, что тоже неправильно, потому что эта переменная доступна скриптам через интерфейс города и может использоваться.

Но в общем, согласен, использовать Town::supplied[] для хранения количества привезенного груза неправильно и нужно создать что-то вроде Town::delivered[].

Именно так, поскольку supplied и received могут использоваться скриптами, они должны работать как в стандартном OTTD, иначе ломается совместимость.
Se7en
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 11
Зарегистрирован: Ср июл 26, 2017 15:05

Re: OpenTTD Spring 2013 2.4.291

Сообщение Sky_Turner » Ср дек 06, 2017 22:06

А я всё жду, когда автор добавит Terminus Airports в сборку :(
Изображение
Изображение
root@earth: $ /you > /dev/null
Sky_Turner
Машинист
Машинист
 
Сообщения: 48
Зарегистрирован: Ср сен 23, 2015 01:04
Откуда: Екатеринбург

Re: OpenTTD Spring 2013 2.4.291

Сообщение Brek » Сб дек 16, 2017 15:01

Приветствую, а нет ли у кого скомпилированной версии под OSX, или хотя бы инструкции как ее заполучить. Стандартные ./configure, make выдает такое

[code]
OpenTTD/src/ai/../tilearea_type.h:430:103: error: no viable conversion from 'MainMap' to 'Map *'
TransformationTileIteratorT(const GenericTileArea &src_area, TileTransformation transformation, Map *dst_map = _main_map)
penTTD/src/ai/../tilearea_type.h:430:103: note: passing argument to parameter 'dst_map' here
[/code]
Brek
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 10
Зарегистрирован: Сб апр 26, 2008 21:40

Re: OpenTTD Spring 2013 2.4.291

Сообщение Kozinsky » Ср янв 24, 2018 22:22

При сохранении/загрузке игры сбрасываются некоторые настройки игры на значения по умолчанию (из того, на что я обратил внимание):
"Показывать время в минутах, а не днях", "Тиков в минуте" и "Разрешить финансирование строительства зданий".
Если первые два параметра корректно сохраняются/загружаются при автосейве, то третий никак не хочет сохраняться.
Kozinsky
Машинист
Машинист
 
Сообщения: 32
Зарегистрирован: Вт янв 30, 2007 15:11
Откуда: Украина, Киев

Re: OpenTTD Spring 2013 2.4.291

Сообщение Leo_gris » Пт фев 09, 2018 12:47

Установил так: сначала распаковал в новую папку архив с пометкой "source", потом в эту же папку с заменой файлов "х64".
Все настройки перешли с уже установленной ОТТД, кроме графики и звуков OpenGFX. Установил их.
В игре не работает передвижение карты по ПКМ - просто на месте дёргается картинка. Установил передвижение на ЛКМ. Хотя в оригинальной версии всё работает нормально.
Ещё хотел узнать про работу над FIRS: с последней версией эта сборка не дружит, а в теме писали, что может быть обновят на НГ. Хотел узнать, стоит ли ждать?
Leo_gris
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 6
Зарегистрирован: Пт фев 09, 2018 05:55

Re: OpenTTD Spring 2013 2.4.291

Сообщение Aleksey » Сб фев 10, 2018 18:52

Leo_gris писал(а):Установил так: сначала распаковал в новую папку архив с пометкой "source", потом в эту же папку с заменой файлов "х64".
Все настройки перешли с уже установленной ОТТД, кроме графики и звуков OpenGFX. Установил их.
В игре не работает передвижение карты по ПКМ - просто на месте дёргается картинка. Установил передвижение на ЛКМ. Хотя в оригинальной версии всё работает нормально.
Ещё хотел узнать про работу над FIRS: с последней версией эта сборка не дружит, а в теме писали, что может быть обновят на НГ. Хотел узнать, стоит ли ждать?

Стоит ждать. Автор pi1985 планирует обновить патчпак. Просто пока нет времени на это.
Аватара пользователя
Aleksey
Президент
Президент
 
Сообщения: 760
Зарегистрирован: Ср дек 07, 2011 19:53
Откуда: Россия Самара

Re: OpenTTD Spring 2013 2.4.291

Сообщение Ivan-r » Ср фев 21, 2018 18:34

Leo_gris писал(а):Установил так: сначала распаковал в новую папку архив с пометкой "source", потом в эту же папку с заменой файлов "х64".
...

Зачем?!
Всё начинается с 200`000 $
Изображение
Изображение
Изображение
Изображение
Аватара пользователя
Ivan-r
Директор
Директор
 
Сообщения: 432
Зарегистрирован: Пн май 30, 2011 15:58
Откуда: МО

Re: OpenTTD Spring 2013 2.4.291

Сообщение vovchik45 » Ср мар 07, 2018 09:43

Помогите как вылечить сетевую игру?
Клиенты после подключения и загрузки карты вылетают с ошибкой синхронизации.
Куда копать?
vovchik45
Пассажир
Пассажир
 
Сообщения: 3
Зарегистрирован: Пн мар 05, 2018 14:35

Re: OpenTTD Spring 2013 2.4.291

Сообщение Ivan-r » Вс мар 11, 2018 13:36

vovchik45 писал(а):Помогите как вылечить сетевую игру?
Клиенты после подключения и загрузки карты вылетают с ошибкой синхронизации.
Куда копать?

Графика подключена?
Всё начинается с 200`000 $
Изображение
Изображение
Изображение
Изображение
Аватара пользователя
Ivan-r
Директор
Директор
 
Сообщения: 432
Зарегистрирован: Пн май 30, 2011 15:58
Откуда: МО

Re: OpenTTD Spring 2013 2.4.291

Сообщение vovchik45 » Пн мар 12, 2018 08:17

Ivan-r писал(а):
vovchik45 писал(а):Помогите как вылечить сетевую игру?
Клиенты после подключения и загрузки карты вылетают с ошибкой синхронизации.
Куда копать?

Графика подключена?

Да.
upd: Переключился на aBase - работает пока
upd: нет, выкидывает. На паузе даёт подключится. как только снимаем - вылетает.
vovchik45
Пассажир
Пассажир
 
Сообщения: 3
Зарегистрирован: Пн мар 05, 2018 14:35

Пред.След.

Вернуться в Общие вопросы по OpenTTD

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

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