<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Разовый выстрел при нажатии и удержании t]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12483&amp;type=atom" />
	<updated>2017-02-23T10:10:38Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=12483</id>
		<entry>
			<title type="html"><![CDATA[Re: Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=113089#p113089" />
			<content type="html"><![CDATA[<p><strong>Indomito</strong> если флудить зажатой кнопкой, то будет вышибать ошибку:<br /><span class="postimg"><img src="http://i.imgur.com/4JQO8I7.png" alt="http://i.imgur.com/4JQO8I7.png" /></span><br />Тем более из за меток будет по объему больше скрипт.</p>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2017-02-23T10:10:38Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=113089#p113089</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=113074#p113074" />
			<content type="html"><![CDATA[<p><strong>wowo</strong><br />Пока правил, много что надо было учесть, тебе ответил <strong>yalanne</strong> — это более простой вариант.</p><p><strong>yalanne</strong><br />Кстати можно обойтись без цикла, просто использовать HotKey и функцию со статическими переменными.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-02-23T09:21:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=113074#p113074</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=113067#p113067" />
			<content type="html"><![CDATA[<p>Вот мой вариант:<br /></p><div class="codebox"><pre><code>Threshold = 20

$vk54:: ;t  

MouseGetPos, MouseX, MouseY
PixelGetColor, Color1, (MouseX+2), (MouseY+2)

Color1R := (Color1 &gt;&gt; 16) &amp; 0xFF
Color1G := (Color1 &gt;&gt; 8) &amp; 0xFF
Color1B := (Color1 &gt;&gt; 0) &amp; 0xFF

While GetKeyState(RegExReplace(A_ThisHotkey,  &quot;^.*?(vk.*)&quot;,&quot;$1&quot;)	,	&quot;P&quot;)
{
	MouseGetPos, MouseX, MouseY
	PixelGetColor, Color2, (MouseX+2), (MouseY+2)
	
	Color2R := (Color2 &gt;&gt; 16) &amp; 0xFF
	Color2G := (Color2 &gt;&gt; 8) &amp; 0xFF
	Color2B := (Color2 &gt;&gt; 0) &amp; 0xFF

	if (Color1R &gt; (Color2R + Threshold))
	or (Color1R &lt; (Color2R - Threshold))
	or (Color1G &gt; (Color2G + Threshold))
	or (Color1G &lt; (Color2G - Threshold))
	or (Color1B &gt; (Color2B + Threshold))
	or (Color1B &lt; (Color2B - Threshold))
	{
		Click D
		Sleep 50
		Click U
		Break
	}
	Sleep 10
}

KeyWait,% RegExReplace(A_ThisHotkey,  &quot;^.*?(vk.*)&quot;,&quot;$1&quot;)
Return</code></pre></div><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;с комментариями</div><div class="fancy_spoiler"><div class="codebox"><pre><code>Threshold = 20 ; Порог Срабатывания 

$vk54:: ;t  Зажимаем клавишу t\е


;Смотрим позицию курсора
; и получаем текущий цвет что под курсором.
MouseGetPos, MouseX, MouseY
PixelGetColor, Color1, (MouseX+2), (MouseY+2)

; Цвет Получен в шестнадцатеричной системе счисления(hex), Содержит три цифры оттнеков Red Green Blue от 0 до 255(или 0x0 до 0xFF)
; Переводим каждое значение оттненка в отдельную переменную.

Color1R := (Color1 &gt;&gt; 16) &amp; 0xFF
Color1G := (Color1 &gt;&gt; 8) &amp; 0xFF
Color1B := (Color1 &gt;&gt; 0) &amp; 0xFF

; Запускаем цикл, остоновится при том условии если отжата клавиша начавшая этот поток.
; RegExReplace уберает модификаторы в начале такие как ~ $ ^ + и т.д.
While GetKeyState(RegExReplace(A_ThisHotkey,  &quot;^.*?(vk.*)&quot;,&quot;$1&quot;)	,	&quot;P&quot;)
{
	; Получаем второй цвет 
	MouseGetPos, MouseX, MouseY
	PixelGetColor, Color2, (MouseX+2), (MouseY+2)
	
	Color2R := (Color2 &gt;&gt; 16) &amp; 0xFF
	Color2G := (Color2 &gt;&gt; 8) &amp; 0xFF
	Color2B := (Color2 &gt;&gt; 0) &amp; 0xFF

	;Если это условие истина то  кликаем лкм и останавливаем цикл.
	if (Color1R &gt; (Color2R + Threshold))
	or (Color1R &lt; (Color2R - Threshold))
	or (Color1G &gt; (Color2G + Threshold))
	or (Color1G &lt; (Color2G - Threshold))
	or (Color1B &gt; (Color2B + Threshold))
	or (Color1B &lt; (Color2B - Threshold))
	{
		Click D
		Sleep 50
		Click U
		Break
	}
	Sleep 10
}

; Если скрипт перешел сюда, то это значит либо отжата клавиша T или был клик мыши в нужном месте.
; Ждем отжатия клавиши T.
KeyWait,% RegExReplace(A_ThisHotkey,  &quot;^.*?(vk.*)&quot;,&quot;$1&quot;)
Return</code></pre></div></div></div>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2017-02-23T09:09:23Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=113067#p113067</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=113059#p113059" />
			<content type="html"><![CDATA[<p><strong>wowo</strong><br />Да, ты круто скрестил два скрипта — это я шучу.</p><p><span style="color: #ff0000"><strong>Ошибки.</strong></span></p><ul><li><p>Двойное определении <strong>*$t::</strong> и <strong>HotKey %keyShot%, lShot, On</strong> - это одно и тоже.</p></li><li><p>Директива <strong>#Persistent</strong> должна находится в начале скрипта.</p></li><li><p>Директива <strong>#Persistent</strong> не требуется, если определена <em>&quot;горячая&quot;</em> клавиша <strong>*$t::</strong>.</p></li><li><p>Мой фрагмент(скрипт) работает по принципу - нажал/отжал, т.е. для второго его надо опять нажать, а тут...</p></li><li><p>Измени присвоение/определения своих переменных <strong>с =&nbsp; на&nbsp; := </strong> — так наиболее правильно.</p></li><li><p>Действия такого кода не предсказуемы... ну почти. <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p></li></ul><p>Попробую исправить твой скрипт.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-02-23T07:08:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=113059#p113059</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=113056#p113056" />
			<content type="html"><![CDATA[<p>Можете подсказать, почему скрипт корректно работает только на первый выстрел? Второй выстрел уже идёт без ожидания какого-либо движения.</p><div class="codebox"><pre><code>Threshold = 20
;
*$t::
MouseGetPos, MouseX, MouseY
PixelGetColor, Color1, (MouseX+2), (MouseY+2)
StringSplit, Colorz, Color1
Color1B = 0x%Colorz3%%Colorz4%
Color1G = 0x%Colorz5%%Colorz6%
Color1R = 0x%Colorz7%%Colorz8%
Color1B += 0
Color1G += 0
Color1R += 0

while (GetKeyState(&quot;t&quot;, &quot;P&quot;))
    {
        BlockInput, MouseMove
        sleep 1
        MouseGetPos, MouseX, MouseY
        PixelGetColor, Color2, (MouseX+2), (MouseY+2)
        StringSplit, Colorz, Color2
        Color2B = 0x%Colorz3%%Colorz4%
        Color2G = 0x%Colorz5%%Colorz6%
        Color2R = 0x%Colorz7%%Colorz8%
        Color2B += 0
        Color2G += 0
        Color2R += 0
        if (Color1R &gt; (Color2R + Threshold)) or (Color1R &lt; (Color2R - Threshold)) or (Color1G &gt; (Color2G + Threshold)) or (Color1G &lt; (Color2G - Threshold)) or (Color1B &gt; (Color2B + Threshold)) or (Color1B &lt; (Color2B - Threshold))
            {
                #Persistent
  keyShot := &quot;vk54&quot; ;Используем vk-Code, это код клавиши Eng = t or T RUS = е or Е
  HotKey %keyShot%, lShot, On
Return

#UseHook, On
lShot:
  HotKey %keyShot%, lNop, On ;На заглушку
  Send {LButton}
  Sleep 25
  while (GetKeyState(keyShot, &quot;P&quot;))
      Sleep 25
  HotKey %keyShot%, lShot, On ;На обработчик
Return

;П.программа-заглушка
lNop:
Return

Esc::
  ExitApp
#UseHook, Off
            }
    }
BlockInput, MouseMoveOff
Return

End::
exitapp
return


</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wowo]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34573</uri>
			</author>
			<updated>2017-02-23T06:32:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=113056#p113056</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=113002#p113002" />
			<content type="html"><![CDATA[<p><strong>wowo</strong><br />Значит в условие надо прописать ожидание, я его вижу условие - просто используй мой скрипт в своём скрипте. <br />Думаю, что сам это сможешь, если нет, то <strong><span style="color: #b22222">надо ставить вопрос иначе</span></strong>. </p><p><span style="color: #3366ff">Копировать мой код в своём посте не надо.</span> <span style="color: #ff0000">Исправлено модератором(<a href="http://forum.script-coding.com/viewtopic.php?pid=112995#p112995"><strong>Пост №3</strong></a>) .</span></p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-02-21T20:33:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=113002#p113002</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=112995#p112995" />
			<content type="html"><![CDATA[<p>Дело в том, что надо производить 1 выстрел после того, как по середине прицела произойдёт движение. В данном случае выстрел происходит без каких либо ожиданий движений, а просто по нажатию на &quot;t&quot;<span style="color: red"><strong><span class="bbu">.</span></strong></span><br /></p><div class="quotebox"><blockquote><p><span style="color: green"><strong>Модератор</strong>: Дубликат кода удалён. Следите за точками в конце предложений. Ознакомление с правилами форума (см. его шапку) обязательно.</span></p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[wowo]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34573</uri>
			</author>
			<updated>2017-02-21T17:57:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=112995#p112995</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=112988#p112988" />
			<content type="html"><![CDATA[<p><strong>wowo</strong><br />Ошибка в определении горячей клавиши: <strong>*~$t::</strong> - идёт пропуск в систему, а не перехват, убери <span style="color: #3366ff"><strong>~</strong></span> </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Из справки по AHK</div><div class="fancy_spoiler"><div class="quotebox"><blockquote><p>В момент запуска обработчика этой горячей клавиши нельзя подавить системную обработку этого действия. В обоих примерах, приведенных ниже, щелчок кнопки мыши, сделанный пользователем, будет послан активному окну, чего не произошло бы при обработке иных горячих клавиш, о которых идёт речь в данной статье:<br />~RButton::MsgBox Вы щелкнули правой кнопкой мыши.<br />~RButton &amp; C::MsgBox Вы нажали клавишу C, удерживая правую кнопку мыши.</p></blockquote></div></div></div><p> Проще написать так. </p><div class="codebox"><pre><code>#Persistent
  keyShot := &quot;vk54&quot; ;Используем vk-Code, это код клавиши Eng = t or T RUS = е or Е
  HotKey %keyShot%, lShot, On
Return

#UseHook, On
lShot:
  HotKey %keyShot%, lNop, On ;На заглушку
  Send {LButton}
  Sleep 25
  while (GetKeyState(keyShot, &quot;P&quot;))
      Sleep 25
  HotKey %keyShot%, lShot, On ;На обработчик
Return

;П.программа-заглушка
lNop:
Return

Esc::
  ExitApp
#UseHook, Off</code></pre></div><p> Я ответил только на вопрос, увидел ошибку и дал решение.</p><p>Удачи.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2017-02-21T12:49:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=112988#p112988</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Разовый выстрел при нажатии и удержании t]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=112983#p112983" />
			<content type="html"><![CDATA[<p>Здравствуйте, помогите изменить код так, чтобы при удержании кнопки &quot;t&quot; нажатие левой клавиши мыши было только 1 раз. В данный момент после удержания &quot;t&quot; идёт быстрое нажатие лкм. Заранее спасибо.</p><div class="codebox"><pre><code>Threshold = 15
;
*~$t::
MouseGetPos, MouseX, MouseY
PixelGetColor, Color1, (MouseX+2), (MouseY+2)
StringSplit, Colorz, Color1
Color1B = 0x%Colorz3%%Colorz4%
Color1G = 0x%Colorz5%%Colorz6%
Color1R = 0x%Colorz7%%Colorz8%
Color1B += 0
Color1G += 0
Color1R += 0
 
while (GetKeyState(&quot;t&quot;, &quot;P&quot;))
    {
        BlockInput, MouseMove
        sleep 1
        MouseGetPos, MouseX, MouseY
        PixelGetColor, Color2, (MouseX+2), (MouseY+2)
        StringSplit, Colorz, Color2
        Color2B = 0x%Colorz3%%Colorz4%
        Color2G = 0x%Colorz5%%Colorz6%
        Color2R = 0x%Colorz7%%Colorz8%
        Color2B += 0
        Color2G += 0
        Color2R += 0
        if (Color1R &gt; (Color2R + Threshold)) or (Color1R &lt; (Color2R - Threshold)) or (Color1G &gt; (Color2G + Threshold)) or (Color1G &lt; (Color2G - Threshold)) or (Color1B &gt; (Color2B + Threshold)) or (Color1B &lt; (Color2B - Threshold))
            {
                send {LButton}
            }
    }
BlockInput, MouseMoveOff
Return
 
End::
exitapp
return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wowo]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34573</uri>
			</author>
			<updated>2017-02-21T10:25:06Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=112983#p112983</id>
		</entry>
</feed>
