1

Тема: АНК: Проблемы с созданием скриптов для игры World of Tanks

В игре World of Tanks для упрощения некоторых операций пользуюсь программируемой мышью. Но кнопок мало и решил поискать чего нибудь для клавиатуры. Очень заинтересовал АНК, но вот проблема - скрипты на АНК работают везде, кроме самой игры. Может кто поможет советом? Буду благодарен.

2 (изменено: Grey, 2011-05-29 10:21:58)

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Нужно воспользоваться директивой #IfWinActive, или (как вариант) попробуйте запустить скрипт после запуска игры/приложения.

3

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Вот что определил с помощью AutoIT3 Window Spy :

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
W.o.T. Client
ahk_class App

>>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<<
On Screen:    610, 267  (less often used)
In Active Window:    618, 275

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<

Color:    0xF0F0F0  (Blue=F0 Green=F0 Red=F0)

>>>>>>>>>>( Active Window Position )<<<<<<<<<<
left: -8     top: -8     width: 1520     height: 916

>>>>>>>>>>>( Status Bar Text )<<<<<<<<<<

>>>>>>>>>>>( Visible Window Text )<<<<<<<<<<<

>>>>>>>>>>>( Hidden Window Text )<<<<<<<<<<<

>>>>( TitleMatchMode=slow Visible Text )<<<<

>>>>( TitleMatchMode=slow Hidden Text )<<<<

А вот мой пробный скрипт, имитирующий нажатие Escape:

 #IfWinActive ahk_class App W.o.T. Client
SC16A::Escape
return

Скрипт в итоге не работает в окне игры.

4 (изменено: Grey, 2011-05-29 21:44:15)

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Всё, что нужно из иформации того окна, это вот эта строка.

ahk_class App

5

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Ну да, но работать то не хочет, хотя если вместо окна игры в #IfWinActive ahk_clas добавить notepad++  к примеру, то все чудесно пашет

6

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Есть много прецедентов, когда скрипты не работают в играх. Могу посоветовать скомпилировать скрипт в исполняющий файл (*.exe).

7

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

К сожалению и скомпилированный в .exe скрипт тоже не работает. Просто интерестно, почему тогда скрипты для мыши работают? Это не может быть связано с тем что мышь и клавиатура дополнительно опредены как HID клавиатура?

8

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Такого скэн кода нет (sc16a) на клавиатуре стандарта 104-key U.S. Может (если это не критично) стоит попробовать повесить Escape на другую клавишу, или это Ваша опечатка?

9

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Я ради интереса назначил вместо мультимедийной SC16A (так она определилась) сочетание #z, но результ тот-же. Может создатели игры намеренно запретили работу скриптов АНК? Попробую спросить у них.

10

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Собственно скан  код

VK  SC    Type    Up/Dn    Elapsed    Key        Window
-------------------------------------------------------------------------------------------------------------
A2  01D         u    13.85    Ctrl               C:\Users\valeriy\Скрипты\InstallKeybdHook.ahk - AutoHotkey v1.0.48.05
A6  16A         d    8.77    Browser_Back       
A6  16A         u    0.41    Browser_Back       
74  03F         d    0.77    F5                 
74  03F         u    0.13    F5

11

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Можно проверить мысль на счёт создателей, только в другом/других приложении/приложениях.

12

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Тоже пробовал создать скрипт, который при зажатой кнопке и движении мыши по горизонтали нажимал бы или A или D,
(чтобы поворачивать пт-сау в снайпер режиме), но кнопки не нажимались, хотя если запустить чат, то там они прописывались, ну а например q::a тоже работает, так что это какая-то "защита" либо криворукость их программистов.

13

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Нужно выкладывать факты/наработки (код), просто со слов тяжело понять почему/как.

14 (изменено: vinternete, 2011-05-29 22:13:22)

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

SendMode Input 
#InstallKeybdHook
#NoEnv
#Persistent
#SingleInstance, force
Sensitivity = 20
CoordMode, Mouse
Return
SetKeyDelay -1, -1
Process Priority,, High
F12:: ExitApp
;#IfWinActive, ahk_class App
MButton::
   NewGesture = 1
   Loop
      {
         If NewGesture
         {
            MouseGetPos, StartX, StartY
            NewGesture =
         }
         MouseGetPos, X, Y
         DX := X - StartX, DY := Y - StartY
         If (Abs(DX) >= Sensitivity)
            Gesture := (DX > 0 ? "{d}" : "{a}"), NewGesture := 1
         If (Abs(DY) >= Sensitivity)
            Gesture := (DY > 0 ? "{s}" : "{w}"), NewGesture := 1
         If (NewGesture && Gesture != PrevGesture)
            Gestures .= Gesture, PrevGesture := Gesture
         Sleep, 10
         Sendplay, % Gestures
         Gestures := Gesture := PrevGesture := ""
         If GetKeyState("MButton", "P") = 0
            break
      }
Return
MButton Up::Return

Нашел на просторах этого форума и чуть изменил под WoT, тем не менее, в чат пишет кнопки, а танк не поворачивает.
Кстити на кризис 2 тоже писал простой макрос, но он тоже не работал, ни sendplay ни send ни input,
думаю я что это ,возможно, делается специально, ну или руки у меня как два неопределенных интеграла .

15

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Считаю, что надо проверить все варианты:

;#IfWinActive, ahk_class App
#Persistent
#InstallKeybdHook
#NoEnv
#SingleInstance, force
Process, Priority,, High
Sensitivity = 20
CoordMode, Mouse
SendMode, Input
SetKeyDelay -1, -1
Return
F12:: ExitApp
MButton::
   NewGesture = 1
   Loop
      {
         If NewGesture
            {
               MouseGetPos, StartX, StartY
               NewGesture =
            }
         MouseGetPos, X, Y
         DX := X - StartX, DY := Y - StartY
         If (Abs(DX) >= Sensitivity)
               Gesture := (DX > 0 ? "{sc20}" : "{sc1E}"), NewGesture := 1
         If (Abs(DY) >= Sensitivity)
               Gesture := (DY > 0 ? "{sc1F}" : "{sc11}"), NewGesture := 1
         If (NewGesture && Gesture != PrevGesture)
               Gestures .= Gesture, PrevGesture := Gesture
         Sleep, 10
         SendPlay, % Gestures
         Gestures := Gesture := PrevGesture := ""
         If GetKeyState("MButton", "P") = 0
               Break
      }
   Return
MButton Up::Return

16

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

А у меня господа оба ваши скрипта не работают. А вот команда Launch_App1 работает в окне программы без проблем.

17

Re: АНК: Проблемы с созданием скриптов для игры World of Tanks

Собственно проблему решил методом перебора подходящей для данной игры программы. Из всей "кучи" на мою Ultimate подошла только Hot Keyboard, которая нормально работает в окне W.o.T. Client. Конечно по сравнению с АНК  программа скудна и примитивна, но....работает... Пообщался со знакомыми программерами, в один голос говорят что причина отказа работы скриптов АНК в конфликте последней и X7 Oscar Edition (макрокоманды для мыши A4Tech X7 с встроенной памятью), и вообще советовали не допускать параллельной работы в Windows 7 программ, использующих клавиатурные макрокоманды.