GUICtrlCreateCheckbox Rückgabewert?

01/07/2010 13:36 eXcalibur93#1
Hallo, ich hab mal wieder eine Frage, ist sehr leicht zu beantworten.
PHP Code:
$Fischkiller GUICtrlCreateCheckbox "Fischkiller an?"240200 )

Func _Fischtoeten()
    Switch 
$Fischkiller
        
Case Welchen Wert muss ich hier eintragen?
            
Sleep 10 )
            Case Else
    For 
$e 1 To UBound $Fisch ) -1
        $Coord2 
PixelSearch 8774501005578$Fisch[$e], 032 )
        If 
Not @error Then
            MouseClick 
"right"$Coord2[0], $Coord2[1], 1)
            
Sleep 100 )
            
_Fischtoeten()
        EndIf
    
Next
EndSwitch
EndFunc 

Also, mein Problem ist, dass der Bot immer nach Fischen sucht, egal ob dort ein Haken ist oder nicht. Deshalb brauche ich den Wert, den ich an der Stelle einsetzte statt Case 0.

Ich hab zwar in der Autoit hilfe nachgeschaut, aber mit Control-ID kann ich wenig anfangen. Wenn jemand weis ich ich das einbauen kann.
Und kenn vieleicht jemand ein GUI AutoIt Tutorial?
01/07/2010 15:52 KDeluxe#2
- eine Checkbox ohne GUICreate kannste schon mal vergessen
- Switch ist falsch
Versuchs mal so
PHP Code:
$nMsg GUIGetMsg()
Switch 
$nMsg
Case $Fischkiller
EndSwitch
;... 
- falsch aufgebaut, die Funktion soll ausgeführt werden wenn die Checkbox gecheckt ist und nicht wenn sie gedrückt wurde
Also so
PHP Code:
If BitAND($Fischkiller$GUI_CHECKED) = $GUI_CHECKED Then
Funktion
EndIf 
Um eine GUI zu erstellen kannst du ganz einfach Koda Formdesigner benutzer, dafür braucht man kein Tutorial
01/07/2010 18:12 eXcalibur93#3
Ja ich hab des ja so mit $nMsg und so, ich will hier nur net mein ganzes skript posten. Und die GUI hab ich auch erstellt.

PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=c:\users\león\desktop\Übergeordnet\bilder\s.kxf
$Form1_1 GUICreate("AngelbotV3"540370176124)
GUICtrlCreateLabel("AngelbotV3 by Saladino"200820517)
$Button1 GUICtrlCreateButton ("Start"4025020550)
$Button2 GUICtrlCreateButton ("Speichern"27025020550)
$Button3 GUICtrlCreateButton ("Pause / Weiter"4031020550)
$Button4 GUICtrlCreateButton ("Beenden"27031020550)

$read1 IniRead ("AngelbotbySaladino.ini""Section1""wert1_in_sectino1""")
$Server GUICtrlCreateInput$read12403724020)
$Server_ GUICtrlCreateLabel "Servernummer:"4037 )
$read2 IniRead ("AngelbotbySaladino.ini""Section1""wert2_in_sectino1""")
$CH GUICtrlCreateInput$read22406224020)
$CH_ GUICtrlCreateLabel "Channelnummer:"4062 )
$read3 IniRead ("AngelbotbySaladino.ini""Section1""wert3_in_sectino1""")
$ID GUICtrlCreateInput$read32408724020)
$ID_ GUICtrlCreateLabel "ID:"4087 )
$read4 IniRead ("AngelbotbySaladino.ini""Section1""wert4_in_sectino1""")
$Passwort GUICtrlCreateInput$read424011224020)
$Passwort_ GUICtrlCreateLabel "Passwort:"40112 )
$read5 IniRead ("AngelbotbySaladino.ini""Section1""wert5_in_sectino1""")
$Charakter GUICtrlCreateInput$read524013724020)
$Charakter_ GUICtrlCreateLabel "Charakternummer nach rechts:"40137 )
$read6 IniRead "AngelbotbySaladino.ini""Section2""wert1_in_sectino1""" )
$Wartezeit GUICtrlCreateInput$read624016224020)
$Wartezeit_ GUICtrlCreateLabel "Watezeit nach Blase:"40162 )

