Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Nostale
You last visited: Today at 03:08

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Pixelsearch Bot Problem

Discussion on Pixelsearch Bot Problem within the Nostale forum part of the MMORPGs category.

Reply
 
Old   #1
 
elite*gold: 32
Join Date: Jul 2010
Posts: 2,377
Received Thanks: 1,167
Question Pixelsearch Bot Problem

Ich habe mich entschlossen auch mal mit Autoit anzufangen und solche einfachen Leertasten Bots u.ä. bekomm ich auch hin aber irgendwie hab ich grade Probleme mit nem Pixelsearch Bot und zwar:

Mein Bot soll einen selbst Auswählbaren Bereich Nach einer Bestimmten Farbe "absuchen" und wenn diese Farbe kommt soll er einen Ton von sich geben - gleichzeitig soll er aber auch Botten. Mein script sieht im Moment so aus:


Code:
 HotKeySet("{F1}", "starten")
HotKeySet("{F2}", "pause")
HotKeySet("{F3}", "quit")
HotKeySet("{F4}", "_obereEcke")
HotKeySet("{F5}", "_untereEcke")
HotKeySet("{F6}", "_farbe")

MsgBox(64, "Pixelsearch Bot - Infos", "Starten = F1 | Pausieren = F2 | Beenden = F3 |  Obere Ecke = F4 | Untere Ecke = F5 | Farbe = F6! |
Erst Koordintaten und Farbe Festlegen dann Starten! ", 5)

Sleep(5000)

While 1
sleep(200)
WEnd

Func _obereEcke()
    $p1 = MouseGetPos()
    Tooltip("Koordinaten von Obere Ecke gespeichert.")
    Sleep (500)
    ToolTip("")
EndFunc

Func _untereEcke()
    $p2 = MouseGetPos()
    Tooltip("Koordinaten von Untere Ecke gespeichert.")
    Sleep (1500)
    ToolTip("")
EndFunc

Func _farbe()
    $p = MouseGetPos()
    $color = PixelGetColor($p[0], $p[1])
    Tooltip("Farbe erfolgreich gespeichert. Sie ist: " & Hex($color, 6)) 
    Sleep (500)
    ToolTip("")
EndFunc



Func starten()
While 1[B]
	$pixel=PixelSearch($p1, $p1 ,$p2 ,$p2, "0x" & Hex($color, 5), 5)
		If isArray($pixel) then 
			Beep(500, 1000)
		Endif[/B]
	sleep(100)
	Controlsend("NosTale","","","Z")
	sleep(100)
	Controlsend("NosTale","","","X")
	sleep(100)		
Wend		
EndFunc


Func pause()
 While True
 Sleep(1000)
 WEnd
 Endfunc
 
 
Func quit()
Exit
Endfunc
Für die Profis unter euch vermutlich sehr schlecht geschrieben^^
Aber egal, auf jeden Fall funktioniert der Bot nicht, denn wenn ich Dann F1 drücke um den Bot zu starten kommt ein Fehler der besagt:


Code:
$pixel=PixelSearch($p1,$p1,$p2,$p2, "0x" & Hex($color,5),5)
$pixel=pixelSearch(^ERROR

Error:Variable used without being declared.

Achja und Außerdem kann ich die Koordinaten nur bestimmen wenn Nostale nicht im Vordergrund ist 0.o? Kann man das irgendwie richtig machen?

Falls jemand eine Idee haben sollte, wie man das richtig macht, ist vermutlich für die meisten hier eine Sache von 3 Minuten, dann wäre es schön, wenn ihr mir helfen könntet!
Achja sorry für den langen Text! =)

Edit: Cool mein 123. Beitrag xDDD
Δbraxas is offline  
Old 10/10/2010, 13:40   #2
 
Trøjan's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 834
Received Thanks: 803
Zu deinem Hauptfehler würde ich sagen, das du erst die anderen Hotkeys drücken musst und dann erst F1. Weil in der Funktion _starten werden
$p1, $p1 ,$p2 ,$p2 und $color abgefragt.
Diese Variablen werde aber erst in den Anderen Funktionen bestimmt.

Schreibe am besten das an den Anfang des Skriptes:
Code:
Global $p1,$p2,$color
Und in die Funktion starten()
Code:
    If $p1 = "" Then
        MsgBox(0,"","Bitte Punkt 1 bestimmen.")
        Return
    ElseIf $p2 = "" Then
        MsgBox(0,"","Bitte Punkt 2 bestimmen.")
        Return
    ElseIf $color = "" Then
        MsgBox(0,"","Bitte die Farbe bestimmen.")
        Return
    EndIf
Außerdem hast du in der While Schleife die Punkte falsch kontrolliert.
So müsste es aussehen:
Code:
$pixel=PixelSearch($p1[0], $p1[1] ,$p2[0] ,$p2[1], "0x" & Hex($color, 5), 5)
Weil MouseGetPos() schreibt in Arrays also $p1[0] ist x und $p1[1] ist y.


Hoffe du kannst was mit der Hilfe anfangen und wenn nich, frag einfach :]

