kharlashkin Posted May 31, 2014 Share Posted May 31, 2014 (edited) Как известно, управление в игре (а именно круиз-контроль), реализованы следующим образом - разделение максимального движения вперед/назад на части (равные или нет - другой вопрос). Реально ли корректировать эти значения, например "первая скорость" - 20%, вторая - 70%? Можно ли попробовать добавить пару промежуточных скоростей, например 1-я 25%, 2-я 50%, 3-я 75% и 4-я 100%? Edited May 31, 2014 by kharlashkin Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted June 1, 2014 Author Share Posted June 1, 2014 Нигде в скриптах не нашел сходу... Может не там искал или же данные команды обрабатываются не python, а самим worldoftanks.exe. Пичалька :( Нет ни у кого никаких мыслей? Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted June 7, 2014 Author Share Posted June 7, 2014 Вопрос по прежнему актуален. Неужели ни у кого нет никаких идей? Можно конечно написать алгоритм на AutoHotKey... Надо поразмышлять над этим. Link to comment Short link Share on other sites More sharing options...
Azbuka Posted June 7, 2014 Share Posted June 7, 2014 Неужели ни у кого нет никаких идей? Можно получать макс. скорость танка из ТТХ, высчитывать необходимые % от скорости, эмулировать нажатия W с такой частотой, чтобы поддерживать нужную скорость. Не самый простой метод... 1 @ Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted June 7, 2014 Author Share Posted June 7, 2014 Можно получать макс. скорость танка из ТТХ, высчитывать необходимые % от скорости, эмулировать нажатия W с такой частотой, чтобы поддерживать нужную скорость. Не самый простой метод... По моему мнению, это не то чтобы "не простой", а "кривой" метод ;) Но спасибо за идею! Link to comment Short link Share on other sites More sharing options...
Kastiil Posted June 7, 2014 Share Posted June 7, 2014 В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится. Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted June 7, 2014 Author Share Posted June 7, 2014 В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится.Так это то что надо! Значит надо искать, потому как я не попадал на неё в скриптах и именно поэтому и спрашивал на форуме - реально ли? Link to comment Short link Share on other sites More sharing options...
MakcT40 Posted June 7, 2014 Share Posted June 7, 2014 В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится.Поищи в avatar.py все вхождения подстроки "_CRUISE_CONTROL_MODE". 1 @ Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted June 7, 2014 Author Share 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 Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted June 9, 2014 Author Share 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 Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted July 2, 2014 Author Share Posted July 2, 2014 Вопрос по прежнему актуален. Кстати появилась идея другая, нельзя ли повесить 1-ю и 2-ю скорость на отдельные кнопки? Link to comment Short link Share on other sites More sharing options...
GPCracker Posted July 20, 2014 Share Posted July 20, 2014 Вот куда отсылаются эти флаги... это от BigWorld.Entity.base self.base.vehicle_moveWith(flags) Оно на С написано, декомпиляция тут не работает. Вряд ли получится сделать круиз-контроль более мягким... Ну можно конечно реализовать периодические нажатия на кнопки вперед/назад (Широтно-Импульсная Модуляция (ШИМ)), но как уже сказали это не самая лучшая идея. А вот скорости на разные кнопки можно повесить... Это нужно устанавливать по кнопкам self.__cruiseControlMode в нужное значение). Или из внешки это будет BigWorld.player()._PlayerAvatar__cruiseControlMode Попробуй, может прокатит. Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted July 23, 2014 Author Share 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 Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted July 31, 2014 Author Share Posted July 31, 2014 Моему восхищению нет предела, насколько глубоко некоторые люди излазили и изучили оригинальные скрипты WoT. Буквально за 30 минут inj3ct0r мне не только объяснил что к чему, но и помог с модом круиз-контроля, за что ему огромное спасибо! Мод круиз-контроля (для геймпада и плавного ускорения танка) будет наверное не всем интересен, но есть идея которая будет может востребована. Если вместо пробела (короткая остановка для выстрела) использовать вызов скорости в 25 или 50 процентов. Т.е. на светляке летя к врагам, не жать на пробел, а жать на клавишу - танк замедляется - делается выстрел - клавиша отпускается и дальше светляк мчит в тыл врага, ну или куда там ему надо по своим делам. Что делает мод: назначены клавиши YHN как вторая, первая скорости вперед и 1-я скорость назад (имеется ввиду что 3-я скорость вперед это W, а вторая скорость назад S), работа клавиш такая же как WASD (нажата - танк едет, отпущена - остановился), так же добавлены ещё две клавиши I (вперед 100%) и K (назад 100%). Огромная просьба ко всем - оставить автора мода как есть в скрипте, если будете использовать данный функционал по своему усмотрению. 1 @ Link to comment Short link Share on other sites More sharing options...
Recommended Posts