 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 883 Wohnort: Zuhause
|
Verfasst am: Do Mai 15, 2008 3:56 pm Titel: |
|
|
| BoBo² hat Folgendes geschrieben: | Ternär hab ich den if-clause nicht hinbekommen  |
sollte so gehen:
| Code: | If (XOperator = 1) OR InStr(XPos,"-")
XPos += 1
Else
XPos -= 1
If (YOperator = 1) OR InStr(YPos,"-")
YPos += 1
Else
YPos -= 1
ist dasselbe wie
XPos := XPos + (((XOperator) || (XPos<0)) ? 1 : -1 )
YPos := YPos + (((YOperator) || (YPos<0)) ? 1 : -1 )
|
(nicht getestet)
grüße
derRaphael _________________
|
|
| Nach oben |
|
 |
Z Gecko Gast
|
Verfasst am: Do Mai 15, 2008 5:13 pm Titel: |
|
|
Ich würde, genau wie Bobo, gerne noch ein paar Details zu der Aufgabe hören.
Und ein paar Beispiel-Bilder sehen. An solchen Bildern könnte man die verschiedenen Methoden auch mal gegeneinander Testen.
Ich schätze mal, je größer das Objekt im Verhältnis zum Suchradius ist, desto günstiger wäre eine gerasterte PixelGetColor Funktion. Pixelsearch in Spalten wir um so günstiger, je kleiner das Objekt ist. |
|
| Nach oben |
|
 |
BoBo² Gast
|
Verfasst am: Fr Mai 16, 2008 1:19 pm Titel: |
|
|
Hier schon wie angedroht eine DllCall() Version
Resourcenverbrauch quasi '0' | Code: | -- Rechtshinweis: Der Dll-part des Scripts wurde von Sean gesriptet. --
#Persistent
OnExit, Bye
CoordMode, Pixel, Screen
SetTimer, RunningPoint, 1
MouseGetPos, MPosX, MPosY ; 'Punkt' an Mausposition plazieren
XPos := MPosX
YPos := MPosY
RunningPoint:
Random, XOperator, 1, 2
Random, YOperator, 1, 2
If (XOperator = 1) OR InStr(XPos,"-")
XPos += 2
Else
XPos -= 2
If (YOperator = 1) OR InStr(YPos,"-")
YPos += 2
Else
YPos -= 2
hRgn := DllCall( "CreateEllipticRgn", Int, XPos, Int, YPos, Int, XPos+8, Int, YPos+8)
hBr := DllCall( "CreateSolidBrush", UInt, 0x0000FF )
hDC := DllCall( "GetDC", UInt,0 )
DllCall( "FillRgn", UInt,hDC, UInt,hRgn, UInt,hBr )
DllCall("ReleaseDC", "uint", 0, "uint", hDC)
DllCall("DeleteObject", UInt,hBr)
Sleep 20
DllCall("RedrawWindow", "Uint", 0, "Uint", 0, "Uint", hRgn, "Uint", 0x81)
DllCall("DeleteObject", UInt,hRgn)
Return
Bye:
DllCall("RedrawWindow", "Uint", 0, "Uint", 0, "Uint", hRgn, "Uint", 0x81)
DllCall("DeleteObject", UInt,hRgn)
ExitApp |
|
|
| Nach oben |
|
 |
ChiLLed Gast
|
Verfasst am: Fr Mai 16, 2008 11:49 pm Titel: |
|
|
Um eure Fragen zu beantworten. Es handelt sich nicht um ein Spiel im besonderen, vielmehr versuche ich allgemein einen "aimbot" für klar identifizierbare Objekte aufstellen (das so etwas z.B in Counterstrike nutzlos ist dürfte klar sein).
Dein Ansatz ist interessant, allerdings passt es nicht ganz zu meinen Vorstellungen. Den ganzen Bildschirm abzuscannen ist nicht mein Ziel, jedenfalls bin ich dann nämlich dazu gezwungen zB mehrere Ziele zu unterscheiden (am leichtesten durch Entfernung von der Maus).
Ausserdem erschwert es ungemein die Bewegungsrichtung erkennung.
Ich hoffe ihr regt euch nicht über ein wenig Kritik auf. Anstatt verschiedene Ansätze aufzustellen wie es gehen oder "besser" gehen könnte, hättet ihr vll euch mal auf meine Probleme bzw. Fragen konzentrieren können. Ich habe hier Hilfe für mein Problem gesucht und dieses auch Klar hier formuliert. Ihr helft zwar, allerdings redet ihr an mir vorbei.
| Zitat: | | Wie mache ich jetzt einen Loop der mir bei jedem Durchlauf zwei neue Variablen herausgibt (und natürlich diese neuen Koordinaten für den nächsten Durchlauf benutzt)? (x1,y1; x2,y2; ....) |
|
|
| Nach oben |
|
 |