Hier das Fertige Skript (Bitte erst angucken, wenn alles verstanden ist)

Quote:
Originally Posted by _THE_RAIN_ View Post
Achja und Außerdem kann ich die Koordinaten nur bestimmen wenn Nostale nicht im Vordergrund ist 0.o? Kann man das irgendwie richtig machen?
Als Admin ausführen =]
Trøjan is offline  
Thanks
2 Users
Old 10/10/2010, 16:02   #3
 
elite*gold: 32
Join Date: Jul 2010
Posts: 2,377
Received Thanks: 1,167
Okay vielen Dank! ich versuchs gleich mal =) Hab wie immer das #requireAdmin vergessen^^

Mh... komischerweise kommt kein Sound wenn ich Angeflüstert werde...?
Aber sonst ist alles Super! Stimmt der Befehl: Beep(500, 1000)?





Achja das find ich cool TrayTip("Bot","Bot gestartet!",5)^^
Δbraxas is offline  
Thanks
1 User
Old 10/10/2010, 16:44   #4
 
elite*gold: 59
Join Date: Jun 2007
Posts: 374
Received Thanks: 86
Hallo, der Befehl Beep(500, 1000) ist richtig und funktioniert bei mir auch.
Der Ton ist nur relativ leise also überprüfe am besten noch mal ob du den Ton vielleicht nicht einfach überhört hast.
Ansonsten kann man auch mit dem Befehl "Beep" kleine Spielereien machen wie z.B. Songs.

Hier mal ein Link zu "Mary had a little lamb"


Oder hier "Mario Bros Theme"


See Ya!
Devil589 is offline  
Old 10/10/2010, 16:51   #5
 
elite*gold: 32
Join Date: Jul 2010
Posts: 2,377
Received Thanks: 1,167
Mh.. Ich hatte zuerst auch gedacht, dass es an dem Ton liegt aber dann hab ich den Befehl durch exit ersetzt und nichts ist passiert!
Δbraxas is offline  
Old 10/10/2010, 16:58   #6
 
elite*gold: 59
Join Date: Jun 2007
Posts: 374
Received Thanks: 86
Dann scheint er wohl nicht in deine Bedingung rein zu springen wenn weder der Beep noch das Exit klappt.
Hast du mal versucht das Array ausgeben zu lassen und geschaut ob da überhaupt was drin steht?
Weil in deiner Bedingung fragst du ja ab ob $pixel ein Array ist oder nicht, und nur wenn es eins ist springt der ja zum Beep.
Also schau am besten mal ob $pixel überhaupt als Array ankommt und wenn ja ob da überhaupt was drin steht.
Das wäre es eine Sache die mir spontan einfällt und die ich auch überprüfen würde.

