VasyaPRO_2014 Posted March 25, 2016 Share Posted March 25, 2016 Здравствуйте. Мне нужно хукнуть метод addVehicleMarker из класса MarkersManager (scripts/client/gui/Scaleform/daapi/view/battle/markers.py скачать: markers.zip). Суть такова: мне нужно изменить значение строк pName, vehShortName, и ещё clanAbbrev. Нужно мне это, что бы вставить туда статистику игроков (см тут). И делаю я это вот таким способом (который я чуть менее чем полностью взял отсюда). Всё конечно работает, но если вдруг кому понадобиться добавить там что нибудь свое до меня то я своими умелыми ручками просто выпилю его хитрый хук от чего у него может достаточно сильно бомбануть. Т.к. мне не нужно редактировать то, что возвращает метод либо выполнить свой код после метода, а нужно именно редактировать код внутри самого метода поэтому обычное: old_method=wg_class.wg_method def new_method(**args): temp=old_method(**args) temp['123']=456 return temp wg_class.wg_method=new_method либо old_method=wg_class.wg_method def new_method(**args): old_method(**args) print "Vasya" wg_class.wg_method=new_method Здесь вряд ли помогут. Нужно придумать что нибудь хитрее, а вот что я уже не знаю. @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted March 25, 2016 Share Posted March 25, 2016 Сначала свое потом картошку Короче 1 вариант Или полность заменяй функцию картохи на свою @ Quote Link to comment Short link Share on other sites More sharing options...
VasyaPRO_2014 Posted March 25, 2016 Author Share Posted March 25, 2016 Сначала свое потом картошку Короче 1 вариант Или полность заменяй функцию картохи на свою И что мне в "своем" надо делать? pName, vehShortName, clanAbbrev появляются уже во время выполения метода. def addVehicleMarker(self, vProxy, vInfo, guiProps): vTypeDescr = vProxy.typeDescriptor maxHealth = vTypeDescr.maxHealth mProv = vProxy.model.node('HP_gui') isAlly = guiProps.isFriend speaking = False if GUI_SETTINGS.voiceChat: speaking = VoiceChatInterface.g_instance.isPlayerSpeaking(vInfo.player.accountDBID) hunting = VehicleActions.isHunting(vInfo.events) markerID = self._createVehicleMarker(isAlly, mProv) self.__markers[vInfo.vehicleID] = _VehicleMarker(markerID, vProxy, self.__ownUIProxy) battleCtx = g_sessionProvider.getCtx() fullName, pName, clanAbbrev, regionCode, vehShortName = battleCtx.getFullPlayerNameWithParts(vProxy.id) vType = vInfo.vehicleType teamIdx = -1 if arena_info.isFalloutMultiTeam() and vInfo.isSquadMan(): teamIdx = g_sessionProvider.getArenaDP().getMultiTeamsIndexes()[vInfo.team] self.invokeMarker(markerID, 'init', [vType.classTag, vType.iconPath, vehShortName, vType.level, fullName, pName, clanAbbrev, regionCode, vProxy.health, maxHealth, guiProps.name(), speaking, hunting, guiProps.base, g_ctfManager.getVehicleCarriedFlagID(vInfo.vehicleID) is not None, teamIdx]) return markerID @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted March 25, 2016 Share Posted March 25, 2016 Ну так все есть тут, проблем нет @ Quote Link to comment Short link Share on other sites More sharing options...
VasyaPRO_2014 Posted March 25, 2016 Author Share Posted March 25, 2016 Ну так все есть тут, проблем нет но если вдруг кому понадобиться добавить там что нибудь свое до меня то я своими умелыми ручками просто выпилю его хитрый хук от чего у него может достаточно сильно бомбануть. Или на это можно забить, и нормального способа подменить pName, vehShortName, clanAbbrev так, чтобы не мешать остальным и не переписивать целый метод когда картошка в очередной раз переименует маленькую фигню которая мне нафиг не нужна, просто нет? @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted March 25, 2016 Share Posted March 25, 2016 Забить Первый вариант тебе подходит, как и в других функциях у тебя @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2016 Share Posted March 25, 2016 @VasyaPRO_2014, если тебе нужно изменять маркеры, то нужно работать с swf примерно так: https://bitbucket.org/ShadowHunterRUS/canshoot/src @ Quote Link to comment Short link Share on other sites More sharing options...
VasyaPRO_2014 Posted March 25, 2016 Author Share Posted March 25, 2016 @VasyaPRO_2014, если тебе нужно изменять маркеры, то нужно работать с swf примерно так: https://bitbucket.org/ShadowHunterRUS/canshoot/src С swf я знаком на уровне декомпилировал(JPEXS ffd)>Заменил изображение>Сохранил. Так что скорее всего ничего у меня не получится. Я ограничение по количеству символов в средних ушах убрать не могу - куда мне маркеры редактировать)). @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2016 Share Posted March 25, 2016 (edited) Или на это можно забить, и нормального способа подменить pName, vehShortName, clanAbbrev так, чтобы не мешать остальным просто нет? если тебе нужно изменять маркеры, то нужно работать с swfЭто единственный нормальный способ. С swf я знаком на уровне декомпилировал(JPEXS ffd)>Заменил изображение>Сохранил. Так что скорее всего ничего у меня не получится. Я ограничение по количеству символов в средних ушах убрать не могу - куда мне маркеры редактировать)).А Вы хотели продолжать деградировать на питоне?) Edited March 25, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
VasyaPRO_2014 Posted March 25, 2016 Author Share Posted March 25, 2016 Это единственный нормальный способ. Окай пересмотрев много разных *.as файлов дошел к выводу, что никнейм игрока можно редактировать в scripts\__Packages\net\wargaming\ingame\VehicleMarker.as только как мне его взять с конфига или хотябы с питона? + большинство переменных имеют имена типа _loc2_, _loc3_, _loc100500_ и фиг поймеш что они хранят. Есть ли какой нибудь способ отладки as? типа print var с питона. А Вы хотели продолжать деградировать на питоне?) Ага) @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2016 Share Posted March 25, 2016 только как мне его взять с конфига или хотябы с питона? http://www.koreanrandom.com/forum/topic/1780-/ @ 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.