TT6 MoveTo engine public

01/09/2009 19:21 i4mSoH34Vy#91
So wollt die MoveTo in meinen Nestlinge Farmbot einbauen(Thermalquellen-Bot geht), aber es geht nur 1 mal wenn ich den Bot starte. Wenn ich ihn dann aus und wieder neu starte, gehts nicht mehr ?
01/09/2009 20:35 tonitusch666#92
was heist "neu" starten ? dis wechsel oder nach tot ? oder blocked ? machst du ein PrepMoveTo() bevor es weiter geht ? ist das in der testing oder der 1.0 ? setzt du ggf. $isBlocked zurück ?

PS: stimmen die mem adressen eigentlich noch, weil hab grad mitbekommen, dass es ein kleines gw update gab ?
mfg
01/09/2009 20:47 i4mSoH34Vy#93
Hab jetzt hereuasgefunden das die Testing TT6 geht und die neue nicht. Neustart nachdem ich einmal Bot ausgemacht hab und wieder neu an^^.Adressen stimmen :)
01/09/2009 21:06 tonitusch666#94
Öhh, hab da aber nix was nach einem kompletten Beenden und Neustart sich irgendwas merken könnte :confused:
01/09/2009 21:17 i4mSoH34Vy#95
Keine Ahnung was mein PC bei der neuen nicht ab kann^^.
01/09/2009 21:39 tonitusch666#96
Es gab die Frage, ob man in einem au3. skript mehrer gw Fenster steuern kann. Man müsste dazu vor jeder Sequenz das 2 globale Variablen umsetzen, die dann auch immer passen müssen.
Also $client wird in der .ini konfiguriert und damit auf zB "Guild Wars" vorbelegt, daraus leitet sich die PID und somit $hprocess ab. Das würde also bedeuten, dass man folgendes machen kann:
Code:
Global $client1 = "Guild Wars"
Global $client2 = "Guild Wars1"
$PID = WinGetProcess($client1)
Global $hprocess1 = _MemoryOpen($PID)
$PID = WinGetProcess($client2)
Global $hprocess2 = _MemoryOpen($PID)

; client 1
$client = $client1
$hprocess = $hprocess1
PrepMoveTo()
MoveTo(...)
MoveTo(...)
MoveTo(...)
StopMoveTo()

