Hilfe Büdde

08/23/2010 22:57 Testgamer01#1
Hi bin total der Anfänger und hab da mal eine frage wie ich das Skript hier zum laufen bekomme ??????



HotKeySet("{F6}","_Exit")

While True
$Energy = PixelSearch (1555,144,1586,156,0x606060)
$Mana = PixelSearch (1545,159,1559,169,0x606060)
If IsArray ($Energy) = Send ("{F1}")
If IsArray ($Mana) = Send ("{F4}")


O.k jetzt mal zu dem was es können soll eigentlich nicht viel
soll die beiden Positionen permanent überwachen und sobald Energy oder Mana halt denn wert hat die entsprechenden Tasten F1/F4 1 mal drücken

wenn mir jemand das so um schreibt das es funktioniert wehre ich sehr dankbar
08/23/2010 23:17 omer36#2
sollte klappen..
PHP Code:
HotKeySet("{F6}""_exit")

While 
True
    $Energy 
PixelSearch (1555,144,1586,156,0x606060)
    
$Mana PixelSearch (1545,159,1559,169,0x606060)
    If 
IsArray($Energy) = True Then
        Send
("{F1}")
    ElseIf 
IsArray($Mana) = True Then
        Send
("{F4}")
    EndIf
WEnd


Func _exit
()
    Exit
EndFunc

While 1
Sleep
("100")
WEnd 
08/24/2010 00:49 Testgamer01#3
ok danke echt super
08/24/2010 01:03 Testgamer01#4
Jetzt ist mir da noch eine idee gekommen ist es möglich dass man noch eine taste dazu gibt die alle 3-5 min gedrückt wird Zum Beispiel F3
wenn ja wie würde denn das Script dann aus sehen
Danke schon mal
08/24/2010 01:06 Psycho_Ente#5
Ich denke das geht so:

Du Brauchst einen Timer ($timer1 = TimerInit())

Anschließend eine Variable welche die Zeit einspeichert(In Millisekunden)
Wenn es durch eine Inputbox entschieden werden soll, macht man das einfach über eine Inputbox.

Nun machen wir eine If schleife:

PHP Code:
If TimerDiff($timer1) > $input1 then


Send
("{F3}")

EndIF 
Hoffe habe keinen Fehler gemacht :)


EDIT: Komplett dann glaub ich so:
PHP Code:
HotKeySet("{F6}""_exit")
$zahl 120000
$Timer1 
TimerInit()
While 
True
    $Energy 
PixelSearch (1555,144,1586,156,0x606060)
    
$Mana PixelSearch (1545,159,1559,169,0x606060)
    If 
IsArray($Energy) = True Then
        Send
("{F1}")
    ElseIf 
IsArray($Mana) = True Then
        Send
("{F4}")
    EndIf
If 
TimerDiff($timer1) > $zahl then


Send
("{F3}")
EndIf
WEnd


Func _exit
()
    Exit
EndFunc

While 1
Sleep
("100")
WEnd 
Edit² Oh mann, ich hatte grade soviele Gemacht:facepalm: Aber ich meine jetzt ist es richtig...
08/24/2010 01:16 Testgamer01#6
hmm wo sollte ich das im script einbauen und wo geb ich die zeit an ???
Sry für die vielen fragen aber bin Grade erst bei Einführung kapitel 5
08/24/2010 01:20 Psycho_Ente#7
Hatte nen Edit gemacht mit Komplett lösung jetzt euch endlich Richtig xDDD
Bin schon bissl Müde deswegen hab ich vorher ziemlich harte fehler gemacht xD
PHP Code:
HotKeySet("{F6}""_exit")
$zahl 120000 Müssten 2 Minuten sein
$Timer1 
TimerInit()
While 
True
    $Energy 
PixelSearch (1555,144,1586,156,0x606060)
    
$Mana PixelSearch (1545,159,1559,169,0x606060)
    If 
IsArray($Energy) = True Then
        Send
("{F1}")
    ElseIf 
IsArray($Mana) = True Then
        Send
("{F4}")
    EndIf
If 
TimerDiff($timer1) > $zahl then; If abfrage des Timers
Send
("{F3}")
EndIf
WEnd


Func _exit
()
    Exit
EndFunc

While 1
Sleep
("100")
WEnd 
08/24/2010 01:29 Testgamer01#8
ok danke
gibt es irgend eine Seite wo die befehle wie EndIf/If TimerDiff/While True und so weiter genauer erklärt werden ???damit Mann sich mit denn ganzen befehlen mal aus kennt

