Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 20:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



cpu last hoch

Discussion on cpu last hoch within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2009
Posts: 126
Received Thanks: 16
cpu last hoch

hi ich hab mir ein script erstellt was bei einem game die skilltasten drückt,
es läuft auch nur was ich nicht nachvollziehen kann das der timer immer beschleunigt und irgendwann die cpulast zu hoch wird das ich den script mit dem taskmanáger schließen muss.

deepware is offline  
Old 05/21/2011, 14:07   #2
 
MrPotter1234's Avatar
 
elite*gold: 1
Join Date: Dec 2009
Posts: 36
Received Thanks: 44
hast du das ganze in einer while schleife?
MrPotter1234 is offline  
Old 05/21/2011, 14:26   #3
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Die Zeile sollte noch ein Sleep beinhalten:
PHP Code:
        While $fRunning
        WEnd 
Shadow992 is offline  
Thanks
1 User
Old 05/24/2011, 09:38   #4
 
elite*gold: 0
Join Date: Dec 2009
Posts: 126
Received Thanks: 16
so hab dort noch ein sleep eingefügt es ergab sich auch eine leichte verbesserung leider beschleunigt der timer immer noch von allein.
gibts da noch andere möglichkeinten oder kann man das auch anders lösen?
deepware is offline  
Old 05/24/2011, 16:01   #5
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
sag dochmal ganz kurz was das programm eigentlich machen soll =)
lolkop is offline  
Old 05/25/2011, 16:10   #6
 
elite*gold: 0
Join Date: Dec 2009
Posts: 126
Received Thanks: 16
hab ich doch im ersten post schon geschrieben!
auch der script is dort gepostet!
also :
der script hat die tasten von 2 - 8 als zu drückende reserviert.
diese tasten sind von einem spiel von mir als skilltasten belegt.
desweiteren soll er diese tasten zur eingestellten zeit drücken,
jeweils jede sekunde +/- ein paar tausendstel.
der script wird mit der taste 1 gestartet (ursprünglich die STRG- taste)
wobei eine box angezeigt wird, das er läuft,
beim nochmaligen drücken wird er gestoppt.
die taSTE ESC beendet den script und die taste pause pausiert ihn.
für welches game ist mit sicherheit irrelevant.
deepware is offline  
Old 05/25/2011, 23:24   #7
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
dann verstehe ich nicht warum du das ganze nicht einfach so aufbaust:
Code:
#include <misc.au3>
Dim $timer, $run = False

While Sleep(50)
	If _IsPressed(31) Then
		$timer = 0
		$run = True
		ToolTip('Shooter läuft')
	EndIf
	If _IsPressed(13) Then
		$run = False
		ToolTip('Pause')
	EndIf
	If _IsPressed('1B') Then Exit
	If $run And TimerDiff($timer)>=1000 Then
		For $i=2 To 8
			Send($i)
		Next
		$timer = TimerInit()
	EndIf
WEnd
lolkop is offline  
Old 05/26/2011, 00:22   #8
 
elite*gold: 0
Join Date: Dec 2009
Posts: 126
Received Thanks: 16
dir ist schon bewusst das ifpressed die user32.dll braucht?
also da ich nicht immer nur eine sekunde eingeben möchte sondern diesen script ausbauen will auf eine gui wo ich tasten abwählen und zeiten einstellen kann.
die skills laufen nicht alle nur eine sekunde sondern alle unterschiedlich desshalb ist da ein 2d array drinn und wenn ich die genaue zeit eintrage komme ich mit deinem vorschlag beileibe nicht weiter.
sonnst hätte ich ja gleich

$c=0
hotkeyset("{1}", 's')

func s()
$c=1
hotkeyset("{1}", 'x')
while 1
if $c=0 then exitloop
send("2345678")
sleep(1000)
wend
endfunc

func x()
$c=0
hotkeyset("{1}", 's')
endfunc


schreiben können.
deepware is offline  
Old 05/26/2011, 01:19   #9
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
mit einem gui wird das ganze noch viel einfacher, da du die timerzeiten ja direkt auslesen kannst.

