KL1SK Posted February 27, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
st11ks Posted February 28, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
KL1SK Posted February 28, 2014 Author Share 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 Link to comment Short link Share on other sites More sharing options...
KL1SK Posted December 29, 2014 Author Share 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 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.