elegantere Lösung gesucht

10/17/2010 03:19 amselalex#1
Nabend

Es geht um eine Autopotfunktion in meinem kleinen King of Kings 3 Bot.
Irgendwie finde ich keinen Weg das Potten parallel zur Angriffsschleife laufen zu lassen (so das beide Funktionen separat an- und aus zu schalten bzw. konfigurierbar sind).
Habe kurzerhand einfach beide Funktionen kombiniert aber ich bin nicht zufrieden damit.

PHP Code:
Do

 
$nMsg GUIGetMsg()


         
Select

                
Case $attack 1
                WinActivate
("King of Kings 3:Dynia""")
                
sleep(100)
                
GUICtrlSetData($botstatus"Bot aktiviert")


                Do
                
                    
$colorcheck Hex(PixelGetColor(272325), 6)
                    If 
$colorcheck <> $color Then
                        send
("{F1}")
                    EndIf

                    
send("{TAB}")
                    
send("{ö}")
                    
sleep(100)
                    
MouseClick("right" 6563201)
                    
Sleep($delay)
                    
send("{ö}")
                    
sleep(100)
                
Until $attack 0


EndSelect 
Hoffe es ist klar was ich meine.
Bin für jeden Hinweis dankbar :handsdown:

Schönen Abend noch
10/17/2010 10:03 MoepMeep#2
Threads? Aber keine Ahnung, ob das in AutoIt realisierbar ist :p
10/17/2010 10:32 maxi39#3
hier ein ähnlicher theard
[Only registered and activated users can see links. Click Here To Register...]
10/17/2010 10:51 amnesi#4
"multithreading" oda wie das heist :D also das 2 Sachen parralel laufen sind
in autoit (noch) nicht möglich

du könntest per hotkey aber einfach einzweites script starten
10/17/2010 10:53 maxi39#5
Quote:
Originally Posted by amnesi View Post
"multithreading" oda wie das heist :D also das 2 Sachen parralel laufen sind
in autoit (noch) nicht möglich

du könntest per hotkey aber einfach einzweites script starten
es gibt ne möglichkeit, sogar ne udf :)

hier:einmal durchlesen

[Only registered and activated users can see links. Click Here To Register...]
10/17/2010 10:55 amnesi#6
das geht auch nich :p da braucht man auch ZWEI scripte
10/17/2010 11:31 Shadow992#7
Quote:
Originally Posted by amnesi View Post
"multithreading" oda wie das heist :D also das 2 Sachen parralel laufen sind
in autoit (noch) nicht möglich

du könntest per hotkey aber einfach einzweites script starten
Falsch, du kannst in AutoIt genau 2 Sachen "gleichzeitig" ablaufen lassen.
Mehr als 2 gehen leider nicht ohne UDF und Dll.

Die Lösung des Problems ist OnEvent-Code. ;)
10/17/2010 11:57 amnesi#8
aso^^
ich lase mich immer wieder eines besseren belehren xD
10/17/2010 12:18 | Moep |#9
"AdlibEnable" ?
10/17/2010 13:50 Shadow992#10
Ich muss mich wohl doch etwas verbessern ein 100% Multithreading funktioniert nicht, aber mit OnEvent hat man zumindest etwas vergleichbares.

Hier ein Beispiel:
PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode"1)
#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Form1"185140270205)
GUISetOnEvent($GUI_EVENT_CLOSE"Form1Close")
$Button1 GUICtrlCreateButton("Button1"323212165$WS_GROUP)
GUICtrlSetOnEvent(-1"Button1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$on=0

While 1
    Sleep
(100)
    if (
$on==1Then Send("1")
WEnd

Func Button1Click
()
    
$on=1
EndFunc
Func Form1Close
()
    exit
EndFunc 
10/17/2010 20:45 lolkop#11
was hier geschrieben wurde ist nicht ganz richtig... man kann mehrere tausend sachen in einer sekunde machen... für den user sieht es dann so aus, als würde alles parallel laufen....

poste mal dein ganzes script und sag was du gerne seperat laufen lassen würdest.... denn könnte man auch was dazu sagen, bzw tipps geben wies realisiert werden könnte.
10/17/2010 21:18 PenGuin :O#12
Multithreading ist per AutoIt nicht möglich.
10/17/2010 21:24 lolkop#13
Quote:
Originally Posted by pinguin94 View Post
Multithreading ist per AutoIt nicht möglich.
multithreading bedeutet, das viele aktionen so schnell hintereinander ausgeführt werden, das der user denkt sie würden gleichzeitig ablaufen.

und das ist in der tat ganz einfach umsetzbar in autoit möglich.

2 aktionen gleichzeitig ausführen ist bei computern allgemein NICHT möglich.
und wenn du mir jetzt erzählen willst, das sprachen wie c++ das können, guck dir dochmal die source in asm an, und du wirst sehen, dass in asm genau wie in autoit der code von vorne bis hinten NACHEINANDER abgearbeitet wird...
es ist nicht möglich 2 sachen gleichzeitig zu machen.
10/17/2010 23:13 PenGuin :O#14
Quote:
Originally Posted by lolkop View Post
multithreading bedeutet, das viele aktionen so schnell hintereinander ausgeführt werden, das der user denkt sie würden gleichzeitig ablaufen.

und das ist in der tat ganz einfach umsetzbar in autoit möglich.

2 aktionen gleichzeitig ausführen ist bei computern allgemein NICHT möglich.
und wenn du mir jetzt erzählen willst, das sprachen wie c++ das können, guck dir dochmal die source in asm an, und du wirst sehen, dass in asm genau wie in autoit der code von vorne bis hinten NACHEINANDER abgearbeitet wird...
es ist nicht möglich 2 sachen gleichzeitig zu machen.
mehrere Kerne und so?
D.h. dass auch C++ kein Multithreading kann und du weißt selber ganz genau, dass es C++ kann.
10/18/2010 05:04 lolkop#15
wie gesagt multithreading heist NICHT das mehrere sachen gleichzeitig gemacht werden...

durch mehrere threads kann man programme teilweise effizienter umsetzen, da man zb komplizierte berechnungen mit höheren prioritäten laufen lassen kann.

trotzdem läuft alles nacheinander ab. und mal so nebenbei gesagt, habe ich bisher noch kein autoit programm gefunden, was so umfangreich wäre, dass es wirklich mit nutzung von mehreren threads hätte verbessert werden können :P