<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Хатка джойстика и мышь]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6228</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6228&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Хатка джойстика и мышь».]]></description>
		<lastBuildDate>Sun, 02 Oct 2011 22:23:35 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=52103#p52103</link>
			<description><![CDATA[<p>Думаю, что работает по принципу первого варианта, как пример:</p><div class="codebox"><pre><code>SetTimer, Test, 10
Return

Test:
   Loop, 3
      MsgBox, 262208, Test, % A_Index, 1
;      TrayTip, Test, % A_Index,, 1
   Return</code></pre></div><p>Таймер настроен на быструю частоту, но каждое из окон сообщения отображается секунду, а вот если закомментировать строку с MsgBox, и раскомментировать с TrayTip у которого нет задежки, то можно увидеть настоящую скорость работы таймера.</p>]]></description>
			<author><![CDATA[null@example.com (Grey)]]></author>
			<pubDate>Sun, 02 Oct 2011 22:23:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=52103#p52103</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=52096#p52096</link>
			<description><![CDATA[<p>Спасибо. У меня еще вопрос. А как работает timer вместе с loop?<br />выполняется программа, потом когда доходит до цикла, запускается цикл и выполняется определенное поличество раз, когда цикл закончился, то остальная часть программы внутри таймера выполняется, заканчивается и только потом таймер начинает выполнение программы заново. Но все это время таймер ждет конца выполнения программы.<br />Или так, выполняется программа, потом когда доходит до цикла, запускается цикл и выполняется определенное количетсво раз, в каком-то месте когда время таймера истекает, он опять запускает эту же самую программу, доходит до цикла и уже выполняется не 1 а целых 2 цикла и так по нарастающей...<br />А то я правильную работу таймера понять не могу...</p>]]></description>
			<author><![CDATA[null@example.com (sergeant.coolagin)]]></author>
			<pubDate>Sun, 02 Oct 2011 19:10:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=52096#p52096</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51998#p51998</link>
			<description><![CDATA[<div class="quotebox"><cite>sergeant.coolagin пишет:</cite><blockquote><p>Как сделать из хатки хоткей?</p></blockquote></div><p>Это не типичный случай, когда у клавиши есть только состояние нажатия/отжатия, или состояние в которое она переключена (шифт и т.д.). У клавиши JoyPOV есть текущее значение которое считывается командой <a href="http://www.autohotkey.com/docs/commands/GetKeyState.htm">GeKeyState</a> и присваивается переменной (в скрипте POV).</p><div class="codebox"><pre><code>YAxis:=XAxis:=700, SleepTime:=30, Flag2:=Flag:=0
SetTimer, WatchHatKey, 250, Return

LButton::
   If Flag2=1
      Send, {RButton Up}{LButton Down}
   Else
      Send, {LButton Down}
   KeyWait, LButton
   Send, {LButton Up}
   Flag2:=0
   Return

WatchHatKey:
   GetKeyState, POV, JoyPOV
   If POV=-1
      Return
   Else If Pov=0
   {
      Send, {RButton Down}
      Flag2:=1
      Loop
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, 0
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
         GetKeyState, POV, JoyPOV
         If POV&lt;&gt;0
            Break
      }
   }
   Else If POV=4500
   {
      Send, {RButton Down}
      Flag2:=1
      Loop
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, XAxis
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
         GetKeyState, POV, JoyPOV
         If POV&lt;&gt;4500
            Break
      }
   }
   Else If POV=9000
   {
      Send, {RButton Down}
      Flag2:=1
      Loop
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, XAxis
                              , Int, 0
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
         GetKeyState, POV, JoyPOV
         If POV&lt;&gt;9000
            Break
      }
   }
   Else If POV=13500
   {
      Send, {RButton Down}
      Flag2:=1
      Loop
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, XAxis
                              , Int, YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
         GetKeyState, POV, JoyPOV
         If POV&lt;&gt;13500
            Break
      }
   }
   Else If POV=18000
   {
      Send, {RButton Down}
      Flag2:=1
      Loop
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, 0
                              , Int, YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
         GetKeyState, POV, JoyPOV
         If POV&lt;&gt;18000
            Break
      }
   }
   Else If POV=22500
   {
      Send, {RButton Down}
      Flag2:=1
      Loop
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, -XAxis
                              , Int, YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
         GetKeyState, POV, JoyPOV
         If POV&lt;&gt;22500
            Break
      }
   }
   Else If POV=27000
   {
      Send, {RButton Down}
      Flag2:=1
      Loop
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, -XAxis
                              , Int, 0
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
         GetKeyState, POV, JoyPOV
         If POV&lt;&gt;27000
            Break
      }
   }
   Else If POV=31500
   {
      Send, {RButton Down}
      Flag2:=1
      Loop
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, -XAxis
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
         GetKeyState, POV, JoyPOV
         If POV&lt;&gt;13500
            Break
      }
   }
   Return</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Grey)]]></author>
			<pubDate>Fri, 30 Sep 2011 06:27:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51998#p51998</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51957#p51957</link>
			<description><![CDATA[<p>Написал такой скрипт:<br /></p><div class="codebox"><pre><code>SetBatchLines, -1
XAxis:=700, ; Скорость передвижения мыши по горизонтали.
YAxis:=700 ; Скорость передвижения мыши по вертикали.
SleepTime:=30
Flag:=0
Flag2:=0
Return




LButton:: ;Кнопка деактивации осмотра.
{
if Flag2 = 1
{
Send, {RButton Up}{vk01 Down} ; Lbutton
}
else
{
Send, {vk01 Down} ; Lbutton
}
KeyWait, vk01 ; Lbutton
Send, {vk01 Up} ; Lbutton
Flag2:= 0
}
Return


F5:: ; Смотреть влево/вверх
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F5&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, -XAxis
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return




F6:: ; Смотреть вверх
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F6&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, 0
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return




F7:: ; Смотреть вправо/вверх
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F7&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, XAxis
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return




F8:: ; Смотреть вправо
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F8&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, XAxis
                              , Int, 0
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return




F9:: ; Смотреть вправо/вниз
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F9&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, XAxis
                              , Int, YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return




F10:: ; Смотреть вниз
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F10&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, 0
                              , Int, YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return




F11:: ; Смотреть влево/вниз
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F11&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, -XAxis
                              , Int, YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return




F12:: ; Смотреть влево
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F12&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, -XAxis
                              , Int, 0
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return</code></pre></div><p>Скрипт работает, но я не могу поставить активацию движения непосредственно на хатку.<br />Я переназначил хатнку на кнопки с F5 до F12 соответственно в драйвере джойстика. Получается не так как должно быть.<br />Как сделать так, чтобы было что-то вроде:<br /></p><div class="codebox"><pre><code>JoyPOV 31500:: ; Смотреть влево/вверх
Send {RButton down}
Flag2:= 1
   While GetKeyState(&quot;F5&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, -XAxis
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
         Sleep, SleepTime
      }
   Return</code></pre></div><p>Как сделать из хатки хоткей? Через таймер думаете получится? Ща попробую. Но все-таки можно ли сделать непосредственно хоткей из хатки? Помогите написать скрипт правильно.</p>]]></description>
			<author><![CDATA[null@example.com (sergeant.coolagin)]]></author>
			<pubDate>Thu, 29 Sep 2011 12:41:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51957#p51957</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51810#p51810</link>
			<description><![CDATA[<div class="quotebox"><cite>sergeant.coolagin пишет:</cite><blockquote><p>Но в данном скрипте мышь перемещается, как по рабочему столу...</p></blockquote></div><p>MouseMove не будет корректно работать в Direct3D, потому как эта команда ориентируется по координатам экрана (DirectDraw), а в полноэкранном приложении (имею ввиду любую игру), там система координат исчисляется в трёхмерной проекции. Думаю надо посмотреть в сторону <a href="http://msdn.microsoft.com/ru-ru/library/ms646260(en-us,VS.85).aspx">mouse_event</a>, пример:</p><div class="codebox"><pre><code>SetBatchLines, -1
var:=10, dvar:=10
Return

vkbb:: ; +
   var+=dvar
   ToolTip, % &quot;add var: &quot;var, 640, 512
   Sleep, 750
   ToolTip
   Return
RCtrl &amp; vkbb::
   var-=dvar
   ToolTip, % &quot;sub var: &quot;var, 640, 512
   Sleep, 750
   ToolTip
   Return

/*
vkbd:: ; -
   var2+=dvar
   ToolTip, % &quot;add var2: &quot;var2, 640, 512
   Sleep, 750
   ToolTip
   Return
RCtrl &amp; vkbd::
   var2-=dvar
   ToolTip, % &quot;sub var2: &quot;var2, 640, 512
   Sleep, 750
   ToolTip
   Return

vk08:: ; backspace
   var3+=dvar
   ToolTip, % &quot;add var3: &quot;var3, 640, 512
   Sleep, 750
   ToolTip
   Return
RCtrl &amp; vk08::
   var3-=dvar
   ToolTip, % &quot;sub var3: &quot;var3, 640, 512
   Sleep, 750
   ToolTip
   Return
*/

F12::
   KeyWait, F12
   rctrlf12i++
   SetTimer, counterrctrlf12, -350
   Return
counterrctrlf12:
   If rctrlf12i=1
      SetTimer, action1rctrlf12, -10
   Else If rctrlf12i=2
      SetTimer, action2rctrlf12, -10
   Else If rctrlf12i=3
      SetTimer, action3rctrlf12, -10
   Else If rctrlf12i=4
      SetTimer, action4rctrlf12, -10
   rctrlf12i=
   Return
action1rctrlf12: ; 1
   dvar:=1
   ToolTip, % &quot;dvar is: &quot;dvar, 640, 512
   Sleep, 750
   ToolTip
   Return
action2rctrlf12: ; 10
   dvar:=10
   ToolTip, % &quot;dvar is: &quot;dvar, 640, 512
   Sleep, 750
   ToolTip
   Return
action3rctrlf12: ; 100
   dvar:=100
   ToolTip, % &quot;dvar is: &quot;dvar, 640, 512
   Sleep, 750
   ToolTip
   Return
action4rctrlf12: ; 500
   dvar:=500
   ToolTip, % &quot;dvar is: &quot;dvar, 640, 512
   Sleep, 750
   ToolTip
   Return

Right:: ; поворот в право
   While GetKeyState(&quot;Right&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, var
                              , Int, 0
                              , UInt, 0
                              , Int, 0)
         Sleep, 30
      }
   Return

Left:: ; поворот в лево
   While GetKeyState(&quot;Left&quot;, &quot;P&quot;)
      {
         DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, -var
                              , Int, 0
                              , UInt, 0
                              , Int, 0)
         Sleep, 30
      }
   Return

