Jump to content
Korean Random
refaol

Постоянный, или случайный камуфляж в ангаре (камо-мод)

Recommended Posts

'Описание'

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

Автор:S0me0ne (он же tehs0me0ne)
---
Последнее обновление:
- добавлены GUI настройки в ангаре
- случайный камуфляж работает при смене танка в ангаре, а не один раз на всю сессию
- какие-то еще мелкие фиксы
- адаптация под 0.8.10
---
Огромное спасибо STL1te(user_1000531) за помощь в реализации Flash GUI интерфейса для ангара.
post-11459-0-79517000-1387434644_thumb.jpg
---
Скачать (обновлено 17.12):Google Drive: https://drive.google.com/file/d/0B7R6yzmXknFaeVVhUjRjaEE0SjQ/edit?usp=sharing

Новость и картинки взяты сhttp://world-of-ru.livejournal.com/2872154.html
p.s.
поиском воспользовался, темы не нашел, если есть прошу..., ну вы поняли

Edited by refaol
  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

Я так понял обновление мода не будет!( На форуме игры автор отключил входящие сообщения! Кого теперь просить без понятия((( увы 

Share this post


Link to post

Short link
Share on other sites

vkvm, нет не работает.. тот же Джов лопухнулся включив в свой пак.. а оно не работает...

Share this post


Link to post

Short link
Share on other sites

Вот все что удалось вытащить из основного скрипта этого мода.

Проблема совместимости не решается путем простого перекомпилирования, поскольку часть библиотек на которые ссылается код, найти не удалось.

 

 

'Основная функция смены камуфляжа'

defcamo = 'winter'
userandom = 'yes'
recreateVehicle = ClientHangarSpace.ClientHangarSpace.recreateVehicle
def my_recreateVehicle(self, vDesc, vState, onVehicleLoadedCallback = None):
try:
cDescr = vDesc.type.compactDescr
if (vDesc.camouflages is not None):
try:
config = ResMgr.openSection('camo.cfg')
defcamo = config.readString('camo')
userandom = string.lower(config.readString('userandom'))
if (userandom != 'yes'):
if (defcamo == 'winter'):
zid = 0
elif (defcamo == 'summer'):
zid = 1
elif (defcamo == 'desert'):
zid = 2
g_tankActiveCamouflage[cDescr] = zid
else:
g_tankActiveCamouflage[cDescr] = choice([0, 1, 2])
except:
pass
except:
pass
recreateVehicle(self, vDesc, vState, onVehicleLoadedCallback)

ClientHangarSpace.ClientHangarSpace.recreateVehicle = my_recreateVehicle

 

 

'Весь код, который удалось вытащить'

global userandom, defcamo
import BigWorld
import ResMgr
import string
import Keys
import game
from random import choice
from items.vehicles import CAMOUFLAGE_KINDS
from gui import ClientHangarSpace
from gui import g_tankActiveCamouflage
from gui.Scaleform.Flash import Flash
from gui.Scaleform.framework import g_entitiesFactories
from gui.Scaleform.framework import ViewSettings
from gui.Scaleform.framework import VIEW_TYPE
from gui.Scaleform.framework import VIEW_SCOPE
from gui.Scaleform.framework.entities.View import View
from gui.WindowsManager import g_windowsManager
from gui.Scaleform import SCALEFORM_SWF_PATH
from gui.shared import events
from gui.Scaleform.daapi.view.meta.WindowViewMeta import WindowViewMeta
defcamo = 'winter'
userandom = 'yes'
recreateVehicle = ClientHangarSpace.ClientHangarSpace.recreateVehicle
def my_recreateVehicle(self, vDesc, vState, onVehicleLoadedCallback = None):
try:
cDescr = vDesc.type.compactDescr
if (vDesc.camouflages is not None):
try:
config = ResMgr.openSection('camo.cfg')
defcamo = config.readString('camo')
userandom = string.lower(config.readString('userandom'))
if (userandom != 'yes'):
if (defcamo == 'winter'):
zid = 0
elif (defcamo == 'summer'):
zid = 1
elif (defcamo == 'desert'):
zid = 2
g_tankActiveCamouflage[cDescr] = zid
else:
g_tankActiveCamouflage[cDescr] = choice([0, 1, 2])
except:
pass
except:
pass
recreateVehicle(self, vDesc, vState, onVehicleLoadedCallback)

ClientHangarSpace.ClientHangarSpace.recreateVehicle = my_recreateVehicle
class MyWindow(View):
def __init__(self):
View.__init__(self)

def _populate(self):
View._populate(self)
self.callToFlash({'random': userandom.lower() == 'yes', 'camo': defcamo})

def callFromFlash(self, data):
config = ResMgr.openSection('camo.cfg')
zcamo = config.child(0)
zrand = config.child(1)
if data.random:
userandom = 'yes'
else:
userandom = 'no'
zrand.asString = userandom
defcamo = data.camo
zcamo.asString = defcamo
config.save()
self.destroy()

def callToFlash(self, data):
if self._isDAAPIInited():
self.flashObject.as_callToFlash(data)

def onWindowClose(self):
self.destroy()

_windowAlias = 'CamoSelectorWindow'
_settings = ViewSettings(_windowAlias, MyWindow, 'MyWindow.swf', VIEW_TYPE.WINDOW, None, VIEW_SCOPE.DEFAULT)
g_entitiesFactories.addSettings(_settings)
class CamobSelector(View, WindowViewMeta):
def __init__(self):
View.__init__(self)

def as_isModalS(self):
if self._isDAAPIInited():
return False
else:
return

_loaderAlias = 'CamoSelector'
_settings = ViewSettings(_loaderAlias, CamobSelector, 'CamoSelectorButton.swf', VIEW_TYPE.WINDOW, None, VIEW_SCOPE.GLOBAL)
g_entitiesFactories.addSettings(_settings)
old_init = Flash.__init__
def new_init(self, swf, className = 'Flash', args = None, path = SCALEFORM_SWF_PATH):
old_init(self, swf, className, args, path)
if (swf == 'Application.swf'):
self.addListener(events.GUICommonEvent.APP_STARTED, (lambda e: AppStarted(self, e)))

Flash.__init__ = new_init
def AppStarted(self, event):
self.loadView(_loaderAlias)
self.addExternalCallback('CamoSelector.showWindow', (lambda : g_windowsManager.window.loadView(_windowAlias)))

handleKeyBkup = game.handleKeyEvent
def loadWindow():
try:
from gui.WindowsManager import g_windowsManager
g_windowsManager.window.loadView(_alias)
except:
pass

def hkKeyEvent(event):
try:
isDown, key, mods, isRepeat = game.convertKeyEvent(event)
if ((key == Keys.KEY_SPACE) and isDown):
loadWindow()
except:
pass
finally:
return handleKeyBkup(event)

game.handleKeyEvent = hkKeyEvent

 

 

 

М.б. кому-то удастся починить мод.

camo_source.py.txt

Edited by NickName994
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

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

 

HangarCamo.zip

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Огромный респект за мод, думал его уже не будет, а тут на фарт его опять оживили! :thx:

Share this post


Link to post

Short link
Share on other sites

Огромный респект за мод, думал его уже не будет, а тут на фарт его опять оживили! :thx:

В 0.9.1 работает?

Share this post


Link to post

Short link
Share on other sites

Народ с выходом версии 0.9.3 мод перестал работать :( кто сможет адаптировать под новую версию?

Share this post


Link to post

Short link
Share on other sites

Всем привет!

Плиз подправьте мод у кого руки есть на v 0.9.3, совсем не комильфо без этого мода! :flag:

Share this post


Link to post

Short link
Share on other sites

Координат кнопки я чет в питоне не вижу... значит во флэше замуровано...

Вот исходник скрипта под 0.9.0 (поменять расширение на *.py)

HangarCamo.txt

Share this post


Link to post

Short link
Share on other sites

Координат кнопки я чет в питоне не вижу... значит во флэше замуровано...

Вот исходник скрипта под 0.9.0 (поменять расширение на *.py)

attachicon.gifHangarCamo.txt

т.е. переименовать файл в HangarCamo.pyc и заменить его в старом архиве? и все остальное скинуть как раньше?

Share this post


Link to post

Short link
Share on other sites

т.е. переименовать файл в HangarCamo.pyc и заменить его в старом архиве? и все остальное скинуть как раньше?

Это исходник скрипта (*.py - source, *.pyc - compiled), для тех кто сможет поправить нужным образом флэш. Координаты кнопки зашиты во флэш, в котором я не силен( Скорее всего просто кнопка оказывается под менюшкой...

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.

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