Amigo86 80 #173480 Posted April 20, 2014 Эммм, внедрять свои модификации я и не собирался вовсе :) Я размещаю модификации в программе от людей которые их тут делают, я к модификациям ни какого отношения не имею, только даю возможность установить ее в игру не делая при этом множества не понятных обычному юзеру действии. В общем программу делаю для удобства, что бы пользователи не искали моды и ручками их не ставили (автоматизация). Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #173503 Posted April 20, 2014 Эммм, внедрять свои модификации я и не собирался вовсе :) Я размещаю модификации в программе от людей которые их тут делают, я к модификациям ни какого отношения не имею, только даю возможность установить ее в игру не делая при этом множества не понятных обычному юзеру действии. В общем программу делаю для удобства, что бы пользователи не искали моды и ручками их не ставили (автоматизация). Так вот уважаемый, перестаньте ставить их в res_mods, а ставьте в c:\Games\WotSC\Mods или куда еще и при запуске вашей программы добавляйте ссылку в path.xml. Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #173606 Posted April 20, 2014 Так вот уважаемый, перестаньте ставить их в res_mods, а ставьте в c:\Games\WotSC\Mods или куда еще и при запуске вашей программы добавляйте ссылку в path.xml. Посмоторим что из этого получится. Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #174179 Posted April 21, 2014 Значит так, что получилось, шкурки грузятся нормально, но проблемы возникают с скриптами. Размещение модификации за пределами корневой папки игры не подходит, ибо после загрузки игра вылетает. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #174247 Posted April 21, 2014 (edited) @Amigo86, простите но это значит совсем другое, это значит что вы чего-то не так сделали. Любую стороннюю папку, прописанную через path.xml клиент юзает без проблем точно также как и res_mods ибо сама res_mods это и есть одна из сторонних папок. Давайте так, приведите мне правленный вами path.xml и структуру свой сторонней папки с модами (списки файлов можно получить через тоталкоммандер) и я подскажу в чем у вас косяк. ЗЫ: Вы просто до конца не разобрались в этом механизме. Edited April 21, 2014 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #174645 Posted April 21, 2014 @Amigo86, простите но это значит совсем другое, это значит что вы чего-то не так сделали. Любую стороннюю папку, прописанную через path.xml клиент юзает без проблем точно также как и res_mods ибо сама res_mods это и есть одна из сторонних папок. Давайте так, приведите мне правленный вами path.xml и структуру свой сторонней папки с модами (списки файлов можно получить через тоталкоммандер) и я подскажу в чем у вас косяк. ЗЫ: Вы просто до конца не разобрались в этом механизме. В том то и прикол, нихера ресурсы игры понять не могу, где взять мануал что к чему в этом клиенте, я тупо методом втыка начал, писал письмо в варгейминг (в Тех поддежку) до сих пор ответить не могут на мое письмецо. В принципе в файле "path.xml" <Path>C:\\Program Files (x86)\\WotSC\\mods</Path> <Path>C:\\Program Files (x86)\\WotSC\\mods\\0.9.0</Path> Выкидывало из за XVM, шкурки работают отлично. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #174750 Posted April 22, 2014 В том то и прикол, нихера ресурсы игры понять не могу, где взять мануал что к чему в этом клиенте, я тупо методом втыка начал, писал письмо в варгейминг (в Тех поддежку) до сих пор ответить не могут на мое письмецо. В принципе в файле "path.xml" <Path>C:\\Program Files (x86)\\WotSC\\mods</Path> <Path>C:\\Program Files (x86)\\WotSC\\mods\\0.9.0</Path> Выкидывало из за XVM, шкурки работают отлично. Так-с, два момента, которые вы должны знать/изучить: 1. В папке пользователя res_mods, есть загрузчик CameraNode.pyc, так вот в этом загрузчике обратите внимание как ищутся и загружаются моды: # Embedded file name: CameraNode.py import BigWorld class CameraNode(BigWorld.UserDataObject): def __init__(self): BigWorld.UserDataObject.__init__(self) def load_mods(): import ResMgr, os, glob sec = ResMgr.openSection('../paths.xml') subsec = sec['Paths'] vals = subsec.values()[0:2] for val in vals: mp = val.asString + '/scripts/client/mods/*.pyc' for fp in glob.iglob(mp): _, fn = os.path.split(fp) sn, _ = fn.split('.') if sn != '__init__': print 'LoadMod: ' + sn try: exec 'import mods.' + sn except Exception as e: print e load_mods() Он открывает файл path.xml и читает первый пункт из этого файла, что это значит? Это значит что: - нельзя в файле path.xml прописывать свою папку первой, первой всегда должна быть папка res_mods - т.е. вы свои папки прописывайте после нее, в противном случае загрузчик модов в папке res_mods не загрузить личные моды пользователя - тогда получается, что ваши моды будут грузиться после модов из папки res_mods Это то что вы получаете без лишних танцев с бубном. Можно конечно и изменить эту ситуацию, т.е. сделать так что бы ваши моды грузились первыми, но для этого надо тогда изменить номер строки в загрузчике выше и исправленный загрузчик положить в папку пользователя. И тогда загрузчик пользователя будет брать путь из правильной строки в path.xml и пользовательские моды в res_mods будут грузиться как положено, но после ваших. Однако чем плохо такое решение - пользователь может в любой момент переписать файл CameraNode.pyc на другой оригинальный, когда ставит моды сам, и вот тут опять будет косяк. 2. Вы понимаете как работает загрузчик модов? Нет? Поясню - у клиента игры есть стандартный набор файлов, они лежат в c:\Games\World_of_Tanks\res\scripts\client\ При загрузке клиента сначала грузиться модуль BigWorld этого модуля нет в файлах, т.к. он встроен в сам exe игры. Этот BigWorld подгружает все остальные pyc-файлы, а где он их ищет? Правильно, по путям, которые прописаны в path.xml. Вот по этой причине загрузчик модов сделан из стандартного файла игры, который лежит вот здесь c:\Games\World_of_Tanks\res\scripts\client\cameranode.pyc Логика такая, при загрузке клиента, он ищет этот файл и находит его вот тут c:\Games\World_of_Tanks\res_mods\0.9.0\scripts\client\CameraNode.pyc и импортирует его в память. А так как это исправленный файл, то он исполняет и загрузочный код прописанный в нем (см. код выше). После этого клиент игры больше файл CameraNode.pyc не ищет, т.к. уже нашел, а загружает следующий файл. Т.е. получается что оригинальный файл c:\Games\World_of_Tanks\res\scripts\client\cameranode.pyc не загружается и ни какие его копии в других местах тоже не загружаются. А теперь давайте вернемся к первому пункту - получается что если вы в своей папке WotSC\\mods\\0.9.0 будете использовать файл CameraNode.pyc, то второй такой файл уже в папке пользователя res_mods\0.9.0 клиент проигнорирует ибо один раз он уже этот файл в память загрузил и ему нет дела до его копий. И наоборот, если сначала грузиться папка пользователя res_mods, то клиент импортирует из нее CameraNode.pyc один раз и всё... этот же файл, но уже в вашей папки он проигнорирует. Вот именно это у вас скорее всего и происходит. 3. Как решить проблему, варианты: - использовать в своих папках в качестве загрузчика не CameraNode.pyc, а другой файл, например Benchmarklocation.pyc, т.е. в него поместить код загрузки ваших модов, но такой подход чем плох, а другие ведь тоже могут так делать, тогда если пользователь использует еще какую-нибудь мега-сборку или чит-сборку и в ней сделана загрузка через этот файл, то тогда опять возникнет проблема из п.2. - второй вариант, прописать в одном из загрузчиков чтобы он грузил как ваши моды так и моды пользователя. Например оптимально будет так - вы прописываете свою папку первой в path.xml, значит ваш CameraNode.pyc будет грузиться первым и единственным, ну дык надо в него поместить два кода загрузки, сначала загрузка модов из вашей папка, а потом загрузка модов из res_mods и тогда все pyc-моды будут загружены. При этом если пользователь отключает/удаляет ваши моды, то всё встает на свои места. Чем хорош этот путь? У пользователя в res_mods ни чего не меняется и ни кто кроме него эту папку не трогает. Quote Share this post Link to post Short link Share on other sites
Red Baron 39 #174889 Posted April 22, 2014 Хочу вставить свои 5 копеек. Автор вы делаете программу один, без обид но у вас 3 варианта развития. Либо у вас будет вечная бета, где есть и то и то, но нормальных инструментов для их работы нет и все что то доделывается правится, вместо работы. Либо упор на моды. Либо упор на сошиал клаб. 1- вечная бета никому не нужна вы делаете проект по сути для себя и сами им любуетесь. Потому что большинство тех кто использует такие проекты это люди желающие получить удобство без геморроя и затрат времени и нервов. Хватаясь за все подряд и не доводя до ума или доводя спустя месяцы и годы пользователей можно только оттолкнуть. 2- упор на моды. Есть куча модпаков и сайтов, так же есть уже несколько механизмов для автоматизированного получения и установки модов. Но все они, кроме модпаков, непопулярны вообще. Да и все крупные моды имеют или модификации или настройки - Возьмем для примера дамаг панель - вы разместите штук 10 разных и к ним еще несколько десятков модификаций. Большинство потенциальных пользователей тупы и не имеют отношения к компьютерам, им даже выбор будет сделать лень и сложно. Они плюнут и тупо скачают чей ни будь модпак. Потому что там уже сделан выбор и все настроено. Если вы будете публиковать свою так сказать сборку и настроенное все под себя - не проще ли сделать модпак, тогда вы избежите кучи проблем и лишнего геморроя. Если вы будете публиковать что то предложенное авторами - ну ок, но опять же без настроек или выбора модификации людям это будет не нужно. Вы хотите делать заранее мертворожденное дело? 3- сошиал клаб - если правильно реализовать будет очень популярным и востребованным Так как, насколько я знаю, нет ни одного нормального инструмента для общения именно под танки кроме идиотского встроенного чата. Но тогда надо реализовать кучу удобных вещей, это и запароленные каналы и объявления и так далее. Ведь для любого командира порой заставить людей как то группироваться и быть постоянно доступным головная боль. ТС и прочее не вариант там очень не удобны объявления и общение тектом. Получается в каждом направлении куча работы а отдача разная. ладно не берите в голову все мое имхо. 1 1 Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #175673 Posted April 23, 2014 Хочу вставить свои 5 копеек. Автор вы делаете программу один, без обид но у вас 3 варианта развития. Либо у вас будет вечная бета, где есть и то и то, но нормальных инструментов для их работы нет и все что то доделывается правится, вместо работы. Либо упор на моды. Либо упор на сошиал клаб. 1- вечная бета никому не нужна вы делаете проект по сути для себя и сами им любуетесь. Потому что большинство тех кто использует такие проекты это люди желающие получить удобство без геморроя и затрат времени и нервов. Хватаясь за все подряд и не доводя до ума или доводя спустя месяцы и годы пользователей можно только оттолкнуть. 2- упор на моды. Есть куча модпаков и сайтов, так же есть уже несколько механизмов для автоматизированного получения и установки модов. Но все они, кроме модпаков, непопулярны вообще. Да и все крупные моды имеют или модификации или настройки - Возьмем для примера дамаг панель - вы разместите штук 10 разных и к ним еще несколько десятков модификаций. Большинство потенциальных пользователей тупы и не имеют отношения к компьютерам, им даже выбор будет сделать лень и сложно. Они плюнут и тупо скачают чей ни будь модпак. Потому что там уже сделан выбор и все настроено. Если вы будете публиковать свою так сказать сборку и настроенное все под себя - не проще ли сделать модпак, тогда вы избежите кучи проблем и лишнего геморроя. Если вы будете публиковать что то предложенное авторами - ну ок, но опять же без настроек или выбора модификации людям это будет не нужно. Вы хотите делать заранее мертворожденное дело? 3- сошиал клаб - если правильно реализовать будет очень популярным и востребованным Так как, насколько я знаю, нет ни одного нормального инструмента для общения именно под танки кроме идиотского встроенного чата. Но тогда надо реализовать кучу удобных вещей, это и запароленные каналы и объявления и так далее. Ведь для любого командира порой заставить людей как то группироваться и быть постоянно доступным головная боль. ТС и прочее не вариант там очень не удобны объявления и общение тектом. Получается в каждом направлении куча работы а отдача разная. ладно не берите в голову все мое имхо. Все что вы написали верно, но да есть пользователи которые не умеют работать элементарно даже с компьютером, речь идет о модификациях и о получении статистики игрока и так далее, моды я делать не буду, программа всего на просто отображает из БД доступные модификации которые я добавил, я не имею ни какого отношения к самим модификациям, понимаете ли, я не давно только начал проект, в голове много мыслей, идей, но на все рук просто не хватает, и поэтому советуюсь тут с опытными моделлерами, я как бы так сказать предоставляю контент автора мода через эту программу, (она устанавливает моды автоматически). Сейчас на всевозможных сайтах - реклама и так далее, которая отталкивает (публику). Все как в каталоге юзер увидел мод, понравилось на видео / на картинке нажал кнопку установить, программа сделала все автоматически. Сейчас я работаю над исправлением ошибок в ПО. Один я справляюсь с ПО, но я ищу людей которые будут работать с БД модификации Программного Комплекса. Конечно же за не бесплатно. Ничег ов принципе сложного в этом не будет, с сайтом проекта займусь позже сейчас самое основное, сделать проект стабильным. Через программу очень удобно устанавливать модификации, но сейчас увы я с БД ПО не работаю, и архивы с модами я проверял, знаю что больше половины модов уже не актуальны. Так-с, два момента, которые вы должны знать/изучить: 1. В папке пользователя res_mods, есть загрузчик CameraNode.pyc, так вот в этом загрузчике обратите внимание как ищутся и загружаются моды: # Embedded file name: CameraNode.py import BigWorld class CameraNode(BigWorld.UserDataObject): def __init__(self): BigWorld.UserDataObject.__init__(self) def load_mods(): import ResMgr, os, glob sec = ResMgr.openSection('../paths.xml') subsec = sec['Paths'] vals = subsec.values()[0:2] for val in vals: mp = val.asString + '/scripts/client/mods/*.pyc' for fp in glob.iglob(mp): _, fn = os.path.split(fp) sn, _ = fn.split('.') if sn != '__init__': print 'LoadMod: ' + sn try: exec 'import mods.' + sn except Exception as e: print e load_mods() Он открывает файл path.xml и читает первый пункт из этого файла, что это значит? Это значит что: - нельзя в файле path.xml прописывать свою папку первой, первой всегда должна быть папка res_mods - т.е. вы свои папки прописывайте после нее, в противном случае загрузчик модов в папке res_mods не загрузить личные моды пользователя - тогда получается, что ваши моды будут грузиться после модов из папки res_mods Это то что вы получаете без лишних танцев с бубном. Можно конечно и изменить эту ситуацию, т.е. сделать так что бы ваши моды грузились первыми, но для этого надо тогда изменить номер строки в загрузчике выше и исправленный загрузчик положить в папку пользователя. И тогда загрузчик пользователя будет брать путь из правильной строки в path.xml и пользовательские моды в res_mods будут грузиться как положено, но после ваших. Однако чем плохо такое решение - пользователь может в любой момент переписать файл CameraNode.pyc на другой оригинальный, когда ставит моды сам, и вот тут опять будет косяк. 2. Вы понимаете как работает загрузчик модов? Нет? Поясню - у клиента игры есть стандартный набор файлов, они лежат в c:\Games\World_of_Tanks\res\scripts\client\ При загрузке клиента сначала грузиться модуль BigWorld этого модуля нет в файлах, т.к. он встроен в сам exe игры. Этот BigWorld подгружает все остальные pyc-файлы, а где он их ищет? Правильно, по путям, которые прописаны в path.xml. Вот по этой причине загрузчик модов сделан из стандартного файла игры, который лежит вот здесь c:\Games\World_of_Tanks\res\scripts\client\cameranode.pyc Логика такая, при загрузке клиента, он ищет этот файл и находит его вот тут c:\Games\World_of_Tanks\res_mods\0.9.0\scripts\client\CameraNode.pyc и импортирует его в память. А так как это исправленный файл, то он исполняет и загрузочный код прописанный в нем (см. код выше). После этого клиент игры больше файл CameraNode.pyc не ищет, т.к. уже нашел, а загружает следующий файл. Т.е. получается что оригинальный файл c:\Games\World_of_Tanks\res\scripts\client\cameranode.pyc не загружается и ни какие его копии в других местах тоже не загружаются. А теперь давайте вернемся к первому пункту - получается что если вы в своей папке WotSC\\mods\\0.9.0 будете использовать файл CameraNode.pyc, то второй такой файл уже в папке пользователя res_mods\0.9.0 клиент проигнорирует ибо один раз он уже этот файл в память загрузил и ему нет дела до его копий. И наоборот, если сначала грузиться папка пользователя res_mods, то клиент импортирует из нее CameraNode.pyc один раз и всё... этот же файл, но уже в вашей папки он проигнорирует. Вот именно это у вас скорее всего и происходит. 3. Как решить проблему, варианты: - использовать в своих папках в качестве загрузчика не CameraNode.pyc, а другой файл, например Benchmarklocation.pyc, т.е. в него поместить код загрузки ваших модов, но такой подход чем плох, а другие ведь тоже могут так делать, тогда если пользователь использует еще какую-нибудь мега-сборку или чит-сборку и в ней сделана загрузка через этот файл, то тогда опять возникнет проблема из п.2. - второй вариант, прописать в одном из загрузчиков чтобы он грузил как ваши моды так и моды пользователя. Например оптимально будет так - вы прописываете свою папку первой в path.xml, значит ваш CameraNode.pyc будет грузиться первым и единственным, ну дык надо в него поместить два кода загрузки, сначала загрузка модов из вашей папка, а потом загрузка модов из res_mods и тогда все pyc-моды будут загружены. При этом если пользователь отключает/удаляет ваши моды, то всё встает на свои места. Чем хорош этот путь? У пользователя в res_mods ни чего не меняется и ни кто кроме него эту папку не трогает. Спасибо за предоставленную информацию, буду в курсе. Еще есть какие нибудь нюансы которые ты бы хотел внести в ПО? Quote Share this post Link to post Short link Share on other sites
lportii 14 #175720 Posted April 23, 2014 (edited) # Embedded file name: CameraNode.py import BigWorld class CameraNode(BigWorld.UserDataObject): def __init__(self): BigWorld.UserDataObject.__init__(self) def load_mods(): #import ResMgr, import os, glob #sec = ResMgr.openSection('../paths.xml') #subsec = sec['Paths'] #vals = subsec.values()[0:2] vals = ['./res_mods/0.9.0/scripts/client/mods/*.pyc', './res_mods/0.9.0/WotSC/mods/*.pyc'] for val in vals: #mp = val.asString + '/scripts/client/mods/*.pyc' #for fp in glob.iglob(mp): for fp in glob.iglob(val): _, fn = os.path.split(fp) sn, _ = fn.split('.') if sn != '__init__': print 'LoadMod: ' + sn try: exec 'import mods.' + sn except Exception as e: print e load_mods() Загрузчик вообще, давно надо переделывать. Edited April 23, 2014 by lportii Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #175746 Posted April 23, 2014 (edited) Еще есть какие нибудь нюансы которые ты бы хотел внести в ПО? Мне весьма понравилась концепция "социальная оболочка" в которой собрана вся пользовательская инфа по игре, есть сервисы общения и менеджер управления игрой на компутере. Советую продолжать в указанном ключе, т.к. это действительно будет востребовано. @lportii, давно пора написать универсальный загрузчик чтоб можно было юзать и сторонние папки, а то надоело что все пихают всё в одну папку и свои моды там и всякие модпаки туда же лезут еще и мусор там свой оставляют. Edited April 23, 2014 by StranikS_Scan 2 Quote Share this post Link to post Short link Share on other sites
lportii 14 #175752 Posted April 23, 2014 Дело не сложное, сложнее отучить от старых привычек. Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #175774 Posted April 23, 2014 Будем стараться :) Сейчас делаю стабильную версию оболочку программы, бывает что при запуске программы находит обновления которых не сущ-ет, уже сделал исправление, щас работаю с JSON, Общая статистика + скорей всего сделаю: клановую и компанию. Но опять как интерфейс проработать что бы было красиво а не так на тяп и ляп. Так еще одно, с мониторами HD в интерфейсе программы не видно символов, в настройках добавлю HD+ 1 Quote Share this post Link to post Short link Share on other sites
Azbuka 278 #175790 Posted April 23, 2014 @Amigo86, На чём пишите? Open Source будет? Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #175792 Posted April 23, 2014 @Amigo86, На чём пишите? Open Source будет? Delphi, Pascal, Open Source чего? Если ПО то не будет. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #175796 Posted April 23, 2014 JSON Я под делфу юзаю SuperObject 1.2, крутая штука. Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #175799 Posted April 23, 2014 Я под делфу юзаю SuperObject 1.2, крутая штука. https://code.google.com/p/superobject/downloads/list Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #176301 Posted April 24, 2014 В общем доработал базовую программу WOTSC сейчас версия 1.0.0.5, можете тестить, добавил отображение размера шрифта для HD "В настройках" В "Статистике" добавил Личный рейтинг игрока, пинг можно теперь производить вручную Пинг можно узнать уже вручную нажав на "Молнию" :), где установлен CheckBox то там по тайму в каждые 5 секунд проверка пинга. Теперь осталось самое тяжелое это дорабатывать плагины для модов. Quote Share this post Link to post Short link Share on other sites
Amigo86 80 #180124 Posted May 1, 2014 (edited) StranikS_Scan, реализовал в программе то что вы предложили, "Так вот уважаемый, перестаньте ставить их в res_mods, а ставьте в c:\Games\WotSC\Mods или куда еще и при запуске вашей программы добавляйте ссылку в path.xml" 'paths.xml' ./res_mods/0.9.0./res_wotsc/0.9.0 Программу научил устанавливать моды для специально отведенную для нее папку "res_wotsc", сама папка res_mods остается пользовательской, но я не убрал функцию установки модов в папку res_mods, пользователь сам может решить в какую папку программа будет устанавливать моды, по умолчанию программа будет использовать папку "res_wotsc". Добавил CheckBox. Скрин: Сейчас дорабатываю некоторые нюансы с ПО, особенно меняю ряд процедур в плагинах, думаю в скором времени закончить. К вам есть огромное предложение, как я понимаю вы работаете с модификациями, сейчас вы сделали шкурки для версии 0.9.0, хотелось бы их использовать и в моей программе. Edited May 1, 2014 by Amigo86 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #180907 Posted May 4, 2014 @Amigo86, молодец! Правильным путём идёте, товарищи! Обратил внимание, что на скриншоте xml файла закрался пробел после 0.9.0 :)))) По шкуркам, всё что делаю выкладываю в теме. Quote Share this post Link to post Short link Share on other sites