See Ya!
Devil589 is offline  
Old 10/10/2010, 17:25   #7
 
elite*gold: 32
Join Date: Jul 2010
Posts: 2,377
Received Thanks: 1,167
Tut mir leid, aber ich kenn mich leider noch nicht so gut aus. Wie macht man das?
Δbraxas is offline  
Old 10/10/2010, 19:25   #8
 
elite*gold: 59
Join Date: Jun 2007
Posts: 374
Received Thanks: 86
Ich geh mal davon aus dass dein Programm in der While Schleife die ControlSend Befehle ausführt.
Somit kommentiere einfach mal deine Bedingung aus (If) und lass dir die Variable $pixel mal in einer MessageBox ausgeben.

Ansonsten schreib mir per PM mal deine Icq Nummer falls du Icq nutzt dann kann ich dir da vlt. besser weiter helfen.

See Ya!
Devil589 is offline  
Old 10/10/2010, 19:40   #9
 
elite*gold: 32
Join Date: Jul 2010
Posts: 2,377
Received Thanks: 1,167
Den Source-Code findest du oben^^ und ich kanns mal versuchen...
Δbraxas is offline  
Old 10/10/2010, 23:49   #10
 
elite*gold: 112
Join Date: Jan 2010
Posts: 1,531
Received Thanks: 414
Wenn du ansaztweise in die Hilfe geschaut hättest, dann wüstest du jetzt das MouseGetPos ein Array zurückgibt. $p[1] = x und $p[2] = y
So da dies geklärt ist, gibt es eine verbesserung:
Dein Script sollte eine Warnung geben. Undzwar das $p nicht declariert ist.
Schreib mal ganz oben hin: Global $p, $p2, $color
So dann beim Pixelsearch wandelst du dein Wert in ein Hex wert um. Für was?
AutoIt kanns auch so lesen, es wandelt eher dein Hex Code in ein Dec Code zurück
mfg Freaky
¿Freaky¿ is offline  
Old 10/10/2010, 23:55   #11
 
elite*gold: 32
Join Date: Jul 2010
Posts: 2,377
Received Thanks: 1,167
Okay danke, aber das hat eigentlich auch Trojan schon gesagt...
Naja Kann mal irgendjemand testen obs bei ihm geht? Bei mir kommt nichts Ich kann alles festlegen und er bottet auch, aber es kommt kein Ton oder irgendwas!
Oder falls jemand ein besseres script hat oder machen könnte wäre es mir auch recht^^

Ich könnte natürlich auch 2 Bots machen, einen Normalen Bot und einen der die ganze Zeit kontrolliert ob jemand was flüstert, aber in einem Bot fände ich das besser!
Δbraxas is offline  
Old 10/11/2010, 00:07   #12
 
elite*gold: 112
Join Date: Jan 2010
Posts: 1,531
Received Thanks: 414
Probier das mal:
Code:
For $i = 1 To 500
    For $j = 1 To 2
        Beep ($i,500*$j)
    Next
Next
Wenn du immer noch nichts hörst, dann hast du kein Beeper
Und das bedeutet das du den Beep Befehl nicht benutzen kannst.
¿Freaky¿ is offline  
Thanks
1 User
Old 10/11/2010, 00:21   #13
 
elite*gold: 32
Join Date: Jul 2010
Posts: 2,377
Received Thanks: 1,167
Ich hab den Beep schon einfach so als Befehl getestet und ich hab ihn klar und deutlich gehört, Ich weiss nicht was falsch ist 0.o?
vermutlich was daran:

Code:
While 1
$pixel=PixelSearch($p1[0], $p1[1] ,$p2[0] ,$p2[1], "0x" & Hex($color, 5), 5)
	If isArray($pixel) then 
		Beep(500, 1000)
	Endif
[....]
WEnd

Achja das mit dem Beep Test ist ja mal witzig vorallem wenn man (wie ich) Als Minianwendung einen Spectrum Analyser hat^^
Δbraxas is offline  
Old 10/11/2010, 00:27   #14
 
