Jump to content
Korean Random

Как правильно импортировать g_windowsManager?


Kradar

Recommended Posts

Товарищи, а что не так с g_windowsManager? Как его правильно импортировать?

 

Я пытаюсь так:

from gui.WindowsManager import g_windowsManager

Но мне говорят:

Traceback (most recent call last):
  File "scripts/client/Account.py", line 10, in <module>
  File "scripts/client/ConnectionManager.py", line 9, in <module>
  File "scripts/client/predefined_hosts.py", line 13, in <module>
  File "scripts/client/gui/shared/__init__.py", line 3, in <module>
  File "scripts/client/gui/shared/server_events/EventsCache.py", line 17, in <module>
  File "scripts/client/gui/shared/server_events/modifiers.py", line 15, in <module>
  File "scripts/client/gui/shared/server_events/formatters.py", line 14, in <module>
  File "C:\Path\To\Project\Core\src\Scaleform\locale\__init__.py", line 6, in <module>
    import gui.qwerty
  File "C:\Path\To\Project\Core\src\qwerty\__init__.py", line 7, in <module>
    from gui.WindowsManager import g_windowsManager
  File "scripts/client/gui/WindowsManager.py", line 5, in <module>
  File "scripts/client/BattleReplay.py", line 21, in <module>
ImportError: cannot import name connectionManager

Кто нибудь с таким сталкивался? Как решали?

Link to comment
Short link
Share on other sites

Ошибка точно не тут.

А вот не знаю. Провел эксперимент:

  1. Удалил все моды.
  2. Создал файл res_mods\0.9.3\scripts\client\gui\Scaleform\locale\__init__.py с единственной строчкой:
    from gui.WindowsManager import g_windowsManager
  3. Скомпилировал этот файл и запустил WoT.

Картина та же. Сами попробуйте.

Edited by Kradar
Link to comment
Short link
Share on other sites

 

 

А в чем особая надобность именно в __init__.py это делать?

Это я ради эксперимента упростил мод до одного файла, содержащего одну строчку. А изначально эта проблема была обнаружена вовсе не в__init__.py. А вообще - почему нет? Результат-то везде одинаков.

Link to comment
Short link
Share on other sites

@Kradar, кинул в \World_of_Tanks\res_mods\0.9.3\scripts\client\mods\SampleMod.pyc

import BigWorld
from gui.WindowsManager import g_windowsManager 

Запустил WoT, всё гуд.

Лог норм:



/------------------------------------------------------------------------------------------------------------------------\
   BigWorld Release Client (compiled at 15:29:52 Sep  3 2014) starting on Tue Oct 07 22:54:40 2014
   Content Type: content

Checking ./res_mods/0.9.3: mods found
Load mods: SampleMod
[NOTE] (scripts/common/fortified_regions.py, 188): fortified_regions.init()
[WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model
[WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model
[WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model
[WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model
[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 2 was selected.
[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 3 was selected.
[SPACE] Loading space: spaces/hangar_premium_v2
PostProcessing.Phases.fini()

\------------------------------------------------------------------------------------------------------------------------/

Link to comment
Short link
Share on other sites

 

 

Запустил WoT, всё гуд.

А мой вариант у вас какой результат давал?


 

 

Лог норм:

Ваш вариант у меня выдал такое:

/------------------------------------------------------------------------------------------------------------------------\
   BigWorld Release Client (compiled at 15:29:52 Sep  3 2014) starting on Wed Oct 08 00:58:05 2014
   Content Type: content

Checking ./res_mods/0.9.3: mods found
[NOTE] (scripts/common/fortified_regions.py, 188): fortified_regions.init()
[WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model
[WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model
[WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model
[WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model
[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 2 was selected.
[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 3 was selected.
PostProcessing.Phases.fini()

\------------------------------------------------------------------------------------------------------------------------/

Т.е. нету строчки:

 

 

Load mods: SampleMod

Почему?

Link to comment
Short link
Share on other sites

Загрузчик модов не закинул на своё место скорее всего.

Э... Какой загрузчик? Кроме файла res_mods\0.9.3\scripts\client\mods\SampleMod.pyc должно быть еще что-то?

Link to comment
Short link
Share on other sites

В "res_mods\0.9.3\scripts\client" должен быть CameraNode.pyc с содержимым:

import BigWorld

class CameraNode(BigWorld.UserDataObject):

    def __init__(self):
        BigWorld.UserDataObject.__init__(self)


def load_mods():
    import ResMgr, os, glob
    print 'WoT Mod Loader Started...'
    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 'Executing: ' + sn
                try:
                    exec 'import mods.' + sn
                except Exception as e:
                    print e


load_mods()
В "res_mods\0.9.3\scripts\client\mods"должен быть __init__.pyc с содержимым:

pass
В любом моде на Python есть эти файлы, возможно с немного другим содержимым CameraNode.pyc, но суди это не меняет.
  • Upvote 1
Link to comment
Short link
Share on other sites

 

 

А что это за файл?
 

Он содержит информацию о папках с ресурсами игры.

 

 

Он тоже нужен?
 

Обязательно. Без него игра не может понять, откуда загружать ресурсы.

 

 

Зачем такие огороды нагорожены?
 

Для универсальности. Патчи проходят, a CameraNode остаётся.

Link to comment
Short link
Share on other sites

В итоге, я заменил простенький загрузчик - res_mods\0.9.3\scripts\client\gui\Scaleform\locale\__init__.py на тот, что тут советовали - res_mods\0.9.3\scripts\client\CameraNode.py. Теперь g_windowsManager импортируется без проблем. Всем огромное спасибо!

 

Однако, было бы здорово, если бы кто-то смог логично объяснить, в чем была причина всего этого безобразия.

Link to comment
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...