Jump to content
Korean Random
GPCracker

Улучшенная система прицеливания / Advanced Aiming System

Recommended Posts

52 минуты назад, vasya-sar сказал:

Похоже опять мод сломали, вот такая ошибка , в ангаре пусто 


2019-08-06 17:41:42.655: WARNING: [WARNING] (scripts/client/gui/mods/__init__.py, 72): There is problem while import gui mod ('gui.mods', 'mod_advancedaimingsystem.pyc')
2019-08-06 17:41:42.657: ERROR: [EXCEPTION] (scripts/client/gui/mods/__init__.py, 74):
Traceback (most recent call last):
  File "scripts/client/gui/mods/__init__.py", line 67, in _findValidMODs
  File "scripts/common/Lib/importlib/__init__.py", line 37, in import_module
  File "mod_AdvancedAimingSystem", line 37, in <module>
ImportError: No module named aih_constants

 

 

Там модуль aih_constans перенесли в другое место. А еще переименовали и перенесли mathUtils модуль. Так что 90% модов должны сломаться.

Share this post


Link to post

Short link
Share on other sites
1 hour ago, StranikS_Scan said:

Там модуль aih_constans перенесли в другое место.

Так точно, из res/scripts/client/AvatarInputHandler/aih_constants.py в res/scripts/client/aih_constants.py. В общем, нужно перетряхивать половину мода, тупо заменяя AvatarInputHandler.aih_constants на aih_constants. При этом изменений в файле практически нет. Зачем картошка это замутила, я, если честно, не совсем понимаю, но, как говорится, видать им там оттуда виднее. Ну или сообразить отдельный скрипт типа (я не тестировал этот код, если что)

for key, value in __import__('aih_constants').__dict__.viewitems():
    globals().setdefault(key, value)

__import__('sys').modules.setdefault('AvatarInputHandler.aih_constants', __import__('sys').modules.pop(__name__))
globals()['__name__'] = 'AvatarInputHandler.aih_constants'; globals()['__package__'] = 'AvatarInputHandler'

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

1 hour ago, StranikS_Scan said:

А еще переименовали и перенесли mathUtils модуль.

А я картошкин вроде как и не использую вообще. Но в любом случае, если кроме переноса aih_constants есть другие проблемы, они вряд ли проявятся до того, как будет исправлена эта.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
1 час назад, GPCracker сказал:

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

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

Share this post


Link to post

Short link
Share on other sites
1 час назад, GPCracker сказал:

Ну или сообразить отдельный скрипт типа

28 минут назад, vasya-sar сказал:

А можно как ни будь попроще , типа - возьмите это и положите туда.

Да смысл то понятен, осталось найти того, кто это дело сможет замутить и выложить для всех.

Share this post


Link to post

Short link
Share on other sites

Глупый вопрос, но все же, требуха, то бишь исходники годичной давности в репо по ссылке из первого поста рабочие? Подозреваю там старьё. 

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
1 hour ago, vasya-sar said:

А можно как-нибудь попроще, типа - возьмите это и положите туда.

Конечно можно. Берете <FreeAd>PJOrion</FreeAd>, Ctrl+C / Ctrl+V приведенный выше фрагмент кода (для тех, кто совсем в танке, скопировать из темы и вставить в поле редактора), сохраняете файл как mod__FixLegacyImports.py (обратите внимание на двойное подчеркивание, это нужно для запуска скрипта в самом начале отсортированной по алфавиту очереди), Run -> Compile Script, забираете появившийся рядом mod__FixLegacyImports.pyс, кидаете по пути res_mods/<версия-клиента>/scripts/client/gui/mods/mod__FixLegacyImports.pyс и надеетесь, что при следующем запуске клиента оно таки взлетит (ибо я не тестировал этот код).

55 minutes ago, StranikS_Scan said:

то бишь исходники годичной давности в репо по ссылке из первого поста рабочие?