hier könntest du sogar die einzelnen sends noch seperat starten/stoppen.

in dem falle mit verschiendenen zeiten würde natürlich $timer[8] definitert werden, und die timerdiff abfrage in der forschleife stehen.

der rest wäre identisch.

also etwa so:
Code:
#include <misc.au3>
Dim $timer[7], $run = False, $msg[2] = ['Shooter läuft', 'Pause']
Dim $zeit[7] = [1010, 1020, 1030, 1040, 1050, 1060, 1070]

While Sleep(50)
	If _IsPressed(31) Then
		ToolTip($msg[$run])
		$run = Not $run
	EndIf
	If _IsPressed('1B') Then Exit
	If $run Then
		For $i=0 To 6
			If TimerDiff($timer[$i])>= $zeit[$i] Then
				Send($i+2)
				$timer[$i] = TimerInit()
			EndIf
		Next
	EndIf
WEnd
(habe mal start und pause auf eine taste gelegt aus alter gewohnheit)

wobei die $zeit[7] variable später ja sogar noch entfallen würde, und ersetzt werden würde durch inputs slider oder was auch immer du planst

finde das ganze so immernoch deutlich einfacher als das ganze auf 10 funktionen aufzuteilen.

Edit:
hier mal eine variante wie man mit beliebig vielen tasten das ganze mit gui definieren könnte:
Code:
Dim $array[1][4], $run = False, $label[2] = ['Start', 'Stop']
$array[0][0] = -1

$gui = GUICreate("Bot", 220, 170)
$listview = GUICtrlCreateListView("Key|Delay", 10, 10, 100)
$del = GUICtrlCreateButton('Delete', 120, 10, 90, 25)
$add = GUICtrlCreateButton('Add', 120, 40, 90, 25)
GUICtrlCreateGroup('Key', 120, 70, 40, 45)
$key = GUICtrlCreateInput('', 125, 85, 30, 25)
GUICtrlCreateGroup('Delay', 160, 70, 50, 45)
$delay = GUICtrlCreateInput('', 165, 85, 40, 25)
$start = GUICtrlCreateButton('Start', 120, 130, 90, 30)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $start
			$run = Not $run
			GUICtrlSetData($start, $label[$run])
		Case $add
			$found = False
			For $i=0 To UBound($array)-1
				If $array[$i][0] = -1 Then
					$array[$i][1] = GUICtrlRead($key)
					$array[$i][2] = GUICtrlRead($delay)
					$array[$i][0] = GUICtrlCreateListViewItem($array[$i][1]&'|'&$array[$i][2], $listview)
					$found = True
					ExitLoop
				EndIf
			Next
			If Not $found Then
				$ubound = UBound($array)
				ReDim $array[$ubound+1][4]
				$array[$ubound][1] = GUICtrlRead($key)
				$array[$ubound][2] = GUICtrlRead($delay)
				$array[$ubound][0] = GUICtrlCreateListViewItem($array[$ubound][1]&'|'&$array[$ubound][2], $listview)
			EndIf
		Case $del
			$selected = GUICtrlRead($listview)
			GUICtrlDelete($selected)
			For $i=0 To UBound($array)-1
				If $array[$i][0] = $selected Then
					$array[$i][0] = -1
					ExitLoop
				EndIf
			Next
	EndSwitch
	If Not WinActive($gui) And $run Then
		For $i=0 To UBound($array)-1
			If $array[$i][0] <> -1 And TimerDiff($array[$i][3]) >= $array[$i][2] Then
				Send($array[$i][1])
				$array[$i][3] = TimerInit()
			EndIf
		Next
	EndIf
WEnd
wie man sieht ist das ganze hier schon um einiges komplexer, da wir eine unbekannte zahl an zu sendenden zeichen haben =)
lolkop is offline  
Old 05/26/2011, 07:40   #10
 
