kharlashkin 239 Posted May 31, 2014 (edited) Как известно, управление в игре (а именно круиз-контроль), реализованы следующим образом - разделение максимального движения вперед/назад на части (равные или нет - другой вопрос). Реально ли корректировать эти значения, например "первая скорость" - 20%, вторая - 70%? Можно ли попробовать добавить пару промежуточных скоростей, например 1-я 25%, 2-я 50%, 3-я 75% и 4-я 100%? Edited May 31, 2014 by kharlashkin Share this post Link to post Short link Share on other sites
kharlashkin 239 #188027 Posted June 1, 2014 Нигде в скриптах не нашел сходу... Может не там искал или же данные команды обрабатываются не python, а самим worldoftanks.exe. Пичалька :( Нет ни у кого никаких мыслей? Share this post Link to post Short link Share on other sites
kharlashkin 239 #189242 Posted June 7, 2014 Вопрос по прежнему актуален. Неужели ни у кого нет никаких идей? Можно конечно написать алгоритм на AutoHotKey... Надо поразмышлять над этим. Share this post Link to post Short link Share on other sites
Azbuka 278 #189291 Posted June 7, 2014 Неужели ни у кого нет никаких идей? Можно получать макс. скорость танка из ТТХ, высчитывать необходимые % от скорости, эмулировать нажатия W с такой частотой, чтобы поддерживать нужную скорость. Не самый простой метод... 1 Share this post Link to post Short link Share on other sites
kharlashkin 239 #189293 Posted June 7, 2014 Можно получать макс. скорость танка из ТТХ, высчитывать необходимые % от скорости, эмулировать нажатия W с такой частотой, чтобы поддерживать нужную скорость. Не самый простой метод... По моему мнению, это не то чтобы "не простой", а "кривой" метод ;) Но спасибо за идею! Share this post Link to post Short link Share on other sites
Kastiil 1 #189314 Posted June 7, 2014 В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится. Share this post Link to post Short link Share on other sites
kharlashkin 239 #189315 Posted June 7, 2014 В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится.Так это то что надо! Значит надо искать, потому как я не попадал на неё в скриптах и именно поэтому и спрашивал на форуме - реально ли? Share this post Link to post Short link Share on other sites
MakcT40 331 #189329 Posted June 7, 2014 В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится.Поищи в avatar.py все вхождения подстроки "_CRUISE_CONTROL_MODE". 1 Share this post Link to post Short link Share on other sites
kharlashkin 239 #189335 Posted June 7, 2014 Поищи в avatar.py все вхождения подстроки "_CRUISE_CONTROL_MODE". Вы знали это и молчали? class _CRUISE_CONTROL_MODE(): NONE = 0 FWD25 = 1 FWD50 = 2 FWD100 = 3 BCKW50 = -1 BCKW100 = -2 Share this post Link to post Short link Share on other sites
kharlashkin 239 #189659 Posted June 9, 2014 Попробовал поиграться параметрами... Сыпет кучу ошибок, бой не загружается... Может кто разъяснить что делает вот это: def makeVehicleMovementCommandByKeys(self, forceFlags = 204, forceMask = 0): cmdMap = CommandMapping.g_instance flags = 0 if self.__stopUntilFire: return flags if cmdMap.isActiveList((CommandMapping.CMD_MOVE_FORWARD, CommandMapping.CMD_MOVE_FORWARD_SPEC)): flags = 1 elif cmdMap.isActive(CommandMapping.CMD_MOVE_BACKWARD): flags = 2 else: if self.__cruiseControlMode >= _CRUISE_CONTROL_MODE.FWD25: flags = 1 elif self.__cruiseControlMode <= _CRUISE_CONTROL_MODE.BCKW50: flags = 2 isOn = self.__cruiseControlMode == _CRUISE_CONTROL_MODE.FWD50 or self.__cruiseControlMode == _CRUISE_CONTROL_MODE.BCKW50 if isOn: flags |= 16 elif self.__cruiseControlMode == _CRUISE_CONTROL_MODE.FWD25: flags |= 32 rotateLeftFlag = 4 rotateRightFlag = 8 if self.invRotationOnBackMovement and flags & 2 != 0: rotateLeftFlag, rotateRightFlag = rotateRightFlag, rotateLeftFlag if cmdMap.isActive(CommandMapping.CMD_ROTATE_LEFT): flags |= rotateLeftFlag if cmdMap.isActive(CommandMapping.CMD_ROTATE_RIGHT): flags |= rotateRightFlag flags |= forceMask & forceFlags flags &= ~forceMask | forceFlags return flags Share this post Link to post Short link Share on other sites
kharlashkin 239 #197250 Posted July 2, 2014 Вопрос по прежнему актуален. Кстати появилась идея другая, нельзя ли повесить 1-ю и 2-ю скорость на отдельные кнопки? Share this post Link to post Short link Share on other sites
GPCracker 2,088 #200515 Posted July 20, 2014 Вот куда отсылаются эти флаги... это от BigWorld.Entity.base self.base.vehicle_moveWith(flags) Оно на С написано, декомпиляция тут не работает. Вряд ли получится сделать круиз-контроль более мягким... Ну можно конечно реализовать периодические нажатия на кнопки вперед/назад (Широтно-Импульсная Модуляция (ШИМ)), но как уже сказали это не самая лучшая идея. А вот скорости на разные кнопки можно повесить... Это нужно устанавливать по кнопкам self.__cruiseControlMode в нужное значение). Или из внешки это будет BigWorld.player()._PlayerAvatar__cruiseControlMode Попробуй, может прокатит. Share this post Link to post Short link Share on other sites
kharlashkin 239 #201033 Posted July 23, 2014 (edited) Я, конечно, очень сомневался, что мой первый мод заработает:) Но все-таки жду критику: import BigWorld, Keys, ResMgr, PlayerAvatar from gui import InputHandler def CruiseControlButton(): if BigWorld.isKeyDown(Keys.KEY_U): _cruiseControlMode = _CRUISE_CONTROL_MODE.FWD25 if BigWorld.isKeyDown(Keys.KEY_I): _cruiseControlMode = _CRUISE_CONTROL_MODE.FWD50 if BigWorld.isKeyDown(Keys.KEY_O): _cruiseControlMode = _CRUISE_CONTROL_MODE.FWD100 else: _cruiseControlMode = _CRUISE_CONTROL_MODE.NONE В логах чисто... P.S. С помощью AutoHotkey делал периодическое нажатие кнопки W - это просто невозможно представить какая это гадость. По ощущениям мехвод, как сумасшедший, попеременно в доли секунды давит что есть силы на газ затем на тормоз, танк постоянно дергается - ехать нереально;) Edited July 23, 2014 by kharlashkin Share this post Link to post Short link Share on other sites
kharlashkin 239 #203125 Posted July 31, 2014 Моему восхищению нет предела, насколько глубоко некоторые люди излазили и изучили оригинальные скрипты WoT. Буквально за 30 минут inj3ct0r мне не только объяснил что к чему, но и помог с модом круиз-контроля, за что ему огромное спасибо! Мод круиз-контроля (для геймпада и плавного ускорения танка) будет наверное не всем интересен, но есть идея которая будет может востребована. Если вместо пробела (короткая остановка для выстрела) использовать вызов скорости в 25 или 50 процентов. Т.е. на светляке летя к врагам, не жать на пробел, а жать на клавишу - танк замедляется - делается выстрел - клавиша отпускается и дальше светляк мчит в тыл врага, ну или куда там ему надо по своим делам. Что делает мод: назначены клавиши YHN как вторая, первая скорости вперед и 1-я скорость назад (имеется ввиду что 3-я скорость вперед это W, а вторая скорость назад S), работа клавиш такая же как WASD (нажата - танк едет, отпущена - остановился), так же добавлены ещё две клавиши I (вперед 100%) и K (назад 100%). Огромная просьба ко всем - оставить автора мода как есть в скрипте, если будете использовать данный функционал по своему усмотрению. 1 Share this post Link to post Short link Share on other sites