AddNikita 3 Posted August 5 (edited) Здравствуйте, товарищи мододелы. Вчера вышла новая обнова 1.18. И скажу я вам - много чего поменяли. В сам built-in модуль BigWorld понадобавляли много разных функий, классов , переменных и тд . К тому же если передать не все или лишние параметры в класс или функцию, то теперь вылезает это вот. Явно видно, что изменений много, но не понятно, зачем всё это. Вроде бы, добавили только физику разрушения гусениц, но это бред добавлять столько много всего ради каких-то гусениц. Тут явно попахивает чем-то крупным, что введут позже. Ваши предположения, товарищи? Edited August 5 by AddNikita 3 Quote Share this post Link to post Short link Share on other sites
Kurzdor 201 #523188 Posted August 5 TLDR: x64 only Quote Share this post Link to post Short link Share on other sites
AddNikita 3 #523190 Posted August 5 (edited) Не думаю, что это связано с отказом от x32 систем. Да и вообще папка win32 в танках осталась до сих пор. (Ну точнее связано, да, но я думаю, что они хотят сделать что-то большое) Edited August 5 by AddNikita Quote Share this post Link to post Short link Share on other sites
Kurzdor 201 #523191 Posted August 5 @AddNikita на счёт win32 глянем на релизе как будет. Я не отменяю того факта что они могут переехать на новее вещи. Хотя это ВГ Quote Share this post Link to post Short link Share on other sites
yepev 174 #523194 Posted August 5 (edited) 14 минут назад, AddNikita сказал: Не думаю, что это связано с отказом от x32 систем. Да и вообще папка win32 в танках осталась до сих пор. (Ну точнее связано, да, но я думаю, что они хотят сделать что-то большое) Перепутаны причина и следствие. Это не ради отказа от х32 систем, а отказ от х32 систем ради этого. Чтообы делать новые вещи, нужно выкинуть старьё, которое этому мешает Мододелам не завидую, работы этот переход навалит много, и это явно только начало. Edited August 5 by yepev 1 Quote Share this post Link to post Short link Share on other sites
AddNikita 3 #523195 Posted August 5 (edited) @yepev мне уже достаточно работы так поднавалило. Они ещё сломали оператор == как-то. Иногда при сравнении просто ошибки вылезают. Edited August 5 by AddNikita Quote Share this post Link to post Short link Share on other sites
Kurzdor 201 #523201 Posted August 5 @AddNikita что-что? Базовый оператор, как он может ещё выкидывать эксепшны? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,065 #523222 Posted August 6 8 часов назад, Kurzdor сказал: @AddNikita что-что? Базовый оператор, как он может ещё выкидывать эксепшны? Ну как, точно также как "если передать не все или лишние параметры в класс или функцию, то теперь вылезает это вот." В 1.18.0.0_СT выпилили файлы *AimingSystem из модуля \AimingSystem\, заменили на нативный AimingSystem. Quote Share this post Link to post Short link Share on other sites
AddNikita 3 #523226 Posted August 6 @Kurzdor Так раньше не это вылезало вот при ошибке. @Kurzdor У меня есть мод, называется "Неигровые зоны". Так вот у меня там проверка на равенство неких векторов Vector3. Ну и при сравнении мне даёт ошибку, при чём в 1.17 всё работало. @SkepticalFox в 1.18 структуру карт не меняли, всё прекрасно распаковывается. Quote Share this post Link to post Short link Share on other sites
Mixaill 1,527 #523233 Posted August 6 17 часов назад, AddNikita сказал: Вроде бы, добавили только физику разрушения гусениц О нет, тут здоровенная чистка под капотом в плане питоновского интерпретатора 15 часов назад, Kurzdor сказал: @AddNikita что-что? Базовый оператор, как он может ещё выкидывать эксепшны? легко и непринужденно class A(): def __eq__(self, _): raise Exception A() == A() Quote Share this post Link to post Short link Share on other sites
Kurzdor 201 #523238 Posted August 6 @Mixaill ну это я понимаю, но просто как так вышло, что базовая операция в обнове сломалась? разве что если они не обосрали код Vector3/4 Quote Share this post Link to post Short link Share on other sites
Mixaill 1,527 #523240 Posted August 6 (edited) Там весь Python<-->C++ связующий код перелопачен, выкинут BW::PyScript в пользу pybind11, соотвественно все что стучалось в плюсы может работает чуть-чуть иначе Собственно, ЕМНИП, пока не сделаешь pybind11::class_<T>::def(pybind11::self == pybind11::self), реализация метода __eq__(PyObject*, PyObject*) не будет создана, соответственно сравнение плюсового класса из питона будет работать немного стремно. Edited August 6 by Mixaill Quote Share this post Link to post Short link Share on other sites
AddNikita 3 #523247 Posted August 6 @Mixaill Спасибо, учту. Но мне кажется, что это ещё не все изменения, так как если вызывать некоторые новые методы из BigWorld, то игра просто вылетает. 4 часа назад, Mixaill сказал: О нет, тут здоровенная чистка под капотом в плане питоновского интерпретатора Ну это я понял, да. Просто интересно, зачем это всё делается. Это довольно глобальные изменения. На этом просто игра вылетает, все эти новые изменения Python<-->C++ довольно кривые Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,065 #523248 Posted August 6 Только что, AddNikita сказал: На этом просто игра вылетает, все эти новые изменения Python<-->C++ довольно кривые Там еще проблема может быть с потоками. Из-за чего при exec в WOTTransmission клиент крашится. Такая беда, например есть с путча ~1.0.0 с BigWorld.wg_collideSegment и аналогичными. Если просто в Орионе сделать print BigWorld.wg_collideSegment(), то будет краш, а если в BigWorld.callback() обвернуть вызов, то сработает. Проблема в том, что в wottransmission.zip\wottransmission\transmitter.py юзается threading.Thread(). Так что если просто проверяешь вызовы чисто через Орион, то для надежности обворачивай их в BigWorld.callback(). Quote Share this post Link to post Short link Share on other sites
AddNikita 3 #523249 Posted August 6 3 минуты назад, StranikS_Scan сказал: Так что если просто проверяешь вызовы чисто через Орион, то для надежности обворачивай их в BigWorld.callback(). Пасиб Quote Share this post Link to post Short link Share on other sites
Mixaill 1,527 #523251 Posted August 6 (edited) 12 минут назад, StranikS_Scan сказал: Там еще проблема может быть с потоками. Из-за чего при exec в WOTTransmission клиент крашится. Такая беда, например есть с путча ~1.0.0 с BigWorld.wg_collideSegment и аналогичными. Если просто в Орионе сделать print BigWorld.wg_collideSegment(), то будет краш, а если в BigWorld.callback() обвернуть вызов, то сработает. Проблема в том, что в wottransmission.zip\wottransmission\transmitter.py юзается threading.Thread(). Так что если просто проверяешь вызовы чисто через Орион, то для надежности обворачивай их в BigWorld.callback(). Кстати да, по умолчанию все нативные функции и объекты непотокобезопасные, и обычно требуют исполнения из основного потока интерпретатора. Edited August 6 by Mixaill Quote Share this post Link to post Short link Share on other sites
AddNikita 3 #523253 Posted August 6 Не выдало ничего. Но при этом у меня сломалась игра - я не могу выбирать танки и скрипты интерфейсов все сломались. Кстати, хотите прикол. В BigWorld.Model() масштаб модели называется не scale, а sacle. ВГ писать разучились Quote Share this post Link to post Short link Share on other sites
Kurzdor 201 #523255 Posted August 6 (edited) Лично у меня что поломалось import BigWorld try: print unicode(BigWorld.wg_getPreferencesFilePath(), 'utf-8', errors='ignore') except Exception as err: print "An error occured during gettting preferences path: ", err try: from bwobsolete_helpers.BWKeyBindings import KEY_ALIAS_CONTROL except Exception as err: print "An error occured during importing key aliases: ", err 2022-08-06 20:48:55.888: INFO: An error occured during gettting preferences path: decoding Unicode is not supported 2022-08-06 20:48:55.889: INFO: An error occured during importing key aliases: Unable to convert function return value to a Python type! The signature was 2022-08-06 20:48:55.889: INFO: (arg0: unicode) -> BW::KeyCode::Key 1. wg_getPreferencesFilePath отдаёт видимо сразу Unicode, как это допустил @Polyacov_Yury 2. Очень странная ошибка при импорте из этого файла, там выполняется сразу: Это если импортить без try/except 2022-08-06 20:52:53.740: ERROR: [EXCEPTION] (scripts/client/game.py, 187): Traceback (most recent call last): File "scripts/client/game.py", line 154, in init File "scripts/client/gui/shared/personality.py", line 374, in init File "scripts/client/gui/mods/__init__.py", line 19, in init File "scripts/client/gui/mods/__init__.py", line 67, in _findValidMODs File "scripts/common/Lib/importlib/__init__.py", line 37, in import_module File "test", line 2, in <module> File "scripts/client/bwobsolete_helpers/BWKeyBindings.py", line 428, in <module> File "scripts/client/bwobsolete_helpers/BWKeyBindings.py", line 406, in _buildReverseKeysLookup TypeError: Unable to convert function return value to a Python type! The signature was (arg0: unicode) -> BW::KeyCode::Key Edited August 6 by Kurzdor Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,637 #523257 Posted August 6 (edited) Лично я одного не могу понять. Проблемы с импортами в OpenModsCore. Внутри: >>> from . import events ImportError: cannot import name events Снаружи: >>> from OpenModsCore import events ImportError: No module named events Из sys.path выброшен только scripts/game_objects. Вопрос: ЭТО ВООБЩЕ КАК О_О P.S. Код можно посмотреть вот тут: https://github.com/OpenMods-WoT/core/tree/master/source/scripts/client/OpenModsCore Edited August 6 by Polyacov_Yury Quote Share this post Link to post Short link Share on other sites
AddNikita 3 #523258 Posted August 6 13 минут назад, Polyacov_Yury сказал: Проблемы с импортами в OpenModsCore. У меня с импортами всё ок. Quote Share this post Link to post Short link Share on other sites