$Relogger Guictrlcreatecheckbox "Relogger an?"140200 )
$Fischkiller GUICtrlCreateCheckbox "Fischkiller an?"240200 )
$Muelwerfer GUICtrlCreateCheckbox "Müllwerfer an?"340200 )

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    _Main2
()
WEnd

Func _Main2
()
    
$nMsg GUIGetMsg()
    Switch 
$nMsg
        
Case $Button2
            _Speichern
()
        Case 
$Button3
            TogglePause
()
        Case 
$Button4
            Terminate
()
        Case Else
            
_Main()
    EndSwitch
EndFunc

Func _Main
()
    
WinActivate "METIN2" )
    
WinWaitActive "METIN2" )
    
_Angelhinein()
    
_Fischtoeten()
    
_Muschel()
    
_Relogg()
EndFunc 
Also so is es im Grund aufgebaut, hab auchnoch andere Funktionen, aber die funktionieren ja gut.
01/07/2010 19:40 KDeluxe#4
Du hast eigentlich nur die GUI gepostet
Wie soll man dir damit helfen?

Wenn du nicht einmal die Funktion postest bei der du Hilfe brauchst musst du es wohl selber machen
01/07/2010 21:54 eXcalibur93#5
Die Funktion ist doch im ersten Post, die musst du nut druntersetzten.
Ich hab ja gesagt, ich will net alles posten.
01/07/2010 22:06 Xereon#6
Quote:
Originally Posted by KillerDeluxe123 View Post
- eine Checkbox ohne GUICreate kannste
PHP Code:
If BitAND($Fischkiller$GUI_CHECKED) = $GUI_CHECKED Then
Funktion
EndIf 
Also eigentlich wurde die Antwort schon gepostet, auch wenn sie einen kleinen Fehler enthält:

PHP Code:
If BitAND(GuiCtrlRead($Fischkiller), $GUI_CHECKED) = $GUI_CHECKED Then
Funktion
EndIf 
Da ich mal stark annehme das der Threadersteller nicht weiß wofür man mal das BitAnd braucht hier mal eine kleine Erklärung der And Operation:

Um die And Operation zu verstehen muss man sich die Werte mal im Binär System angucken. Gehen wir mal davon aus das wir 2 Werte haben. Der erste steht ein Wert der verschiedene Zustände enthält(zB: Zustand1 = true, Zustand2 = false usw.). Der zweite Wert steht für genau einen dieser Zustände(zB Zustand3 = true) und nun soll überprüft werden, ob Zustand3 zutrifft.

Der Ansatzt ist ganz einfach:

00100110
00000100

Diese beiden Werte stellen die obengenannten Werte/Beispiele in dem Binärsystem da. Um nun überprüfen zu können, ob der dritte Zustand also die dritte Stelle von rechts gesetzt oder nicht gesetzt ist, benötigen wird eine And Operation. Diese setzt nur die Stellen auf 1, welche in den zu vergleichenden Werten beide auf 1 stehen also:

00100110
00000100

ergibt:

00000100

Also ist der Zustand = true. Sollte jedoch der Wert 00000000 lauten, ist der Zustand = false.
01/07/2010 23:19 KDeluxe#7
:eek:

Naja Fehler rutschen ab und zu mal rein
01/07/2010 23:37 eXcalibur93#8
Ok DICKES THX, ich hab des schon vorhin mit dem BitAND versucht, ging aber net^^
Also danke, damit is die Frage geklährt :D
01/09/2010 08:52 93lucas#9
ich machs immer so
PHP Code:
If (GUICTRLread($fischkiller)) = $GUI_CHECKED Then
Funcktion
Endif 
01/09/2010 12:07 Xereon#10
Quote:
Originally Posted by 93lucas View Post
ich machs immer so
PHP Code:
If (GUICTRLread($fischkiller)) = $GUI_CHECKED Then
Funcktion
Endif 
Das Problem daran ist, wenn du folgendes machts, dürfte es nic ht funktionieren:
Code:
GUICtrlSetState($fischkiller, $GUI_DISABLE+$GUI_CHECKED) 
If (GUICTRLread($fischkiller)) = $GUI_CHECKED Then
      ;Funcktion
Endif