Nostale Holzhacken Bot [HELP]

12/01/2009 20:16 odolwa77#1
Also Leute Folgendes:

Ich hab mir überlegt für Holzhacken selber einen Bot zu machen.
Ich hab sehr geringe Kenntnisse aber schonmal eine Grund Idee:
Im Internet hab ich dieses Basis Script gefunden,das ist für
das Spiel Curve Ball (Quelle:[Only registered and activated users can see links. Click Here To Register...]

Quote:
While 1
$BallPosition = PixelSearch(118, 336, 587, 647, 0xE2FFDB, 15)
If IsArray($BallPosition) Then
MouseMove($BallPosition[0], $BallPosition[1], 1)
EndIf
WEnd
Ich hab mir gedacht dieses Script ein bisel zu verändern aber ich hab eine Sache net ganz verstanden , Die Variable $BallPosition wird ja in
einen Array gewandelt aber wieso muss man dann "($BallPosition[0], $BallPosition[1], 1)" schreiben ?

Das ist das erste Problem so...

Nun komm ich zu dem wie ich mir gedacht habe das umzuscheiben:

Quote:
While 1
$LS = PixelSearch(0,0,0,0,0x000000,0)
If IsArray($LS) Then
Send ("{left}")
EndIf


$RS = PixelSearch(0,0,0,0,0x000000,0)
If IsArray($RS) Then
Send ("{right}")
EndIf
WEnd

Die Nullen werden dann von den Koordinaten und der Farbe des Holzstammes ersetzt wo ich gleich zu komme

Hier mal das Bild wo das in etwa beschireben ist:

[Only registered and activated users can see links. Click Here To Register...]

Also wie ihr seht brauche ich 2 Suchzonen eine für den linkenschlag (blau)
und eine für den rechten schlag (rot)

Die kleinen grünen Punkte kennzeichnen die Orte wo man mit dem Window InfoTool suchen muss und der Lila Punkt die farbe des Holzstammes

Nunden jetzt habt ihr meine eigentliche Idee.
Ich möchte gern von euch Tipps haben oder überhaupt wissen ob das möglich ist bitte schnell antworten^^
12/01/2009 20:22 BesteDiegoxD#2
Es geht viel einfacher mit Cheat Engine kann dir dabei helfen^^
12/01/2009 20:50 odolwa77#3
CE benutzt ich schon seid 2 Monaten Via MultiClient xD

Will dabei AFK gehen KB 4-5 stunden lang links und rechts zu drücken^^
12/01/2009 21:05 Trøjan#4
Natürlich is das möglich aber es gibt 2 Möglichkeiten:
1. Die Möglichkeit an einem Punkt die Farbe mit PixelGetColor zu überprüfen und wenn sie sich verändert, also wenn ein Stamm kommt dann schlägt er zu.

2. Deine Möglichkeit ist mit PixelSearch. PixelSearch prüft nur ob in dem von dir bestimmten bereich ein Pixel ist der die Farbe hat die du angegeben hast.
Also musst du die Farbe eines Pixels von einem Baumstamm herausfinden und in in Pixelsearch eintragen.
Hier nochmal im Script:

Code:
$LS = PixelSearch(0,0,0,0,Braune_frabe_eines_Stammes,15)
If IsArray($LS) Then
Send ("{left}")
EndIf
Dieses "IsArray" kann mann eigendlich auch mit
Code:
If not @error Then
errsetzen, weil das heißt ja er soll die Linke pfeiltaste drücken, wenn
er die Braune Farbe eines Stammes gefunden hat...

Hoffe des is nen bissle verständlich...
12/01/2009 22:45 odolwa77#5
Also hab mir das net so einfach vorgestellt
Also könnte man so einfach mit weniger als 15 Zeilen
nen funktionstüchtigen Bot erstellen.

Also ich glaub ich hab das so weit verstanden aber irgendwie
kann das garnet so einfach sein ich kann ja schlecht hinschreiben :

Quote:
While 1

$LS = PixelSearch(0,0,0,0,Braune_farbe_eines_Stammes,15)
If not @error Then
Send ("{left}")
EndIf

$RS = PixelSearch(0,0,0,0,Braune_farbe_eines_Stammes,15)
If not @error Then
Send ("{right}")
EndIf

WEnd
Irgendwie muss ich doch noch "feineinstellungen" machen
Wie z.B Das er bei Bomben net zu schlagen soll,
das er nur einmal zu schlagen soll also irgendwie
die Sleeptime verändern etc
hab wie gesagt net wirklich ne ahnung bin erst 1 woche in AutoIt

und da bröchte ich eigentlich zum größten Teil Hilfe^^

Trojan ganz dolles THX war echt hilfreich^^
12/01/2009 23:10 Trøjan#6
Erstmal: Ja man kann nen 15 zeilen bot schreiben der funktioniert!
Nein, du musst das WindowInfo-Tool von AutoIt benutzen um die Farbe eines Baumstammes heraus zu finden, aber des zeig ich dir morgen weil ich bin grad am Ipod und da kann ich keine tuts machen xD

also mit den bomben würd ichs jezz so machen:
Code:
While 1
$LS_Bombe = PixelSearch(0,0,0,0,Bombenfarbe,15)
If @error Then
$LS = PixelSearch(0,0,0,0,Braune_farbe_eines_Stammes,15)
If not @error Then
Send("{left}")
EndIf
EndIf

$RS_Bombe = PixelSearch(0,0,0,0,Bombenfarbe,15)
If @error Then
$RS = PixelSearch(0,0,0,0,Braune_farbe_eines_Stammes,15)
If not @error Then
Send ("{right}")
EndIf
EndIf
WEnd
Jetzt kontrolliert der Bot bevor er überhaupt kontrollier ob er zuschlagen soll, ob eine Bombe in dem Feld ist.

Sry, wenn Fehler drin sind, weil ich bin am Ipod...
Ich mach das morgen nochmal mit Bildern unso für dich!
Ich schlaf jezz!
Nachtiiii! X3
12/02/2009 19:13 Trøjan#7

Also so machst du das mit dem WindowInfo tool...
Öhm... Ich hoffe das versteht man... Wenn nich schreibt ne Pn und wir klären das über Skype oda TeamSpeak: trojans.kicks-ass.net
12/02/2009 19:34 Samuelaa#8
das ist ja mal geil, das bild hab ich mir gleich gespeichert. das kommt so krass. lass es dir rahmen ist ein kunstwerk.
(ich weis dieser post ist spam,gäbe es hier mods würde ich jetzt paar drauf kriegen)


edit: schneid mal den namen weg oO
12/02/2009 19:39 Trøjan#9
xDDD
komm auf ts und ich erklärs dir xDD
Stimmt schon mit den mods....

mir is des egal xD
ich spiel eh kein nostale mehr xD
12/02/2009 20:55 Alisami#10
Nunja, du brauchst keine 2 Daten - Du lässt autoIt nur nach EINER speziellen Farbe suchen bei der er zuschlägt, also wenn ne Bombe kommt ist die Farbe nicht wie der des Baumstammes -> Er schlägt nicht zu. Der Spoiler von 13Trojan13 ist doch recht informativ :)

