|
You last visited: Today at 18:39
Advertisement
HitBox
Discussion on HitBox within the AutoIt forum part of the Coders Den category.
01/20/2013, 19:16
|
#1
|
elite*gold: 0
Join Date: Jan 2013
Posts: 6
Received Thanks: 0
|
HitBox
Hallo an alle,
bin neu hier, begrüße alle und lasse mich begrüßen ;-) .
Bin derzeit auf der Suche nach einer sogenannten Hitbox, also das nicht eine Koordinate als Auslöser dient sondern, ich geb vier Koordinaten an, die jeweils immer parallel zueinander liegen.
Ergibt dann entweder ein Quadrat oder ein Rechteck und wenn sich die gewählte Farbe in diesem Bereich befindet, dann klicke. Habe selbst schon einmal versucht aber es gelingt mir nicht.
Und nach langem suchen auch da keinen Erfolg.
Gibt es da einen einfachen Lösungsweg oder geht das schon wieder ins kompliziertere?
Mit einer Koordinate bekomme ich es hin, nur die Box ist für mich nicht lösbar.
Ich bedanke mich im voraus für eure Hilfe,
lG
|
|
|
01/20/2013, 19:48
|
#2
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
Deine beschreibung passt irgendwie auf die 
oder meinst du was anderes?
kleines beispiel:
PHP Code:
$pSearch = PixelSearch(0, 0, 1919, 1079, 0xFFFFFF) If IsArray($pSearch) Then MouseClick("left", $pSearch[0], $pSearch[1]) EndIf
|
|
|
01/20/2013, 23:46
|
#3
|
elite*gold: 0
Join Date: Jan 2013
Posts: 6
Received Thanks: 0
|
Dankeschön, so etwas habe ich gesucht.
Gibt es noch eine Möglichkeit, wenn Farbe in Box, dann klicke aber mache Rechteck kleiner und warte, bis Farbe wieder in Box und mache dann wieder kleiner usw.?
Hört sich jetz zwar etwas kompliziert an aber möglich wäre es doch bestimmt, auf
Irgendeine Art.
|
|
|
01/21/2013, 11:05
|
#4
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
Einfache abfragen erstellen..
PHP Code:
HotKeySet("{ESC}","end")
While Sleep(100)
$bereich1 = PixelSearch(0, 0, 1023, 767, 0xFFFFFF)
$bereich2 = PixelSearch(201, 159, 775, 574, 0xFFFFFF)
$bereich3 = PixelSearch(425, 367, 539, 449, 0xFFFFFF)
If IsArray($bereich1) Then
If IsArray($bereich2) Then
If IsArray($bereich3) Then
MsgBox("Info", "Pixel gefunden", "Gesuchte Farbe gefunden:" & @CR & "X: " & $bereich3[0] & @CR & "Y: " & $bereich3[1])
MouseClick("left", $bereich3[0], $bereich3[1])
EndIf
EndIf
EndIf
WEnd
Func end()
Exit
EndFunc
|
|
|
01/21/2013, 12:08
|
#5
|
elite*gold: 0
Join Date: Jan 2013
Posts: 6
Received Thanks: 0
|
Auch dafür ein dickes Lob.
Hab mir das ganze jetz etwas schwieriger vorgestellt. Ich kann aber ganz normal auch ein then für den Mausklick in Suche 1u2 einbauen, ohne eine weitere Suche, falls ich schon in Suche 3 bin, einbüßen zu müssen, oder?
Also z.b. grünes Quadrat wandert in Suchfeld 1, Maus klickt.
In Suchfeld 2 erscheint aber wieder so ein grünes Quadrat doch das erste grüne befindet sich immer noch im ersten SFenster. Wird jetzt hier auch auf das erste reagiert oder spielt in dem Moment nur die zweite Suche seine Rolle?
Hoffe man versteht es und Danke im voraus!
|
|
|
01/21/2013, 13:24
|
#6
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
MfG
|
|
|
01/21/2013, 16:06
|
#7
|
elite*gold: 0
Join Date: Jan 2013
Posts: 6
Received Thanks: 0
|
Ist der else Operator nicht dafür da, wenn Anweisung nicht eintrifft, dann springe zur nächsten. Ist ja ein sonst.
Ist Farbe grün in Suchfeld 1, führe aus, sonst warte bis dato und dann fahre fort zur 2.Suche.
Kann ich die Else's einfach dazu quetschen?
|
|
|
01/21/2013, 20:45
|
#8
|
elite*gold: 235
Join Date: Jan 2012
Posts: 920
Received Thanks: 377
|
Ich habe ein großes Tutorial über AutoIT gemacht dort sollte deine Frage beantwortet werden:
|
|
|
01/21/2013, 21:16
|
#9
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
PHP Code:
While Sleep(100) $bereich1 = PixelSearch(0, 0, 1023, 767, 0xFFFFFF) $bereich2 = PixelSearch(201, 159, 775, 574, 0xFFFFFF)
If IsArray($bereich1) Then ;wenn farbe im 1. bereich gefunden wird MsgBox("","","Farbe innerhalb des ersten bereichs gefunden") ;führe das aus ;und das ;und das If IsArray($bereich2) Then ;und diese abfrage auch. MsgBox("","","auch im 2. bereich wurde deine farbe gefunden") ;tuhe dies Else ;bereich 1 wurde gefunden, die msg ausgegeben und die 3 zeilen dadrunter ausgeführt, aber die abfrage ist fehlgeschlagen ;also führe nun das aus MsgBox("","","farbe im 2. bereich nicht gefunden") EndIf Else;wenn die farbe im 1. bereich nicht gefunden wurde ;führe irgendwas anderes aus Sleep(100);z. B. nichts, bis halt die farbe im 1. bereich gefunden wurde (eig. überflüssig..) EndIf WEnd
ist das so verständlich?
am besten die links oben anschauen, wird auch schön erklärt..
oder noch besser, was willst du denn machen?
vllt. gibts bessere/einfachere wege dies zu lösen.
|
|
|
01/22/2013, 09:53
|
#10
|
elite*gold: 0
Join Date: Jan 2013
Posts: 6
Received Thanks: 0
|
Ich brauche diesen, ich nenne es mal Bot zur Hilfe, zum programmieren eines Flash-Games.
Ich habe es vorher mit Java developed, dennoch werden, durch ein transparent jFrame die Farben ziemlich verfälscht.
Also habe ich mir gedacht, probier ich mal Autoit.
Was ich nun brauche sind ca. 15-20 Abfragen, von wegen, ist im ersten Kasten die Farbe grün, wenn ja, dann schalte erste Abfrage auf Standby(um hier keine weitere Ausführung zu tätigen), führe Aktion aus und gehe über zur zweiten Abfrage. Diesmal ist der Kasten kleiner und wartet auch darauf ein grünes Quadrat zu verschlingen un so geht das bis alle Abfragen positiv sind.
Nun wird es doch aber mit so vielen if's und else's ziemlich unübersichtlich, kann dafür auf irgendeine Art und Weise auch switch case verwendet werden?
|
|
|
01/23/2013, 21:59
|
#11
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by Serester
Was ich nun brauche sind ca. 15-20 Abfragen, von wegen, ist im ersten Kasten die Farbe grün, wenn ja, dann schalte erste Abfrage auf Standby(um hier keine weitere Ausführung zu tätigen), führe Aktion aus und gehe über zur zweiten Abfrage. Diesmal ist der Kasten kleiner und wartet auch darauf ein grünes Quadrat zu verschlingen un so geht das bis alle Abfragen positiv sind.
kann dafür auf irgendeine Art und Weise auch switch case verwendet
|
Switch case führt alles aus. Ifs kannst du verschachteln
Code:
If $arg1 Then
_1()
If $arg2 Then
_2()
If $arg3 Then
_3()
If $arg4 Then
_4()
If $arg5 Then
_5()
If $arg6 Then
_6()
If $arg7 Then
_7()
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
€dit: Würde dazu aber eine Funktion mit Parametern benutzen, sonst wird das unübersichtlich.
€dit2: Zeig mal deinen Code.
MfG
|
|
|
01/24/2013, 09:06
|
#12
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Achat
Switch case führt alles aus. Ifs kannst du verschachteln
Code:
If $arg1 Then
_1()
If $arg2 Then
_2()
If $arg3 Then
_3()
If $arg4 Then
_4()
If $arg5 Then
_5()
If $arg6 Then
_6()
If $arg7 Then
_7()
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
€dit: Würde dazu aber eine Funktion mit Parametern benutzen, sonst wird das unübersichtlich.
€dit2: Zeig mal deinen Code.
MfG
|
dieser sachverhalt lässt sich auch recht einfach in einer funktion abarbeiten:
Code:
Dim $dataArray[10] = [0,1,2,3,4,5,6,7,8,9]
Dim $conditionArray[10] = [1,1,1,1,1,1,1,1,1,1]
RecursiveWay($dataArray, $conditionArray)
IterativeWay($dataArray, $conditionArray)
Func RecursiveWay($dataArray, $conditionArray, $i=0)
If $i>=UBound($dataArray) Or Not $conditionArray[$i] Then Return True
ConsoleWrite($dataArray[$i]&@CRLF)
Return RecursiveWay($dataArray, $conditionArray, $i+1)
EndFunc
Func IterativeWay($dataArray, $conditionArray)
For $i=0 To UBound($dataArray)-1
If $conditionArray[$i] Then
ConsoleWrite($dataArray[$i]&@CRLF)
Else
ExitLoop
EndIf
Next
EndFunc
|
|
|
01/24/2013, 13:19
|
#13
|
elite*gold: 0
Join Date: Jan 2013
Posts: 6
Received Thanks: 0
|
Also, dass mit der Funktion verstehe ich Null  .
Und richtig verschachteln lassen sich die if´s auch nicht.
Das Programm führt Suche 3, wenn sich das Quadrat darin befindet dauerhaft aus. Befindet sich das Quadrat jedoch in Suchbox 1, dann werden alle 3 Bereiche chronologisch und dauerhaft ausgeführt.
Hier, der Code
Code:
HotKeySet("{ESC}","end")
While (100)
$box1 = PixelSearch(360, 90, 1000, 620, 0x80FF00)
$box2 = PixelSearch(390, 120, 810, 530, 0x80FF00)
$box3 = PixelSearch(430, 300, 600, 430, 0x80FF00)
If IsArray($box1) Then
MouseClick("left",1260,100)
If IsArray($box2) Then
MouseClick("left",1230,200)
If IsArray($box3) Then
MouseClick("left",1200,300)
EndIf
EndIf
EndIf
WEnd
Func end()
Exit
EndFunc
Wahrscheinlich versteh ich das ganze nicht richtig.
Habe auch schon versucht umzucoden und alles mögliche versucht aber ohne Erfolg.
 