; client 2
$client = $client2
$hprocess = $hprocess2
PrepMoveTo()
MoveTo(...)
MoveTo(...)
MoveTo(...)
StopMoveTo()
Mehrer Clients echt parallel zu steuern ist sicherlich *hust* möglich, dazu müsste man aber die gesamte Steuerlogik über ein array mit allen aktiven
Clients, Zielpunkten, Stati usw. implementiern, das geht, aber wäre doch recht aufwendig und v.a. fehleranfällig. Da erscheint es besser mehrere .exe zu bauen und parallel zu starten, da wird aber dann die Synchronisation nicht ganz einfach. AutoIt ist halt für echtes Multithreading einfach nicht grad die beste Wahl :)
01/09/2009 21:42 i4mSoH34Vy#97
Hab den erstmal nur normal laufen lassen ;) nicht paralell. Also dier erste Version geht dafür aber umso besser.
01/10/2009 02:27 darthwitch#98
Welchen waypointer habt ihr jetzt der von dunham geht ja nimma seid update^^ :-( naja abgesehen davon hat das nie funktioniert das moveto der hat sich nie ein stück bewegt^^
01/10/2009 02:48 Hokler#99
Quote:
Originally Posted by darthwitch View Post
Welchen waypointer habt ihr jetzt der von dunham geht ja nimma seid update^^ :-( naja abgesehen davon hat das nie funktioniert das moveto der hat sich nie ein stück bewegt^^
also bei mir hatt es super funktionirt =)

/edit: vielleicht machst du ja was falsch ??? vielleicht hast iwas vergessen oder so bei mir hatts am anfang au net geklappt und dann hab ich die uptade.ini in den ordner von meinen bot gemacht und dan hatts funktionirt :D
01/10/2009 10:13 tonitusch666#100
Also der waypointer sollte schon gehn, weil das API immer noch zum alten Syntax kompatibel ist und für die meisten Anwendungen auch reicht, also
MoveTo(1, x,y), afaik erzeugt der waypointer aber nicht alles, d.h. die PrepMoveTo() und Stop/KeepMoveTo() muss man schon noch selber hinschreiben. Also wenn Du das zip entpackst und nomadmem hinzufügst dann "läuft" auf jeden Fall das Byzzr Beispiel. Ansonsten musst noch mal die update.ini prüfen und auch die tastaturbelegung, ich zieh grad die auch noch in die .ini raus. Aber den wayout laufen tut er auf jeden Fall ;)
01/10/2009 10:45 aLasca#101
geht das moveto eigentlich nur bis zum nächsten update? ja oder?
01/10/2009 11:10 Dunham#102
Quote:
Originally Posted by darthwitch View Post
Welchen waypointer habt ihr jetzt der von dunham geht ja nimma seid update^^ :-( naja abgesehen davon hat das nie funktioniert das moveto der hat sich nie ein stück bewegt^^
der ging wunderbar... und da sich die mems doch garnicht geändert haben geht er nach dem update auch noch ^^ wenn nicht einfach bei der moveto.ini die mems änder.. solte nich soo schwer sein
01/10/2009 15:45 Painful Pete#103
Quote:
Originally Posted by tonitusch666 View Post
Es gab die Frage, ob man in einem au3. skript mehrer gw Fenster steuern kann. Man müsste dazu vor jeder Sequenz das 2 globale Variablen umsetzen, die dann auch immer passen müssen.
Also $client wird in der .ini konfiguriert und damit auf zB "Guild Wars" vorbelegt, daraus leitet sich die PID und somit $hprocess ab. Das würde also bedeuten, dass man folgendes machen kann:
Code:
Global $client1 = "Guild Wars"
Global $client2 = "Guild Wars1"
$PID = WinGetProcess($client1)
Global $hprocess1 = _MemoryOpen($PID)
$PID = WinGetProcess($client2)
Global $hprocess2 = _MemoryOpen($PID)

; client 1
$client = $client1
$hprocess = $hprocess1
PrepMoveTo()
MoveTo(...)
MoveTo(...)
MoveTo(...)
StopMoveTo()

; client 2
$client = $client2
$hprocess = $hprocess2
PrepMoveTo()
MoveTo(...)
MoveTo(...)
MoveTo(...)
StopMoveTo()
Mehrer Clients echt parallel zu steuern ist sicherlich *hust* möglich, dazu müsste man aber die gesamte Steuerlogik über ein array mit allen aktiven
Clients, Zielpunkten, Stati usw. implementiern, das geht, aber wäre doch recht aufwendig und v.a. fehleranfällig. Da erscheint es besser mehrere .exe zu bauen und parallel zu starten, da wird aber dann die Synchronisation nicht ganz einfach. AutoIt ist halt für echtes Multithreading einfach nicht grad die beste Wahl :)
Erstmal danke für die Antwort....
So kompliziert will ich das gar nicht machen. Mir reichts, wenn ich das 1. Fenster mit der MoveTo steuere und die anderen würden nichts anderes machen als den ersten Charakter anwählen und mit Space folgen.

Ich müsste eigtl nur dem genau sagen, dass alles was mit MoveTo zu tun hat nur das 1. Fenster was angeht.
Wo müsst ich da dann was einfügen?

Ok das obere hab ich gelöst :D


Und geht es, dass ich während der Charakter im 1. Fenster sich zu nem Punkt bewegt, die andern schon nachlaufen? also ich sag ihm er muss da hin, und sobald er den Befehl hat, kann ich mit controlsend die andern nachschicken ohne dass ich warten muss, bis er dort angekommen ist?

Danke schonmal :D:handsdown:
01/10/2009 19:11 tonitusch666#104
Ja dafür gibts den "komischen" mode 0:

Das würde man über einen timer machen weil ein sleep nicht
geht, also:

$timer = TimerInit()
$once = true
InitDest(x,y)
While Not MoveTo(0,0,0)
Sleep(10)
$time = TimerDiff($timer)
if $time > "delta" and $once Then
"sende befehl an andere clients"
$once =false
endif
WEnd

dann würde man den 1.char losrennen lassen und nach einem gewissen
abstand können die andern über den "folgen" befehl (gibts direkt in gw)
hinterherlaufen...

mfg
01/10/2009 21:33 tonitusch666#105
So hab nun die V1.1 im ersten Post angehängt, ich bau mir da mal was mit PostMessage für die wichtigsten keys, dann werd ich alle ControlSend rausschmeissen, da mich das klein-/groß umschalten echt nervt....