edit:
wie kann man den text in ner Label ändern?^^
wollte das später oben wo jetzt Label3 und Label4 die momentane HP/MP steht^^
mit _Memoryread lese ich den wert aus und gebe ihn dann in der label wieder
problem:
nur am start des scripts (wert ist dann immer 0 <.<)
wird memoryread später genutzt bleibt das Label leer
Dass kommt, weil du den state des inputs bei jedem durchgang neu setzt. Sorge dafür dass dies nur gescheht wenn die checkbox dass erste mal gecheckt wurde. Außerdem returned "GUICtrlGetState($checkbox)" keine 1 , bzw. 0.
Quote:
Originally Posted by DarkGER!
(kleines problem nebenbei o.o why kann man ner While schleife keinen name zum aufrufen geben? wie lol()? ich bin der meinung das ging mal o.ö)
Häh? Meinst du ne Func? Dann musst du das vorher auch als Func deklarieren.
Quote:
Originally Posted by DarkGER!
wie kann man den text in ner Label ändern?^^
GUICtrlSetData()
Quote:
Originally Posted by DarkGER!
wollte das später oben wo jetzt Label3 und Label4 die momentane HP/MP steht^^
mit _Memoryread lese ich den wert aus und gebe ihn dann in der label wieder
problem:
nur am start des scripts (wert ist dann immer 0 <.<)
wird memoryread später genutzt bleibt das Label leer
Dein Script macht nur das was du ihm bebringst. Wenn du es nur einmal oben den Wert auslesen lässt und dann in einer endlosschleife verschwindest, dann ist das klar...
Dass kommt, weil du den state des inputs bei jedem durchgang neu setzt. Sorge dafür dass dies nur gescheht wenn die checkbox dass erste mal gecheckt wurde. Außerdem returned "GUICtrlGetState($checkbox)" keine 1 , bzw. 0
ich weiß nicht ganz wie ich das machen soll o.o
tu ich es in ne While schleife flakert es ja.
heng ich unten ans GUI folgendes ran:
Code:
Do
Until GUICTRLREAD($Checkbox[1]) = 1
GUICtrlSetState($Input[1], $GUI_ENABLE)
dann sind alle Inputboxen sichtbar bis man die Checkbox benutzt
und weil die Funktion nur 1x aufgerufen wird passiert danach garnichtsmehr
wenn man es in eine Func tut muss diese ja erst aufgerufen werden.
edit:
wie kann man den text in ner Label ändern?^^
wollte das später oben wo jetzt Label3 und Label4 die momentane HP/MP steht^^
mit _Memoryread lese ich den wert aus und gebe ihn dann in der label wieder
problem:
nur am start des scripts (wert ist dann immer 0 <.<)
wird memoryread später genutzt bleibt das Label leer
For $a = 1 to 8
GUICtrlSetState($Input[$a], $GUI_DISABLE)
Next
For $b = 1 to 2
GUICtrlSetBkColor($Label[$b], $GUI_BKCOLOR_TRANSPARENT)
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
If ProcessExists("NostaleX.dat") = 0 then msgbox (16, "Nostale", "Nostale ist nicht Offen")
If ProcessExists("NostaleX.dat") = 1 then
Exit
endif
EndSwitch
If $check = 1 AND GUICTRLREAD($Checkbox[1]) = 1 Then
GUICtrlSetState($Input[1], $GUI_ENABLE)
$check = 0
EndIf
If $check = 0 AND GUICTRLREAD($Checkbox[1]) = 4 Then
GUICtrlSetState($Input[1], $GUI_DISABLE)
$check = 1
EndIf
WEnd
Wenn eine Checkbox disabled ist, hat sie nicht den Wert 0, sondern 4
sobald du mit guis arbeitest solltest du auf sleeps komplett verzichten. allgemein ist es in autoit viel sinnvoller auf die timerfunktionen zurückzugreifen, da ein sleep das gesamte script blockiert (selbes gilt für das processwait was du beim start button mit eingefügt hast).
desweiteren würde ich die ganzen check abfragen vom gui mit in die switch schleife einbauen. dafür gibt es ja den Else case.
zuletzt bleibt noch zu sagen, das ich nicht ganz verstehe warum du dir das ganze so umständlich machst. anstatt 2 buttons zu verwenden für start und stop könntest du auch einen nutzen, der wenn das tool läuft stop zeigt und sonst start. so könntest du auf die $active variable verzichten, da du per guictrlread vom button ja direkt ablesen kannst ob das tool läuft oder nicht.
selbes gilt für die check variablen, welche hier eigentlich überhaupt nicht gebraucht werden.
While 1 If TimerDiff($e) >= 5000 Then Send('e') $e = TimerInit() EndIf If TimerDiff($a) >= 1000 Then Send('a') $a = TimerInit() EndIf If TimerDiff($w) >= 1000 Then Send('w') $w = TimerInit() EndIf If TimerDiff($2) >= 3000 Then Send('2') $2 = TimerInit() EndIf If TimerDiff($q) >= 4000 Then Send('q') $q = TimerInit() EndIf WEnd EndFunc
da ist auch nur aufgeführt das ein timer die abgelaufene zeit genau erfassen kann :P
ein timer hat den vorteil das man ihn nicht in einer schleife laufen lassen muss, wie es bei sleep der fall ist (alles andere wird blockiert) sondern man kann per abfragen die differenzen abfragen.
initialisieren kannst du timer einfach per $variable = timerinit(). dann wird eine variable mit der aktuellen computerlaufzeit angelegt. jetzt kannst du per timerdiff($variable) jeweils die zeit anschauen, die seit dem anlegen der $variable vergangen ist.
wie du siehst wird das script hier nicht unterbrochen. die hauptschleife kann alle anderen sachen immernoch durchlaufen. wenn nun eine gegebene differenz erreicht ist, kann dein programm die gewünschte funktion ausführen.
hab hier mal kurz dein script genommen um zu zeigen wie ichs meine:
Code:
Global $Input[15], $Label[12], $Checkbox[6]
$Input[0] = 14
$Label[0] = 11
$Checkbox [0] = 5
Global $MP, $MP2, $MP_T
Global $HP, $HP2, $HP_T
Global $Skill1_T, $Skill2_T, $Skill3_T, $Skill4_T, $Angreifen_T, $Aufheben_T
Global $Active = 0
$Form1 = GUICreate("Nos Trainer", 668, 339, 34, 111)
$Progress1 = GUICtrlCreateProgress(24, 48, 142, 17)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Progress2 = GUICtrlCreateProgress(224, 48, 142, 17)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Button1 = GUICtrlCreateButton("Start", 448, 224, 147, 25)
$Button2 = GUICtrlCreateButton("Stop", 448, 288, 147, 25)
$Checkbox[1] = GUICtrlCreateCheckbox("Snacks benutzen? (HP)", 24, 80, 145, 17, 0x0300)
$Checkbox[2] = GUICtrlCreateCheckbox("Snacks benutzen? (MP)", 224, 80, 145, 17, 0x0300)
$Checkbox[3] = GUICtrlCreateCheckbox("Angreifen", 24, 240, 145, 17, 0x0300)
$Checkbox[4] = GUICtrlCreateCheckbox("Skills Nutzen", 408, 24, 145, 17, 0x0300)
$Checkbox[5] = GUICtrlCreateCheckbox("Aufheben", 224, 240, 145, 17, 0x0300)
$Label[1] = GUICtrlCreateLabel("", 72, 48, 36, 17)
$Label[2] = GUICtrlCreateLabel("", 272, 48, 36, 17)
$Label[3] = GUICtrlCreateLabel("Health Points", 24, 24, 145, 17, 1)
$Label[4] = GUICtrlCreateLabel("Magic Points", 224, 24, 145, 17, 1)
$Label[5] = GUICtrlCreateLabel("Ab wieviel HP?", 24, 112, 145, 17, 1)
$Label[6] = GUICtrlCreateLabel("Ab wieviel MP?", 224, 112, 145, 17, 1)
$Label[7] = GUICtrlCreateLabel(" Taste vom Snack?", 24, 176, 145, 17, 1)
$Label[8] = GUICtrlCreateLabel("Taste vom Snack?", 224, 176, 145, 17, 1)
$Label[9] = GUICtrlCreateLabel("Sleep time?", 224, 272, 145, 17, 1)
$Label[10] = GUICtrlCreateLabel("Sleep time?", 24, 272, 145, 17, 1)
$Label[11] = GUICtrlCreateLabel("Sleep time?", 568, 25, 75, 17, 1)
$Input[1] = GUICtrlCreateInput("", 24, 136, 145, 21)
$Input[2] = GUICtrlCreateInput("", 224, 136, 145, 21)
$Input[3] = GUICtrlCreateInput("", 24, 200, 145, 21)
$Input[4] = GUICtrlCreateInput("", 224, 200, 145, 21)
$Input[5] = GUICtrlCreateInput("", 408, 48, 145, 21)
$Input[6] = GUICtrlCreateInput("", 408, 88, 145, 21)
$Input[7] = GUICtrlCreateInput("", 408, 128, 145, 21)
$Input[8] = GUICtrlCreateInput("", 408, 168, 145, 21)
$Input[9] = GUICtrlCreateInput("", 24, 296, 145, 21)
$Input[10] = GUICtrlCreateInput("", 224, 296, 145, 21)
$Input[11] = GUICtrlCreateInput("", 568, 48, 75, 21)
$Input[12] = GUICtrlCreateInput("", 568, 88, 75, 21)
$Input[13] = GUICtrlCreateInput("", 568, 128, 75, 21)
$Input[14] = GUICtrlCreateInput("", 568, 168, 75, 21)
GUISetState(@SW_SHOW)
For $a = 1 to 14
GUICtrlSetState($Input[$a], 128)
Next
For $b = 1 to 2
GUICtrlSetBkColor($Label[$b], -2)
Next
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $Button1
$Active = 1
Start()
Case $Button2
Pause()
Case Else
GuiChecks()
EndSwitch
WEnd
Func GuiChecks()
If GUICTRLREAD($Checkbox[1]) = 1 Then
Enable($Input[1])
Enable($Input[3])
Else
Disable($Input[1])
Disable($Input[3])
EndIf
If GUICTRLREAD($Checkbox[2]) = 1 Then
Enable($Input[2])
Enable($Input[4])
Else
Disable($Input[2])
Disable($Input[4])
EndIf
IF GUICTRLREAD($Checkbox[3]) = 1 Then
Enable($Input[9])
Else
Disable($Input[9])
Endif
If GUICTRLREAD($Checkbox[4]) = 1 Then
Enable($Input[5])
Enable($Input[6])
Enable($Input[7])
Enable($Input[8])
Enable($Input[11])
Enable($Input[12])
Enable($Input[13])
Enable($Input[14])
Else
Disable($Input[5])
Disable($Input[6])
Disable($Input[7])
Disable($Input[8])
Disable($Input[11])
Disable($Input[12])
Disable($Input[13])
Disable($Input[14])
EndIf
IF GUICTRLREAD($Checkbox[5]) = 1 Then
Enable($Input[10])
Else
Disable($Input[10])
Endif
EndFunc
Func Start()
Progress()
If GUICTRLREAD($Checkbox[1]) = 1 Then
HPSnacks()
Endif
If GUICTRLREAD($Checkbox[2]) = 1 Then
MPSnacks()
Endif
If GUICTRLREAD($Checkbox[3]) = 1 Then
Angreifen()
Endif
If GUICTRLREAD($Checkbox[4]) = 1 Then
Skill1()
Skill2()
Skill3()
Skill4()
Endif
If GUICTRLREAD($Checkbox[5]) = 1 Then
Aufheben()
Endif
EndFunc
Func Progress()
For $x = $HP To $HP2
GUICtrlSetData($progress1, $x)
GUICtrlSetData($progress1, ($HP2 - $x))
Next
For $y = $MP To $MP2
GUICtrlSetData($progress2, $y)
GUICtrlSetData($progress2, ($MP2 - $y))
Next
Endfunc
Func HPSnacks()
If $HP < $HP2 And TimerDiff($HP_T) > GUICtrlRead($Input[3]) then
CONTROLSEND("NosTale","",0, GUICtrlRead($Input[1]))
$HP_T = TimerInit()
Endif
Endfunc
Func MPSnacks()
If $MP < $MP2 And TimerDiff($MP_T) > GUICtrlRead($Input[4]) then
CONTROLSEND("NosTale","",0, GUICtrlRead($Input[2]))
$MP_T = TimerInit()
Endif
Endfunc
Func Angreifen()
If TimerDiff($Angreifen_T) > GUICtrlRead($Input[9]) Then
CONTROLSEND("NosTale","",0, "{Space}")
$Angreifen_T = TimerInit()
EndIf
Endfunc
Func Skill1()
If TimerDiff($Skill1_T) > GUICtrlRead($Input[11]) Then
CONTROLSEND("NosTale","",0, GUICtrlRead($Input[5]))
$Skill1_T = TimerInit()
EndIf
Endfunc
Func Skill2()
If TimerDiff($Skill2_T) > GUICtrlRead($Input[12]) Then
CONTROLSEND("NosTale","",0, GUICtrlRead($Input[6]))
$Skill2_T = TimerInit()
EndIf
Endfunc
Func Skill3()
If TimerDiff($Skill3_T) > GUICtrlRead($Input[13]) Then
CONTROLSEND("NosTale","",0, GUICtrlRead($Input[7]))
$Skill3_T = TimerInit()
EndIf
Endfunc
Func Skill4()
If TimerDiff($Skill4_T) > GUICtrlRead($Input[14]) Then
CONTROLSEND("NosTale","",0, GUICtrlRead($Input[8]))
$Skill4_T = TimerInit()
EndIf
Endfunc
Func Aufheben()
If TimerDiff($Aufheben_T) > GUICtrlRead($Input[10]) Then
CONTROLSEND("NosTale","",0, "{ö}")
$Aufheben_T = TimerInit()
EndIf
Endfunc
Func Pause()
$Active = 0
Endfunc
Func Enable($control)
If GUICtrlGetState($control) = 144 Then GUICtrlSetState($control, 64)
EndFunc
Func Disable($control)
If GUICtrlGetState($control) = 80 Then GUICtrlSetState($control, 128)
EndFunc
habe jetzt das spiel nicht installiert ums zu testen aber sollte im prinziep alles so funktionieren.
While True
$Msg = GUIGetMsg()
If $Msg == -3 Then Exit
If $Msg == $Checkbox Then
If BitAnd(GUICtrlGetState($CheckBox), 4) Then
MsgBox(0, 1, 2)
EndIf
EndIf
WEnd
While True
$Msg = GUIGetMsg()
If $Msg == $GUI_EVENT_CLOSE Then Exit
If $Msg == $Checkbox Then
If BitAnd(GUICtrlRead($CheckBox), $GUI_CHECKED) Then
MsgBox(0, 1, 2)
EndIf
EndIf
WEnd
Kleines Zitat aus der Hilfe:
Quote:
As opposed to GUICtrlRead this function returns ONLY the state of a control enabled/disabled/hidden/show/dropaccepted