Hilfe mit Farmbot

01/07/2012 18:38 papaap#1
Hey, ich habe eine frage, undzwar wollte ich fragen ob ihr mir helfen könnt ein Bot zu erstellen.. undzwar für das MMORPG "Shaiya" der Bot soll automatisch Angreifen (Taste 1) und nur Zwei bestimmte monster angreifen (evtl auch Änderbar), und das Ziel automatisch ändern wenn der weg Blockiert ist..

ich habe schonmal bisschen rumprobiert, aber habe mich nochnie wirklich mit Autoit Befasst..

ich hoffe ihr könnt mir helfen

PS: soll kein " Bitte macht mir " thread sein.. ich würde auch gerne lernen soetwas zu Scripten :mofo:
01/07/2012 18:46 Ludder231#2
Wenn das Spiel kein Anti-Hackshild hat sollte Send oder Controlsend gehen. Einfach googlen oder F1 in SciTE für die Hilfe drücken....
01/07/2012 18:54 papaap#3
Hey, Danke für die Schnelle antwort.. das game hat kein Hackshield

Da ich leider 0 Erfahrung in AutoIT habe, weiß ich sogut wie NICHTS drüber.. habe mir schonmal die Grundlagen und paar Tutorials gelesen und ausprobiert.. mehr noch nciht
01/07/2012 20:59 Ludder231#4
reicht für Send und Cotrolsend.
PHP Code:
Send("Hallo) 
"Sendet einen oder mehrere simulierte Tastendrücke an das aktive Fenster."
PHP Code:
ControlSend "title""text"controlID"string" [, flag] ) 
"Sendet eine Folge von Zeichen (Tastendrücken) an ein Control" in deinem Fall das Fenster mit dem Spiel.
01/08/2012 01:28 xShizoidx#5
Da ich das Spiel nicht kenne, kann ich auch nicht genau sagen, wie man dies genau realisieren kann.
Auf jeden Fall ist dies nichts für jemanden, der sich nicht gut mit Autoit, Pixelsearch, Imagesearch oder der Memory- und Pointergeschichte auskennt.
Wenn er nun ein Script schreiben würde, wo er mit Send oder Controlsend ein " Zeichen oder ein paar Buchstaben " sendet, dann würde er das Ziel nicht angreifen, da es nicht markiert ist. Nehmen wir mal an, du musst " f " drücken zum angreifen und musst deinen Gegner vorher anklicken, bevor du ihn richtig angreifen kannst und du schreibst einen Bot mit Send und Controlsend, welcher die Taste " f " an dein Fenster sendet. Dann nützt es dir halt relativ wenig.
01/08/2012 18:32 papaap#6
Hey, um den Gegner anzuvesieren reicht der tastendruck " 1 " dieser ist Angreiffen und Gegnerauswählen zugleich.

dies zu realisieren scheint nicht schwer zusein *Hoff*

dazukommt aber das ich nur Zwei bestimmte gegenerangreifen möchte, da mein Charakter sonst über die komplette Map läuft und nicht dort killt wo ich es möchte..

dies sollte auch änderbar sein.. so das ich den Farmbot an verschiedenen Orten laufen lassen kann. u.a sollte er auch das targetswitchen wenn das Ziel Blockiert ist (das Spiel sendet eine Massage" there is an land obstacle")

Hoffe soetwas ist zu realisieren und ich könnte einpaar stichworte bekommen nach denen ich suchen muss usw..

LG


Mein Code bisher..

was fehlt?? oder was ist zuviel? O.o


zum Targetswitch.. ich hab mir da son

If there is an land obstacle then ^oder so..
01/08/2012 20:19 Ludder231#7
ne while in ner While ?? Google mal Do - Until Schleife in Autoit :)
01/08/2012 20:35 papaap#8
danke.. mach ich mal :handsdown:

ist die Syntax denn so "Falsch"?
01/08/2012 20:53 lolkop#9
was genau soll an verschachtelten schleifen denn schlecht sein?

solange man seine abbruch kriteren gut wählt, sollte kein problem bestehen.
bsp:
Code:
Dim $array[5]
While Not $array[0]
	ConsoleWrite('1st While'&@CRLF)
	While Not $array[1]
		ConsoleWrite('2nd While'&@CRLF)
		While Not $array[2]
			ConsoleWrite('3rd While'&@CRLF)
			While Not $array[3]
				ConsoleWrite('4th While'&@CRLF)
				While Not $array[4]
					ConsoleWrite('5th While'&@CRLF)
					$array[4] = Not $array[4]
				WEnd
				$array[3] = Not $array[3]
			WEnd
			$array[2] = Not $array[2]
		WEnd
		$array[1] = Not $array[1]
	WEnd
	$array[0] = Not $array[0]
WEnd
01/09/2012 07:59 MoepMeep#10
While 1 ist kein sonderlich gutes Abbruchkriterium :x
01/09/2012 13:03 lolkop#11
Quote:
Originally Posted by MoepMeep View Post
While 1 ist kein sonderlich gutes Abbruchkriterium :x
es ging mir mehr um diesen kommentar:
Quote:
Originally Posted by Ludder231 View Post
ne while in ner While ?? Google mal Do - Until Schleife in Autoit :)
aus einer "While True" schleife kommt man natürlich nur per "Exit", "ExitLoop" oder interrupt
01/09/2012 14:00 MoepMeep#12
Quote:
Originally Posted by lolkop View Post
aus einer "While True" schleife kommt man natürlich nur per "Exit", "ExitLoop" oder interrupt
Und sowas zeugt meist von einem sehr schlechten Stil.
01/09/2012 14:27 lolkop#13
Quote:
Originally Posted by MoepMeep View Post
Und sowas zeugt meist von einem sehr schlechten Stil.
nicht unbedingt.

in vielen situationen ist das ende einer schleife abhängig vom user, bzw von events, welche nicht von vornherein klar sind.

ein beispiel für user abhängige schleifen, wäre die abfrageschleife eines guis, ein beispiel für den anderen fall, wäre zb das abarbeiten einer pointerfolge, von unbekannter länge.

sicherlich könnte das ganze auch im abfrageteil der jeweiligen schleife direkt implementiert werden, aus übersichtsgründen ist sowas meiner meinung nach, aber meist eleganter in switch cases innerhalb der schleife zu positionieren.