KL1SK 13 Posted February 27, 2014 (edited) Был мод такой http://forum.worldoftanks.ru/index.php?/topic/884602-0810-wot-fps-вид-от-первого-лица-отключение-стабилизаци/ но автор забил на его, да и функционала в нём было много лишнего.Но там была функция отображения корпуса в снайперском режиме, благодаря которой можно спокойно гонять в СН режиме и наглядно видеть куда едешь.Взялся копаться в Python сам и появился вопрос... вернее несколько:1). Как осуществляется подхват .pyc файлов (я не нашел, что они где-то прописаны)?2). Можно ли написать скрипт который будет заменять например параметр в "\scripts\client\AvatarInputHandler\dynamiccameras\snipercamera.pyc" строку "self.__showVehicle(False)" на "self.__showVehicle(True)" Без замены самого файла "snipercamera.pyc"? Хук-скрипт как в Lua языке. Те кто считает этот мод гов*** просто пройдите мимо, а кто может помочь - помогите. Edited February 27, 2014 by KL1SK Quote Share this post Link to post Short link Share on other sites
st11ks 2 #159533 Posted February 28, 2014 (edited) Отвечу на первый твой вопрос. Если ты начал изучать питон, то наверное уже знаешь что такое модули и пакеты модулей, как происходит импорт модулей и пакетов. Так вот при запуске движок импортирует модули из папки \res\scripts\client, при импорте происходит создание классов, объектов и пр, каждый импортируемый модуль из этой папки в свою очередь импортирует вложенные модули и пакеты модулей и т.д. Но как оказывается перед тем как импортировать модули из родной папки \res\scripts\client, движок просматривает на предмет импорта еще и папку модов для текущего патча, о чем радостно сообщает в логфайле: Checking ./res_mods/0.8.11: mods found После этого он сначала загружает модули из папки \res_mods\0.8.11\scripts\client, и только потом переходит к своей родной папке \res\scripts\client А ты наверное уже знаешь, что в питоне при импорте двух модулей с одинаковым названием (даже если они лажат в разных местах) загружается первый, а загрузки второго не происходит (ну разве что явно не указать reload). Таким образом, если у тебя есть: \res_mods\0.8.11\scripts\client\CameraNode.pyc и \res\scripts\client\CameraNode.pyc то загружен будет первый, т.е. твой. Ради интереса создай файл login.py, с содержимым print('Hello WorldofTanks!'), скомпилируй и положи в \res_mods\0.8.11\scripts\client\ Запускай клиента и смотри что вывалится в python.log А вообще большинство модов, которые народ пишет, используют для загрузки модифицированный \res\scripts\client\CameraNode.pyc. Дописывает функцию обхода каталога модов и импорта всего что встретится в каталоге модов. Edited February 28, 2014 by st11ks Quote Share this post Link to post Short link Share on other sites
KL1SK 13 #159600 Posted February 28, 2014 (edited) 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() 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() Я так понимаю, cameranode.pyc должен выглядеть так? Я кидаю любой файл в "/scripts/client/mods/" и он его подхватывает? Так с этим разобрался, подхват осуществляется. st11ks питон не изучал, разбираюсь методам анализа кода, кстати много схожего с Lua, немного синтаксис отличается. Закройте тему. Всё сделано. кому надо скрипт пишите в ЛС. Edited February 28, 2014 by KL1SK Quote Share this post Link to post Short link Share on other sites
KL1SK 13 #240211 Posted December 29, 2014 (edited) showVehicle.zip "showVehicle.pyc" положить в "WoT\res_mods\0.9.5\scripts\client\mods" Вкл\откл на F11 Имеется 1 баг. В бою корпус дёргается как вибратор, в реплеях норм. Что-то типа частоты обновления модельки. В любом случае не нашел как это исправить. Кто может помочь пишите. http://www.koreanrandom.com/forum/topic/13834-нужна-помощь-в-допиливании-мода/ Edited December 29, 2014 by KL1SK Quote Share this post Link to post Short link Share on other sites