MfG,

Alisami
12/02/2009 20:58 Trøjan#11
xD Also ich würd mal sagen bei meinem Spoiler sind zu viele Informationen auf einem Bild oder?^^

Ok, stimmt mit der einen Farbe ist iwi schlauer xDDD
12/03/2009 00:02 odolwa77#12
Also zuerstmal Trojan ganz toles thx an dich für die ganze arbeit extra für mich.
Nun Ich hab das alles verstanden was auf dem bild war.
Nun Alisami der Bot schlägt auch bei den bomben zu
aber kann auch daran liegen das man erstmal die einstellung machen muss
das er nur einmal zuschlagen soll dann warten soll bis etwas neues in die such zone kommt und dannach zu schlagen soll aber ich weiß leider net wie man das einstellt, wenn mir das jmd erklären könnte würde mein bot einwandfrei funktionieren^^
12/03/2009 15:03 Alisami#13
Hm, da musst du einen Fleck finden wo das Holz erkannt und die Bombe nicht erkannt wird.
12/03/2009 15:44 odolwa77#14
Naja Ok ich probiers später mal aus und sag euch wie weit ich bin
Thx an euch das ihr mir so schnell geholfen hab
und wenn ich gleich noch probleme hab denke ich ihr hilft mir bestimmt wieder:D
12/04/2009 22:46 odolwa77#15
Also das eigentliche Problem sind net die Bomben sondern
das er dauerhaft zu schlägt also keine pausen macht
ich hab mir da was vorgestellt das zu lösen klingt aber bisel komisch xD

Also statt das er erst überprüft ob ne bombe auf dem Feld ist wie in diesem Script von Trojan :

Quote:
While 1
$LS_Bombe = PixelSearch(0,0,0,0,Bombenfarbe,15)
If @error Then
$LS = PixelSearch(0,0,0,0,Braune_farbe_eines_Stammes,15)
If not @error Then
Send("{left}")
EndIf
EndIf

$RS_Bombe = PixelSearch(0,0,0,0,Bombenfarbe,15)
If @error Then
$RS = PixelSearch(0,0,0,0,Braune_farbe_eines_Stammes,15)
If not @error Then
Send ("{right}")
EndIf
EndIf
WEnd
Das ich statt "Bombenfarbe" einfach überprüft wird ob der tori von seinem
letzten schlag schon wieder zurück gekommen ist (ich weiß klingt komisch)
Aber das Bild dazu ist vielleicht bisel logisch =P

[Only registered and activated users can see links. Click Here To Register...]

Ka ob das logisch ist was ich da hingekritzelt hab aber wenn ja dann pls weiter hin tipps geben wie ich das umsetzten soll

Ach ja sry für Doppel Post^^

Also bei mir sieht der Bot bis jetzt so aus und er schafft so 4-5k Punkte

Quote:
HotKeySet ("{F1}" , "_Exit")

While 1

$LS_Bombe = PixelSearch(298, 449 , 341, 471 , 0x6EA639 , 15)
If @error Then
$LS = PixelSearch(434, 408 , 469, 423 , 0x7C571B , 15)
If not @error Then
Send ("{left}")
EndIf
EndIf

$RS_Bombe = PixelSearch(298, 449 , 341, 471 , 0x6EA639 , 15)
If @error Then
$RS = PixelSearch(434 , 514 , 471, 528 , 0x30210C ,15)
If not @error Then
Send ("{right}")
EndIf
EndIf
WEnd



Func _Exit ()
Exit
EndFunc