Post by gregster » 26 Feb 2018, 15:41
Also meines Erachtens macht die Kombination von Timern und While-Loop in dieser Form keinen Sinn und führt zu nur schwer vorhersagbaren Effekten.
Ich kann mir kaum vorstellen, dass das Skript tatsächlich macht, was dir vorschwebt. Abgesehen davon, dass die Label klick1 und klick2 sowieso durch kein return abgeschlossen sind und so ein klick1 oder klick2 immer bis zum Ende von Klick3 durchläuft und die unterschiedlichen Zeiten der Timer so wahrscheinlich ad absurdum geführt werden.
Wahrscheinlich wäre es am besten die While-Schleife komplett zu entfernen, jedem Label ein abschließendes Return zu spendieren und dann den Zustand der Toggle-Variable in den jeweiligen Label-Routinen abzufragen (siehe unten).
Flickern tut bei mir eh nichts, aber ich hab auch kein Problem mit Groß- und Kleinschreibung, wenn das Skript läuft. Daher meine Frage, ob das Skript so komplett ist oder noch andere Skripte oder Remapping-Software parallel laufen - oder läuft immer ein Spiel wie WoW parallel? Vielleicht liegt es auch einfach an dem Spiel, das dem Skript in die Quere kommt. Hast du die Probleme auch, wenn das Spiel nicht läuft?
Aber zunächst solltest du dir überhaupt mal klar darüber werden, was dein Skript hier überhaupt tun soll und in welchen Abständen...
Und nochmal die Frage: Wie sieht das kürzeste Skript aus, dass zu den genannten Problemen führt?
Was wäre denn hiermit? Das macht für mich vom Ablauf her mehr Sinn. Ob die Klickerei so passt, kann ich natürlich nicht sagen, weil ich nicht weiß, was die bewirken soll.
Code: Select all
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#MaxThreadsPerHotkey 2
banana:=0
Settimer klick1, % 1 * 1000
Settimer klick2, % 10 * 1000
Settimer klick3, % 5 * 1000
return
F1::
banana:=!banana
return
klick1:
if(banana=1)
{
SetControlDelay 0
ControlClick, X3198 Y1244, ahk_class ahk_class Chrome_WidgetWin_1
ControlClick, X1936 Y1882, ahk_class ahk_class Chrome_WidgetWin_1
}
return
klick2:
if(banana=1)
{
SetControlDelay 0
ControlClick, X1031 Y759, ahk_class ahk_class Chrome_WidgetWin_1
Controlsend,, {3}, ahk_class ahk_class Chrome_WidgetWin_1
SetControlDelay -1
Controlsend,, {Left}, ahk_class ahk_class Chrome_WidgetWin_1
SetControlDelay -1
Controlsend,, {Enter}, ahk_class ahk_class Chrome_WidgetWin_1
SetControlDelay -1
ControlClick, X2301 Y1504, ahk_class ahk_class Chrome_WidgetWin_1
}
return
klick3:
if(banana=1)
{
SetControlDelay 0
ControlClick, X183 Y1682, ahk_class ahk_class Chrome_WidgetWin_1
ControlClick, X149 Y1514, ahk_class ahk_class Chrome_WidgetWin_1
}
return
f7::ExitApp
Also meines Erachtens macht die Kombination von Timern und While-Loop in dieser Form keinen Sinn und führt zu nur schwer vorhersagbaren Effekten.
Ich kann mir kaum vorstellen, dass das Skript tatsächlich macht, was dir vorschwebt. Abgesehen davon, dass die Label klick1 und klick2 sowieso durch kein return abgeschlossen sind und so ein klick1 oder klick2 immer bis zum Ende von Klick3 durchläuft und die unterschiedlichen Zeiten der Timer so wahrscheinlich ad absurdum geführt werden.
Wahrscheinlich wäre es am besten die While-Schleife komplett zu entfernen, jedem Label ein abschließendes Return zu spendieren und dann den Zustand der Toggle-Variable in den jeweiligen Label-Routinen abzufragen (siehe unten).
Flickern tut bei mir eh nichts, aber ich hab auch kein Problem mit Groß- und Kleinschreibung, wenn das Skript läuft. Daher meine Frage, ob das Skript so komplett ist oder noch andere Skripte oder Remapping-Software parallel laufen - oder läuft immer ein Spiel wie WoW parallel? Vielleicht liegt es auch einfach an dem Spiel, das dem Skript in die Quere kommt. Hast du die Probleme auch, wenn das Spiel nicht läuft?
Aber zunächst solltest du dir überhaupt mal klar darüber werden, was dein Skript hier überhaupt tun soll und in welchen Abständen...
Und nochmal die Frage: Wie sieht das kürzeste Skript aus, dass zu den genannten Problemen führt?
Was wäre denn hiermit? Das macht für mich vom Ablauf her mehr Sinn. Ob die Klickerei so passt, kann ich natürlich nicht sagen, weil ich nicht weiß, was die bewirken soll.
[code]#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#MaxThreadsPerHotkey 2
banana:=0
Settimer klick1, % 1 * 1000
Settimer klick2, % 10 * 1000
Settimer klick3, % 5 * 1000
return
F1::
banana:=!banana
return
klick1:
if(banana=1)
{
SetControlDelay 0
ControlClick, X3198 Y1244, ahk_class ahk_class Chrome_WidgetWin_1
ControlClick, X1936 Y1882, ahk_class ahk_class Chrome_WidgetWin_1
}
return
klick2:
if(banana=1)
{
SetControlDelay 0
ControlClick, X1031 Y759, ahk_class ahk_class Chrome_WidgetWin_1
Controlsend,, {3}, ahk_class ahk_class Chrome_WidgetWin_1
SetControlDelay -1
Controlsend,, {Left}, ahk_class ahk_class Chrome_WidgetWin_1
SetControlDelay -1
Controlsend,, {Enter}, ahk_class ahk_class Chrome_WidgetWin_1
SetControlDelay -1
ControlClick, X2301 Y1504, ahk_class ahk_class Chrome_WidgetWin_1
}
return
klick3:
if(banana=1)
{
SetControlDelay 0
ControlClick, X183 Y1682, ahk_class ahk_class Chrome_WidgetWin_1
ControlClick, X149 Y1514, ahk_class ahk_class Chrome_WidgetWin_1
}
return
f7::ExitApp[/code]