|
|
|
01/24/2013, 13:41
|
#14
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Serester
Also, dass mit der Funktion verstehe ich Null  .
Und richtig verschachteln lassen sich die if´s auch nicht.
Das Programm führt Suche 3, wenn sich das Quadrat darin befindet dauerhaft aus. Befindet sich das Quadrat jedoch in Suchbox 1, dann werden alle 3 Bereiche chronologisch und dauerhaft ausgeführt.
Hier, der Code
Code:
HotKeySet("{ESC}","end")
While (100)
$box1 = PixelSearch(360, 90, 1000, 620, 0x80FF00)
$box2 = PixelSearch(390, 120, 810, 530, 0x80FF00)
$box3 = PixelSearch(430, 300, 600, 430, 0x80FF00)
If IsArray($box1) Then
MouseClick("left",1260,100)
If IsArray($box2) Then
MouseClick("left",1230,200)
If IsArray($box3) Then
MouseClick("left",1200,300)
EndIf
EndIf
EndIf
WEnd
Func end()
Exit
EndFunc
Wahrscheinlich versteh ich das ganze nicht richtig.
Habe auch schon versucht umzucoden und alles mögliche versucht aber ohne Erfolg.
  
|
so könnte das ganze mit der iterativen variante mit deinem code aussehen:
Code:
HotKeySet("{ESC}","end")
Dim $box[3], $coors[UBound($box)][2] = [[1260,100],[1230,200],[1200,300]]
While 1
$box[0] = PixelSearch(360, 90, 1000, 620, 0x80FF00)
$box[1] = PixelSearch(390, 120, 810, 530, 0x80FF00)
$box[2] = PixelSearch(430, 300, 600, 430, 0x80FF00)
For $i=0 To UBound($coors)-1
If IsArray($box[$i]) Then
MouseClick("left",$coors[$i][0],$coors[$i][1])
Else
ExitLoop
EndIf
Next
WEnd
Func end()
Exit
EndFunc
|
|
|
 |
