TT6 MoveTo engine public

03/08/2009 20:12 Treur Der Sonne#541
Die neue Version der ModMoveTo auf die TT6 v1.5!

€: Es gab einen kleinen Fehler, der mit dem neuen Upload behoben wurde!
Antivir: Nothing found
ArcaVir: Nothing found
Avast: Nothing found
AVG: Nothing found
BitDefender: Nothing found
F-Prot: Nothing found
Norman: Nothing found
Rising: Nothing found
VirusBlokAda32: Nothing found
VirusBuster: Nothing found

[Only registered and activated users can see links. Click Here To Register...]
Scanned by [Only registered and activated users can see links. Click Here To Register...]
03/10/2009 12:43 Rosemarie Lein#542
Hallo,
ich habe ein Problem beim Identifizieren und zwar klappt das nicht so ganz mit dem Identifizieren, er fährt nämlich nur darüber und macht sonst nichts, weiß da jemand weiter?

Rosemarie

Anmerkung: tonitusch, ich finde das echt klasse was du machst, solltest nen Forenorden verliehen bekommen oder so, auf jeden fall klasse!
03/11/2009 19:17 Rosemarie Lein#543
Quote:
Originally Posted by Rosemarie Lein View Post
Hallo,
ich habe ein Problem beim Identifizieren und zwar klappt das nicht so ganz mit dem Identifizieren, er fährt nämlich nur darüber und macht sonst nichts, weiß da jemand weiter?

Rosemarie

Anmerkung: tonitusch, ich finde das echt klasse was du machst, solltest nen Forenorden verliehen bekommen oder so, auf jeden fall klasse!
Weiß denn niemand weiter?
03/11/2009 19:42 Specter cason#544
woher bist du denn sicher dass er drüberfährt?

überprüf lieber mal ob du alles richtig gemacht hast

-einmal richtigen fuc-namen eingetragen
-einmal in der tt6.ini die richigen koordinanten angegeben?
03/12/2009 11:36 Rosemarie Lein#545
Quote:
Originally Posted by Specter cason View Post
woher bist du denn sicher dass er drüberfährt?

überprüf lieber mal ob du alles richtig gemacht hast

-einmal richtigen fuc-namen eingetragen
-einmal in der tt6.ini die richigen koordinanten angegeben?
Also es blinkt das Fenster von jedem Item einmal kurz auf, aber es wird nicht Identifiziert. Als "MouseClickDownDelay" hab ich 80Ms eingestellt.
03/12/2009 21:14 tonitusch666#546
hm also so recht ne Ahnung hab ich da auch nicht, der click down delay wirkt auf den doppelclick, der 2te auf das item wird mit postmessage erzeugt. hast du denn ein ident kit an der richtigen stelle ? wird das auch angeclickt ??
03/13/2009 22:08 pr(o*o)wn#547
Also ich muss gestehen ich kapiers kein meter wär schön wenn man mir das mal genau erklärt ;)
03/15/2009 01:42 Treur Der Sonne#548
Wenn du grundsätzlich weißt, wie man Bots schreibt, sollte dir die Readme hier im Thread weiter helfen.
Wenn du keine Ahnung von Programmieren hast, dann erwirb dir das Wissen.
03/15/2009 02:32 kknb#549
ich hab jetzt mal ne weile mit der transferarea funktion rumgespielt, aber aus mir unbekannten gründen bleibt der bot nach ner weile in der ersten schleife hängen, selbst wenn ich nen zähler einbaue und den run damit nach x versuchen neustarte bleibt der bot dann dauernd in dieser schleife hängen.

daher hab ich mal sowas simpleres draus gemacht wo dann nach ner weile nen "restart" gemacht wird. main sollte halt die hauptfunktion sein.

Code:
;travelto, post=0, load =2, area=1
func travelto($id, $timeout = 20)
	$cnt = 0
	while _memoryread($memmap,$hprocess) <> $id
		sleep(500)
		$cnt += 1
		if $cnt > 2*$timeout and _memoryread($memmap,$hprocess) = 1 Then
			resign()
			travelto($id)
			main()
		elseif $cnt > 2*$timeout and _memoryread($memmap,$hprocess) = 0 Then
			transferGH()
			transferGH()
			main()
		EndIf
	WEnd
	RndSleep(5000)
	
	$cnt = 0
	While _memoryread($memcourse,$hprocess,'float') > 2*$pi
		Sleep(200)
		$cnt +=1
		if $cnt > 5*$timeout and _memoryread($memmap,$hprocess) = 1 Then
			resign()
			travelto($id)
			main()
		elseif $cnt > 5*$timeout and _memoryread($memmap,$hprocess) = 0 Then
			transferGH()
			transferGH()
			main()
		EndIf
		EndIf
	WEnd
EndFunc
hab grad feszgestellt das er hier ebenso nach ner weile in der schleife hängen bleibt, er reist zwar wie geplant zum exeption handling in die gh und zurück, doch dann bleibt er wieder dort stecken und sitzt dann somit in einer endlosschleife. das komische ist, das dieses problem erst nach einer weile auftritt.

ebenso hängt er jetzt nach dem spawn in der stadt ab und an in der moveto fest, das konnte ich aber mit nem einfachen autowalk befehl beheben. sobald er losrennt scheint sich die funktion wieder zu fangen und es kann weitergehen.

