Jump to content
Korean Random

GPCracker

User
  • Content Count

    2817
  • Joined

  • Last visited

  • Days Won

    61

GPCracker last won the day on April 25

GPCracker had the most liked content!

Community Reputation

2070 ⭐⭐⭐⭐⭐

4 Followers

About GPCracker

  • Rank
    Piranhas Team
  • Birthday 11/05/1994

Basic information

  • Gender
    Мужчина
  • City
    Москва
  • Interests
    Схемотехника, программирование и телекоммуникации.

Recent Profile Visitors

24340 profile views
  1. То есть, по твоему скромному мнению, в подобной ситуации, когда на обновление модификации у автора нет ни времени, ни технической возможности, вместо того, чтобы хоть как-то попытаться хотя бы временно адаптировать (или помочь окружающим это сделать) модификацию под новый клиент, автору будет целесообразнее просто послать всех лесом и уйти в сиреневый туман? Хорошо, спасибо, буду знать. Специально для тебя, и того, кто ставит минусы под моими сообщениями, поясняю по всей видимости до сих пор не понятую вами вещь - продакшн расположен в репозитории, а то, что выкладывается в теме в настоящее время, это хотфиксы. В переводе на понятный русский - это временная заплатка, призванная скомпенсировать проблему до момента, когда она будет надлежащим образом решена при помощи полноценного обновления модификации. Когда будет это обновление - как только [у меня появится время на модификации], так сразу. Недовольные всегда найдутся, что бы ты не делал, как бы ты это не делал, и делал ли бы ты вообще хоть что-то. Так что я уже мало чему удивляюсь. Открою тебе маленькую тайну - далеко не факт, что авторы документации на пакеты модификаций (в которых этот загрузчик вообще вскользь упоминается, ибо весь документ немного о другом), и авторы непосредственно кода загрузчика одни и те же люди, далеко не факт. Это во-первых. А во-вторых, я ориентируюсь исключительно на то, что именно делается, а не на авторитет того, кто это делает. Если я вижу какую-то фигню, я прямо и конструктивно говорю, что это фигня. И мне абсолютно все равно, кто ее автор. Я бы понял, если бы этот загрузчик был чьей-то модификацией, для начинающего мододела (ну или для чисто пробного проекта, когда надо просто что-то по-быстрому проверить) это приемлемый уровень кода. Но для продакшна достаточно крупной компании, это, извините, ни в какие ворота не лезет. Meld + Text Filters. Там изначально есть фильтр для комментариев. Выставить правильно контрольные точки при необходимости и все должно нормально сравниваться.
  2. И это мне говорит человек, который, по всей видимости, тему вообще не читает. Потому как едва ли не каждый, кто подписан на эту тему, знает причину, по которой я последнее время не выкладываю ничего на GitHub - у меня в данный момент просто банально нет ни времени, ни технической возможности полноценно заниматься разработкой, да и заливать в продакшн не проверенный надлежащим образом и хрен знает как собранный код (как это делают многие мои коллеги) мне совесть не позволяет. Похоже кто-то просто очень плохо знаком с внутренностями CPython, раз утверждает подобное. Читай PEP 302, и обрати особое внимание на ресурс, где это опубликовано. Кстати, если ты не в курсе, именно таким образом, через import hook, картошка грузит свои Python модули. Только этот хук реализован на C и подрублен одним концом к ResMgr, вторым к Python. А ты хочешь сказать что это не так? Там сплошные костыли и косяки. Порядок загрузки модулей хрен пойми какой, у автора модификации он может быть один, у пользователей другой. Пользователи кричат, что у них проблемы с совместимостью с какой-то другой модификацией, автор кричит - не воспроизводится. Потому как порядок импорта определяет порядок установки хуков, а некоторые модификации применяют полную перегрузку метода и тем самым выкидывают на мороз все хуки, сделанные до них. Пакетные модули загрузчик грузить не умеет, подхватывать и автоматически компилировать текстовые модули тоже не умеет (даже при том условии что клиент принципиально понимает только скомпилированные файлы, компиляция без проблем делается в реальном времени, там кода на пару строк всего). В динамические модули загрузчик тоже не может, весь код написан хрен пойми как (даже мододел и то наверное лучше напишет), загрузить что-то вне очереди нереально, досрочно выгрузить тоже. А еще в этих исходниках указана версия клиента игры, под которую они собраны. Никто не мешает просто взять распакованные скрипты клиента той версии, скрипты текущей, сделать directory diff в том же meld, пробежаться по ключевым модулям, которые определены в разделе импортов модификации, посмотреть их diff и определить, что именно и как нужно исправить. И это без учета того факта, что я при возможности выкладываю патчи, которые с помощью git apply можно тупо и незатейливо на репозиторий применить, в крайнем случае воспользоваться мозгами и merge tool и замержить все это дело ручками. Если кто-то не умеет пользоваться элементарными инструментами системы контроля версий, то это его личные проблемы. И да, это я еще забыл про подход индуса - просто залить старую версию в новый клиент и править ошибки по мере их появления. Если ты до сих пор еще не понял, данный мод практически никто не пытается реабилитировать не потому, что я как-то криво исходники выкладываю, или информацию зажимаю, а просто потому, что уровень этой модификации существенно превышает средний по больнице сообществу мододелов, и далеко не каждому мододелу под силу понять лежащие в основе модификации механики. А те, кто в состоянии понять и разобраться, либо как и я страдают от дефицита времени на модификации, либо и вовсе уже давным давно забили на модификации вообще.
  3. Индус в сходных условиях, к твоему сведению, вообще вряд ли что-то сможет написать. Потому как работоспособность индусского кода достигается путем многократных попыток его отладки. Х**к, х**к и в продакшн, а куда же еще. Хорошо хоть картошка пока до критической инфраструктуры не добралась. Это как раз ты немного не понял суть моего недовольства. Если на твоих примерах, то это все равно что если бы ты, заезжая в новую квартиру, решил поменять розетку и с удивлением обнаружил, что в электрическом щитке вместо как минимум разделения питания на группы и отдельного автомата на электроплиту все подключено на один хлам-рубильник (даже не автомат), а то и вовсе на скрутку, до кучи залито монтажной пеной (это к тому, что к коду загрузчика вообще не подлезть), да и сам щиток сходу хрен откроешь, потому что кто-то прихватил его сваркой, чтобы щиток внезапно не открывался по причине сломанного замка (использование костылей). Как-бы вроде все работает и свет-то дома есть, но как-бы что-то тут не так... Донатоприемника нет, и вряд ли когда-то будет. Не хочу делать из хобби работу, да и, как показывает практика, деньги портят взаимоотношения.
  4. А ты попробуй обновить модификацию, не имея возможности ее скомпилировать, запустить и, собственно, протестировать (ну к примеру, сидя с мобильника или планшета). Может быть поймешь, в чем прикол :)
  5. Для выпуска хотя бы хотфикса нужно иметь доступ к основному рабочему компу, где есть установленный клиент игры и весь необходимый для запуска сборщика софт. Для нормального обновления модификации (это когда обновление получает версию и публикуется на GitHub) требуется еще и куча времени на полноценное тестирование и работу с git. Если я сижу за компом, на котором вообще ничего этого нет (ну разве что кроме текстового редактора и браузера, как говорится, и на том спасибо), и накатывать все необходимое у меня нет ни возможности, ни желания, то каким образом ты предлагаешь собирать нормальное обновление? В таких условиях diff это максимум, хотя и он генерируется наполовину вручную. В данном конкретном случае diff будет затрагивать сразу кучу файлов, будет длиннее транссибирской магистрали и как следствие с весьма большой долей вероятности будет иметь проблемы в плане инвариативности мержа. При этом все, что требуется сделать, это тупо выполнить найти и заменить все в текстовом редакторе и запустить сборку модификации. Для меня в данном случае гораздо проще по-быстрому написать дикий костыль из кривых импортов код, который просто создаст зеркало нужного мне модуля в старом месте.
  6. Судя по всему, автор загрузчика скриптов - набранный по объявлению индус, работающий за еду. Работать с кодом загрузчика абсолютно невозможно, не помогают ни прямые руки, ни даже костыли-велосипеды. Проект 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 (хотя оно может быть [почти] любым, так как используется принцип второй попытки импорта). На ошибки первой попытки импорта можно не обращать особого внимания.
  7. К сожалению, пока нет возможности даже минимальный кусок кода набросать. Хотя кое-какие идеи все же имеются, как появится время - попробую что-нибудь сообразить.
  8. Ну, как говорится, будем посмотреть. Но что-то мне подсказывает, что все будет как всегда... в общем, картошка вряд ли выйдет из своего репертуара.
  9. @HETCEPBEPA gettext + обычный текстовый редактор. Информация про пакеты модификаций имеется здесь. It's all you need.
  10. Как по мне, PyQt в этом плане самый топ. Прикрутить еще Cython и вообще огонь будет. Ну или как вариант можно еще использовать IronPython.
  11. Это все же немного из другой оперы. К тому же данный поисковый механизм с большой долей вероятности интегрирован непосредственно в движок форума, в код которого администратор предпочитает особо не вмешиваться. Хотя я могу и ошибаться, все же лучше спросить у него самого, и желательно в отдельной теме. Тот самый момент, когда хочется отправить задавшего вопрос еще раз прочитать шапку темы. Потому как ответ без проблем находится поиском по текущему разделу, по ключевому слову spoiler (внезапно). Хотя ладно, держи.
  12. Ну значит красиво переобуться в прыжке (создать в рантайме фантом перемещенного модуля) с первого раза не получилось :( К тому же загрузчик у картошки сделан (как и все остальное) через одно место (а я в очередной раз забыл это учесть). Отсутствие в питоне интегрированной функции unique побуждает некоторых не очень грамотных товарищей использовать set, упорядоченность которого зависит исключительно от фазы луны и положения звезд на ночном небе. Выражаясь более понятным языком, модификации (скрипты) загружаются в случайно организованном (но при этом относительно стабильном) порядке, что в некоторых случаях может бодро доставлять веселых проблем некоторым избранным пользователям, у которых эта самая неслучайная случайность организовалась не очень удачным образом. Ничего, мы не сдаемся, что-нибудь придумаем :)
  13. Если мне память не изменяет, данный вопрос уже обсуждался ранее.
  14. Конечно можно. Берете <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с и надеетесь, что при следующем запуске клиента оно таки взлетит (ибо я не тестировал этот код). Не помню, что там в шапке, но то, что выложено на GitHub (ссылка также имеется в подписи), относительно актуальное. Правда для сборки реально актуальной (рабочей) версии нужно применить к последней версии (там есть теги с номерами версий) несколько выложенных в этой теме патчей, которые у меня все никак не доходят руки нормально проверить (имеется специальный checklist, в частности патчи нужно проверять на coverage, deprecation, и тому подобные вещи), протестировать и отправить в репозиторий.
  15. TL; DR; Проблема гораздо более сложная, чем кажется на первый взгляд. Тем не менее, постараюсь изложить идею максимально кратко, а пояснения оставлю в конце сообщения. В целях повышения уровня осведомленности пользователей о наличии на форуме поиска, о принципах его работы и методике использования, В целях снижения количества флуд-контента в темах, а также для упрощения поиска актуальной информации, В целях улучшения качества, понятности и актуальности даваемых ответов, В целях повышения общей грамотности пользователей Считаю введение на форуме аналога Let Me Google That For You вполне необходимым, оправданным и обоснованным. К тому же необходимая для реализации этой штуки возможность перехода на страницу поиска по ссылке уже реализована на форуме (пример), так что по большому счету не хватает только выполняемого на стороне клиента скрипта, который будет скроллить страницу к нужному элементу, визуально его выделять, вводить в поле поиска необходимый запрос и предлагать пользователю нажать на заветную кнопку. Как и обещал, некоторые пояснения для тех, кому не совсем понятны приведенные выше аргументы. Проблема гораздо более сложная, чем кажется на первый взгляд. С одной стороны, сообщения, в которых пользователя отправляют в поиск, на самом деле являются флудом, поскольку они не содержат полезной информации. С другой, задавать вопросы, ответы на которые уже неоднократно давались и могут быть найдены с помощью относительно простых поисковых запросов, это (с точки зрения всех остальных пользователей) ничуть не меньший флуд, жутко захламляющий тему и генерирующий кучу лишних уведомлений. А генерируется этот самый первичный флуд как раз таки по причине неумения пользователей пользоваться поиском. Но, как показывает практика, чтобы чему-то научиться, нужно как минимум начать пытаться это делать, а среднестатистический пользователь-новичок либо вовсе не знает о существовании поиска на форуме, либо просто не желает напрягать собственные мозги составлением грамотных поисковых запросов (негативная реакция пользователей на частые вопросы как раз и обусловлена неодобрением бесплатного аутсорсинга мыслительной деятельности). При этом для первых обычно достаточно просто показать наличие поиска и методику его использования, вторые же будут продолжать генерировать флуд-контент до тех пор, пока их не начнут безальтернативно отправлять в поиск вместо предоставления прямых ответов. Иными словами, для пресечения дальнейшей генерации флуд-контента в виде часто задаваемых вопросов пользователей нужно отправлять в поиск, что обычно и делают продвинутые пользователи. Кроме того, практически на все часто задаваемые вопросы уже имеются гораздо более развернутые и понятные для задающего вопрос ответы, нежели даст своими словами человек с гораздо более высоким уровнем знаний (по сравнению с задающим вопрос), поэтому отправлять с элементарными вопросами в поиск вполне оправдано и с точки зрения качества даваемого ответа, хоть на первый взгляд это и кажется абсурдным. К тому же, в отличие от статической цитаты из периодически обновляемых FAQ или документации, поиск по ключевым словам (если сортировка выдачи организована по принципу most recent first) всегда выдает актуальный результат, таким образом ответ остается актуальным даже по прошествии времени, а заданный вопрос становится дополнительным транзитным поисковым индексом. Заинтересованные: @Mr 13, @StranikS_Scan, @Polyacov_Yury, @Ekspoint, @Armagomen_dev, @ShuraBB, @Pavel3333, а также все те, кому флуд-контент в виде часто задаваемых вопросов уже порядком поднадоел.
×
×
  • Create New...