elite*gold: 0
Join Date: Dec 2009
Posts: 126
Received Thanks: 16
als gui hatte ich mir eher sowas vorgestellt
das is jetzt nur der gui teil den ich in dem script habe die variablen sind jeweils in den arrays eingetragen wie ich die tasten abwählen kann wüste ich so noch nicht aber probieren muss man immer :


und das ist mein kompletter script inclusiver aller alten einträge:

wie du siehst steht viel gui drinn die erste gui sollte urspünglich zum veröffentlichen sein und eine iniread inisave funktion beinhalten ich glaube es geht aber auch anders um die eingetragenen werte zu behalten beim nächsten start des programms.die traygui hatte ich so aus der hilfe genommen um sie anzupassen damit ich den script im tray killen kann wenn der mal wieder rumlaggt aber ich glaub das is schon eingebaut normalerweise.
ich bin noch nicht sonderlich bewandert mit dieser thematic von autoit und muss noch viel lernen.
deepware is offline  
Old 05/26/2011, 12:54   #11
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
ich würde dir persöhnlich ja von einem solch "eingeschränkten" gui abraten.

willst du es dennoch so lösen, solltest du dir angewöhnen mit schleifen zu arbeiten.

man könnte das ganze so zusammenfassen:
Code:
Dim $checkbox[8], $time[8], $run = False
$gui_einstellungen = GUICreate("Einstellungen Taste und Zeit", 221, 261, 220, 130)
For $i=0 To 7
	$checkbox[$i] = GUICtrlCreateCheckbox('Taste '&$i+2, 10, 5+$i*25, 80, 20)
	GuiCtrlSetState(-1, 1)
	$time[$i] = GUICtrlCreateInput(1, 150, 5+$i*25, 40, 20)
	GuiCtrlCreateUpDown(-1)
Next
$save_button = GUICtrlCreateButton("OK", 32, 210, 40, 17, 0)
$cancel = GUICtrlCreateButton("Exit", 110, 210, 40, 17, 0)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $save_button
			$run = True
		Case $cancel
		Exit
	EndSwitch
	If $run Then
		; ...
	EndIf
WEnd
in den run teil wäre nurnoch eine for schleife einzufügen, welche mit einem eintrag dein script am laufen hält.

würde dir auch immer empfehlen das ganze über das gui steuerbar zu halten. eine oberfläche wird im allgemeinen lieber genutzt, als tastenkombos (kannst ja auch beides nutzen). also einfach einen start/pause button einfügen.
lolkop is offline  
Old 05/26/2011, 18:03   #12
 
elite*gold: 0
Join Date: Dec 2009
Posts: 126
Received Thanks: 16
Quote:
Originally Posted by lolkop View Post
dann verstehe ich nicht warum du das ganze nicht einfach so aufbaust:
Code:
#include <misc.au3>
Dim $timer, $run = False

While Sleep(50)
	If _IsPressed(31) Then
		$timer = 0
		$run = True
		ToolTip('Shooter läuft')
	EndIf
	If _IsPressed(13) Then
		$run = False
		ToolTip('Pause')
	EndIf
	If _IsPressed('1B') Then Exit
	If $run And TimerDiff($timer)>=1000 Then
		For $i=2 To 8
			Send($i)
		Next
		$timer = TimerInit()
	EndIf
WEnd
diesen teil deine codes habe ich mal getestet ansich nicht schlecht nur soll die taste pause für eine scriptpause sein, also pause gedrückt ich kann die taste 1 normal drücken, ohne das er meine skilltasten drückt.
der script aollte auch mit der taste 1 gestartet und in wartestellung gehen !
also: taste 1 gedrückt script drückt skilltasten taste1 nochmal script geht in wartestellung, taste pause gedrückt script lässt sich nichtmehr mit taste 1 starten es sei denn pause wurde beendet.
evtl. probier mal meinen kompletten code aus und schau in der console was er macht.
ich hab dir auch eine pm geschickt und dank dir trotzdem schonmal für deine großen hilfen.
ich teste noch die anderen scriptteile von dir und berichte!
dieser code funktioniert zuverlässiger keine ahnung warum hab den teil den ich geändert hab markiert!
evtl kannst du mir erklären warum der durch meine 3 zeilen zuverlässiger läuft?
deepware is offline  
Old 05/26/2011, 19:05   #13
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
naja wenn ich mir dein ursprungs script anschaue, sieht es für mich so aus als hättest du dir einfach viele codeschnipsel aus anderen scripten zusammen kopiert, welche du für brauchbar hältst.