Z Gecko Gast
|
Verfasst am: So Mai 18, 2008 1:34 pm Titel: |
|
|
mit pixelsearch sieht das ungefähr so aus:
| Code: | setbatchlines -1
X1 := 1
X2 := 100
Y1 := 1
Y2 := 100
ColorID := 0x000000
yloop := Y2 - Y1
loop, %yloop%
{
X1temp := X1
Y := A_Index + Y1
loop
{
PixelSearch, OutputVarX, , %X1temp%, %Y%, %X2%, %Y%, %ColorID%, 5
if ErrorLevel = 0
{
matchx += OutputVarX
matchy += Y
match ++
found%match%x := OutputvarX
found%match%y := Y
X1temp := OutputVarX + 1
}
else
break
if ( X1temp >= X2 )
break
}
}
matchx := matchx / match
matchy := matchy / match
ListVars
MsgBox, %match% Matches. Average: x %matchx% - y %matchY%
|
|
|
| Nach oben |
|
 |
ChiLLed Gast
|
Verfasst am: Di Mai 20, 2008 8:21 am Titel: |
|
|
ich fahre in 3 Stunden nach Spanien, deswegen müssen wir diese Diskussion ein wenig vertagen. Bis nächste Woche  |
|
| Nach oben |
|
 |
ChiLLed Gast
|
Verfasst am: Do Jun 05, 2008 7:31 pm Titel: |
|
|
So, ich bin zurück und der ganze andere Stress is auch dahin.
Ich werde im laufe des Abends mal eine komplizierte unoptimierte Version meiner Idee umsetzten. Die Raster/Spalten Suche gefällt mir nach wie vor nicht, könnte aber vll noch nützlich werden wenn es darum geht den Ganzen Bildschirm nach zb. mehreren Zielen abzusuchen.
Später mehr. |
|
| Nach oben |
|
 |