Ps: hat irgend jemand einen Buch Tipp wo ich das programmieren lernen kann???
08/24/2010 03:35 Lawnmove#9
Ganz einfach in AutoIT Taste F1 drücken und schwups haste Hilfe offen
und kannst mit Index suchen alle Befehle.
Wenn alles auf englisch ist, auf AutoIT.de vertreiben die 3 Dateien also die Deutsche Version der Hilfe.
08/24/2010 10:11 lolkop#10
das ganze wird so aber nicht funktionieren....

der timer liest die aktuelle laufzeit des pcs ein. beim timer init wird diese zeit in einer variable gespeichert und beim timerdiff wird der unterschied der jetzigen von der durch timerinit gespeicherten laufzeit berechnet und so die vergangene zeit bestimmt.

in deinem code hast du das hier gemacht:
Code:
$zahl = 120000
$Timer1 = TimerInit()
while1
[...]
If TimerDiff($timer1) > $zahl then Send("{F3}")
[...]
wend
das würde folgendes bedeuten... du setzt eine startzeit. jetzt wird in der schleife ständig geschaut ob bereits 120.000 millisekunden seit dieser zeit vergangen sind.
ist die zeit vergangen sendet er F3. danach fängt die schleife wieder an und er guckt wieder ist die zeit vergangen?
da sie ja bereits um war ist sie selbstverständlich schon vergangen und er wird nun jedes mal wenn die abfrage erreicht wurde wieder F3 senden.

natürlich musst du nach dem senden von F3 den timer wieder neu initialisieren, um so alle x millisekunden etwas zu machen.

richtig wäre also:
Code:
$zahl = 120000
$Timer1 = TimerInit()
while1
[...]
If TimerDiff($timer1) > $zahl then
    Send("{F3}")
    $Timer1 = TimerInit()
endif
[...]
wend
auch die abfrage auf arrays ist nicht wirklich logisch richtig gelöst.
Code:
    If IsArray($Energy) = True Then
        Send("{F1}")
    ElseIf IsArray($Mana) = True Then
        Send("{F4}")
    EndIf
zunächstmal sollte klar sein, das else in diesem fall total unangebracht ist. wenn die energieabfrage erreicht ist kann trotzdem mana erreicht werden. es muss also auf beides geprüft werden.
das true ist sowieso überflüssig und auf endif kann verzichtet werden, wenn nach dem if nur eine funktion aufgerufen wird. also würde es besser so aussehen:
Code:
    If IsArray($Energy) Then Send("{F1}")
    If IsArray($Mana) Then Send("{F4}")
08/24/2010 11:53 Psycho_Ente#11
[QUOTE=lolkop;6535469]das ganze wird so aber nicht funktionieren....

der timer liest die aktuelle laufzeit des pcs ein. beim timer init wird diese zeit in einer variable gespeichert und beim timerdiff wird der unterschied der jetzigen von der durch timerinit gespeicherten laufzeit berechnet und so die vergangene zeit bestimmt.

in deinem code hast du das hier gemacht:
Code:
$zahl = 120000
$Timer1 = TimerInit()
while1
[...]
If TimerDiff($timer1) > $zahl then Send("{F3}")
[...]
wend
das würde folgendes bedeuten... du setzt eine startzeit. jetzt wird in der schleife ständig geschaut ob bereits 120.000 millisekunden seit dieser zeit vergangen sind.
ist die zeit vergangen sendet er F3. danach fängt die schleife wieder an und er guckt wieder ist die zeit vergangen?
da sie ja bereits um war ist sie selbstverständlich schon vergangen und er wird nun jedes mal wenn die abfrage erreicht wurde wieder F3 senden.

natürlich musst du nach dem senden von F3 den timer wieder neu initialisieren, um so alle x millisekunden etwas zu machen.

richtig wäre also:
Code:
$zahl = 120000
$Timer1 = TimerInit()
while1
[...]
If TimerDiff($timer1) > $zahl then
    Send("{F3}")
    $Timer1 = TimerInit()
endif
[...]
wend
Hast natürlich recht...
Komm mir jetzt auch ein bisschen doof vor :facepalm:
War wie gesagt auch schon ziemlich Müde :P
Aber das andere hatte ich ja nicht gemacht, nur die Zeit abfrage mit dem Pixelsearch und so hab ihc nichts am Hut gehabt ^^
Das kam von omer36
08/25/2010 17:53 Testgamer01#12
hallo hab das jetzt mal so gemacht
HotKeySet("{F6}", "_exit")

While True
$Energy = PixelSearch (1555,144,1586,156,0x606060)
$Food = PixelSearch (1598,158,1614,169,0x5350DA)
If IsArray($Energy) Then Send("{F1}")
If IsArray($Mana) Then Send("{F4}")
EndIf
WEnd


Func _exit()
Exit
EndFunc

While 1
Sleep("10")
WEnd

Aber da geht nichts WARUM ??????
Danke für eure vielen Antworten