wenn ich alleine deine pause funktion gesehen habe...

das problem bei diesen "fremden" scripten ist, dass sie in der regel recht stümperhaft geschrieben sind.

will ich beispielsweise eine pause in einem programm haben, so erstelle ich mir einfach einen zustand. dieser wird in einer variable gespeichert.

zb:
Code:
$script_laeuft = False
solange $script_laeuft nicht wahr ist soll meine dauerschleife einfach garnichts machen (pausieren quasi)

Code:
; zustand des scriptes für den anfang auf pause setzen
Dim $script_laeuft = False

; endlosschleife starten
While 1
    ; wenn das script läuft unser eigentliches script laufen lassen
    If $script_laeuft Then  ; "If $script_laeuft Then" is semantisch gesehen äquvalent zu If "$script_laeuft = True Then" also, wenn $script_laeuft wahr ist tuhe folgendes...
        ; eigentliches script
    EndIf
Wend
jetzt können wir ausserhalb dieser eigentlichen scriptfunktion einen weg definieren wie $script_laeuft auf True oder False gesetzt werden kann.

der einfachste weg wäre eine key abfrage wie du sie wolltest.
wenn die 1 gedrückt wird, soll $script_laeuft umgestellt werden.

hierfür eignet sich logischerweise die logische "not" verknüpfung am besten.

semantisch gesehen hat not folgende funktion:
Code:
Not True = False
Not False = True
angenommen unser $script_laeuft zustand ist Wahr (True), dann wäre Not $script_laeuft in diesem falle False. andersrum logischerweise das selbe. somit erreichen wir einen zustandswechsel in einer einzigen zeile mit
Code:
$script_laeuft = Not $script_laeuft
es wird quasi immer der gegenteilige zustand angenommen.

wollen wir dies zb bei tastendruck "1" anwenden, setzen wir einfach das ganze in eine If abfrage:
Code:
If _IsPressed(31) Then $script_laeuft = Not $script_laeuft
und schon haben wir einen weg unser script mit einer taste (in diesem falle der 1) zu starten und zu stoppen.

Code:
#include <misc.au3>
; zustand des scriptes für den anfang auf pause setzen
Dim $script_laeuft = False

; endlosschleife starten
While 1
    ;möglichkeit für zustandswechsel einbauen
	If _IsPressed(31) Then $script_laeuft = Not $script_laeuft
    ; wenn das script läuft unser eigentliches script laufen lassen
    If $script_laeuft Then  ; "If $script_laeuft Then" is semantisch gesehen äquvalent zu If "$script_laeuft = True Then" also, wenn $script_laeuft wahr ist tuhe folgendes...
        ; eigentliches script
    EndIf
Wend
soweit zur theorie. erschwerend kommt hierbei allerdings noch der fakt hinzu, das _IsPressed eine funktion ist, welche wahr zurück gibt, wenn die jeweilige taste gedrückt ist.

dies wird im millisekunden takt geprüft. hierraus folgt, das sobald die taste länger als eine millisekunde gedrückt wird (was immer der fall ist), der zustand sehr oft gewechselt wird.

Code:
taste gedrückt 1ms -> zustand geht von False auf True
taste gedrückt 2ms -> zustand geht von False auf True auf False
...
um wiederholungen zu vermeiden, muss hier noch eine schleife eingebaut werden, die nach dem tastendruck wartet, bis sie losgelassen wurde.

letztendlich könnte das script so aussehen:
Code:
#include <misc.au3>
; zustand des scriptes für den anfang auf pause setzen
Dim $script_laeuft = False