Similar Threads
|
GTA sa hitbox marker
04/07/2015 - Grand Theft Auto - 2 Replies
Hallo ich würde gerne wissen wie man den Hitboxmarker Instaliert
HitBoX MarKeR 0.3e ~ RELEASED!!! - YouTube
:confused::confused::confused:
|
MTA HitBox
06/16/2013 - Grand Theft Auto - 26 Replies
Gibt es ein Serverseitiges Script für die Hitbox, so dass Kirby Mod etc nichts nutzen?
|
[S]SA-MP Hitbox mod o.ä [B]Psc
08/25/2012 - Grand Theft Auto - 3 Replies
Hey, ich spiele seit längere Zeit SA-MP.
Nun suche ich eine Skin/Mod/exe was auch immer, um die Hitbox der anderen Spieler einzublenden.
Ich hoffe ihr versteht was ich meine & bitte dont flame, das ist ein Hackerforum.
addet mich bitte in Skype.
skype: whitesza1
|
CSS Hitbox Problem
12/22/2010 - Counter-Strike - 3 Replies
Hallo zusammen,
Ich wollte das ich im Spiel die Hitboxen sehe, also in CSS.
Hab als erstes sv_cheats 1 eingebebn , das hat geklappt.
( Hab das alles in einem eigenen server gemacht.)Dann hab ich
sv_showhitboxes 2 in die console eingegeben dann stand da:
"Unknown command: sv_showhitboxes". Kann mir jemand weiterhelfen?
Ich bedanke mich im vorraus :D
|
Hitbox
04/07/2010 - General Gaming Discussion - 16 Replies
Hallöchen.
Kann mir wer sagen wie man die Größe der Hitboxn ändert?
Vom Gefühl her müsste es die models.ini sein aber sicher bin ich mir nicht und wenn doch welche(n) Wert(e) muss man ändern?
Bitte um Hilfe
Thx
|
All times are GMT +1. The time now is 18:44.
|
|