Jump to content
Korean Random
kharlashkin

Модернизация "круиз-контроля"

Recommended Posts

Как известно, управление в игре (а именно круиз-контроль), реализованы следующим образом - разделение максимального движения вперед/назад на части (равные или нет - другой вопрос).

 

Реально ли корректировать эти значения, например "первая скорость" - 20%, вторая - 70%? Можно ли попробовать добавить пару промежуточных скоростей, например 1-я 25%, 2-я 50%, 3-я 75% и 4-я 100%?

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites

Нигде в скриптах не нашел сходу... Может не там искал или же данные команды обрабатываются не python, а самим worldoftanks.exe. Пичалька :(

 

Нет ни у кого никаких мыслей?

Share this post


Link to post

Short link
Share on other sites

Вопрос по прежнему актуален. Неужели ни у кого нет никаких идей? Можно конечно написать алгоритм на AutoHotKey... Надо поразмышлять над этим.

Share this post


Link to post

Short link
Share on other sites

Неужели ни у кого нет никаких идей?

Можно получать макс. скорость танка из ТТХ, высчитывать необходимые % от скорости, эмулировать нажатия W с такой частотой, чтобы поддерживать нужную скорость. Не самый простой метод...

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Можно получать макс. скорость танка из ТТХ, высчитывать необходимые % от скорости, эмулировать нажатия W с такой частотой, чтобы поддерживать нужную скорость. Не самый простой метод...

По моему мнению, это не то чтобы "не простой", а "кривой" метод ;) Но спасибо за идею!

Share this post


Link to post

Short link
Share on other sites

В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится.

Share this post


Link to post

Short link
Share on other sites

В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится.

Так это то что надо! Значит надо искать, потому как я не попадал на неё в скриптах и именно поэтому и спрашивал на форуме - реально ли?

Share this post


Link to post

Short link
Share on other sites

В каком то скрипте из родных, я видел функцию для круиз контроля с обозначениями. Надо бы поискать ее и изменить, вдруг получится.

Поищи в avatar.py все вхождения подстроки "_CRUISE_CONTROL_MODE".
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Поищи в 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

Попробовал поиграться параметрами... Сыпет кучу ошибок, бой не загружается...

Может кто разъяснить что делает вот это:

    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

Вопрос по прежнему актуален. Кстати появилась идея другая, нельзя ли повесить 1-ю и 2-ю скорость на отдельные кнопки?

Share this post


Link to post

Short link
Share on other sites

Вот куда отсылаются эти флаги... это от 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

Я, конечно, очень сомневался, что мой первый мод заработает:) Но все-таки жду критику:

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 by kharlashkin

Share this post


Link to post

Short link
Share on other sites

Моему восхищению нет предела, насколько глубоко некоторые люди излазили и изучили оригинальные скрипты WoT.

 

Буквально за 30 минут inj3ct0r мне не только объяснил что к чему, но и помог с модом круиз-контроля, за что ему огромное спасибо!

Мод круиз-контроля (для геймпада и плавного ускорения танка) будет наверное не всем интересен, но есть идея которая будет может востребована. Если вместо пробела (короткая остановка для выстрела) использовать вызов скорости в 25 или 50 процентов. Т.е. на светляке летя к врагам, не жать на пробел, а жать на клавишу - танк замедляется - делается выстрел - клавиша отпускается и дальше светляк мчит в тыл врага, ну или куда там ему надо по своим делам.

 

Что делает мод: назначены клавиши YHN как вторая, первая скорости вперед и 1-я скорость назад (имеется ввиду что 3-я скорость вперед это W, а вторая скорость назад S), работа клавиш такая же как WASD (нажата - танк едет, отпущена - остановился), так же добавлены ещё две клавиши I (вперед 100%) и K (назад 100%).

 

Огромная просьба ко всем - оставить автора мода как есть в скрипте, если будете использовать данный функционал по своему усмотрению.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...