ChiLLed Gast
|
Verfasst am: Fr Jun 06, 2008 2:16 am Titel: |
|
|
Eine erste Umsetzung
| Code: | f::
MouseGetPos, PosX, PosY
xa1 := PosX - 50
xa2 := PosX + 50
ya1 := PosY - 50
ya2 := PosY + 50
Pixelsearch, FX1, FY1, %xa1%, %ya1%, %xa2%, %ya2%, 0x0000CD, 50, Fast ;hier wird das erste mal anvisiert
MouseMove, %FX1%, %FY1%
Sleep, 50
xb1 := FX1 - 10
yb1 := FY1 - 10
xb2 := FX1 + 10
yb2 := FY1 + 10
Pixelsearch, FX2, FY2, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast ;jetzt werden 20 punkte ermittelt und das ziel gelocked...das hätte ich lieber in einer schleife umgesetzt ^^
MouseMove, %FX2%, %FY2%
Sleep, 50
xb1 := FX2 - 10
yb1 := FY2 - 10
xb2 := FX2 + 10
yb2 := FY2 + 10
Pixelsearch, FX3, FY3, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX3%, %FY3%
Sleep, 50
xb1 := FX3 - 10
yb1 := FY3 - 10
xb2 := FX3 + 10
yb2 := FY3 + 10
Pixelsearch, FX4, FY4, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX4%, %FY4%
Sleep, 50
xb1 := FX4 - 10
yb1 := FY4 - 10
xb2 := FX4 + 10
yb2 := FY4 + 10
Pixelsearch, FX5, FY5, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX5%, %FY5%
Sleep, 50
xb1 := FX5 - 10
yb1 := FY5 - 10
xb2 := FX5 + 10
yb2 := FY5 + 10
Pixelsearch, FX6, FY6, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX6%, %FY6%
Sleep, 50
xb1 := FX6 - 10
yb1 := FY6 - 10
xb2 := FX6 + 10
yb2 := FY6 + 10
Pixelsearch, FX7, FY7, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX7%, %FY7%
Sleep, 50
xb1 := FX7 - 10
yb1 := FY7 - 10
xb2 := FX7 + 10
yb2 := FY7 + 10
Pixelsearch, FX8, FY8, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX8%, %FY8%
Sleep, 50
xb1 := FX8 - 10
yb1 := FY8 - 10
xb2 := FX8 + 10
yb2 := FY8 + 10
Pixelsearch, FX9, FY9, %xa1%, %ya1%, %xa2%, %ya2%, 0x0000CD, 50, Fast
MouseMove, %FX9%, %FY9%
Sleep, 50
xb1 := FX9 - 10
yb1 := FY9 - 10
xb2 := FX9 + 10
yb2 := FY9 + 10
Pixelsearch, FX10, FY10, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX10%, %FY10%
Sleep, 50
xb1 := FX10 - 10
yb1 := FY10 - 10
xb2 := FX10 + 10
yb2 := FY10 + 10
Pixelsearch, FX11, FY11, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX11%, %FY11%
Sleep, 50
xb1 := FX11 - 10
yb1 := FY11 - 10
xb2 := FX11 + 10
yb2 := FY11 + 10
Pixelsearch, FX12, FY12, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX12%, %FY12%
Sleep, 50
xb1 := FX12 - 10
yb1 := FY12 - 10
xb2 := FX12 + 10
yb2 := FY12 + 10
Pixelsearch, FX13, FY13, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX13%, %FY13%
Sleep, 50
xb1 := FX13 - 10
yb1 := FY13 - 10
xb2 := FX13 + 10
yb2 := FY13 + 10
Pixelsearch, FX14, FY14, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX14%, %FY14%
Sleep, 50
xb1 := FX14 - 10
yb1 := FY14 - 10
xb2 := FX14 + 10
yb2 := FY14 + 10
Pixelsearch, FX15, FY15, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX15%, %FY15%
Sleep, 50
xb1 := FX15 - 10
yb1 := FY15 - 10
xb2 := FX15 + 10
yb2 := FY15 + 10
Pixelsearch, FX16, FY16, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX16%, %FY16%
Sleep, 50
xb1 := FX16 - 10
yb1 := FY16 - 10
xb2 := FX16 + 10
yb2 := FY16 + 10
Pixelsearch, FX17, FY17, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX17%, %FY17%
Sleep, 50
xb1 := FX17 - 10
yb1 := FY17 - 10
xb2 := FX17 + 10
yb2 := FY17 + 10
Pixelsearch, FX18, FY18, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX18%, %FY18%
Sleep, 50
xb1 := FX18 - 10
yb1 := FY18 - 10
xb2 := FX18 + 10
yb2 := FY18 + 10
Pixelsearch, FX19, FY19, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX19%, %FY19%
Sleep, 50
xb1 := FX19 - 10
yb1 := FY19 - 10
xb2 := FX19 + 10
yb2 := FY19 + 10
Pixelsearch, FX20, FY20, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX20%, %FY20%
Sleep, 50
xb1 := FX20 - 10
yb1 := FY20 - 10
xb2 := FX20 + 10
yb2 := FY20 + 10
Pixelsearch, FX21, FY21, %xb1%, %yb1%, %xb2%, %yb2%, 0x0000CD, 50, Fast
MouseMove, %FX21%, %FY21%
Sleep, 50 ;alle koords ermittelt, jetzt beginnt die regressionsberechnung
FXsum := FX1 + FX2 + FX3 + FX4 + FX5 + FX6 + FX7 + FX8 + FX9 + FX10 + FX11 + FX12 + FX13 + FX14 + FX15 + FX16 + FX17 + FX18 + FX19 + FX20 + FX21
FYsum := FY1 + FY2 + FY3 + FY4 + FY5 + FY6 + FY7 + FY8 + FY9 + FY10 + FY11 + FY12 + FY13 + FY14 + FY15 + FY16 + FY17 + FY18 + FY19 + FY20 + FY21
FXFYsum := FX1 * FY1 + FX2 * FY2 + FX3 * FY3 + FX4 * FY4 + FX5 * FY5 + FX6 * FY6 + FX7 * FY7 + FX8 * FY8 + FX9 * FY9 + FX10 * FY10 + FX11 * FY11 + FX12 * FY12 + FX13 * FY13 + FX14 * FY14 + FX15 * FY15 + FX16 * FY16 + FX17 * FY17 + FX18 * FY18 + FX19 * FY19 + FX20 * FY20 + FX21 * FY21
FXqrtsum := FX1 * FX1 + FX2 * FX2 + FX3 * FX3 + FX4 * FX4 + FX5 * FX5 + FX6 * FX6 + FX7 * FX7 + FX8 * FX8 + FX9 * FX9 + FX10 * FX10 + FX11 * FX11 + FX12 * FX12 + FX13 * FX13 + FX14 * FX14 + FX15 * FX15 + FX16 * FX16 + FX17 * FX17 + FX18 * FX18 + FX19 * FX19 + FX20 * FX20 + FX21 * FX21
Slope := (21 * FXFYsum - FXsum * FYsum) / (21 * FXqrtsum - FXsum * FXsum) ;slope heisst steigung und ist grob gesagt die bewegungsrichtung
TargetX := FX21 + 200 ;diese koordinaten stellen einen punkt auf der bewegungsrichtung dar, der faktor 200 ist variabel, jenachdem wie weit man vor das ziel zielen will
TargetY := FY21 + 200 * Slope
MouseMove, %TargetX%, %TargetY%
return |
|
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|