; endlosschleife starten
While 1
    ;möglichkeit für zustandswechsel einbauen
	If _IsPressed(31) Then
		$script_laeuft = Not $script_laeuft
		Do
		Until Not _IsPressed(31)
	EndIf
    ; wenn das script läuft unser eigentliches script laufen lassen
    If $script_laeuft Then  ; "If $script_laeuft Then" is semantisch gesehen äquvalent zu If "$script_laeuft = True Then" also, wenn $script_laeuft wahr ist tuhe folgendes...
        ; eigentliches script
		ToolTip('Script Läuft')
	Else
		ToolTip('Script läuft nicht! (ist pausiert)')
    EndIf
Wend
solange du nicht in der lage bist diese einfache funktionsweise zu verstehen, wirst du probleme haben überhaupt scripte schreiben zu können.
lolkop is offline  
Thanks
1 User
Old 05/26/2011, 19:19   #14
 
elite*gold: 0
Join Date: Dec 2009
Posts: 126
Received Thanks: 16
thx für das ausführliche erläutern ich lese mir das ganze intensiv durch,
wenn ich ruhe zu hause hab (3 * kids + frau = keine ruhe) was meisst abends spät der fall ist oder morgends wenn alle weg sind XD.
ja du hast recht ich bekomme öfter schnipsel ohne spezifische erklärung dazu.

ps:
schau dir mal meinen edit oben an ich habe deinem code 3 zeilen hinzu gefügt im spoiler.
bist du evtl ts mäßig zu erreichen oder via icq dann pm mir bitte deine daten.
deepware is offline  
Old 05/26/2011, 19:29   #15
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
warum das so "besser" läuft habe ich eben gerade erklärt.

ich bin auch in icq unter 316 575 686 erreichbar.

allerdings bin ich da recht wählerisch was kontakte angeht, mit denen ich schreibe, bzw denen ich helfe :P
lolkop is offline  
Reply


Similar Threads Similar Threads
CPU RPM zu hoch
03/13/2011 - Technical Support - 3 Replies
Aloah Community, ich habe ein kleines Problemchen. Und zwar ist es dass mein CPU Lüfter sich ein bisschen zu schnell dreht, so schnell das es etwas lauter wird, was beim Zocken nicht stört beim Schlafen jedoch schon. Suche einen gesunden Mittelwert. Zur Zeit dreht er mit 1400 RPM, das finde ich ein bisschen viel, dafür dass ich nur Surfe etc. Sobald ich ins BIOS gehe und dort die Lüftersteuerung aktiviere, auf "Leise" schalte, dreht der Lüfter sich mit 400RPM, das ist meiner Meinung...
Wie Lad ich neue SF hoch?
01/18/2011 - Metin2 Private Server - 1 Replies
Moin Com , Kann mir wer helfen neue Sf hochzuladen und die anderen zu löschen? Möchte die SF von kay. DANKE
Wie hoch mit dem EQ?
11/21/2010 - Metin2 - 18 Replies
Hey habe heute auf Lykanthra angefangen,da ich gestern gebannt wurde... Hab direkt mal bissjen EQ geholt und exp ring doppeldrop etc. Jetzt wollt ich ma fragen wie hch ich ca. komme wenn ich mit dem eq lvl bis morgen. Also EQ: Mönchspp+9 schutz+3 schwert+9 db+3 5halbis 10teufel 5ohnmacht Schild,helm etc.+6 ohne bonis :/ Dann Tipp+9 Hast+4 10schwertdef 1500tp 10TP Absorbi
Ich lvl accs hoch
07/01/2010 - Trading - 12 Replies
ICh möchte an bieten accounts hoch zu leveln hier erstmal die spiele die ich level: Combat arms (eu)(zz nicht spielbar) cabal(de) s4 leauge pennergame und noch viele mehr ich nehme psc e*gold dshinis und ich nehme nie mehr als 25€psc(außer es ist wirklich sone arbeit wie 50-60 lvl machen)



All times are GMT +1. The time now is 20:48.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.