Code:
		While Not MoveToCore($okdist, $dcheck)
			Sleep(10)
			$counter +=1
			if $counter > 5000 Then
				keysend("r")
			EndIf
		WEnd
03/15/2009 10:03 tonitusch666#550
Also so durch nachdenken komm ich nicht drauf wo es hängen könnte, es ist mE kein logischer Fehler sondern hat was mit dem GW client zu tun, vlcht wg lags oder anderen Hängern, hab manchmal Probs wenn ich große Dateien auspacke oder kopier, dann hängt Vista ganz böse bei mir.
Pack doch mal paar clevere ConsoleWrite rein und starts im Editor, es muss eine der Status Änderungen falsch sein oder fehlen. Btw in der transfer wieder in die main zu springen kann natürlich die lustigsten Nebeneffekte haben, weil Du da eine Rekursion baust, die vollkommen unvorhersehbar ist...

Zu Deinem Counter, hm also wenn alles fehlerfrei läuft und Du Mode 1 benutzt, dann müsste nach 5s er stehen bleiben, weil Du dann rennen durch das weitere "r" abbrichst !?

Was mir auch mal aufgefallen ist, dass er gaaanz selten keine links/rechts Drehung mehr annimmt, wenn man dann kurz r/r drückt gehts wieder, die li/re Tasten werden aber definitiv an GW geschickt, habs sowohl im Skript als auch im Winspector gesehen. Das ist natürlich fatal, wenn er sich gerade ausrichten will und drauf wartet, dass er den richtigen Zielwinkel erreicht. Ich bau da mal den Abbruch-Counter ein, weil lieber dreht er sich alle 100 runs einmal im Kreis als dass er total hängen bleibt...

mal das in InitDest einbaun...

Code:
	; rotate view to destination
	$cnt =0
	Do
		; transition via q2<->q3 by pseudo course angle
		$curcou = _memoryread($memcourse,$hprocess,'float')
		if (($angle > $pi/2) And ($curcou < $angle - $pi)) Then
			$curcou = 2*$pi + $curcou
		EndIf
		if (($angle < -$pi/2) And ($curcou > $pi+$angle)) Then
			$curcou = -2*$pi + $curcou
		EndIf

		; big delta -> stop running
		if Abs($angle - $curcou) > $stoplvl Then
			if $running = True Then
				KeySend($ARmovkey)
				$running = False
			EndIf
		EndIf
			
		$accel = GetCourse(Abs($angle - $curcou))

		; rotate
		if $angle < $curcou Then
			KeySend($TRmovkey, "down")
			Sleep($accel)
			KeySend($TRmovkey, "up")
			if $debug_mov = True Then
				ConsoleWrite(StringFormat("InitDest:   %s %d %.4f %.0f\n",$TRmovkey ,$accel, $angle, $dist))
			EndIf
		Else
			KeySend($TLmovkey, "down")
			Sleep($accel)
			KeySend($TLmovkey, "up")
			if $debug_mov = True Then
				ConsoleWrite(StringFormat("InitDest:   %s %d %.4f %.0f\n",$TLmovkey ,$accel, $angle, $dist))
			EndIf
		EndIf
		Sleep(100)
		$cnt +=1
		
		; check for death
		if  $dcheck And _memoryread($memdeath,$hprocess) = 1 Then
			$isDead = True
			Return
		EndIf
		; sometimes GW does not accept rotation keys, so just start movement and proceed with fingers crossed
	Until (Abs($angle - $curcou) <0.1) Or ($cnt > 50)
03/15/2009 10:13 Moppel123#551
gut idee.

mal was anderes.. ist eher autoit allegemein:
wie muss man eine function machen, dass ein bot einen zufälligen weg, aus denen geht, die man vorher festgelegt hat.. denn immer der gleiche(auch mit randoms) fällt irgendwann auf..
hat da jemand eine ahnung.. also wäre 3 wege und dann müsste man sowas wie "or" einfügen oder so..

wäre echt nett
danke
03/15/2009 10:33 Jacob_G#552
$rnd = Random(0,2,1)
Switch $rnd
Case 0
MsgBox(0,"Weg A","Weg A")
Case 1
MsgBox(0,"Weg B","Weg B")
Case 2
MsgBox(0,"Weg C","Weg C")
EndSwitch
03/15/2009 12:01 NBA#553
Hm..mir ist leider aufgefallen dass das genaue laufen auf einen punkt trotzdem nicht funzt :(


Code:
MoveTo(blawert1,blawert2,0,0,10.0)
was mich ich denn da falsch?
03/15/2009 12:10 Jacob_G#554
Du kannst mit dieser Methode nie 100% auf díe Koordiante kommen, deswegen berechnest du einfach noch etwas Tolleranz ein.
03/15/2009 14:03 Syc0n#555
Ich bin mir ziemlich sicher, dass die Frage hier schon 100mal gefragt wurde, aber ich habe keien Lust mir 56 Seiten durchzulesen. Deswegen frage ich einfach nochmal:

Wie findet man die Koordinaten raus zu denen er hinlaufen soll?
Mit dem Autoit-Hilfstool glaub ich nich aber mit welchem Programm?

Wär nett wenn mir das nochmal jemand erlären könnte vllt auch am Beispiel :D