Не помню, что там в шапке, но то, что выложено на GitHub (ссылка также имеется в подписи), относительно актуальное. Правда для сборки реально актуальной (рабочей) версии нужно применить к последней версии (там есть теги с номерами версий) несколько выложенных в этой теме патчей, которые у меня все никак не доходят руки нормально проверить (имеется специальный checklist, в частности патчи нужно проверять на coverage, deprecation, и тому подобные вещи), протестировать и отправить в репозиторий.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Не знаю правильно ли всё сделал, после создания

11 часов назад, GPCracker сказал:

mod__FixLegacyImports.pyс

 теперь в питонлоге пишет такое:

Цитата

2019-08-07 10:21:32.989: WARNING: [WARNING] (scripts/client/gui/mods/__init__.py, 72): There is problem while import gui mod ('gui.mods', 'mod_advancedaimingsystem.pyc')
2019-08-07 10:21:32.990: ERROR: [EXCEPTION] (scripts/client/gui/mods/__init__.py, 74):
Traceback (most recent call last):
  File "scripts/client/gui/mods/mod_AdvancedAimingSystem.pyc", line 37, in <module>
ImportError: No module named aih_constants

2019-08-07 10:21:32.992: WARNING: [WARNING] (scripts/client/gui/mods/__init__.py, 72): There is problem while import gui mod ('gui.mods', 'mod__fixlegacyimports.pyc')
2019-08-07 10:21:32.993: ERROR: [EXCEPTION] (scripts/client/gui/mods/__init__.py, 74):
Traceback (most recent call last):
  File "scripts/client/gui/mods/__init__.py", line 67, in _findValidMODs
  File "scripts/common/Lib/importlib/__init__.py", line 37, in import_module
ImportError: Loaded module gui.mods.mod__fixlegacyimports not found in sys.modules

 

Edited by Pensioner
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
On 8/7/2019 at 3:28 PM, Pensioner said:

 теперь в питонлоге пишет такое

Ну значит красиво переобуться в прыжке (создать в рантайме фантом перемещенного модуля) с первого раза не получилось :(

К тому же загрузчик у картошки сделан (как и все остальное) через одно место (а я в очередной раз забыл это учесть). Отсутствие в питоне интегрированной функции unique побуждает некоторых не очень грамотных товарищей использовать set, упорядоченность которого зависит исключительно от фазы луны и положения звезд на ночном небе. Выражаясь более понятным языком, модификации (скрипты) загружаются в случайно организованном (но при этом относительно стабильном) порядке, что в некоторых случаях может бодро доставлять веселых проблем некоторым избранным пользователям, у которых эта самая неслучайная случайность организовалась не очень удачным образом.

On 8/8/2019 at 12:36 AM, vasya-sar said:

Похоже никто завести мод так и не смог

Ничего, мы не сдаемся, что-нибудь придумаем :)

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites
16 часов назад, GPCracker сказал:

 

Ничего, мы не сдаемся, что-нибудь придумаем :)

Поскорей бы...

Share this post


Link to post

Short link
Share on other sites
1 час назад, andron-1202 сказал:

Поскорей бы...

Это точно. Без него как без рук

Share this post


Link to post

Short link
Share on other sites
6 hours ago, Scharfhobel said:

Картофель работает над устранением провала сведения

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

Share this post


Link to post

Short link
Share on other sites
11.08.2019 в 00:20, GPCracker сказал:

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

Уважаемый GPCracker обращается к Вам не дед, прадед, жаль что накрылся, с моей точки зрения лучший мод. Не бросай нас сирот.

 

 

Share this post


Link to post

Short link
Share on other sites
1 hour ago, Констанин said:

