<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Вопросы по скрипту с таймерами.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15282&amp;type=atom" />
	<updated>2020-04-05T15:37:25Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=15282</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138892#p138892" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> <strong>serzh82saratov</strong><br />Спасибо большое за советы. Постараюсь разобраться.</p>]]></content>
			<author>
				<name><![CDATA[Bulef]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40368</uri>
			</author>
			<updated>2020-04-05T15:37:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138892#p138892</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138891#p138891" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Спасибо, забыл.<br /></p><div class="quotebox"><cite>Bulef пишет:</cite><blockquote><p>Я не смог разобраться как их прикрутить</p></blockquote></div><p>Вот простой пример наподобие вашего.<br /></p><div class="codebox"><pre><code>
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1

Add := 0
Gui, Margin, 10, 10
Gui, +HWNDhMain -DPIScale -Caption
Gui, Color, F9D886
Clock := New ClockGui(hMain, &quot;Sec|Clock|Pos xm y+10|w 200|h 60|ds 1|db 20|bckgmain F9D886|bckgitem F9D886|coloritem FFFFFF|Font s30 q4|Colon Flash&quot;)
Clock.Show()
Clock.StartClock() 
Gui, Add, Button, w90 h40, Удалить
Gui, Add, Button, wp hp x+20, Добавить
Gui Show
Return

ButtonДобавить:
	Y := 130 + Add * 70
	Add++
	Timer%Add% := New ClockGui(hMain, &quot;Sec|Timer|Pos xm y&quot; Y &quot;|w 200|h 60|ds 1|db 20|bckgmain 444444|bckgitem 212121|coloritem FFFFFF|Font s30 q4|Colon Flash&quot;)
	Timer%Add%.SetTime(&quot;0&quot; Add &quot;:00:00&quot;)
	Timer%Add%.Show()
	Timer%Add%.StartTimer()  
	Gui Show, % &quot;h&quot; Y + 70
	Return
	
ButtonУдалить:
	If Add = 0
		Return
	Timer%Add%.Destroy()
	Add--
	Gui Show, % &quot;h&quot; 130 + Add * 70
	Return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2020-04-05T15:05:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138891#p138891</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138890#p138890" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>hFunc1</p></blockquote></div><p>А зачем там &quot;h&quot;? Это не h, это o.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-04-05T14:57:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138890#p138890</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138889#p138889" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
hFunc1 := Func(&quot;FuncName&quot;).Bind(123)
hFunc2 := Func(&quot;FuncName&quot;).Bind(456)

SetTimer, % hFunc1, % &quot;-&quot; 1111
SetTimer, % hFunc2, % &quot;-&quot; 2222

FuncName(key) {
 	MsgBox,,,% key, 0.4
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2020-04-05T14:35:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138889#p138889</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138888#p138888" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />Спасибо большое. Совершенно не понял как это работает.<br />Очень крутые скрипт-часы Вы сделали. Я не смог разобраться как их прикрутить, по этому пришлось изобретать велосипед.</p><p>А что делать с таймерами (SetTimer)? Есть ли возможность создать таймер с переменной в названии?</p>]]></content>
			<author>
				<name><![CDATA[Bulef]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40368</uri>
			</author>
			<updated>2020-04-05T14:20:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138888#p138888</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138887#p138887" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
	If GuiToggle =
	{
		GuiToggleLastStatus =  
		loop % DllCall(&quot;ShowCursor&quot;) + 1
			DllCall(&quot;ShowCursor&quot;, &quot;Uint&quot;, 0)
	}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2020-04-05T13:46:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138887#p138887</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138886#p138886" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Bulef пишет:</cite><blockquote><p>должен быть скрыт курсор при наведении на окно с GUI</p></blockquote></div><p>Не совсем вас понял. GUI — это и есть окно.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-04-05T13:36:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138886#p138886</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138878#p138878" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> <strong>serzh82saratov</strong><br />Поколдовал немого. Вот урезанная версия. Проблема всё ещё проявляется.</p><p>После запуска, требуется нажать &quot;`&quot; два раза, для перехода в режим редактирования.<br />Нужно добавить часы.<br />После добавления часов, переходим в режим отображения, и тут проблема. В режиме отображения, должен быть скрыт курсор при наведении на окно с GUI, но этого не происходит. Видимо, я не до конца понимаю как работает DllCall(&quot;ShowCursor&quot;, &quot;Uint&quot;, 0) и упускаю какую-то важную деталь.<br /></p><div class="codebox"><pre><code>; Начало открывающего блока

#SingleInstance Force
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

SplitPath, A_ScriptName, , , , ScriptName

SetTitleMatchMode, 2

; Конец открывающего блока

; Начало Exit

GoTo, WrappingAroundExit ; Начало обтекания строк.

#Persistent
!sc02D:: ; Alt + X
ExitApp

WrappingAroundExit: ; Конец обтекания строк.

; Конец Exit

; Начало GTA5AHK


#InstallKeybdHook
#InstallMouseHook
SetBatchLines -1

GuiToggle =
TextColor = White
TextColor2 = Red
BackColor = Black
TransColor = 7a7a7a ; 010000 Чёрный 7a7a7a Серый feffff Белый
SizeForWindow = % A_ScreenHeight/135

SetTimer, RefreshGui, 0


GoTo, WrappingGTA5AHK ; Начало обтекания строк.

SortClocksNumbers() ; Сортировка часов по номеру.
{
	Global ClocksNumbers
	
	LargestClockNumber = 0
	Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
	{
		If A_LoopField &gt; %LargestClockNumber%
			LargestClockNumber = %A_LoopField%
	}
	
	ClockNumber = 0
	Loop
	{
		ClockNumber2 = %LargestClockNumber%
		Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
		{
			If A_LoopField &gt; %ClockNumber%
			{
				If A_LoopField &lt; %ClockNumber2%
					ClockNumber2 = %A_LoopField%
			}
		}
		ClockNumber = %ClockNumber2%
		If ClockNumber = 0
		{}
		Else
		AssortedClocksNumbers = % AssortedClocksNumbers ClockNumber &quot; &quot;
		
		If ClockNumber = %LargestClockNumber%
			Break
		Else
			Continue
	}
	Return AssortedClocksNumbers
}


ClockOperations:
ClockOperations()
Return

ClockOperations() ; Операции добавления и удаления.
{
	Global
	Local ClockHours, ClockMinutes
	
	SetTimer, ClockOperations, Delete
	
	If ClockNumber is not Integer
	{}
	Else
	If ClockNumber = 0
	{}
	Else
	If ClockOptions = Add
	{
		ClocksNumbers = % ClocksNumbers ClockNumber &quot; &quot;
		ClocksNumbers = % SortClocksNumbers()
		
		Clock%ClockNumber% = Exist
		Clock%ClockNumber%Number = %ClockNumber%
		
		ClockOptions =
	}
	Else
	If ClockOptions = Delete
	{
		StringReplace, ClocksNumbers, ClocksNumbers, % ClockNumber &quot; &quot;, , 
		ClocksNumbers = % SortClocksNumbers()
		
		Clock%ClockNumber% =
		Clock%ClockNumber%Number =
		
		ClockOptions =
	}
}


ButtonДобавить: ; Clock%ClockNumber%Add
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	ClockNumber = %AddNumber%
	ClockOptions = Add
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return

ButtonУдалить: ; Clock%ClockNumber%Delete
If RefreshGuiStatus = 
{
	ClockOptions = %A_GuiControl%
	StringTrimLeft, ClockOptions, ClockOptions, 5
	StringTrimRight, ClockOptions, ClockOptions, 6
	ClockNumber = %ClockOptions%
	ClockOptions = Delete
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return


RefreshGui:
RefreshGui()
Return

RefreshGui() ; Создание и обновление GUI
{
	Global
	Local ClockNumber, ClockHours, ClockMinutes, IntegerStatus
	
	SetTimer, RefreshGui, Delete
	
	TextSizeForWindow = % SizeForWindow
	ElementSizeForWindow = % TextSizeForWindow+7+(TextSizeForWindow*0.50)
	XForWindow = % A_ScreenWidth/20
	YForWindow = % A_ScreenHeight/5*3
	
	Gui, Destroy
	
	
	Gui, +AlwaysOnTop +LastFound +Owner
	Gui, Color, %TransColor%, %BackColor% 
	Gui, Font, s%TextSizeForWindow% c%TextColor%
	
	
	TimeString = % &quot;00:00&quot;
	Gui, Add, Text, vTimeForWindow H%ElementSizeForWindow%, % TimeString
	If GuiToggle =
		Gui, Add, Text, H%ElementSizeForWindow% ys yp, % &quot;Режим с прозрачным курсором.&quot;
	
	If GuiToggle = On
	{
		Loop
		{
			If Clock%A_Index% &lt;&gt;
				Continue
			If Clock%A_Index% =
			{
				AddNumber = %A_Index%
				Break
			}
		}
		Gui, Add, Edit, vAddNumber H%ElementSizeForWindow% ys yp, % AddNumber
		Gui, Add, Button, H%ElementSizeForWindow% ys yp, Добавить
	}
	
	Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
	{
		If A_LoopField =
			Break
		
		ClockNumber = %A_LoopField%
		
		Gui, Add, Text, vClock%ClockNumber%Number H%ElementSizeForWindow% xs Section, % Clock%ClockNumber%Number
		
		Clock%ClockNumber%Time = 00:00
		
		Gui, Add, Text, vClock%ClockNumber%Time H%ElementSizeForWindow% ys yp, % Clock%ClockNumber%Time
		
		
		If GuiToggle = On
		{
			Gui, Add, Button, vClock%ClockNumber%Delete H%ElementSizeForWindow% ys yp, Удалить
		}
		
		Continue
	}
	
		
	Gui, -Caption
	If GuiToggle =
		Gui, Show, x%XForWindow% y%YForWindow% NA
	Else
	If GuiToggle = On
		Gui, Show, x%XForWindow% y%YForWindow%
	
	WinGet, AHKWindow, ID, GTA5AHK, , , 
	
	
	If GuiToggle =
	{
		GuiToggleLastStatus = 
		DllCall(&quot;ShowCursor&quot;, &quot;Uint&quot;, 0)
	}
	Else
	If GuiToggle = On
	{
		GuiToggleLastStatus = On
		DllCall(&quot;ShowCursor&quot;, &quot;Uint&quot;, 1)
	}
}


$sc029:: ; ~
Send {sc029 Down}
KeyWait, sc029, T0.2
If ErrorLevel = 0
{
	KeyWait, sc029, D T0.2
	If ErrorLevel = 0
	{
		If GuiToggle = On
		{
			GuiToggle =
			SetTimer, RefreshGui, 0
		}
		Else
		If GuiToggle =
		{
			GuiToggle = On
			SetTimer, RefreshGui, 0
		}
		KeyWait, sc029
		Send {sc029 Up}
		TildeStatus =
		Return
	}
}
Else
If ErrorLevel
	KeyWait, sc029
Send {sc029 Up}

Return


WrappingGTA5AHK: ; Конец обтекания строк.

; Конец GTA5AHK</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Bulef]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40368</uri>
			</author>
			<updated>2020-04-05T10:49:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138878#p138878</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138865#p138865" />
			<content type="html"><![CDATA[<p>У вас слишком большой пример кода, могу только ответить тем же <a href="http://forum.script-coding.com/viewtopic.php?pid=131726#p131726">http://forum.script-coding.com/viewtopi … 26#p131726</a>.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2020-04-04T18:57:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138865#p138865</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138864#p138864" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Извините. Я попробую что-нибудь придумать.</p>]]></content>
			<author>
				<name><![CDATA[Bulef]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40368</uri>
			</author>
			<updated>2020-04-04T18:56:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138864#p138864</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138863#p138863" />
			<content type="html"><![CDATA[<p><strong>Bulef</strong>, вряд ли кто-то захочет разбирать скрипт на 1000 строк. Попробуйте создать максимально короткий скрипт, демонстрирующий проблему.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-04-04T18:55:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138863#p138863</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Вопросы по скрипту с таймерами.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138862#p138862" />
			<content type="html"><![CDATA[<p>Здравствуйте. Основной скрипт, представляет из себя GUI с секундомером, таймером или будильником.<br />Возникло несколько вопросов в процессе:<br />1. Не могу сделать точные таймеры. Возникает десинхронизация с временем с запозданием на 20-50% от нормы, если использовать простые циклы. Очень хочется реализовать через функцию таймера, но я не понимаю как создать таймеры с переменной в названии, так как таймеров понадобится много. Можно конечно заранее заготовить, к примеру 10 таймеров, но хотелось бы решение поэлегантнее.<br />2. Не могу никак разобраться с принципами работы DllCall(&quot;ShowCursor&quot;, &quot;Uint&quot;, 0). При первом запуске удаётся скрыть курсор, но более эта функция не работает в моём скрипте. В чём проблема, не пойму.</p><p>Два раза &quot;`&quot; - переключить режим интерфейса. Полный режим и режим отображения.<br />В режиме отображения, &quot;`&quot; - скрывает интерфейс.<br />Для запуска часов, зажмите &quot;`&quot;, наберите полный номер таймера с помощью строки цифр и отожмите &quot;`&quot;.<br /></p><div class="codebox"><pre><code>; GTA5AHK
; Версия 1.07
; \GTA5AHK\Test versions\GTA5AHK 1.07 TEST

; Начало открывающего блока

#SingleInstance Force
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

SplitPath, A_ScriptName, , , , ScriptName

SetTitleMatchMode, 2

; Конец открывающего блока

; Начало Exit

GoTo, WrappingAroundExit ; Начало обтекания строк.

#Persistent
!sc02D:: ; Alt + X
ExitApp

WrappingAroundExit: ; Конец обтекания строк.

; Конец Exit

; Начало GTA5AHK

#InstallKeybdHook
#InstallMouseHook
SetBatchLines -1

GuiToggle =
TextColor = White
TextColor2 = Red
BackColor = Black
TransColor = 7a7a7a ; 010000 Чёрный 7a7a7a Серый feffff Белый
SizeForWindow = % A_ScreenHeight/135
PollingFrequency = 10
UpdateFrequency = 100

SetTimer, RefreshClocks, %PollingFrequency%
SetTimer, RefreshGui, 0


GoTo, WrappingGTA5AHK ; Начало обтекания строк.

$LButton::
MouseGetPos, , , MouseWindow, , 
If MouseWindow = % AHKWindow
{
	If GuiToggle =
	If AHKWindowStatus =
	{
		AHKWindowStatus = Hide
		Gui, Show, Hide
	}
	
	Send {LButton Down}
	
	If AHKWindowStatus = Hide
	{
		AHKWindowStatus =
		Gui, Show, NA
	}
	
	KeyWait, LButton
	Send {LButton Up}
}
Else
{
	Send {LButton Down}
	KeyWait, LButton
	Send {LButton Up}
}
Return


$RButton::
MouseGetPos, , , MouseWindow, , 
If MouseWindow = % AHKWindow
{
	If GuiToggle =
	If AHKWindowStatus =
	{
		AHKWindowStatus = Hide
		Gui, Show, Hide
	}
	
	Send {RButton Down}
	
	If AHKWindowStatus = Hide
	{
		AHKWindowStatus =
		Gui, Show, NA
	}
	
	KeyWait, RButton
	Send {RButton Up}
}
Else
{
	Send {RButton Down}
	KeyWait, RButton
	Send {RButton Up}
}
Return


$MButton::
MouseGetPos, , , MouseWindow, , 
If MouseWindow = % AHKWindow
{
	If GuiToggle =
	If AHKWindowStatus =
	{
		AHKWindowStatus = Hide
		Gui, Show, Hide
	}
	
	Send {MButton Down}
	
	If AHKWindowStatus = Hide
	{
		AHKWindowStatus =
		Gui, Show, NA
	}
	
	KeyWait, MButton
	Send {MButton Up}
}
Else
{
	Send {MButton Down}
	KeyWait, MButton
	Send {MButton Up}
}
Return


SortClocksNumbers()
{
	Global ClocksNumbers
	
	LargestClockNumber = 0
	Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
	{
		If A_LoopField &gt; %LargestClockNumber%
			LargestClockNumber = %A_LoopField%
	}
	
	ClockNumber = 0
	Loop
	{
		ClockNumber2 = %LargestClockNumber%
		Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
		{
			If A_LoopField &gt; %ClockNumber%
			{
				If A_LoopField &lt; %ClockNumber2%
					ClockNumber2 = %A_LoopField%
			}
		}
		ClockNumber = %ClockNumber2%
		If ClockNumber = 0
		{}
		Else
		AssortedClocksNumbers = % AssortedClocksNumbers ClockNumber &quot; &quot;
		
		If ClockNumber = %LargestClockNumber%
			Break
		Else
			Continue
	}
	Return AssortedClocksNumbers
}


ProcessExecution()
{
	Global
	Local LocalProcessNumber, LocalSubProcess
	LocalProcessNumber = % ProcessNumber
	LocalSubProcess = % SubProcess
	
	
	If %LocalSubProcess%ProcessNumber =
	{
		Process%LocalProcessNumber%MaxNumber = 0
		
		If Process%LocalProcessNumber%Queue =
		{
			%LocalSubProcess%ProcessNumber = 1
			Process%LocalProcessNumber%Queue = % Process%LocalProcessNumber%Queue %LocalSubProcess%ProcessNumber &quot; &quot;
		}
		Else
		Loop, Parse, Process%LocalProcessNumber%Queue, %A_Space%, %A_Space%
		{
			If A_LoopField =
			{
				%LocalSubProcess%ProcessNumber = % Process%LocalProcessNumber%MaxNumber+1
				Process%LocalProcessNumber%Queue = % Process%LocalProcessNumber%Queue %LocalSubProcess%ProcessNumber &quot; &quot;
				Break
			}
			Process%LocalProcessNumber%MaxNumber = %A_LoopField%
			Continue
		}
	}
	
	If %LocalSubProcess%ProcessNumber &lt;&gt;
	{
		If (Process%LocalProcessNumber%CurrentNumber = %LocalSubProcess%ProcessNumber OR Process%LocalProcessNumber%CurrentNumber = &quot;&quot;)
		{
			%LocalSubProcess%()
			StringReplace, Process%LocalProcessNumber%Queue, Process%LocalProcessNumber%Queue, % %LocalSubProcess%ProcessNumber &quot; &quot;, , 
			%LocalSubProcess%ProcessNumber =
			
			If Process%LocalProcessNumber%Queue =
				Process%LocalProcessNumber%CurrentNumber =
			Else
			Loop, Parse, Process%LocalProcessNumber%Queue, %A_Space%, %A_Space%
			{
				If A_Index = 1
				{
					Process%LocalProcessNumber%CurrentNumber = %A_LoopField%
					Break
				}
			}
		}
		Else
		If Process%LocalProcessNumber%CurrentNumber &lt;&gt; % %LocalSubProcess%ProcessNumber
		{
			SetTimer, %LocalSubProcess%, 10
			Return
		}
	}
}


RefreshClocks:
RefreshClocks()
Return

RefreshClocks()
{
	Global
	Local ClockNumber, ClockHours, ClockMinutes
	
	FormatTime, ClockHours, , HH
	FormatTime, ClockMinutes, , mm
	FullCurrentTime = % (ClockHours*3600+ClockMinutes*60)*1000
	FormatTime, TimeString, , HH:mm
	GuiControl, , TimeForWindow, % TimeString
	
	Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
	{
		If A_LoopField =
			Break
		
		ClockNumber = %A_LoopField%
		
		If Clock%ClockNumber% = Started
		{
			If Clock%ClockNumber%Type = StopWatch
			{
				Clock%ClockNumber%FullTime += %PollingFrequency%
				
				Continue
			}
			Else
			If Clock%ClockNumber%Type = Timer
			{
				If Clock%ClockNumber%FullTime &gt; 0
					Clock%ClockNumber%FullTime -= %PollingFrequency%
				Else
				If Clock%ClockNumber%FullTime &lt;= 0
					Clock%ClockNumber% = EndedUpdate
				
				Continue
			}
			Else
			If Clock%ClockNumber%Type = AlarmClock
			{
				If FullCurrentTime &gt;= % Clock%ClockNumber%TargetFullTime
				{
					Clock%ClockNumber%FullTime = % Clock%ClockNumber%TargetFullTime
					Clock%ClockNumber% = EndedUpdate
				}
				Else
					Clock%ClockNumber%FullTime = % FullCurrentTime
				
				Continue
			}
		}
	}
}


ClockDelimiterUpdate:
SetTimer, ClockDelimiterUpdate, 1000
ClockDelimiterUpdateStatus = On
If ClockDelimiter = % &quot;:&quot;
	ClockDelimiter = % &quot; &quot;
Else
If ClockDelimiter = % &quot; &quot;
	ClockDelimiter = % &quot;:&quot;
Else
If ClockDelimiter =
	ClockDelimiter = % &quot; &quot;
ClockDelimiterUpdateStatus =
Return


UpdateGui:
ProcessNumber = 1
SubProcess = UpdateGui
ProcessExecution()
Return

UpdateGui()
{
	Global
	Local ClockNumber, ClockHours, ClockMinutes
	
	SetTimer, UpdateGui, %UpdateFrequency%
	
	Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
	{
		If A_LoopField =
			Break
		
		ClockNumber = %A_LoopField%
		
		
		If GuiToggle =
		{
			If Clock%ClockNumber% = Started
			{
				ClockHours = % Floor(Floor(Clock%ClockNumber%FullTime/1000)/3600)
				ClockMinutes = % Floor((Floor(Clock%ClockNumber%FullTime/1000)-(ClockHours*3600))/60)
				
				If ClockHours &lt; 10
					Clock%ClockNumber%Time = % &quot;0&quot; ClockHours 
				Else
					Clock%ClockNumber%Time = % ClockHours
					
				If ClockMinutes &lt; 10
					Clock%ClockNumber%Time = % Clock%ClockNumber%Time ClockDelimiter &quot;0&quot; ClockMinutes
				Else
					Clock%ClockNumber%Time = % Clock%ClockNumber%Time ClockDelimiter ClockMinutes
				
				
				GuiControl, , Clock%ClockNumber%Time, % Clock%ClockNumber%Time
				
				Continue
			}
			Else
			If Clock%ClockNumber% = EndedUpdate
			{
				ClockHours = % Floor(Floor(Clock%ClockNumber%FullTime/1000)/3600)
				ClockMinutes = % Floor((Floor(Clock%ClockNumber%FullTime/1000)-(ClockHours*3600))/60)
				
				
				If ClockHours &lt; 10
					Clock%ClockNumber%Time = % &quot;0&quot; ClockHours 
				Else
					Clock%ClockNumber%Time = % ClockHours
					
				If ClockMinutes &lt; 10
					Clock%ClockNumber%Time = % Clock%ClockNumber%Time &quot;:&quot; &quot;0&quot; ClockMinutes
				Else
					Clock%ClockNumber%Time = % Clock%ClockNumber%Time &quot;:&quot; ClockMinutes
				
				
				Gui, Font, c%TextColor2%
				GuiControl, Font, Clock%ClockNumber%Time
				GuiControl, , Clock%ClockNumber%Time, % Clock%ClockNumber%Time
				Gui, Font, c%TextColor%
		
				Clock%ClockNumber% = Ended
				
				Continue
			}
		}
	}
}


ClockOperations:
ProcessNumber = 1
SubProcess = ClockOperations
ProcessExecution()
Return

ClockOperations()
{
	Global
	Local ClockHours, ClockMinutes
	
	SetTimer, ClockOperations, Delete
	
	If ClockNumber is not Integer
	{}
	Else
	If ClockNumber = 0
	{}
	Else
	If ClockOptions = Add
	{
		ClocksNumbers = % ClocksNumbers ClockNumber &quot; &quot;
		ClocksNumbers = % SortClocksNumbers()
		
		Clock%ClockNumber% = Exist
		Clock%ClockNumber%Number = %ClockNumber%
		Clock%ClockNumber%Type = StopWatch
		Clock%ClockNumber%Name = Часы №%ClockNumber%
		Clock%ClockNumber%Time = 00:00
		Clock%ClockNumber%FullTime = 0
		Clock%ClockNumber%TargetFullTime = 0
		
		ClockOptions =
	}
	Else
	If ClockOptions = Delete
	{
		StringReplace, ClocksNumbers, ClocksNumbers, % ClockNumber &quot; &quot;, , 
		ClocksNumbers = % SortClocksNumbers()
		
		Clock%ClockNumber% =
		Clock%ClockNumber%Number =
		Clock%ClockNumber%Type =
		Clock%ClockNumber%Name =
		Clock%ClockNumber%Time =
		Clock%ClockNumber%FullTime =
		Clock%ClockNumber%TargetFullTime =
		
		ClockOptions =
	}
	Else
	If ClockOptions = TypeChange
	{
		If Clock%ClockNumber%Type = StopWatch
		{
			Clock%ClockNumber%Type = Timer
			Clock%ClockNumber%FullTime = % Clock%ClockNumber%TargetFullTime
			Clock%ClockNumber% = Exist
		}
		Else
		If Clock%ClockNumber%Type = Timer
		{
			Clock%ClockNumber%Type = AlarmClock
			Clock%ClockNumber%FullTime = % Clock%ClockNumber%TargetFullTime
			Clock%ClockNumber% = Exist
		}
		Else
		If Clock%ClockNumber%Type = AlarmClock
		{
			Clock%ClockNumber%Type = StopWatch
			Clock%ClockNumber%FullTime = 0
			Clock%ClockNumber% = Exist
		}
	}
	Else
	If ClockOptions = Up
		Clock%ClockNumber%Number = % ClockNumber - 1
	Else
	If ClockOptions = Down
		Clock%ClockNumber%Number = % ClockNumber + 1
	Else
	If ClockOptions = ChangeClockStatus
	{
		If Clock%ClockNumber%Type = StopWatch
		{
			If Clock%ClockNumber% = Exist
				Clock%ClockNumber% = Started
			Else
			If Clock%ClockNumber% = Started
			{
				Clock%ClockNumber%TargetFullTime = % Clock%ClockNumber%FullTime
				Clock%ClockNumber% = EndedUpdate
			}
			Else
			If Clock%ClockNumber% = Ended
			{
				Clock%ClockNumber%FullTime = 0
				Clock%ClockNumber%Time = % &quot;00:00&quot;
				
				Gui, Font, c%TextColor%
				GuiControl, Font, Clock%ClockNumber%Time
				GuiControl, , Clock%ClockNumber%Time, % Clock%ClockNumber%Time
				Clock%ClockNumber% = Exist
			}
		}
		Else
		If Clock%ClockNumber%Type = Timer
		{
			If Clock%ClockNumber% = Exist
			{
				Clock%ClockNumber%FullTime = % Clock%ClockNumber%TargetFullTime
				Clock%ClockNumber% = Started
			}
			Else
			If (Clock%ClockNumber% = &quot;Started&quot; OR Clock%ClockNumber% = &quot;Ended&quot;)
			{
				Clock%ClockNumber%FullTime = % Clock%ClockNumber%TargetFullTime
				
				ClockHours = % Floor(Floor(Clock%ClockNumber%TargetFullTime/1000)/3600)
				ClockMinutes = % Floor((Floor(Clock%ClockNumber%TargetFullTime/1000)-(ClockHours*3600))/60)
				
				If ClockHours &lt; 10
					Clock%ClockNumber%Time = % &quot;0&quot; ClockHours 
				Else
					Clock%ClockNumber%Time = % ClockHours
					
				If ClockMinutes &lt; 10
					Clock%ClockNumber%Time = % Clock%ClockNumber%Time &quot;:&quot; &quot;0&quot; ClockMinutes
				Else
					Clock%ClockNumber%Time = % Clock%ClockNumber%Time &quot;:&quot; ClockMinutes
				
				Gui, Font, c%TextColor%
				GuiControl, Font, Clock%ClockNumber%Time
				GuiControl, , Clock%ClockNumber%Time, % Clock%ClockNumber%Time
				Clock%ClockNumber% = Exist
			}
		}
		Else
		If Clock%ClockNumber%Type = AlarmClock
		{
			If Clock%ClockNumber% = Exist
			{
				Clock%ClockNumber%FullTime = % FullCurrentTime
				Clock%ClockNumber% = Started
			}
			Else
			{
				Clock%ClockNumber%FullTime = % Clock%ClockNumber%TargetFullTime
				
				ClockHours = % Floor(Floor(Clock%ClockNumber%TargetFullTime/1000)/3600)
				ClockMinutes = % Floor((Floor(Clock%ClockNumber%TargetFullTime/1000)-(ClockHours*3600))/60)
				
				If ClockHours &lt; 10
					Clock%ClockNumber%Time = % &quot;0&quot; ClockHours 
				Else
					Clock%ClockNumber%Time = % ClockHours
					
				If ClockMinutes &lt; 10
					Clock%ClockNumber%Time = % Clock%ClockNumber%Time &quot;:&quot; &quot;0&quot; ClockMinutes
				Else
					Clock%ClockNumber%Time = % Clock%ClockNumber%Time &quot;:&quot; ClockMinutes
				
				Gui, Font, c%TextColor%
				GuiControl, Font, Clock%ClockNumber%Time
				GuiControl, , Clock%ClockNumber%Time, % Clock%ClockNumber%Time
				Clock%ClockNumber% = Exist
			}
		}
	}
	ClockNumber =
	
	Local ClockNumber, NextClockNumber
	
	Local Clock0
	Local Clock0Type
	Local Clock0Name
	Local Clock0Time
	Local Clock0FullTime
	Local Clock0TargetFullTime
	
	Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
	{
		If A_LoopField =
			Break
		
		ClockNumber = %A_LoopField%
		
		
		If Clock%ClockNumber%Number &lt;&gt; ClockNumber
		{
			If Clock%ClockNumber%Number = 0
				Clock%ClockNumber%Number = %ClockNumber%
			Else
			{
				NextClockNumber = % Clock%ClockNumber%Number
				Clock%ClockNumber%Number = %ClockNumber%
				Clock%NextClockNumber%Number = %NextClockNumber%
				
				
				Clock0 = % Clock%ClockNumber%
				Clock0Type = % Clock%ClockNumber%Type
				Clock0Name = % Clock%ClockNumber%Name
				Clock0Time = % Clock%ClockNumber%Time
				Clock0FullTime = % Clock%ClockNumber%FullTime
				Clock0TargetFullTime = % Clock%ClockNumber%TargetFullTime
				
				Clock%ClockNumber% = % Clock%NextClockNumber%
				Clock%ClockNumber%Type = % Clock%NextClockNumber%Type
				Clock%ClockNumber%Name = % Clock%NextClockNumber%Name
				Clock%ClockNumber%Time = % Clock%NextClockNumber%Time
				Clock%ClockNumber%FullTime = % Clock%NextClockNumber%FullTime
				Clock%ClockNumber%TargetFullTime = % Clock%NextClockNumber%TargetFullTime
				
				Clock%NextClockNumber% = % Clock0
				Clock%NextClockNumber%Type = % Clock0Type
				Clock%NextClockNumber%Name = % Clock0Name
				Clock%NextClockNumber%Time = % Clock0Time
				Clock%NextClockNumber%FullTime = % Clock0FullTime
				Clock%NextClockNumber%TargetFullTime = % Clock0TargetFullTime
				
				Clock0 =
				Clock0Type =
				Clock0Name =
				Clock0Time =
				Clock0FullTime =
				Clock0TargetFullTime =
				
				
				If Clock%ClockNumber% &lt;&gt;
					ClocksNumbers = % ClocksNumbers ClockNumber &quot; &quot;
				Else
					StringReplace, ClocksNumbers, ClocksNumbers, % ClockNumber &quot; &quot;, , 
				
				If Clock%NextClockNumber% &lt;&gt;
					ClocksNumbers = % ClocksNumbers NextClockNumber &quot; &quot;
				Else
					StringReplace, ClocksNumbers, ClocksNumbers, % NextClockNumber &quot; &quot;, , 
				
				ClocksNumbers = % SortClocksNumbers()
				
				
				Continue
			}
		}
	}
}


ButtonОбновить:
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return

ButtonСекундомер: ; Clock%ClockNumber%Type StopWatch
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	ClockOptions = %A_GuiControl%
	StringTrimLeft, ClockOptions, ClockOptions, 5
	StringTrimRight, ClockOptions, ClockOptions, 4
	ClockNumber = %ClockOptions%
	ClockOptions = TypeChange
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return

ButtonТаймер: ; Clock%ClockNumber%Type Timer
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	ClockOptions = %A_GuiControl%
	StringTrimLeft, ClockOptions, ClockOptions, 5
	StringTrimRight, ClockOptions, ClockOptions, 4
	ClockNumber = %ClockOptions%
	ClockOptions = TypeChange
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return

ButtonБудильник: ; Clock%ClockNumber%Type AlarmClock
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	ClockOptions = %A_GuiControl%
	StringTrimLeft, ClockOptions, ClockOptions, 5
	StringTrimRight, ClockOptions, ClockOptions, 4
	ClockNumber = %ClockOptions%
	ClockOptions = TypeChange
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return

ButtonДобавить: ; Clock%ClockNumber%Add
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	ClockNumber = %AddNumber%
	ClockOptions = Add
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return

ButtonУдалить: ; Clock%ClockNumber%Delete
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	ClockOptions = %A_GuiControl%
	StringTrimLeft, ClockOptions, ClockOptions, 5
	StringTrimRight, ClockOptions, ClockOptions, 6
	ClockNumber = %ClockOptions%
	ClockOptions = Delete
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return

Button/\: ; Clock%ClockNumber%Up
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	ClockOptions = %A_GuiControl%
	StringTrimLeft, ClockOptions, ClockOptions, 5
	StringTrimRight, ClockOptions, ClockOptions, 2
	ClockNumber = %ClockOptions%
	ClockOptions = Up
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return

Button\/: ; Clock%ClockNumber%Down
If RefreshGuiStatus = 
{
	Gui, Submit, NoHide
	ClockOptions = %A_GuiControl%
	StringTrimLeft, ClockOptions, ClockOptions, 5
	StringTrimRight, ClockOptions, ClockOptions, 4
	ClockNumber = %ClockOptions%
	ClockOptions = Down
	SetTimer, ClockOperations, 0
	SetTimer, RefreshGui, 0
}
Return


RefreshGui:
ProcessNumber = 1
SubProcess = RefreshGui
ProcessExecution()
Return

RefreshGui()
{
	Global
	Local ClockNumber, ClockHours, ClockMinutes, IntegerStatus
	
	SetTimer, UpdateGui, Delete
	SetTimer, ClockDelimiterUpdate, Delete
	SetTimer, RefreshGui, Delete
	
	TextSizeForWindow = % SizeForWindow
	ElementSizeForWindow = % TextSizeForWindow+7+(TextSizeForWindow*0.50)
	XForWindow = % A_ScreenWidth/20
	YForWindow = % A_ScreenHeight/5*3
	
	Gui, Destroy
	
	
	Gui, +AlwaysOnTop +LastFound +Owner
	Gui, Color, %TransColor%, %BackColor% 
	Gui, Font, s%TextSizeForWindow% c%TextColor%
	
	FormatTime, TimeString, , HH:mm
	Gui, Add, Edit, vTimeForWindow H%ElementSizeForWindow%, % TimeString
	
	If GuiToggle = On
	{
		Gui, Add, Button, Default H%ElementSizeForWindow% ys yp, Обновить
		
		Loop
		{
			If Clock%A_Index% &lt;&gt;
				Continue
			If Clock%A_Index% =
			{
				AddNumber = %A_Index%
				Break
			}
		}
		Gui, Add, Edit, vAddNumber H%ElementSizeForWindow% ys yp, % AddNumber
		Gui, Add, Button, H%ElementSizeForWindow% ys yp, Добавить
	}
	
	Loop, Parse, ClocksNumbers, %A_Space%, %A_Space%
	{
		If A_LoopField =
			Break
		
		ClockNumber = %A_LoopField%
		
		
		If GuiToggleLastStatus = On
		{
			StringTrimRight, ClockHours, Clock%ClockNumber%Time, 3
			StringTrimLeft, ClockMinutes, Clock%ClockNumber%Time, 3
			
			IntegerStatus =
			
			If ClockHours is Integer
				IntegerStatus = Yes
			
			If IntegerStatus = Yes
			If ClockMinutes is Integer
				{}
			Else
				IntegerStatus =
			
			If IntegerStatus = Yes
				Clock%ClockNumber%TargetFullTime = % (ClockHours*3600+ClockMinutes*60)*1000
		}
		
		Gui, Add, Edit, vClock%ClockNumber%Number H%ElementSizeForWindow% xs Section, % Clock%ClockNumber%Number
		Gui, Add, Edit, vClock%ClockNumber%Name H%ElementSizeForWindow% ys yp, % Clock%ClockNumber%Name
		
		If GuiToggle = On
		{
			ClockHours = % Floor(Floor(Clock%ClockNumber%TargetFullTime/1000)/3600)
			ClockMinutes = % Floor((Floor(Clock%ClockNumber%TargetFullTime/1000)-(ClockHours*3600))/60)
		}
		Else
		If GuiToggle =
		{
			If Clock%ClockNumber%Type = StopWatch
			{
				ClockHours = % Floor(Floor(Clock%ClockNumber%FullTime/1000)/3600)
				ClockMinutes = % Floor((Floor(Clock%ClockNumber%FullTime/1000)-(ClockHours*3600))/60)
			}
			Else
			If Clock%ClockNumber%Type = Timer
			{
				ClockHours = % Floor(Floor(Clock%ClockNumber%TargetFullTime/1000)/3600)
				ClockMinutes = % Floor((Floor(Clock%ClockNumber%TargetFullTime/1000)-(ClockHours*3600))/60)
			}
			Else
			If Clock%ClockNumber%Type = AlarmClock
			{
				Clock%ClockNumber%FullTime = % FullCurrentTime
				Clock%ClockNumber% = Started
				ClockHours = % Floor(Floor(Clock%ClockNumber%FullTime/1000)/3600)
				ClockMinutes = % Floor((Floor(Clock%ClockNumber%FullTime/1000)-(ClockHours*3600))/60)
			}
		}
		
		If ClockHours &lt; 10
			Clock%ClockNumber%Time = % &quot;0&quot; ClockHours 
		Else
			Clock%ClockNumber%Time = % ClockHours
			
		If ClockMinutes &lt; 10
			Clock%ClockNumber%Time = % Clock%ClockNumber%Time &quot;:&quot; &quot;0&quot; ClockMinutes
		Else
			Clock%ClockNumber%Time = % Clock%ClockNumber%Time &quot;:&quot; ClockMinutes
		
		If (GuiToggle = &quot;On&quot; OR Clock%ClockNumber% = &quot;Started&quot; OR Clock%ClockNumber% = &quot;Exist&quot;)
			Gui, Font, c%TextColor%
		Else
		If (Clock%ClockNumber% = &quot;Ended&quot; OR Clock%ClockNumber% = &quot;EndedUpdate&quot;)
			Gui, Font, c%TextColor2%
		
		Gui, Add, Edit, vClock%ClockNumber%Time H%ElementSizeForWindow% ys yp, % Clock%ClockNumber%Time
		Gui, Font, c%TextColor%
		
		If GuiToggle = On
		{
			Gui, Add, Button, vClock%ClockNumber%Up H%ElementSizeForWindow% ys yp, /\
			Gui, Add, Button, vClock%ClockNumber%Down H%ElementSizeForWindow% ys yp, \/
		
			If Clock%ClockNumber%Type = StopWatch
				Gui, Add, Button, vClock%ClockNumber%Type H%ElementSizeForWindow% ys yp, Секундомер
			Else
			If Clock%ClockNumber%Type = Timer
				Gui, Add, Button, vClock%ClockNumber%Type H%ElementSizeForWindow% ys yp, Таймер
			Else
			If Clock%ClockNumber%Type = AlarmClock
				Gui, Add, Button, vClock%ClockNumber%Type H%ElementSizeForWindow% ys yp, Будильник
			
			Gui, Add, Button, vClock%ClockNumber%Delete H%ElementSizeForWindow% ys yp, Удалить
		}
		
		Continue
	}
	
	
	If GuiToggle =
		WinSet, TransColor, %TransColor% 128
	Else
	If GuiToggle = On
		WinSet, TransColor, %TransColor%
		
	Gui, -Caption
	If GuiToggle =
		Gui, Show, x%XForWindow% y%YForWindow% NA
	Else
	If GuiToggle = On
		Gui, Show, x%XForWindow% y%YForWindow%
	
	WinGet, AHKWindow, ID, GTA5AHK, , , 
	
	
	If GuiToggle =
	{
		GuiToggleLastStatus = 
		SetTimer, UpdateGui, 0
		SetTimer, ClockDelimiterUpdate, 0
		DllCall(&quot;ShowCursor&quot;, &quot;Uint&quot;, 0)
	}
	Else
	If GuiToggle = On
	{
		GuiToggleLastStatus = On
		DllCall(&quot;ShowCursor&quot;, &quot;Uint&quot;, 1)
	}
}


$sc029:: ; ~
Send {sc029 Down}
ClockNumber =
TildeStatus = On
KeyWait, sc029, T0.2
If ErrorLevel = 0
{
	KeyWait, sc029, D T0.2
	If ErrorLevel = 0
	{
		If GuiToggle = On
		{
			GuiToggle =
			SetTimer, RefreshGui, 0
		}
		Else
		If GuiToggle =
		{
			GuiToggle = On
			SetTimer, RefreshGui, 0
		}
		KeyWait, sc029
		Send {sc029 Up}
		TildeStatus =
		Return
	}
}
Else
If ErrorLevel
	KeyWait, sc029
Send {sc029 Up}
TildeStatus =

If ClockNumber =
{
	If GuiToggle =
	If AHKWindowStatus =
	{
		AHKWindowStatus = Hide
		Gui, Show, Hide
	}
	Else
	If AHKWindowStatus = Hide
	{
		AHKWindowStatus =
		Gui, Show, NA
	}
}
Else
If ClockNumber &lt;&gt;
{
	ClockOptions = ChangeClockStatus
	SetTimer, ClockOperations, 0
	SetTimer, UpdateGui, 10
}
Return


$sc002:: ; 1
Send {sc002 Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%1
KeyWait, sc002
Send {sc002 Up}
Return

$sc003:: ; 2
Send {sc003 Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%2
KeyWait, sc003
Send {sc003 Up}
Return

$sc004:: ; 3
Send {sc004 Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%3
KeyWait, sc004
Send {sc004 Up}
Return

$sc005:: ; 4
Send {sc005 Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%4
KeyWait, sc005
Send {sc005 Up}
Return

$sc006:: ; 5
Send {sc006 Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%5
KeyWait, sc006
Send {sc006 Up}
Return

$sc007:: ; 6
Send {sc007 Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%6
KeyWait, sc007
Send {sc007 Up}
Return

$sc008:: ; 7
Send {sc008 Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%7
KeyWait, sc008
Send {sc008 Up}
Return

$sc009:: ; 8
Send {sc009 Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%8
KeyWait, sc009
Send {sc009 Up}
Return

$sc00A:: ; 9
Send {sc00A Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%9
KeyWait, sc00A
Send {sc00A Up}
Return

$sc00B:: ; 0
Send {sc00B Down}
If TildeStatus = On
	ClockNumber = %ClockNumber%0
KeyWait, sc00B
Send {sc00B Up}
Return

sc04E:: ; Num+
Send {sc04E Down}
If TildeStatus = On
{
	SizeForWindow += 2
	SetTimer, RefreshGui, 0
}
KeyWait, sc04E
Send {sc04E Up}
Return

sc04A:: ; Num-
Send {sc04A Down}
If TildeStatus = On
{
	SizeForWindow -= 2
	SetTimer, RefreshGui, 0
}
KeyWait, sc04A
Send {sc04A Up}
Return


WrappingGTA5AHK: ; Конец обтекания строк.

; Конец GTA5AHK</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Bulef]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40368</uri>
			</author>
			<updated>2020-04-04T18:45:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138862#p138862</id>
		</entry>
</feed>
