<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10444&amp;type=atom" />
	<updated>2015-02-26T19:16:26Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=10444</id>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=92005#p92005" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>elektrovenik пишет:</cite><blockquote><p>Вообщем ладно парни, Вам огромное спасибо, что пытались до меня донести логический смысл, видимо мне не дано. Буду пользоваться шаблоном, не понимая его работы (что конечно же радости не вызывает).</p></blockquote></div><p>Сергей, эти слова были написаны в тот момент, когда я действительно не мог понять такого построения кода, перечитывая раз за разом твои пояснения из поста 9.<br />Я хочу подчеркнуть, что<span class="bbu"> дело тут не в том, что объяснения плохи</span>, <span class="bbu">а в том, что я слишком тугой.</span><br />Дальше мне уже было просто стыдно просить объяснить мне это снова или как-то по-другому, я смирился с тем, что моей голове этого не понять.<br />Но потом я все-таки решился задать те вопросы, которые остались мной не поняты ранее.<br />На данный момент, благодаря <strong>твоим</strong> усилиям, а так-же <strong>YMP</strong>, я действительно полностью понимаю весь код скрипта и примененный синтаксис.<br />Теперь ставлю для себя иную задачу: нужно наверное пробовать прочитать и хоть примерно усвоить русскую справку по ahk, чтобы примерно знать возможности языка и приемы, применяемые в нем. Потому что меня очень угнетает, что задачу, которая решалась через условие и переменную, я решал через циклы отслеживания нажатия клавиш, что являлось совсем глупым путем решения.<br /></p><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Из каких моих слов навеяло негативом?.</p></blockquote></div><p>Мне таковыми, показались слова о том, что я не стараюсь понять твоих объяснений. Я не из тех людей, кто задает вопросы просто так. Не будь у меня желания понять что к чему, я бы просто написал &quot;спасибо за скрипт&quot; и стал бы им пользоваться, даже не подумав вникать как он работает.</p>]]></content>
			<author>
				<name><![CDATA[elektrovenik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29521</uri>
			</author>
			<updated>2015-02-26T19:16:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=92005#p92005</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=92004#p92004" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>elektrovenik пишет:</cite><blockquote><p>Сергей, мне кажется ты меня неверно понял и у тебя ко мне возник негатив, хотя я абсолютно ничего плохого в твой адрес не подумал и тем более не сказал.</p></blockquote></div><p>Из каких моих слов навеяло негативом?</p><div class="quotebox"><cite>S.shipilov пишет:</cite><blockquote><p>как и автор темы понимаю что это несколько коряво но зато новичку понятен принцип действия скрипта, и уже теперь можно заниматься его оптимизацией и сокращением.</p></blockquote></div><p>Ну так ТС сам его и написал, а оптимизировать далее самостоятельно не может, для того и завёл тему. Если делать тоже самое, что делал до этого, то и результат будет прежним.<br />Если не ясны построчные разъяснения кода, то надо построчно разбирать (вместе) эти самые разъяснения. А не сдаватся:<br /></p><div class="quotebox"><cite>elektrovenik пишет:</cite><blockquote><p>Вообщем ладно парни, Вам огромное спасибо, что пытались до меня донести логический смысл, видимо мне не дано. Буду пользоваться шаблоном, не понимая его работы (что конечно же радости не вызывает).</p></blockquote></div><p>В 18 посте приведён аналог алгоритма в простейшей записи для понимания новичком, в 19 и 21 посте нет даже намёка на его прочтение.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-02-26T17:56:06Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=92004#p92004</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91998#p91998" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>S.shipilov пишет:</cite><blockquote><div class="codebox"><pre><code>
*Space :: 
{
Send {RButton}
Scopemode := ! Scopemode
}

*LButton::
{
Send {LButton}
If Scopemode = 1
  {
   sleep 10
   Send {Rbutton}
   Scopemode := ! Scopemode
  }
}
</code></pre></div><p>Вот что у меня получилось. как и автор темы понимаю что это несколько коряво но зато новичку понятен принцип действия скрипта, и уже теперь можно заниматься его оптимизацией и сокращением.</p></blockquote></div><p>Вы молодец. Тот момент, что сначала идет часть, отвечающая за вариацию (отслеживание состояния прицела), а потом уже часть отвечающая за исполнение - наиболее понятна новичкам (не программистам!!!). Ведь обычный&nbsp; человек имеет прямой порядок мышления, а не обратный:<br />Если у меня есть лопата - я иду копать картошку. У меня нет лопаты - мне нечем копать картошку.<br />а не так:<br />Я пришел на огород копать картошку - блин, у меня нет лопаты. Ну тогда я пошел обратно, мне же нечем ее копать.</p>]]></content>
			<author>
				<name><![CDATA[elektrovenik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29521</uri>
			</author>
			<updated>2015-02-26T16:04:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91998#p91998</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91989#p91989" />
			<content type="html"><![CDATA[<p>Добрый день!<br />На сколько я понимаю от проблемы скипта дискуссия ушла в обсуждение синтаксиса? но я хотел бы вернуться к скрипту потому как плаваю в этом вопросе.<br />Автор темы как и я наверно новичок (у меня так вообще AHK первый и единственный опыт) <br />и проблема возникла из-за отсутствия логически построенного задание на разработку. мне в таких ситуациях помогает построение блок схемы. но можно и в текстовом варианте.</p><p>и так прямой порядок:<br />Необходимо присвоить клавише пробел вхождение в режим прицеливания<br /></p><div class="codebox"><pre><code>
*Space :: 
{
Send {RButton}
}

</code></pre></div><p>Необходимо левой кнопке мыши присвоить выстрел и выход из прицеливания<br /></p><div class="codebox"><pre><code>
*LButton::
{
Send {LButton}
sleep 10
Send {Rbutton}
}
</code></pre></div><p>логические ошибки: (точнее неучтенные прямым порядком ситуации)<br />выход из прицеливания без выстрела</p><p>Решение:<br />отслеживание состояния &quot;в прицеливании / не в прицеливании&quot;<br />Зависимость присвоения левой кнопки мыши набора команд от состояния прицела.<br /></p><div class="codebox"><pre><code>
*Space :: 
{
Send {RButton}
Scopemode := ! Scopemode
}

*LButton::
{
Send {LButton}
If Scopemode = 1
  {
   sleep 10
   Send {Rbutton}
   Scopemode := ! Scopemode
  }
}
</code></pre></div><p>Вот что у меня получилось. как и автор темы понимаю что это несколько коряво но зато новичку понятен принцип действия скрипта, и уже теперь можно заниматься его оптимизацией и сокращением.</p>]]></content>
			<author>
				<name><![CDATA[S.shipilov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=30244</uri>
			</author>
			<updated>2015-02-26T13:12:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91989#p91989</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91907#p91907" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>M =</p></blockquote></div><p>На форуме проскальзывало, что в будущих версиях ahk такая форма записи будет недействительна.<br />Поэтому стоит привыкать к <br /></p><div class="codebox"><pre><code>M := &quot;&quot;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-02-24T22:18:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91907#p91907</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91906#p91906" />
			<content type="html"><![CDATA[<p>Сергей, мне кажется ты меня неверно понял и у тебя ко мне возник негатив, хотя я абсолютно ничего плохого в твой адрес не подумал и тем более не сказал. Фраза &quot;форма подачи подвела&quot; заключала в себе следущее:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>Send A</code></pre></div><p> посылает А<br /></p><div class="codebox"><pre><code>Send B</code></pre></div><p> посылает Б<br /></p><div class="codebox"><pre><code>Send C</code></pre></div><p> посылает С<br /></p><div class="codebox"><pre><code>Loop {
Send A
sleep 50
Send B
sleep 50
Send C
}
return</code></pre></div><p> Цикл, в котором отправляется А, затем пауза 50мс, отпраляется B, снова пауза 50мс, отправляется С</p></div></div><p>Или форма подачи, которую проще воспринять, т.к. не приходится скролить и отвлекаться.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>Send A - посылает А<br />Send B - посылает B<br />Send C - посылает С</p><p>Loop {<br />Send A<br />sleep 50<br />Send B<br />sleep 50<br />Send C<br />}<br />Цикл, в котором отправляется А, затем пауза 50мс, отпраляется B, снова пауза 50мс, отправляется С</p></div></div>]]></content>
			<author>
				<name><![CDATA[elektrovenik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29521</uri>
			</author>
			<updated>2015-02-24T21:19:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91906#p91906</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91902#p91902" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Это ни в коем случае не умаляет того факта, что ты старался пояснить как мог.</p></blockquote></div><p>Тут главное, не то что я там старался, а в том насколько ты стараешься понять. </p><div class="quotebox"><blockquote><p>просто форма подачи несколько подвела</p></blockquote></div><p>Ну тут я точно не ас. То есть, в 16 посте, ты уже сообщал о полном понимании?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-02-24T19:05:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91902#p91902</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91899#p91899" />
			<content type="html"><![CDATA[<p>Сергей, я позволю себе тебя поправить: тут причина не невнимательность, а &quot;запаренность&quot;. Т.к. твои пояснения были в двух постах (7 и 9), мне приходилось скролить страницу туда-сюда. Помимо этого, ты давал пояснения, в которых код или куски кода скрипта выделял в соответствующий формат &quot;соde&quot;. Он в свою очередь разбивает текст, превращая в длинный столб. Поверь, я перечитывал оба поста десятки раз, просто форма подачи несколько подвела и в итоге я терял то, что понимал 5 минут назад.<br />Это ни в коем случае не умаляет того факта, что ты старался пояснить как мог.</p>]]></content>
			<author>
				<name><![CDATA[elektrovenik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29521</uri>
			</author>
			<updated>2015-02-24T18:52:13Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91899#p91899</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91897#p91897" />
			<content type="html"><![CDATA[<p>Это полный аналог кода в более &quot;простой записи&quot;:<br /></p><div class="codebox"><pre><code>#If M
*~$LButton:: 
    Send {Space} 
    M =
    Return
#If
*~$Space:: 
    If M =
        M = 1
    Else
        M = 0
    Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-02-24T17:59:42Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91897#p91897</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91896#p91896" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Сергей объяснил все нормально, достаточно понятно.</p></blockquote></div><p>Я старался, но кто то был не внимателен:<br /></p><div class="quotebox"><blockquote><p>Почему же в скрипте Сергея с нажатием лкм посылается чистое нажатие пробела, без кавычек?</p></blockquote></div><div class="quotebox"><cite>9 пост пишет:</cite><blockquote><p>&nbsp; Знак процента значит что параметр команды представлен как выражение. В выражении, <strong>то что <span class="bbu">в</span> кавычках это текст</strong></p></blockquote></div><p>---</p><div class="quotebox"><blockquote><p>Но я не понимаю, как оперировать &quot;пусто&quot; и &quot;не пусто&quot;<br />Вот если М := 0, то !M := 1 - это я понимаю. А если М := &quot;&quot; (пустоте), то чему равно !M ? Не пустоте? То есть тут даже не нужны числа?</p></blockquote></div><div class="quotebox"><cite>7 пост пишет:</cite><blockquote><p>Логическое НЕ (!). Если операнд <strong>пуст</strong> или равен 0, результатом применения логического НЕ <strong>является 1</strong></p></blockquote></div><p>---</p><div class="quotebox"><blockquote><p>Лкм должно посылать выражение объединяющее строку {Space} c пустой переменной М. Результатом такого выражения является пустота. Но посылается то не пустота, а нажатие пробела.</p></blockquote></div><div class="quotebox"><cite>9 пост пишет:</cite><blockquote><p>Так как <strong>в конце строки <span class="bbu">приклеивается</span></strong> пустота:</p></blockquote></div><p>---Ещё раз:</p><div class="quotebox"><blockquote><p>А что же тогда Send &quot;{space}&quot;. Я посылаю строку с именем клавиши? Попробовав скрипт Send &quot;{space}&quot; на выходе я получил &quot; &quot;.</p></blockquote></div><div class="codebox"><pre><code>Send &quot;{space}&quot;</code></pre></div><p>или:</p><div class="codebox"><pre><code>Send % &quot;{space}&quot;</code></pre></div><p>Если хорошо присмотрется, есть разница?<br />Почему тогда нет вопроса в том, что не печатается такой текст:<br /></p><div class="codebox"><pre><code>% &quot; &quot;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-02-24T17:47:50Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91896#p91896</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91889#p91889" />
			<content type="html"><![CDATA[<p>Спасибо <strong>YMP</strong>, теперь многое стало понятно.</p>]]></content>
			<author>
				<name><![CDATA[elektrovenik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29521</uri>
			</author>
			<updated>2015-02-24T10:46:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91889#p91889</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91886#p91886" />
			<content type="html"><![CDATA[<p>! — это логический оператор. Соответственно на выходе он даст одно из логических значений: True или False. Пустая переменная в логическом смысле считается False. Значит, обращение её логического смысла оператором ! даст True.</p><p>То бишь, учитывая, что ! оперирует логическими величинами, АНК предварительно преобразует пустую переменную в логическое значение. И уже к этому значению применяет !. Пустые и нулевые преобразуются к False, остальные к True.<br /></p><div class="quotebox"><blockquote><p>Лкм должно посылать выражение объединяющее строку {Space} c пустой переменной М. Результатом такого выражения является пустота. Но посылается то не пустота, а нажатие пробела.</p></blockquote></div><p>Нет, выражения не посылаются. Они разрешаются/вычисляются интерпретатором. И уже то, что получилось в результате решения выражения передаётся команде Send. Здесь это будет строка {Space}, поскольку пустая переменная М содержит пустую строку и ничего не добавляет к результирующей строке.</p><p>Т.е. после решения выражения получается код<br /></p><div class="codebox"><pre><code>
Send {Space}
</code></pre></div><p>Он и будет выполняться.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2015-02-24T09:48:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91886#p91886</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91885#p91885" />
			<content type="html"><![CDATA[<p>Еще раз большое спасибо! Сергей объяснил все нормально, достаточно понятно. Трудности возникают действительно при понимании синтаксиса:<br />Я уже начинаю переводить для себя код программы в слова, чтобы понять, но все-равно трудно.<br /></p><div class="codebox"><pre><code>#If M
*~$LButton:: Send % &quot;{Space}&quot; . (M := &quot;&quot;)
#If
*~$Space:: M := !M

Я правильное понимаю, что #If M - начало условия, а #If - конец условия? Т.е. #If к горячей клавише *~$Space:: отношения не имеет? </code></pre></div><p>#Если переменная М = правда (является истиной)<br />*~$ Нажатие ЛКМ будет также посылать выражение строка {space} объединенная с переменной М и результат выражения будет пустота. Поэтому будет послано только нажатие ЛКМ.<br />Условие закрывается<br />*~$ Нажатие пробела обратит результат в &quot;не пусто&quot;, тогда нажатие лкм будет посылать и нажатие пробела.</p><p>Но я не понимаю, как оперировать &quot;пусто&quot; и &quot;не пусто&quot;<br />Вот если М := 0, то !M := 1 - это я понимаю. А если М := &quot;&quot; (пустоте), то чему равно !M ? Не пустоте? То есть тут даже не нужны числа?</p><p>Лкм должно посылать выражение объединяющее строку {Space} c пустой переменной М. Результатом такого выражения является пустота. Но посылается то не пустота, а нажатие пробела.<br />Да и что значит &quot;{space}&quot;? Я понимаю {vk20}, или {space} - это виртуальный код клавиши и ее имя.&nbsp; Значит, когда я пишу Send {vk20}; Send {Space} - все понятно. А что же тогда Send &quot;{space}&quot;. Я посылаю строку с именем клавиши? Попробовав скрипт Send &quot;{space}&quot; на выходе я получил &quot; &quot;. Почему же в скрипте Сергея с нажатием лкм посылается чистое нажатие пробела, без кавычек?</p>]]></content>
			<author>
				<name><![CDATA[elektrovenik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29521</uri>
			</author>
			<updated>2015-02-24T09:07:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91885#p91885</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91880#p91880" />
			<content type="html"><![CDATA[<p>Ну так задача в топике и состоит в сокращении. Так зачем сокращать на половину.&nbsp; Далее тс сетует на то что&nbsp; давно не продвигается в изучении анк,&nbsp; так что думаю что в данном случае всё адекватно,&nbsp; и тс получил именно то что хотел,&nbsp; с подробшейшими пояснениями,&nbsp; и новым опытом.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-02-24T07:14:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91880#p91880</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация отлова нажатия клавиши и вариативность последующих действий]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91879#p91879" />
			<content type="html"><![CDATA[<p>Оптимизация кода по размеру и есть сокращение. Что касается пользы, то тут лучше всё в своё время. Сначала основное, а потом уже хитрости.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2015-02-24T06:09:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91879#p91879</id>
		</entry>
</feed>