Не бросай нас сирот.

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

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Судя по всему, автор загрузчика скриптов - набранный по объявлению индус, работающий за еду. Работать с кодом загрузчика абсолютно невозможно, не помогают ни прямые руки, ни даже костыли-велосипеды. Проект Advanced Script Loader (Community Edition), заменяющий scripts/client/gui/mods/__init__.pyc, напрашивается сам собой. Неплохо бы еще собрать код для автоматической генерации файла scripts/client/game.pyc для работы с некоторыми особо специфичными вещами. Жаль что на все это пока что совсем нет времени. В общем, моя попытка номер пять два.

modname = 'AvatarInputHandler.aih_constants'
constmod = __import__('sys').modules.setdefault(modname, __import__('imp').new_module(modname))
constmod.__file__ = __file__; constmod.__package__ = modname.rpartition('.')[0]

tuple(__import__('itertools').starmap(constmod.__dict__.setdefault, __import__('aih_constants').__dict__.viewitems()))

__import__('gui.mods.mod_advancedaimingsystem')

Действия те же. Имя файла mod_AasFixLegacyImports.py (хотя оно может быть [почти] любым, так как используется принцип второй попытки импорта). На ошибки первой попытки импорта можно не обращать особого внимания.

Share this post


Link to post

Short link
Share on other sites
27 минут назад, GPCracker сказал:

Судя по всему, автор загрузчика скриптов - набранный по объявлению индус, работающий за еду. Работать с кодом загрузчика абсолютно невозможно, не помогают ни прямые руки, ни даже костыли-велосипеды. Проект Advanced Script Loader (Community Edition), заменяющий scripts/client/gui/mods/__init__.pyc, напрашивается сам собой.

 

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

  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites
53 minutes ago, StranikS_Scan said:

вместо того чтобы обновить свой мод

Для выпуска хотя бы хотфикса нужно иметь доступ к основному рабочему компу, где есть установленный клиент игры и весь необходимый для запуска сборщика софт. Для нормального обновления модификации (это когда обновление получает версию и публикуется на GitHub) требуется еще и куча времени на полноценное тестирование и работу с git. Если я сижу за компом, на котором вообще ничего этого нет (ну разве что кроме текстового редактора и браузера, как говорится, и на том спасибо), и накатывать все необходимое у меня нет ни возможности, ни желания, то каким образом ты предлагаешь собирать нормальное обновление? В таких условиях diff это максимум, хотя и он генерируется наполовину вручную. В данном конкретном случае diff будет затрагивать сразу кучу файлов, будет длиннее транссибирской магистрали и как следствие с весьма большой долей вероятности будет иметь проблемы в плане инвариативности мержа. При этом все, что требуется сделать, это тупо выполнить найти и заменить все в текстовом редакторе и запустить сборку модификации. Для меня в данном случае гораздо проще по-быстрому написать дикий костыль из кривых импортов код, который просто создаст зеркало нужного мне модуля в старом месте.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
10 минут назад, GPCracker сказал:

Для выпуска хотя бы хотфикса нужно иметь доступ к основному рабочему компу, где есть установленный клиент игры и весь необходимый для запуска сборщика софт. Для нормального обновления модификации (это когда обновление получает версию и публикуется на GitHub) требуется еще и куча времени на полноценное тестирование и работу с git. Если я сижу за компом, на котором вообще ничего этого нет (ну разве что кроме текстового редактора и браузера, как говорится, и на том спасибо), и накатывать все необходимое у меня нет ни возможности, ни желания, то каким образом ты предлагаешь собирать нормальное обновление? В таких условиях diff это максимум, хотя и он генерируется наполовину вручную. В данном конкретном случае diff будет затрагивать сразу кучу файлов, будет длиннее транссибирской магистрали и как следствие с весьма большой долей вероятности будет иметь проблемы в плане инвариативности мержа. При этом все, что требуется сделать, это тупо выполнить найти и заменить все в текстовом редакторе и запустить сборку модификации. Для меня в данном случае гораздо проще по-быстрому написать дикий костыль из кривых импортов код, который просто создаст зеркало нужного мне модуля в старом месте.

 

Я по индусски не понимаю :heh:

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...