F5::Reload
Esc::ExitApp</code></pre></div><p>Эффект величины значение переменной var напрямую зависит от резолюции монитора, и уровня чувствительности в настройках игры (будет работать и в DirectDraw, только эффект от величины значения будет разный). Для изменения переменной клавиши: +, - и <em>бэкспэйс</em>, количество быстрых нажатий на клавишу ф12 задаёт величину значения переменной (четыре позиции: 1, 10, 100, 500).</p>]]></description>
			<author><![CDATA[null@example.com (Grey)]]></author>
			<pubDate>Sat, 24 Sep 2011 13:19:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51810#p51810</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51805#p51805</link>
			<description><![CDATA[<p>В общем, посидел, переписал сначала скрипт и вроде как бы получилось.</p><div class="codebox"><pre><code>#NoEnv
#SingleInstance force
#InstallKeybdHook
#InstallMouseHook
SendMode DirectInput
SetWorkingDir %A_ScriptDir%

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Global Variabless ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

HatDelay = 1 ; Время таймера

HatMoveBy = 10 ; Кол-во пикселей перемещения мыши за 1 цикл

HatMoveSpeed = 0 ; Скорость перемещения

HatMouseLookOn = {O Down}
HatMouseLookOff = {O Up}

Flag := 0

SetTimer, HatMouse, %HatDelay%


HatMouse:

{
GetKeyState, State, JoyPOV
if State = -1 ; Если хатка в центральном положении

    {
    if Flag = 0 ; Если нажмется Joy1 после перемещения хатки.

        {
        Send %HatMouseLookOff%
        }

    else if Flag = 1 ; Если Joy1 еще не был нажат после перемещения хатки

        {
        Send %HatMouseLookOn%
        }

    else ; Если был, то отпустить нажатие кнопки.

        {
        Return
        }
    }
else ; Если хатка сместилась со своего центрального положения.
    {
    Flag := 1
    Send %HatMouseLookOn% ; Включить нажатие кнопки.
    }

if State = 0 ; Если хатку переместить вверх.
    {
    MouseMove, 0, -%HatMoveBy%,%HatMoveSpeed%, R ; Перемещать мышку наверх.
    }

else if State = 4500 ; Если хатку переместить направо/вверх.
    {
    MouseMove, %HatMoveBy%, -%HatMoveBy%, %HatMoveSpeed%, R ; Перемещать мышку направо/вверх.
    }

else if State = 9000 ; Если хатку переместить направо.
    {
    MouseMove, %HatMoveBy%, 0, %HatMoveSpeed%, R ; Перемещать мышку направо.
    }

else if State = 13500 ; Если хатку переместить направо/вниз.
    {
    MouseMove, %HatMoveBy%, %HatMoveBy%, %HatMoveSpeed%, R ; Перемещать мышку направо/вниз.
    }

else if State = 18000 ;  Если хатку переместить вниз.
    {
    MouseMove, 0, %HatMoveBy%, %HatMoveSpeed%, R ; Перемещать мышку вниз.
    }

else if State = 22500 ;  Если хатку переместить налево/вниз.
    {
    MouseMove, -%HatMoveBy%, %HatMoveBy%, %HatMoveSpeed%, R ; Перемещать мышку налево/вниз.
    }

else if State = 27000 ;  Если хатку переместить налево.
    {
    MouseMove, -%HatMoveBy%, 0, %HatMoveSpeed%, R ; Перемещать мышку налево
    }

else if State = 31500 ;  Если хатку переместить налево/вверх.
    {
    MouseMove, -%HatMoveBy%, -%HatMoveBy%, %HatMoveSpeed%, R ; Перемещать мышку
    }


}
Return

Joy1::
{
Flag := 0 ; Отпустить кнопку.
MouseMove, 1024, 576, 0 ; Вернуть указатель мыши в центральное положение
}
Return</code></pre></div><p>Теперь при смещении хатки с центрального положения мышка смещается, зажимается нужная кнопка. После возвращения хатки в центральное положение, кнопка остается зажатой. После нажатия нужного хоткея(Joy1) кнопка перестает быть нажатой. Все работает правильно. Но я использую данный скрипт в играх. А игры используют Send Mode Direct Imput насколько я знаю. Но в данном скрипте мышь перемещается, как по рабочему столу... И когда мышь фактически достигает угла, то и в игре мышь перестает двигаться. Я частично решил эту проблему:</p><div class="codebox"><pre><code>Joy1::
{
Flag := 0 ; Отпустить кнопку.
MouseMove, 1024, 576, 0 ; Вернуть указатель мыши в центральное положение
}
Return</code></pre></div><p>После нажатия хоткея мышь возвращается в центарльное положение на моем мониторе.<br />Но бесконечно вращаться в игре я не могу. Делаю пару кругов вокруг своей оси и всё. Приходится сбивать хоткеем положение мыши и опять включать хаткой...<br />Как же сделать правильно, чтобы можно было вращаться бесконечно?<br />Помогите мне, пожалуйста.<br />P.S. Я не мазохист, я не играю в шутеры на джое... Мне это действительно нужно.</p>]]></description>
			<author><![CDATA[null@example.com (sergeant.coolagin)]]></author>
			<pubDate>Sat, 24 Sep 2011 11:18:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51805#p51805</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51645#p51645</link>
			<description><![CDATA[<p>Ну да, извиняюсь - опечатался.</p>]]></description>
			<author><![CDATA[null@example.com (Grey)]]></author>
			<pubDate>Sun, 18 Sep 2011 10:18:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51645#p51645</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51639#p51639</link>
			<description><![CDATA[<div class="quotebox"><cite>Grey пишет:</cite><blockquote><p>По синтаксису пустого блока не должно быть, если ничего не делать, то ставьте Enter, чтобы завершить поток:</p></blockquote></div><p>Может быть Return?</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Sun, 18 Sep 2011 06:11:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51639#p51639</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51601#p51601</link>
			<description><![CDATA[<p>У меня нет джойстика, по этому ни чем конкретно помочь не могу.</p><div class="quotebox"><cite>sergeant.coolagin пишет:</cite><blockquote><p>...Если хатка на центре, то ничего не делать.</p></blockquote></div><p>По синтаксису пустого блока не должно быть, если ничего не делать, то ставьте Enter, чтобы завершить поток:</p><div class="codebox"><pre><code>...
HatMouse:
   
   GetKeyState, JoyPOV, JoyPOV

   if JoyPOV = -1  ; No angle.
   {
     return
   }
   else
   {
     flag := 1
   }
   if JoyPOV = 0 ; Up
   {
     MouseMove,0,-%HatMoveBy%,%HatMoveSpeed%,R
   }
   else if JoyPOV = 4500 ; up/right
   {
...</code></pre></div><p>если всё же нужно ещё, что-то делать в данной метке, то формулируйте проверку условия по другому:</p><div class="codebox"><pre><code>...
HatMouse:
   
   GetKeyState, JoyPOV, JoyPOV

   if JoyPOV != -1  ; No angle.
   {
      flag := 1
   }
   else if JoyPOV = 0 ; Up
   {
     MouseMove,0,-%HatMoveBy%,%HatMoveSpeed%,R
   }
   else if JoyPOV = 4500 ; up/right
   {
...</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Grey)]]></author>
			<pubDate>Sat, 17 Sep 2011 18:55:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51601#p51601</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51600#p51600</link>
			<description><![CDATA[<p>Насколько я знаю, один таймер прерывает другой, поэтому с трудом представляю, как всё это должно работать. Я использовал бы <em>Loop</em> совместно с <em>GoSub</em>.<br />Вообще лучше начинать разбираться с малого: написать 5-10 строк, которые стабильно работают, затем постепенно прикручивать всё остальное, каждый раз проверяя, всё ли работает.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Sat, 17 Sep 2011 18:51:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51600#p51600</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51595#p51595</link>
			<description><![CDATA[<div class="quotebox"><cite>ypppu пишет:</cite><blockquote><p>Что такое &quot;хатка&quot;?</p></blockquote></div><p>Хатка - это JoyPOV. Хатка, это такая фиговина сверху на джойстике, которая имеет 9 позиций. На центре(-1), 0 градусов, 45 градусов, 90 градусов, 135 , 180, 225, 270, 315. В скрипте оно пишется еще с двумя нулями.<br />Вот она:<br /><a href="http://fastpic.ru/"><span class="postimg"><img src="http://i27.fastpic.ru/big/2011/0917/8b/f37de98c23301333896453e0dcc15f8b.jpeg" alt="http://i27.fastpic.ru/big/2011/0917/8b/f37de98c23301333896453e0dcc15f8b.jpeg" /></span></a><br /><a href="http://fastpic.ru/"><span class="postimg"><img src="http://i31.fastpic.ru/big/2011/0917/4d/ca5f2a42e071b0154c755776fd7df84d.jpeg" alt="http://i31.fastpic.ru/big/2011/0917/4d/ca5f2a42e071b0154c755776fd7df84d.jpeg" /></span></a></p><p>Но это не очень-то важно. Вопрос скорее просто про переменные, таймеры, хоткеи и нажатия клавишь. Эту переменную JoyPOV можно заменить какой-то другой. Правда, скрипт после этого станет чуток сложнее...</p><p>Может есть какие-то другие решения? Может можно через LOOP или GetKeyState... Не знаю...</p>]]></description>
			<author><![CDATA[null@example.com (sergeant.coolagin)]]></author>
			<pubDate>Sat, 17 Sep 2011 18:24:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51595#p51595</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51592#p51592</link>
			<description><![CDATA[<p>Что такое &quot;хатка&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Sat, 17 Sep 2011 18:18:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51592#p51592</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Хатка джойстика и мышь]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51591#p51591</link>
			<description><![CDATA[<p>Мне нужно подкоректировать скрипт. Использую хатку джойстика как мышь. Работает. Мне нужно, чтобы когда я изменяю угол хатки(значение не -1) одновременно мышь смещалась в соответствующую сторону и зажималась какая-то кнопка. Допустим, R. Но когда хатка возвращается на центральную позицию(значение -1), кнопка &quot;R&quot; оставалась зажатой. Действие &quot;R up&quot; надо повесить на другой хоткей.<br />Вот полный скрипт:<br /></p><div class="codebox"><pre><code>#SingleInstance force
#InstallKeybdHook
#InstallMouseHook




HatDelay = 1

HatMoveBy = 10

HatMoveSpeed = 0


SetTimer, HatMouse, %HatDelay%

SetTimer, JoyPOV1, %HatDelay%

flag := 0


JoyPOV1:
if %flag% = 1
{
Send {R Down}
}
else
{
Return
}
Return

Joy1::
{
flag := 0
}
Return

HatMouse:
   
   GetKeyState, JoyPOV, JoyPOV

   if JoyPOV = -1  ; No angle.
   {

   }
   else
   {
     flag := 1
   }
   if JoyPOV = 0 ; Up
   {
     MouseMove,0,-%HatMoveBy%,%HatMoveSpeed%,R
   }
   else if JoyPOV = 4500 ; up/right
   {
     MouseMove,%HatMoveBy%,-%HatMoveBy%,%HatMoveSpeed%,R
   }
   else if JoyPOV = 9000 ; right
   {
     MouseMove,%HatMoveBy%,0,%HatMoveSpeed%,R
   }
   else if JoyPOV = 13500 ; right/down
   {
     MouseMove,%HatMoveBy%,%HatMoveBy%,%HatMoveSpeed%,R
   }
   else if JoyPOV = 18000 ; down
   {
     MouseMove,0,%HatMoveBy%,%HatMoveSpeed%,R
   }
   else if JoyPOV = 22500 ; down/left
   {
     MouseMove,-%HatMoveBy%,%HatMoveBy%,%HatMoveSpeed%,R
   }
   else if JoyPOV = 27000 ; left
   {
     MouseMove,-%HatMoveBy%,0,%HatMoveSpeed%,R
   }
   else if JoyPOV = 31500 ; left/up
   {
     MouseMove,-%HatMoveBy%,-%HatMoveBy%,%HatMoveSpeed%,R
   }
  
return</code></pre></div><p>Я не понимаю, что я делаю неправильно. Кажется, все правильно. Но кнопка R вообще не жмется. Работает только мышь. Можно вот тут:<br /></p><div class="codebox"><pre><code> if JoyPOV = -1  ; No angle.
   {

   }
   else
   {
     flag := 1
   }</code></pre></div><p>Вместо &quot;flag := 1&quot; вписать &quot;Send {R Down}&quot; и тогда кнопка R будет работать, когда я буду смещать хатку, но она будет тут же отпускаться, когда я буду возвращать хатку в центральную позицию. А мне надо, чтобы кнопка отпускалась по хоткею отдельно.<br />Я никак не могу понять, что же я не так сделал. Вроде всё правильно. Если хатка на центре, то ничего не делать. Если хатка в другом положении, то установить значения для пер. &quot;flag&quot; 1. Тут же вступает другой таймер. Если flag = 1, тогда зажать кнопку R и держать. Если флаг неравно 1, то вернуться. Как только Joy1 нажмется после того, как хатка была смещенна, то кнопка R должна быть отпущенна. Но кнопка R даже не хочет жаться.</p><p>Помогите мне, пожалуйста. Не пойму где я ошибаюсь...</p>]]></description>
			<author><![CDATA[null@example.com (sergeant.coolagin)]]></author>
			<pubDate>Sat, 17 Sep 2011 18:15:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51591#p51591</guid>
		</item>
	</channel>
</rss>
