Anfänger braucht Unterstützung bei GUI und Entscheidungen - Danke im Vorraus

  • Nanana, nicht gleich aufgeben, Wydliez^^
    Lies dir in aller Ruhe mal die Hilfe durch(ich gehe mal davon aus, daß du sie dir schon runtergeladen hast)
    Wenn du den 3.Parameter bei Random nicht angibst, liefert Random eine Fließkommazahl und ohne besondere
    Vorkehrungen bekommst du daraus ums Verrecken keine Integer-Zahl..
    Probiers halt aus, es kann ja nix kaputtgehen, schlimmstenfalls klappt's und du stehst vor einem neuen Problem :rofl:
    Skripten soll doch Spaß machen..
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • zu Deustch:

    bei

    [autoit]

    random(1, 8)

    [/autoit]

    kommt sowas raus: 6.238475234785 und nicht 6

    daher gilt: 6 <> 6.238475234785

    somit

    [autoit]

    $i <> 6

    [/autoit]

    also kann die bedingung

    [autoit]

    $i = 6

    [/autoit]

    nciht erfüllt werden.

    Lösung:

    [autoit]

    $i = int($i)

    [/autoit]


    Weil dann $i 6 ist, somit MÜSSTE es funktionieren

    mfg
    Hauke

  • [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Local $kk =0, $mk=0, $nn=0, $fn=0, $ws=0, $ms=0, $ds=0, $hs = 0
    Dim $i
    Dim $k
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("WCE v. 1.00", 625, 194, 193, 139)
    $Label1 = GUICtrlCreateLabel("Wydliez' Charakter Entscheidungshelfer v. 1.00", 8, 8, 614, 43)
    GUICtrlSetFont(-1, 24, 400, 0, "Calibri")
    $Checkbox1 = GUICtrlCreateCheckbox("Körperkrieger", 16, 88, 97, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Mentalkrieger", 16, 112, 97, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Nahninja", 16, 136, 97, 17)
    $Checkbox4 = GUICtrlCreateCheckbox("Fernninja", 16, 160, 97, 17)
    $Checkbox5 = GUICtrlCreateCheckbox("Waffensura", 152, 88, 97, 17)
    $Checkbox6 = GUICtrlCreateCheckbox("Magiesura", 152, 112, 97, 17)
    $Checkbox7 = GUICtrlCreateCheckbox("Drachenschami", 152, 136, 97, 17)
    $Checkbox8 = GUICtrlCreateCheckbox("Heilschami", 152, 160, 97, 17)
    $Group1 = GUICtrlCreateGroup("Zwischen diesen Charaktern wählen", 8, 56, 249, 129)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Entscheide für Mich !", 264, 64, 355, 41, $WS_GROUP)
    $Input1 = GUICtrlCreateInput("", 264, 112, 353, 21)
    $Button2 = GUICtrlCreateButton("Neu", 264, 160, 75, 25, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("Exit", 544, 160, 75, 25, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("WCE v. 1.00 © Wydliez Software 2011", 344, 168, 192, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Select
    Case GUICtrlRead ($Checkbox1) = $GUI_CHECKED
    $kk = 1
    Case GUICtrlRead ($CheckBox1) <> $GUI_CHECKED
    $kk = 0
    Case GUICtrlRead ($Checkbox2) = $GUI_CHECKED
    $mk = 2
    Case GUICtrlRead ($CheckBox2) <> $GUI_CHECKED
    $mk = 0
    Case GUICtrlRead ($CheckBox3) = $GUI_CHECKED
    $nn = 3
    Case GUICtrlRead ($CheckBox3) <> $GUI_CHECKED
    $nn = 0
    Case GUICtrlRead ($CheckBox4) = $GUI_CHECKED
    $fn = 4
    Case GUICtrlRead ($CheckBox4) <> $GUI_CHECKED
    $fn = 0
    Case GUICtrlRead ($CheckBox5) = $GUI_CHECKED
    $ws = 5
    Case GUICtrlRead ($CheckBox5) <> $GUI_CHECKED
    $fn = 0
    Case GUICtrlRead ($CheckBox6) = $GUI_CHECKED
    $ms = 6
    Case GUICtrlRead ($CheckBox6) <> $GUI_CHECKED
    $ms = 0
    Case GUICtrlRead ($CheckBox7) = $GUI_CHECKED
    $ds = 7
    Case GUICtrlRead ($CheckBox7) <> $GUI_CHECKED
    $ds = 0
    Case GUICtrlRead ($CheckBox8) = $GUI_CHECKED
    $hs = 8
    Case GUICtrlRead ($CheckBox8) <> $GUI_CHECKED
    $hs = 0

    EndSelect

    $i = Random(1,8)
    $i = Int($i)

    Select

    Case $i = $kk
    $k = "Körper Krieger"
    Case $i = $mk
    $k = "Mental Krieger"
    Case $i = $nn
    $k = "Nahkampf Ninja"
    Case $i = $fn
    $k = "Fernkampf Ninja"
    Case $i = $ws
    $k = "Waffen Sura"
    Case $i = $ms
    $k = "Magie Sura"
    Case $i = $ds
    $k = "Drachen Schami"
    Case $i = $hs
    $k = "Heil Schami"
    Case Else
    $k = '$k wird nix zugewiesen'
    EndSelect

    MsgBox(0,"Antwort",$k)

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    immer noch die meldung ... ;(

  • Tut mir leid dir das sagen zu müssen, aber wir dürfen ned weiter helfen, weil bots sind bei uns hier verboten, bitte wende dich dazu an andere Foren.

  • hi,
    @YaoiFan17:hmm, meinst du wirklich, daß Wydliez hier einen Bot programmieren will?
    Wenn Ja, sollte der Thread geschlossen werden..
    Ist aber auch egal, denn wenn er die Hilfe nicht liest, ist das Spiel veraltet, bis er den Bot fertig hat..
    Random(1,8,1) liefert einen Integerwert im Bereich von 1 bis 8, jetzt muß er nur noch prüfen, ob diese Bedingungen eingehalten werden oder ob seine Zuweisungen(=0) evtl. gegen diesen Bereich verstoßen..
    So gesehen ist dies auch keine Hilfe bei der Bot-Programmierung sondern eher grundsätzlicher Natur^^
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Ja Metin2, dass ist ein Fertigkeitenbot, schaut euch mal die namensbeschreibungen an:
    $k = "Körper Krieger"
    $k = "Mental Krieger"
    $k = "Nahkampf Ninja"
    $k = "Fernkampf Ninja"
    $k = "Waffen Sura"
    $k = "Magie Sura"
    $k = "Drachen Schami"
    $k = "Heil Schami"

    Das sind die Fertigkeiten in Metin2^^

  • Ich seh da keinen Bot. lediglich ein Programm, das aus einer Liste zufällig eine Charakterklasse auswählt.

    Eine gute Gelegenheit, sich etwas mit Arrays zu beschäftigen.

    Spoiler anzeigen
    [autoit]

    #region - Timestamp
    ;2011-11-13 11:27:04
    #endregion - Timestamp

    [/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Local $kk = 0, $mk = 0, $nn = 0, $fn = 0, $ws = 0, $ms = 0, $ds = 0, $hs = 0
    Dim $i
    Dim $k
    Dim $aCheckbox[8][3] = [["Körperkrieger", 0, 0], _
    ["Mentalkrieger", 0, 0], _
    ["Nahninja", 0, 0], _
    ["Fernninja", 0, 0], _
    ["Waffensura", 0, 0], _
    ["Magiesura", 0, 0], _
    ["Drachenschami", 0, 0], _
    ["Heilschami", 0, 0]]
    Global $iLeft = 16, $iTop = 88
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("WCE v. 1.00", 625, 194, 193, 139)
    $Label1 = GUICtrlCreateLabel("Wydliez' Charakter Entscheidungshelfer v. 1.00", 8, 8, 614, 43)
    GUICtrlSetFont(-1, 24, 400, 0, "Calibri")
    For $i = 0 To UBound($aCheckbox) / 2 - 1
    $aCheckbox[$i][2] = GUICtrlCreateCheckbox($aCheckbox[$i][0], $iLeft, $iTop, 97, 17)
    $iTop += 24
    Next
    $iLeft += 136
    $iTop = 88
    For $i = UBound($aCheckbox) / 2 To UBound($aCheckbox) - 1
    $aCheckbox[$i][2] = GUICtrlCreateCheckbox($aCheckbox[$i][0], $iLeft, $iTop, 97, 17)
    $iTop += 24
    Next
    $Group1 = GUICtrlCreateGroup("Zwischen diesen Charaktern wählen", 8, 56, 249, 129)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Entscheide für Mich !", 264, 64, 355, 41, $WS_GROUP)
    $Input1 = GUICtrlCreateInput("", 264, 112, 353, 21)
    $Button2 = GUICtrlCreateButton("Neu", 264, 160, 75, 25, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("Exit", 544, 160, 75, 25, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("WCE v. 1.00 © Wydliez Software 2011", 344, 168, 192, 17)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To UBound($aCheckbox) - 1
    If BitAND(GUICtrlRead($aCheckbox[$i][2]), $GUI_CHECKED) = $GUI_CHECKED Then $aCheckbox[$i][1] = 1
    Next
    Do
    $rand = Random(0, UBound($aCheckbox) - 1, 1)
    Until $aCheckbox[$rand][1] = 1
    MsgBox(0, 0, $aCheckbox[$rand][0])
    Case $Button2
    For $i = 0 To UBound($aCheckbox) - 1
    GUICtrlSetState($aCheckbox[$i][2], $GUI_UNCHECKED)
    Next
    Case $Button3
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Ohh hab das hier erst jetzt gesehen, sorry mein Fehler, ist schon alles korrekt ^^
    Wenns das macht was im Namen steht, dann isses in Ordnung :D

    [autoit]

    $Label1 = GUICtrlCreateLabel("Wydliez' Charakter Entscheidungshelfer v. 1.00", 8, 8, 614, 43)

    [/autoit]
  • Geiles Script, aber ich glaube Arrays und BitAND und solche Sachen sind noch ein wenig zu hoch für ihn


    Schwimmen lernt man nur im tiefen Wasser.

    Wenn mna versucht den Code zu verstehen und unbekannte Befehle in der Hilfe sucht, dann wird das schon.
    Es gibt keinen Grund, sich als Anfänger vor Arrays zu fürchten. Das bewahrt einem davor, sich solche Endlos-Switchs und Ifs anzugewöhnen.

  • mhm gewiss, nur als mir am Anfang gesagt wurde, dass ich Arrays verwenden solle ( ich habe erst so seit ca. 1 Moneta gecodet ) da wusst ich auch nach mehreren Tutorials nichts damit anzufangen. Mitleriweile find ich, dass es eine der besten Erfindungen Seit 1980 ist^^

  • hat sich ja viel getan seit ich das letzte mal da war
    und i2c hat recht
    bloß ein generator der eine zufällige klasse auswählt :D

    €dit1:
    i2c das ist ja klasse nur weiß ich ja nicht mal was ein array ist ...
    es klappt aber ich steh davor wie ein Blinder im Kino

    könntest du erklären was die neuen Scriptzeilen machen ? Die du eingefügt hast ?

    mfg

    Einmal editiert, zuletzt von Wydliez (13. November 2011 um 17:55)

  • Wenn du nicht weisst was ein Array ist, dann solltest du dir das hier mal zu Gemüte führen. - http://www.bug-fix.info/array_tut.htm

    kommentierter Code
    [autoit]

    #region - Timestamp
    ;2011-11-13 18:14:05
    #endregion - Timestamp

    [/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <array.au3>
    ;ein Array mit 3 Spalten wird erstellt, das alle Informationen zu den Checkboxen aufnimmt
    ;[Text der Checkbox|Status (CHECKED/UNCHECKED|ControlID]
    Dim $aCheckbox[8][3] = [["Körperkrieger", 0, 0], _
    ["Mentalkrieger", 0, 0], _
    ["Nahninja", 0, 0], _
    ["Fernninja", 0, 0], _
    ["Waffensura", 0, 0], _
    ["Magiesura", 0, 0], _
    ["Drachenschami", 0, 0], _
    ["Heilschami", 0, 0]]
    _ArrayDisplay($aCheckbox, "$aCheckbox nach dem Start")
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("WCE v. 1.00", 625, 194, 193, 139)
    $Label1 = GUICtrlCreateLabel("Wydliez' Charakter Entscheidungshelfer v. 1.00", 8, 8, 614, 43)
    GUICtrlSetFont(-1, 24, 400, 0, "Calibri")
    $iLeft = 16
    $iTop = 88
    ;Schleife über die erste Hälfte des Arrays
    For $i = 0 To UBound($aCheckbox) / 2 - 1
    ;in die 3te Spalte des Arrays wird die ControlID gespeichert = GUICtrlCreateCheckbox(Inhalt der 1ten Spalte als Text verwenden, left,top...)
    $aCheckbox[$i][2] = GUICtrlCreateCheckbox($aCheckbox[$i][0], $iLeft, $iTop, 97, 17)
    ;Abstand von oben um 24px erhöhen, damit die nächste Checkbox weiter unten erstellt wird
    $iTop += 24
    Next
    _ArrayDisplay($aCheckbox, "$aCheckbox nach erstellen der linken Checkboxen")
    ;das selbe nochmal, für die 2te Hälfte des Arrays, nur etwas weiter rechts auf dem GUI
    $iLeft += 136
    $iTop = 88
    For $i = UBound($aCheckbox) / 2 To UBound($aCheckbox) - 1
    $aCheckbox[$i][2] = GUICtrlCreateCheckbox($aCheckbox[$i][0], $iLeft, $iTop, 97, 17)
    $iTop += 24
    Next
    _ArrayDisplay($aCheckbox, "$aCheckbox nach erstellen der rechten Checkboxen")
    $Group1 = GUICtrlCreateGroup("Zwischen diesen Charaktern wählen", 8, 56, 249, 129)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Entscheide für Mich !", 264, 64, 355, 41, $WS_GROUP)
    $Input1 = GUICtrlCreateInput("", 264, 112, 353, 21)
    $Button2 = GUICtrlCreateButton("Neu", 264, 160, 75, 25, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("Exit", 544, 160, 75, 25, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("WCE v. 1.00 © Wydliez Software 2011", 344, 168, 192, 17)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    ;Schleife über das gesammte Array, um zu prüfen welche Boxen ausgewählt sind
    For $i = 0 To UBound($aCheckbox) - 1
    ;If (die controlID aus Spalte 3 ausgewählt ist) Then setze Spalte 2 auf 1
    If BitAND(GUICtrlRead($aCheckbox[$i][2]), $GUI_CHECKED) = $GUI_CHECKED Then $aCheckbox[$i][1] = 1
    Next
    _ArrayDisplay($aCheckbox, "$aCheckbox nach Prüfung des Satus")
    Do
    ;erstelle Zufallszahl zwischen 0 und der Länge des Arrrays
    $rand = Random(0, UBound($aCheckbox) - 1, 1)
    ;bis die Zufallszahl ein Arrayindex ist, das vorher in SPalte 2 als "ausgewählt" gekennzeichnet wurde
    MsgBox(0, "", "Gewählte Zufallszahl: " & $rand & @CRLF & "Status des entsprechenden Controls: " & $aCheckbox[$rand][1])
    Until $aCheckbox[$rand][1] = 1
    MsgBox(0, 0, $aCheckbox[$rand][0])
    Case $Button2
    ;Schleife über das esammte Array, um alle checkboxen auf GUI_UNCHECKED zu setzen
    For $i = 0 To UBound($aCheckbox) - 1
    GUICtrlSetState($aCheckbox[$i][2], $GUI_UNCHECKED)
    Next
    _ArrayDisplay($aCheckbox, "$aCheckbox nach zurücksetzen der Auswahl")
    Case $Button3
    Exit
    EndSwitch
    WEnd

    [/autoit]