Duderde Guest
|
Posted: Sat Aug 23, 2008 1:43 pm Post subject: Problem with Click down right on different machines |
|
|
Hello everybody,
I have the following problem. I wrote a skript, which works fine for me. It was just for one for a repeating mouse movement in a game. I'll post it in the end. The problem is a friend of mine wanted to use it as well and has all the same resolutions but it doesnt work.
At one point you have to "Click down right" and this does not work for him. Maybe you had the same problem before and are able to help me.
Thx in advance. And here comes the script: (Don't get worried about the German or the length i marked the important part with a line of Exclamation marks.
;Ultimatives Mod-Mach-Skript....
;So also jetzt kommen erstmal zwei Zeilen, damit man das Skript 1. direkt abbrechen kann
;und 2. nach einer gewissen Zeit, weil man ja manchmal aus dem Händler fliegt...
;Das Skript funktioniert bei einer Desktopauflösung von 1680x1050 (zumindest bei mir)
;und einer Fensterauflösung von HGL von 1440x900
;Generell ist es so, dass Zeilen oder der Rest einer Zeile ein Kommentar ist, wenn ein Semikolon ( davor steht. Deswegen keine Semikolons löschen
;Hier müssen die Verzeichnisse angegeben werden, in denen die Skripte bzw. die "autohotkey.exe" liegen.
SkriptVerzeichnis = E:\Desktop\HGL\Skripte ;hier das Verzeichnis angeben, in dem die Skripte liegen
AutoHotKeyVerzeichnis = C:\Program Files (x86)\AutoHotkey ;hier Verzeichnis "autohotkey.exe"
;Diese Variablen sind entscheidend, wie lange das Skript läuft und wieviele LegMods erstellt werden bzw. wie lange das Skript läuft.
WelcherMod = 4 ;Festlegen welcher Mod, wenn x werden beim 6-er Händler alle außer Raketen erstellt
LegModsGewollt = 20 ; Wieviele Legendäre Items sollen es werden...
AnzMods = 2000 ;Wieviel Mods soll das Skript dafür erstellen
ZeitVorgabe = 30 ;Zeit in Minuten, nachdem das Skript abbricht, falls man das Skript ZeitAbbruch.ahk über STRG+Alt+Z startet
;Mausgeschwindigkeit und Pausen. Hier kann man ein bisschen rumprobieren, falls es nicht klappt.
MausGeschw = 0
PauseZerlegen = 500
Pause1 = 15
Pause2 = 15
PauseNachMausbewegung = 35
;Hier werden nun einige grundsätzliche Positionen und andere Variablen festgelegt. (Müssen bei gleicher Auflösung nicht verändert werden).
;Alle sind "im Fensterpositionen", also nicht die absoluten Desktoppositionen (wird später wichtig...).
APInvX = 1030 ;Ausgangsposition (AP) X im Inventar. Hier wird die erste Spalte in der Mitte des Kästchens angegeben.
APInvY = 280 ;Ausgangsposition Y im Inventar. Hier wird die dritte Zeile auch in der Mitte des Kästchens angegeben
AbInvX = 48 ;Abstand von Mitte zu Mitte eines Kästchens im Inventar in x-Richtung
AbInvY = 47 ;Abstand von Mitte zu Mitte eines Kästchens im Inventar in y-Richtung
APHY = 200 ;Ausgangsposition im Händler in Y-Richtung. Ist die Position vom ersten Mod, ungefähr in der Mitte (ist aber egal, Hauptsache der Mod wird getroffen)
APHX = 300 ;Ausgangsposition im Händler in X-Richtung. Ist die Position vom ersten Mod, ungefähr in der Mitte (ist aber egal, Hauptsache der Mod wird getroffen)
AbHY = 75 ;Abstand der Mods, von Mitte zu Mitte
PEKX = 630 ;Position des Erstellenknopfs in X-Richtung
PEKY = 460 ;Position des Erstellenknopfs in Y-Richtung
PWMVX = 720 ;X-Position der Warnung "Erst den alten rausnehmen"
PWMVY = 510 ;Y-Position der Warnung "Erst den alten rausnehmen"
PosMiModX = 550 ;X-Position des Mods in der Mitte (also nach dem Erstellen)
PosMiModY = 210 ;Y-Position des Mods in der Mitte (also nach dem Erstellen)
PosZerlX = 510 ;X-Position der "Schraube" wenn man Rechts auf den Mod in der Mitte klickt
PosZerlY = 180 ;Y-Position der "Schraube" wenn man Rechts auf den Mod in der Mitte klickt
PosZerlBestX = 649;X-Position des Zerlegen-Bestätigungsknopfs
PosZerlBestY = 512;Y-Position des Zerlegen-Bestätigungsknopfs
ModPosH = %WelcherMod%
LegModsAktuell = 0 ;Aktuelle Anzahl von Legendärenmods
SpalteInventar = 1
ZeileInventar = 1
;Die folgenden Positionen müssen ziemlich genau sein. Am besten einen Screenshot vom "Desktopfenster" . Desktop anzeigen (Windows+D), Hellgate im Fenstermodus in den Vordergrund
; nochmal auf Desktop klicken, dann mit STRG+Alt+Druck einen Screenshot machen und im Bildbearbeitungsprogramm der Wahl die genauen Positionen ermitteln. Ich habe den rechten Rand gewählt.
SuAnfX = 690 ;X-Position Anfang für die Farbsuche
SuAnfY = 240 ;Y-Position Anfang für die Farbsuche
SuEndX = 705 ;X-Position Ende für die Farbsuche
SuEndY = 260 ;Y-Position Ende für die Farbsuche
;Separate Skripte für Zeitabbruch oder Direktabbruch werden gestartet
Run, %AutoHotKeyVerzeichnis%\AutoHotkey.exe %SkriptVerzeichnis%\DirektAbbruch.ahk %SkriptVerzeichnis% ;Über STRG+Alt+D aufrufbar
Run, %AutoHotKeyVerzeichnis%\AutoHotkey.exe %SkriptVerzeichnis%\ZeitAbbruch.ahk %SkriptVerzeichnis% %ZeitVorgabe% ;Über STRG+Alt+Z aufrufbar
;eigentliches Skript startet hier
;man erkennt hier, dass es über STRG -->^, Alt --> ! und s aufgerufen wird. Die beiden Doppelpunkte sind nur zur Kennzeichnung da.
^!s::
SetMouseDelay %PauseNachMausbewegung%
Loop %AnzMods%
{
WinActivate, Hellgate:London (x64 DX9) ;Es wird in Hellgate gewechselt
;Jetzt werden die aktuellen Inventarpositionen festgelegt
AktPosInvX := APInvX + ((SpalteInventar - 1) * AbInvX)
AktPosInvY := APInvY + ((ZeileInventar - 1) * AbInvY)
AktPosH := APHY + ((ModPosH - 1) * AbHY)
MouseMove %APHX%,%AktPosH%, %MausGeschw% ;Auf ersten Mod im Händler bewegen...
Sleep %Pause2%
Click ;...dann da klicken
MouseMove %PEKX%, %PEKY%, %MausGeschw% ;Auf Erstellenknopf bewegen...
Sleep %Pause2%
Click ;...dann da klicken
Sleep %Pause2%
Click %PWMVX%,%PWMVY% ;Falls "Mod erst wegnehmen" - Warnung da ist, die Wegklicken
;Jetzt kommt die Farberkennung ins Spiel. Erst wird der Desktop aufgerufen. Dann wird von dort
;die Funktion "Pixelsearch" aufgerufen. Der Aufbau ist der Folgende...
;"PixelSearch", AusgabeXPosition der Farbe, AusgabeYPosition der Farbe, Suchbereich Anfang in X-Richtung,
;Suchbereich Ende in X-Richtung, Suchbereich Ende in Y-Richtung, Farbe im BGR-HexFormat , Abweichungsbereich, Art der Suche
;Die eigentliche Position der Farbe interessiert uns nicht. Aber man muss ihm Variablen geben. Die Pixelposition sind jetzt die
;absoluten Bildschirmpositionen, weil die Farberkennung nur funktioniert, wenn man sich im Desktop befindet. Die absolute
;Fensterposition sieht man auch im Windowspy.
;Zum Desktop wechseln.
WinActivate, Program Manager
PixelSearch, Px, Py, %SuAnfX%, %SuAnfY%, %SuEndX%, %SuEndY%, 0x014476, 20, Fast
;Hier wird jetzt der Mod entweder ins Inventar verschoben oder zerlegt.
;Falls die Farbe gefunden wurde...
if ErrorLevel = 0
{
;...Hellgate-Fenster aktivieren...
WinActivate, Hellgate:London (x64 DX9)
Sleep %Pause2%
MouseMove %PosMiModX%,%PosMiModY%, %MausGeschw% ;...Maus auf den legendären Mod bewegen...
Sleep %Pause2%
Click ;...dahin klicken, Mod wird aufgenommen...
Sleep %Pause1%
Click ;...nochmal klicken...
MouseMove %AktPosInvX%,%AktPosInvY%, %MausGeschw% ;...Maus an aktuelle Inventarposition bewegen...
Sleep %Pause2%
Click ;...dahin klicken, Mod wird abgelegt.
LegModsAktuell := LegModsAktuell + 1 ;Jetzt noch die aktuelle Anzahl der Mods hochzählen...
SpalteInventar := SpalteInventar + 1 ;...und für den nächsten Mod die nächste Spalte als Ablageposition festlegen.
Sleep %Pause2%
}
PixelSearch, Px, Py, %SuAnfX%, %SuAnfY%, %SuEndX%, %SuEndY%, 0x764401, 20, Fast
;Hier wird jetzt der Mod entweder ins Inventar verschoben oder zerlegt.
;Falls die Farbe gefunden wurde...
if ErrorLevel = 0
{
;...Hellgate-Fenster aktivieren...
WinActivate, Hellgate:London (x64 DX9)
Sleep %Pause2%
MouseMove %PosMiModX%,%PosMiModY%, %MausGeschw% ;...Maus auf den legendären Mod bewegen...
Sleep %Pause2%
Click ;...dahin klicken, Mod wird aufgenommen...
Sleep %Pause1%
Click ;...nochmal klicken...
MouseMove %AktPosInvX%,%AktPosInvY%, %MausGeschw% ;...Maus an aktuelle Inventarposition bewegen...
Sleep %Pause2%
Click ;...dahin klicken, Mod wird abgelegt.
LegModsAktuell := LegModsAktuell + 1 ;Jetzt noch die aktuelle Anzahl der Mods hochzählen...
SpalteInventar := SpalteInventar + 1 ;...und für den nächsten Mod die nächste Spalte als Ablageposition festlegen.
Sleep %Pause2%
}
else ;Wenn die Farbe nicht gefunden wurde, also sonst, ....
{
; .... Hellgate-Fenster aktivieren...
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WinActivate, Hellgate:London (x64 DX9)
Sleep %Pause2%
SendEvent {raw}{Click down right %PosMiModX%,%PosMiModY%}
Click down right ;...Maus auf den nicht-legendären Mod bewegen und rechte Maustaste nach unten drücken....
Sleep %Pause2%
SendEvent {raw} {Click up right %PosZerlX%,%PosZerlY%}
;...Maus auf die Schraube bewegen und rechte Maustaste loslassen...
Sleep %PauseZerlegen%
Click ;...Bestätigungsknopf Klicken. Geht ohne Position, weil die Maus vom Spiel dahin bewegt wird...
MouseMove %PosZerlBestX%,%PosZerlBestY%
Sleep %Pause2%
Click ;...um sicher zu gehen klicken wir mit dem Skript aber auch noch mal dahin...
MouseMove %PosZerlBestX%,%PosZerlBestY%
Sleep %Pause2%
Click ;...und nochmal!
}
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;Im folgenden Teil werden nun noch die Laufvariablen passend hochgezählt und beim 6-er Modhändler die Raketen ausgelassen.
if (WelcherMod == x)
{
ModPosH := ModPosH + 1
if (ModPosH = 7)
{
ModPosH := ModPosH - ModPosH
}
if (ModPosH = 2)
{
ModPosH = 3
}
}
if (SpalteInventar = 7)
{
SpalteInventar := SpalteInventar - SpalteInventar
ZeileInventar := ZeileInventar + 1
}
if (LegModsAktuell = LegModsGewollt)
{
Run, %SkriptVerzeichnis%\kill.bat
}
} |
|