<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; Переход от gosub com1 к Com1(x,y,z,) в обычном кликере Лопание пузырей]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=10198</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10198&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Переход от gosub com1 к Com1(x,y,z,) в обычном кликере Лопание пузырей».]]></description>
		<lastBuildDate>Tue, 02 Dec 2014 00:42:27 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Переход от gosub com1 к Com1(x,y,z,) в обычном кликере Лопание пузырей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=88805#p88805</link>
			<description><![CDATA[<p>Странно вроде сформулировал правильно, или я уже заработался.<br />Попытка#2</p><p>Есть <strong>Работающий</strong> скрипт построенный на gosub хочу переделать его используя не gosub, а функции</p><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"><div class="codebox"><pre><code>
LMBmove:
{ 
Sleep 5
SendEvent {Click}
DllCall(&quot;mouse_event&quot;,uint,1,int,%Move_y1%,int,%Move_y1%,uint,0,int,0) 
}

*End:: gosub LMBmove
</code></pre></div></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"><div class="codebox"><pre><code>

LMBmove(x,y)
{ 
Sleep 5
SendEvent {Click}
DllCall(&quot;mouse_event&quot;,uint,1,int,x,int,y,uint,0,int,0) 
}

*End::  LMBmove(Move_x1, Move_y1)
</code></pre></div></div></div><p>что собственно я уже сделал, но я хочу по возможности вообще отказаться от gosub, если такое возможно, и перейти на использование функций но &quot;плаваю&quot; в синтаксисе и архитектуре построения функции, вот и обратился за помощью.</p><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"><div class="codebox"><pre><code>
LMB_unpress:
    if GetKeyState(&quot;vk23&quot;, &quot;P&quot;)
    KeyWait, vk23
        {    
        SendEvent {vk23 up}
        LMBmove(Move_x2, Move_y2)
        Diff_step := 0
        Move_x2 := 0
        Move_y2 := 0
        }
return  
</code></pre></div></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"><div class="codebox"><pre><code>
LMB_unpress(m_x2, m_y2)
{
    if GetKeyState(&quot;vk23&quot;, &quot;P&quot;)
    KeyWait, vk23
        {    
        SendEvent {vk23 up}
        LMBmove(m_x2, m_y2)
        Diff_step := 0
        M_x2 := 0
        M_y2 := 0
        }
}
return  
</code></pre></div></div></div><p>а вызов gosub LMB_Unpress</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>
LMBclick:
    {
    Settimer     LMB_search_a,         %Diff_b%
    gosub         LMB_search_a
    gosub         LMB_unpress
    }
return
</code></pre></div></div></div><p>заменить на</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>
LMBclick:
    {
    Settimer     LMB_search_a,         %Diff_b%
    gosub         LMB_search_a
    LMB_unpress(Move_x2, Move_y2)
    }
return
</code></pre></div></div></div><p>Но у меня что то не работает и AHK завершает работу.</p>]]></description>
			<author><![CDATA[null@example.com (S.shipilov)]]></author>
			<pubDate>Tue, 02 Dec 2014 00:42:27 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=88805#p88805</guid>
		</item>
		<item>
			<title><![CDATA[Re: Переход от gosub com1 к Com1(x,y,z,) в обычном кликере Лопание пузырей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=88801#p88801</link>
			<description><![CDATA[<p>Наверное не все поняли, что Вы хотите. Попробую прочитать мысли.</p><p>Имеется файл со списком координат. Необходимо:<br />1) Считать файл в переменную.<br />2) По нажатию End (vk23) произвести щелчок ЛКМ в координатах, взятых из списка. На каждый щелчок брать последующие координаты.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Mon, 01 Dec 2014 16:40:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=88801#p88801</guid>
		</item>
		<item>
			<title><![CDATA[Переход от gosub com1 к Com1(x,y,z,) в обычном кликере Лопание пузырей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=88797#p88797</link>
			<description><![CDATA[<p><strong>Добрый день(вечер. ночь) уважаемые форумчане!</strong></p><p>Вопрос связан с переходом от команды<em> gosub</em> к использованию <em>функции com1().</em><br />И так, есть работающий код, цель которого по заранее сформированному ini файлу кликать в определенное место на экране, в зависимости от первоначального положения курсора на экране. Первую часть кода не выдаю дабы не грузить лишней информацией но собственно она генерирует ini файл в зависимости от первоначального положения курсора. Ниже переведена вторая часть кода, которая, собственно, считывает данные из ini файла и выполняет клик по заданным координатам от начального положения курсора,&nbsp; при отжатии хоткея END возвращает курсор в изначальные координаты.</p><p><strong>у меня vk23 это END</strong></p><p>END = Выполнить скрипт<br />INS = suspend<br />DEL = Выход<br />HOME = Перезагрузка скрипта</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>
Process, Priority, , High
SetMouseDelay, 2
SetDefaultMouseSpeed 0
SetKeyDelay, 2
SetWorkingDir %A_ScriptDir%
#SingleInstance force
#NoEnv
#InstallKeybdHook
#InstallMouseHook


IniRead    ,    Diff,            res/ini/round1.ini    ,    round1 Settings,        Diff_a 

Diff_b := 60*1000/Diff

loop, 145
{
wer ++
IniRead    ,    x%wer%,            res/ini/round1.ini    ,    round1 search_a,        x%wer%
IniRead    ,    y%wer%,            res/ini/round1.ini    ,    round1 search_a,        y%wer%
}
return

LMBmove(x,y) 
{ 
Sleep 5
SendEvent {Click}
DllCall(&quot;mouse_event&quot;,uint,1,int,x,int,y,uint,0,int,0) 
}

LMBclick:
    {
    Settimer     LMB_search_a,         %Diff_b%
    gosub         LMB_search_a
    gosub         LMB_unpress
    }
return
        
LMB_unpress:
    if GetKeyState(&quot;vk23&quot;, &quot;P&quot;)
    KeyWait, vk23
        {    
        SendEvent {vk23 up}
        LMBmove(Move_x2, Move_y2)
        Diff_step := 0
        Move_x2 := 0
        Move_y2 := 0
        }
return        

LMB_search_a:
if GetKeyState(&quot;vk23&quot;, &quot;P&quot;)
    {
    Diff_step += 1
    gosub LMB_return
    LMBmove(Move_x1, Move_y1)
    }
    else
        {
        Settimer LMB_search_a, off
        }
return

LMB_return:
{
        Move_x1 := x%Diff_step%
        Move_x2 += -Move_x1
        Move_y1 := y%Diff_step%
        Move_y2 += -Move_y1
}
return


*End:: gosub LMBclick
*Ins:: Suspend
*Home::Reload
*Del:: ExitApp
</code></pre></div></div></div><p>Собственно у меня есть подозрения что код можно значительно упростить (оптимизировать) в т.ч. уходом от использования gosub к использованию функций вида LMBclick(Diff_b), но я испытываю некоторые сложности потому как&nbsp; сложить всё в одну функцию с присвоением её исполнения на хоткей END приводит к критическому завершению приложения AHK. бредокод полученный мной выкладывать не буду в виду его полной неработоспособности и прошу помочь мне разобраться поэтапно с упрощением работающего кода.</p><p><strong>Заранее благодарен.</strong></p><p>P.S. путь для размещения ini файла %root%\res\ini</p>]]></description>
			<author><![CDATA[null@example.com (S.shipilov)]]></author>
			<pubDate>Mon, 01 Dec 2014 14:44:10 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=88797#p88797</guid>
		</item>
	</channel>
</rss>
