|
You last visited: Today at 07:58
Advertisement
Autoit Code hilfe.
Discussion on Autoit Code hilfe. within the AutoIt forum part of the Coders Den category.
12/14/2013, 12:02
|
#1
|
elite*gold: 50
Join Date: Feb 2009
Posts: 765
Received Thanks: 927
|
Autoit Code hilfe.
Servus Community,
Folgendes Problem habe ich, mein Script führt aus das er in kurzen Abstände in 10 verschiedene Handelschats eine bereits geschriebene Nachricht unendlich lang wiederholt.
Mein Pixelsearch ist darauf geschrieben in einem kleinen Bereich, eine gewisse Farbe zu erkennen und bei Erfolg einen Sound abspielt.
Nun kommt das eigentliche Problem, ich vermute durch die ganzen Sleeps, wird doch alles pausiert und somit auch der Pixelsearch darum spielt er auch keinen Sound ab.
Starte ich das Skript -> funktioniert Pixelsearch einwandfrei
Starte ich den Handelschat per Hotkey -> geht Pixelsearch irgendwie nicht mehr
Vllt. hat einer eine Idee, eine alternative zu Sleep ? Also nur warten lassen und nicht pausieren ?
Ich bitte um eure Hilfe, schon mal danke im vorraus.
Code:
HotKeySet ("{numpadsub}", "_Exit")
HotKeySet ("{F2}", "Start")
Func Start()
While 1
Send("{ENTER}") ; trade1
Sleep(100)
Send("/trade 1")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade1
Send("{ENTER}") ; trade2
Sleep(100)
Send("/trade 2")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade2
Send("{ENTER}") ; trade3
Sleep(100)
Send("/trade 3")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade3
Send("{ENTER}") ; trade4
Sleep(100)
Send("/trade 4")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade4
Send("{ENTER}") ; trade5
Sleep(100)
Send("/trade 5")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade5
Send("{ENTER}") ; trade6
Sleep(100)
Send("/trade 6")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade6
Send("{ENTER}") ; trade7
Sleep(100)
Send("/trade 7")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade7
Send("{ENTER}") ; trade8
Sleep(100)
Send("/trade 8")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade8
Send("{ENTER}") ; trade9
Sleep(100)
Send("/trade 9")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade9
Send("{ENTER}") ; trade10
Sleep(100)
Send("/trade 10")
Sleep(500)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{ENTER}")
Sleep(100)
Send("{UP}")
Sleep(100)
Send("{ENTER}")
Sleep(2000) ; trade10
WEnd
EndFunc
Func _Exit()
Exit
EndFunc
While True
$pos = PixelSearch(2,294,208,552,7357318,10)
If isArray($pos) then
SoundPlay(@WindowsDir & "\media\tada.wav", 1)
Sleep(1000)
EndIf
WEnd
|
|
|
12/14/2013, 13:23
|
#2
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Hab schonmal einen Movequest losgeschickt.
Der Fehler liegt eigentlich auf der Hand.
AutoIt hat kein Multithreading, d.h. du kannst nicht 2 Sachen gleichezeitig machen.
Richtig wäre die While True WEnd in die Funktion zu setzen, da wenn du einmal die Funktion Start triggerst du aus der While 1 WEnd Schleife nicht mehr rauskommst.
Wenn du Start nicht triggern würdest sondern einfach wartest und der Pixel erscheint dann sollte der Ton zu hören sein.
|
|
|
12/14/2013, 15:13
|
#3
|
elite*gold: 50
Join Date: Feb 2009
Posts: 765
Received Thanks: 927
|
Super danke dir, du hast mir das bestätigt was ich mir gedacht habe.
Dachte es gäbe vllt eine Alternative.
Dann weiß ich evt. wie ich anders das Problem beheben könnte.
|
|
|
12/16/2013, 17:37
|
#4
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
General Coding -> AutoIt
#moved
|
|
|
12/16/2013, 17:54
|
#5
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
|
Quote:
Originally Posted by flumio
Super danke dir, du hast mir das bestätigt was ich mir gedacht habe.
Dachte es gäbe vllt eine Alternative.
Dann weiß ich evt. wie ich anders das Problem beheben könnte.
|
AdlibRegister bzw. AdlibEnable sollte das sein, was du suchst.
|
|
|
12/16/2013, 18:03
|
#6
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Dann dürfte er die Suche aber nicht in eine Schleife setzen, ansonsten würde AdlibRegister nichts bringen.
|
|
|
12/16/2013, 21:34
|
#7
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
statt des sleeps kann man einfach mit timern arbeiten...
so sollte es je nach hardware möglich sein zwischen 3.000 und 50.000 aktionen pro sekunde auszuführen....
für ein derart einfaches script reicht das allemal.
Edit:
bsp code:
Code:
Opt('SendKeyDelay', 0)
Opt('SendKeyDownDelay', 0)
HotKeySet ("{numpadsub}", "EndScript")
HotKeySet ("{F2}", "Start")
Global $tradeNumber=1, $tradeAction, $tradeTimer, $runTrades, $searchTimer
While True
; do pixelsearch stuff
If TimerDiff($searchTimer)>=1000 Then
PixelSearch(2,294,208,552,7357318,10)
If Not @error then
SoundPlay(@WindowsDir & "\media\tada.wav", 1)
$searchTimer = TimerInit()
EndIf
EndIf
; do tradestuff
If $runTrades Then
Trade($tradeNumber)
If $tradeNumber >= 10 Then
$tradeNumber = 1
$runTrades = False
EndIf
EndIf
WEnd
Func Start()
$runTrades = Not $runTrades
$tradeAction = 0
$tradeNumber = 1
EndFunc
Func Trade($number)
MySend(0, '{enter}', 2000)
MySend(1, '/trade '&$number, 100)
MySend(2, '{enter}', 500)
MySend(3, '{enter}', 100)
MySend(4, '{up}', 100)
MySend(5, '{up}', 100)
MySend(6, '{enter}', 100)
MySend(7, '{enter}', 100)
MySend(8, '{up}', 100)
MySend(9, '{enter}', 100)
If $tradeAction >= 9 Then
$tradeAction = 0
$tradeNumber += 1
EndIf
EndFunc
Func MySend($action, $content, $sleepBefore)
If TimerDiff($tradeTimer)>=$sleepBefore And $action=$tradeAction Then
Send($content)
$tradeTimer = TimerInit()
$tradeAction += 1
EndIf
EndFunc
Func EndScript()
Exit
EndFunc
|
|
|
Similar Threads
|
Hilfe bei AutoIt code
11/26/2009 - AutoIt - 2 Replies
Hi ich such n AutoIt code wobei man
strg+h
für etwa 200 ms drücken kann =)
Mfg
Colossus93
|
All times are GMT +2. The time now is 07:58.
|
|