Jump to content
Korean Random
Amigo86

Программный комплекс World Of Tanks: Social Club™

Recommended Posts

Эммм, внедрять свои модификации я и не собирался вовсе :)

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

Share this post


Link to post

Short link
Share on other sites

Эммм, внедрять свои модификации я и не собирался вовсе :)

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

Так вот уважаемый, перестаньте ставить их в res_mods, а ставьте в c:\Games\WotSC\Mods или куда еще и при запуске вашей программы добавляйте ссылку в path.xml.

Share this post


Link to post

Short link
Share on other sites

Так вот уважаемый, перестаньте ставить их в res_mods, а ставьте в c:\Games\WotSC\Mods или куда еще и при запуске вашей программы добавляйте ссылку в path.xml.

Посмоторим что из этого получится.

Share this post


Link to post

Short link
Share on other sites

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

Размещение модификации за пределами корневой папки игры не подходит, ибо после загрузки игра вылетает.

 

bafcc5e705f6.jpg

Share this post


Link to post

Short link
Share on other sites

@Amigo86, простите но это значит совсем другое, это значит что вы чего-то не так сделали. Любую стороннюю папку, прописанную через path.xml клиент юзает без проблем точно также как и res_mods ибо сама res_mods это и есть одна из сторонних папок.

 

Давайте так, приведите мне правленный вами path.xml и структуру свой сторонней папки с модами (списки файлов можно получить через тоталкоммандер) и я подскажу в чем у вас косяк.

 

ЗЫ: Вы просто до конца не разобрались в этом механизме. 

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

@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, шкурки работают отлично.

Share this post


Link to post

Short link
Share on other sites

В том то и прикол, нихера ресурсы игры понять не могу, где взять мануал что к чему в этом клиенте, я тупо методом втыка начал, писал письмо в варгейминг (в Тех поддежку) до сих пор ответить не могут на мое письмецо.

 

В принципе в файле "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 ни чего не меняется и ни кто кроме него эту папку не трогает.

Share this post


Link to post

Short link
Share on other sites

Хочу вставить свои 5 копеек. Автор вы делаете программу один, без обид но у вас 3 варианта развития. Либо у вас будет вечная бета, где есть и то и то, но нормальных инструментов для их работы нет и все что то доделывается правится, вместо работы. Либо упор на моды. Либо упор на сошиал клаб.

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

2- упор на моды. Есть куча модпаков и сайтов, так же есть уже несколько механизмов для автоматизированного получения и установки модов. Но все они, кроме модпаков, непопулярны вообще. Да и все крупные моды имеют или модификации или настройки - Возьмем для примера дамаг панель - вы разместите штук 10 разных и к ним еще несколько десятков модификаций. Большинство потенциальных пользователей тупы и не имеют отношения к компьютерам, им даже выбор будет сделать лень и сложно. Они плюнут и тупо скачают чей ни будь модпак. Потому что там уже сделан выбор и все настроено. Если вы будете публиковать свою так сказать сборку и настроенное все под себя - не проще ли сделать модпак, тогда вы избежите кучи проблем и лишнего геморроя. Если вы будете публиковать что то предложенное авторами - ну ок, но опять же без настроек или выбора модификации людям это будет не нужно. Вы хотите делать заранее мертворожденное дело?

3- сошиал клаб - если правильно реализовать будет очень популярным и востребованным Так как, насколько я знаю, нет ни одного нормального инструмента для общения именно под танки кроме идиотского встроенного чата. Но тогда надо реализовать кучу удобных вещей, это и запароленные каналы и объявления и так далее. Ведь для любого командира порой заставить людей как то группироваться и быть постоянно доступным головная боль. ТС и прочее не вариант там очень не удобны объявления и общение тектом.

Получается в каждом направлении куча работы а отдача разная.

 

ладно не берите в голову все мое имхо.

  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Хочу вставить свои 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 ни чего не меняется и ни кто кроме него эту папку не трогает.

 

Спасибо за предоставленную информацию, буду в курсе.

Еще есть какие нибудь нюансы которые ты бы хотел внести в ПО?

Share this post


Link to post

Short link
Share on other sites
# 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 by lportii

Share this post


Link to post

Short link
Share on other sites
Еще есть какие нибудь нюансы которые ты бы хотел внести в ПО?

 

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

 

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

Edited by StranikS_Scan
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Будем стараться :)

Сейчас делаю стабильную версию оболочку программы, бывает что при запуске программы находит обновления которых не сущ-ет, уже сделал исправление, щас работаю с JSON,

Общая статистика + скорей всего сделаю: клановую и компанию. Но опять как интерфейс проработать что бы было красиво а не так на тяп и ляп.

 

Так еще одно, с мониторами HD в интерфейсе программы не видно символов, в настройках добавлю HD+

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

В общем доработал базовую программу WOTSC сейчас версия 1.0.0.5, можете тестить, добавил отображение размера шрифта для HD "В настройках"

В "Статистике" добавил Личный рейтинг игрока, пинг можно теперь производить вручную

 

0ca699d3b8cad3882cc5bcbffcb2d434.jpg

 

77f7c4f008d4047d3ffd1b4c9499cf75.png

Пинг можно узнать уже вручную нажав на "Молнию" :), где установлен CheckBox то там по тайму в каждые 5 секунд проверка пинга.

 

Теперь осталось самое тяжелое это дорабатывать плагины для модов.

Share this post


Link to post

Short link
Share on other sites

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.

 

Скрин:

802c38ca67825a89a97d57d9cfa4f776.png

 

fbfc36684bccd6e1ca26a8ec1a4dc408.png

 

Сейчас дорабатываю некоторые нюансы с ПО, особенно меняю ряд процедур в плагинах, думаю в скором времени закончить.

 

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

Edited by Amigo86

Share this post


Link to post

Short link
Share on other sites

@Amigo86, молодец! Правильным путём идёте, товарищи!

 

Обратил внимание, что на скриншоте xml файла закрался пробел после 0.9.0 :))))

 

По шкуркам, всё что делаю выкладываю в теме.

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...