Amigo86 Posted April 20, 2014 Author Share Posted April 20, 2014 Эммм, внедрять свои модификации я и не собирался вовсе :) Я размещаю модификации в программе от людей которые их тут делают, я к модификациям ни какого отношения не имею, только даю возможность установить ее в игру не делая при этом множества не понятных обычному юзеру действии. В общем программу делаю для удобства, что бы пользователи не искали моды и ручками их не ставили (автоматизация). @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted April 20, 2014 Share Posted April 20, 2014 Эммм, внедрять свои модификации я и не собирался вовсе :) Я размещаю модификации в программе от людей которые их тут делают, я к модификациям ни какого отношения не имею, только даю возможность установить ее в игру не делая при этом множества не понятных обычному юзеру действии. В общем программу делаю для удобства, что бы пользователи не искали моды и ручками их не ставили (автоматизация). Так вот уважаемый, перестаньте ставить их в res_mods, а ставьте в c:\Games\WotSC\Mods или куда еще и при запуске вашей программы добавляйте ссылку в path.xml. @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted April 20, 2014 Author Share Posted April 20, 2014 Так вот уважаемый, перестаньте ставить их в res_mods, а ставьте в c:\Games\WotSC\Mods или куда еще и при запуске вашей программы добавляйте ссылку в path.xml. Посмоторим что из этого получится. @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted April 21, 2014 Author Share Posted April 21, 2014 Значит так, что получилось, шкурки грузятся нормально, но проблемы возникают с скриптами. Размещение модификации за пределами корневой папки игры не подходит, ибо после загрузки игра вылетает. @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted April 21, 2014 Share Posted April 21, 2014 (edited) @Amigo86, простите но это значит совсем другое, это значит что вы чего-то не так сделали. Любую стороннюю папку, прописанную через path.xml клиент юзает без проблем точно также как и res_mods ибо сама res_mods это и есть одна из сторонних папок. Давайте так, приведите мне правленный вами path.xml и структуру свой сторонней папки с модами (списки файлов можно получить через тоталкоммандер) и я подскажу в чем у вас косяк. ЗЫ: Вы просто до конца не разобрались в этом механизме. Edited April 21, 2014 by StranikS_Scan @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted April 21, 2014 Author Share 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 Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted April 22, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
Red Baron Posted April 22, 2014 Share Posted April 22, 2014 Хочу вставить свои 5 копеек. Автор вы делаете программу один, без обид но у вас 3 варианта развития. Либо у вас будет вечная бета, где есть и то и то, но нормальных инструментов для их работы нет и все что то доделывается правится, вместо работы. Либо упор на моды. Либо упор на сошиал клаб. 1- вечная бета никому не нужна вы делаете проект по сути для себя и сами им любуетесь. Потому что большинство тех кто использует такие проекты это люди желающие получить удобство без геморроя и затрат времени и нервов. Хватаясь за все подряд и не доводя до ума или доводя спустя месяцы и годы пользователей можно только оттолкнуть. 2- упор на моды. Есть куча модпаков и сайтов, так же есть уже несколько механизмов для автоматизированного получения и установки модов. Но все они, кроме модпаков, непопулярны вообще. Да и все крупные моды имеют или модификации или настройки - Возьмем для примера дамаг панель - вы разместите штук 10 разных и к ним еще несколько десятков модификаций. Большинство потенциальных пользователей тупы и не имеют отношения к компьютерам, им даже выбор будет сделать лень и сложно. Они плюнут и тупо скачают чей ни будь модпак. Потому что там уже сделан выбор и все настроено. Если вы будете публиковать свою так сказать сборку и настроенное все под себя - не проще ли сделать модпак, тогда вы избежите кучи проблем и лишнего геморроя. Если вы будете публиковать что то предложенное авторами - ну ок, но опять же без настроек или выбора модификации людям это будет не нужно. Вы хотите делать заранее мертворожденное дело? 3- сошиал клаб - если правильно реализовать будет очень популярным и востребованным Так как, насколько я знаю, нет ни одного нормального инструмента для общения именно под танки кроме идиотского встроенного чата. Но тогда надо реализовать кучу удобных вещей, это и запароленные каналы и объявления и так далее. Ведь для любого командира порой заставить людей как то группироваться и быть постоянно доступным головная боль. ТС и прочее не вариант там очень не удобны объявления и общение тектом. Получается в каждом направлении куча работы а отдача разная. ладно не берите в голову все мое имхо. 1 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted April 23, 2014 Author Share 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 Link to comment Short link Share on other sites More sharing options...
lportii Posted April 23, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted April 23, 2014 Share Posted April 23, 2014 (edited) Еще есть какие нибудь нюансы которые ты бы хотел внести в ПО? Мне весьма понравилась концепция "социальная оболочка" в которой собрана вся пользовательская инфа по игре, есть сервисы общения и менеджер управления игрой на компутере. Советую продолжать в указанном ключе, т.к. это действительно будет востребовано. @lportii, давно пора написать универсальный загрузчик чтоб можно было юзать и сторонние папки, а то надоело что все пихают всё в одну папку и свои моды там и всякие модпаки туда же лезут еще и мусор там свой оставляют. Edited April 23, 2014 by StranikS_Scan 2 @ Quote Link to comment Short link Share on other sites More sharing options...
lportii Posted April 23, 2014 Share Posted April 23, 2014 Дело не сложное, сложнее отучить от старых привычек. @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted April 23, 2014 Author Share Posted April 23, 2014 Будем стараться :) Сейчас делаю стабильную версию оболочку программы, бывает что при запуске программы находит обновления которых не сущ-ет, уже сделал исправление, щас работаю с JSON, Общая статистика + скорей всего сделаю: клановую и компанию. Но опять как интерфейс проработать что бы было красиво а не так на тяп и ляп. Так еще одно, с мониторами HD в интерфейсе программы не видно символов, в настройках добавлю HD+ 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted April 23, 2014 Share Posted April 23, 2014 @Amigo86, На чём пишите? Open Source будет? @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted April 23, 2014 Author Share Posted April 23, 2014 @Amigo86, На чём пишите? Open Source будет? Delphi, Pascal, Open Source чего? Если ПО то не будет. @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted April 23, 2014 Share Posted April 23, 2014 JSON Я под делфу юзаю SuperObject 1.2, крутая штука. @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted April 23, 2014 Author Share Posted April 23, 2014 Я под делфу юзаю SuperObject 1.2, крутая штука. https://code.google.com/p/superobject/downloads/list @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted April 24, 2014 Author Share Posted April 24, 2014 В общем доработал базовую программу WOTSC сейчас версия 1.0.0.5, можете тестить, добавил отображение размера шрифта для HD "В настройках" В "Статистике" добавил Личный рейтинг игрока, пинг можно теперь производить вручную Пинг можно узнать уже вручную нажав на "Молнию" :), где установлен CheckBox то там по тайму в каждые 5 секунд проверка пинга. Теперь осталось самое тяжелое это дорабатывать плагины для модов. @ Quote Link to comment Short link Share on other sites More sharing options...
Amigo86 Posted May 1, 2014 Author Share 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 Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted May 4, 2014 Share Posted May 4, 2014 @Amigo86, молодец! Правильным путём идёте, товарищи! Обратил внимание, что на скриншоте xml файла закрался пробел после 0.9.0 :)))) По шкуркам, всё что делаю выкладываю в теме. @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.