elite*gold: 112
Join Date: Jan 2010
Posts: 1,531
Received Thanks: 414
Mach das mal vor das if pixel....
Code:
ToolTip ($p1[0] & @CRLF & $p1[1] & @CRLF & $p2[0] & @CRLF & $p2[1],0,0)
Und guck was es dir anzeigt, wenn es nichts anzeigt dann machst du was falsch bei den MouseGetPost ^^
¿Freaky¿ is offline  
Thanks
1 User
Old 10/11/2010, 00:28   #15
 
elite*gold: 32
Join Date: Jul 2010
Posts: 2,377
Received Thanks: 1,167
Okay ich probiers mal =)

Edit: Hey es geht! Wie hast du das gemacht :O ?
Es kommt ein Ton und in der linken oberen Ecke werden irgendwelche Zahlen angezeigt! °o°

Es hat zumindest im Test geklappt in Nostale geht es irgendwie net...
Ich hab es zum Testen auf dem Desktop ausprobiert...


Aha: Ich habe eine Theorie: vermutlich überprüft der Bot die Pixel auf dem Desktoop und nicht im Nostale Fenster! kann man das ändern?
Δbraxas is offline  
Reply


Similar Threads Similar Threads
AutoIt Pixelsearch Problem
05/26/2010 - General Coding - 20 Replies
Hallo Users, ich habe mir gedacht ich schreib mal einen Bot für Nostale der beim Minigame Steinbruch immer lvl 5 Belohnung holen soll. Nur das Problem ist dass ich nicht weiss wie ich mit Pixelsearch umgehen soll, also hab ich mir den Pixelsearch-Teil von einem Bot rüberkopiert. Doch mein Bot will jetzt nicht funktionieren So sieht der jetzt im Moment aus Beim roten Teil liegt mein Problem. Kann mir bitte einer helfen? :handsdown: mfg Mr.K
Kleines Problem mit PixelSearch
04/08/2010 - AutoIt - 4 Replies
Da bin ich mal wieder >_> Is eig ganz simpel: Do $pixel2=PixelSearch(351,249,431,532,0xFFFFFF, 5) Until IsArray($pixel2) If IsArray($pixel2) Then If $get2 = "German" Then MouseClick(360, 346) ElseIf $get2 = "English" Then MouseClick(400, 293)
AutoIt PixelSearch Problem
02/07/2010 - AutoIt - 3 Replies
Hi, Ich bin gerade an einem Bot, beschäftigt und möchte in diesem Bot gerne PixelSearch benutzen Nur wenn ich das in einer While Schleife mache klickt er nur noch und macht die anderen Sachen nicht mehr .. Hoffe ihr könnt mir helfen Mfg Selman99
pixelsearch problem
09/27/2009 - GW Bots - 4 Replies
hi, will mir nen bot schreiben komme aba ned weiter QQ also er soll etwas solange tun bis er via pixelsearch die angegebene farbe ned mehr findet. so weit so gut nur bekomme ich das nich so richtig hin QQ. hier meine versuche: nr1: do send("1") sleep(200) send("2")
[AutoIt] Problem mit PixelSearch.
08/19/2007 - General Coding - 3 Replies
Moin moin. Ich hatte die Idee, dass man mit AutoIt ein PickIt Programm fuer D2 schreiben koennte. Hier erstmal der Code.. Soweit, so gut.. hm. Meine Idee dahinter war es, dass ich ein Script einfach nach der Farbe des Unique Tags in D2 (#958166) suchen und dann einen Mausklick auf das/die entsprechenden Pixel ausfuehren lasse.. Problem: Zurzeit funktioniert daran nichts, ausser die Terminate Funktion. Vielleicht kann mir ja jemand auch diesmal weiterhelfen ;>



All times are GMT +1. The time now is 03:10.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.