2 Fragen wegen ListView

  • Hallo AutoItler,
    Ich hab ein kleines Problemchen was ListView betrifft.

    Ich habe vier Spalten, in der ersten Spalte wird immer ein Name durch eine ComboBox eingetragen, zweite und dritte wird durch Computer Zeit und Datum definiert und vierte wieder durch eine ComboBox.

    Nun möchte ich gerne aber die Zeit und das Datum auslesen und vergleichen, wenn dieses eintrifft soll ein Beep Ton ausgegeben werden.
    Auch soll danach diese Zeile nach eintreffen gelöscht werden und einen Eintrag in ein externes Textdokument geschrieben werden.

    Hier mal der Code:

    Spoiler anzeigen
    [autoit]

    ;~ GUI und Windows Daten
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <GuiListView.au3>
    #Include <Array.au3>
    #Include <File.au3>
    #Include <Date.au3>

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

    ;~ Internet
    #include <INet.au3>
    #include <IE.au3>

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

    ;~ Tab Items
    #include <StaticConstants.au3>
    #include <TabConstants.au3>

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

    #NoTrayIcon

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

    Global $AnzBosse, $Bosse[50][50], $File, $i, $z, $verlaufsanzeige

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

    If Not FileExists(@ScriptDir & "\verlauf."&@MDAY&"."&@MON&".spawn") Then
    FileWrite(@ScriptDir & "\verlauf."&@MDAY&"."&@MON&".spawn", "Verlauf für den "&@MDAY&"."&@MON&"."&@YEAR)
    FileWriteLine(@ScriptDir & "\verlauf."&@MDAY&"."&@MON&".spawn", "")
    EndIf

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

    _dataload()

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

    #Region ### START Koda GUI section ### Form=
    $calculator = GUICreate("Boss Calculator", 264, 600, 193, 125)

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

    $bossl = GUICtrlCreateLabel("Boss Wählen:", 8, 8, 88, 20)
    GUICtrlSetFont(-1, 10, 800, 6, "Arial")
    $boss = GUICtrlCreateCombo("Boss Wählen:", 136, 8, 121, 25)

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

    For $i=1 to $AnzBosse
    GUIctrlSetData($boss, $bosse[$i][0] & "|")
    Next

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

    $realml = GUICtrlCreateLabel("Aktueller Realm:", 8, 32, 110, 20)
    GUICtrlSetFont(-1, 10, 800, 4, "Arial")
    $realm = GUICtrlCreateCombo("Realm Wählen:", 136, 32, 121, 25)
    GUICtrlSetData(-1, "1|2|3|4|5|6|7|8")

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

    $respawntimel = GUICtrlCreateLabel("Respawnzeit:", 8, 56, 85, 20)
    GUICtrlSetFont(-1, 10, 800, 6, "Arial")
    $respawntime = GUICtrlCreateInput("SELECT BOSS", 136, 56, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    $timel = GUICtrlCreateLabel("Aktuelle Uhrzeit:", 8, 80, 109, 20)
    GUICtrlSetFont(-1, 10, 800, 4, "Arial")
    $time = GUICtrlCreateInput(@HOUR&":"&@MIN&":"&@SEC, 136, 80, 121, 21)

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

    $datel = GUICtrlCreateLabel("Aktuelles Datum:", 8, 104, 111, 20)
    GUICtrlSetFont(-1, 10, 800, 4, "Arial")
    $date = GUICtrlCreateInput(@YEAR&"/"&@MON&"/"&@MDAY, 136, 104, 121, 21)

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

    $calc = GUICtrlCreateButton("Berechnen", 8, 128, 123, 25, 0)
    $aktu = GUICtrlCreateButton("Aktualisieren", 136, 128, 123, 25, 0)
    $delete = GUICtrlCreateButton("Spawn löschen", 8, 568, 123, 25, 0)
    $verlauf = GUICtrlCreateButton("Verlauf anzeigen >>", 136, 568, 123, 25, 0)

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

    $spawnlistl = GUICtrlCreateLabel("Spawnliste:", 8, 160, 75, 20)
    GUICtrlSetFont(-1, 10, 800, 6, "Arial")
    $spawnlist = GUICtrlCreateListView("Boss Name:|Spawnt um:|Am:|Auf Realm:", 8, 184, 250, 382)
    GUISetState(@SW_SHOW)

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

    $verlaufsanzeigen = GUICreate("Form1", 405, 469, 475, 256, BitOR($WS_SYSMENU,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS, $WS_EX_TOOLWINDOW), BitOr($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $verlaufhide = GUICtrlCreateButton("<< Verlauf verbergen", 0, 440, 137, 25, 0)
    GUISetState(@SW_HIDE, $verlaufsanzeige)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $Msg = GUIGetMsg()

    If $msg = GUICtrlRead($boss) Then
    For $i = 1 to $AnzBosse
    If GUIctrlRead($boss) == $bosse[$i][0] Then
    GUICtrlSetData($respawntime, $bosse[$i][4])
    ElseIf GUIctrlRead($boss) = "Boss Wählen:" Then
    GUICtrlSetData($respawntime, "SELECT BOSS")
    EndIf
    Next
    EndIf

    If $msg = $calc Then
    If guictrlread($respawntime) <> "SELECT BOSS" and guictrlread($realm) <> "Realm Wählen:" Then
    local $sdate = stringsplit(_ADD(), " ")
    GUICtrlCreateListViewItem(GUIctrlRead($boss)&"|"&$sdate[2]&"|"&$sdate[1]&"|"&GUIctrlRead($Realm), $spawnlist)
    FileWrite(@ScriptDir & "\verlauf."&@MDAY&"."&@MON&".spawn", "Eintragung von: "&GUIctrlRead($boss)&" um "&guictrlread($time)&" am "&@MDAY&"."&@MON&"."&@YEAR)
    FileWriteLine(@ScriptDir & "\verlauf."&@MDAY&"."&@MON&".spawn", "")
    Else
    MsgBox(16, "ERROR", "PLEASE SELECT BOSS AND REALM")
    EndIf
    EndIf

    If $msg = $delete Then
    If GUICtrlRead($spawnlist) Then
    GUICtrlDelete(GUICtrlRead($spawnlist))
    FileWrite(@ScriptDir & "\verlauf."&@MDAY&"."&@MON&".spawn", "Löschung von: "&_GUICtrlListView_GetItemText($spawnlist, 1)&" um "&@HOUR&":"&@MIN&":"&@SEC&" am "&@MDAY&"."&@MON&"."&@YEAR) ;<=== schreibt immer eine 0 in eine Datei
    FileWriteLine(@ScriptDir & "\verlauf."&@MDAY&"."&@MON&".spawn", "")
    Else
    MsgBox(16, "ERROR", "PLEASE SELECT SPAWN")
    EndIf
    EndIf

    If $msg = $aktu Then
    GUIctrlSetData($time, @HOUR&":"&@MIN&":"&@SEC)
    GUiCtrlSetData($date, @YEAR&"/"&@MON&"/"&@MDAY)
    EndIf

    If $msg = $verlauf Then
    GUISetState(@SW_SHOW, $verlaufsanzeigen)
    $verlaufsanzeige = GUICtrlCreateEdit("", 0, 0, 401, 441, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
    GUICtrlSetData(-1, FileRead(@ScriptDir & "\verlauf."&@MDAY&"."&@MON&".spawn"))
    GUICtrlSetState($verlauf, $GUI_DISABLE)
    EndIf

    If $msg = $verlaufhide Then
    GUISetState(@SW_HIDE, $verlaufsanzeigen)
    GUICtrlDelete($verlaufsanzeige)
    GUICtrlSetState($verlauf, $GUI_ENABLE)
    EndIf

    If $msg = $GUI_EVENT_CLOSE Then Exit
    WEnd

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

    Func _dataload()
    $File=FileOpen(@ScriptDir & "\bosse.spawn")
    $AnzBosse=FileReadLine($File)
    FileReadLine($File)
    For $i=1 to $AnzBosse
    For $z=0 to 5
    $Bosse[$i][$z]=FileReadLine($File)
    Next
    Next
    FileClose($File)
    EndFunc

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

    Func _ADD()
    $stime = stringsplit(guictrlread($respawntime), ":")
    $addhour = _DateAdd("h", $stime[1], GUICtrlRead($date) & " "& GUICtrlRead($time))
    $addminutes = _DateAdd("n", $stime[2], $addhour)
    return $addminutes
    endfunc

    [/autoit]

    Das hier steht in der "bosse.spawn" drinne:

    Spoiler anzeigen

    DIES IST KEIN BOT NUR EIN RECHNER FÜR NEUE SPAWNZEITEN NACH LEGUNG DES BOSSES!!!

    Ich hoffe Ihr könnt mir helfen ohne den Code zu stark umzuformen.

    Mfg.
    Tak | Jochen

  • Ich hab ein kleines Problemchen was ListView betrifft.

    DIES IST KEIN BOT NUR EIN RECHNER FÜR NEUE SPAWNZEITEN NACH LEGUNG DES BOSSES!!!

    Mach ein allgemeines Beispiel mit verständlichen Begriffen (Am besten ein Wiedervrlagesstem für Erinerungen). Die von dir verwendeteten z.B. "Spamliste" lassen mich befürchten dass dein Vorhaben nicht mit den Forenregeln kompatibel ist.

    Falls dir das zuviel Arbeit ist les dir die Hilfe zu

    [autoit]

    _GUICtrlListView_GetItemCount
    _GUICtrlListView_DeleteItem
    _GUICtrlListView_GetItemTextArray
    Beep
    FileWriteLine

    [/autoit]

    die oben genannten Funktionen zusammen mit einer Schleife (am besten For ... Next) und die Sache funktioniert.

    mfg autoBert

    mfg autoBert

  • Hallo autoBert und ty für deine Antwort.

    Das Programm rechnet eigendlich nur die neuen Spawnzeiten aus.
    In dem Spiel War of the Immortals sind die Spawnzeiten der Bosse selbst schon integriert, da muss man eigendlich nur die Zeit drauf rechnen und gut ist.

    Nen kumpel von mir zockt das intensiv und der hat schon ne ganze Zettelwirtschaft von PostIts wo die Spawnzeiten drauf stehen etc.

    Code
    _GUICtrlListView_GetItemCount
    _GUICtrlListView_DeleteItem
    _GUICtrlListView_GetItemTextArray

    Muss ich mir noch anschauen aber werde ich bestimmt hinbekommen.


    Beep <=== kenn ich und ist auch für die Ton ausgabe wichtig
    FileWriteLine <=== benutz ich ja ist ja auch im code drinne ^^


    Den Code hast du ja auch oben, da kannst du ja schauen ob das ein Bot ist oder nicht. Die Log Files sind ja nur für die Eingaben vom Programm selbst um später nachzuvollziehen was ich selbst für eingaben gemacht habe. Die Daten werden nicht an mich gesendet oder sonst irgendetwas.

    Mfg.
    Jochen

  • Hallo autoBert und ty für deine Antwort.

    Das Programm rechnet eigendlich nur die neuen Spawnzeiten aus.
    In dem Spiel War of the Immortals sind die Spawnzeiten der Bosse selbst schon integriert, da muss man eigendlich nur die Zeit drauf rechnen und gut ist.


    Wenn du die 3 dir noch unbekannten Funktionen verstanden hast schaffst du es sicher alleine. Mehr Hilfe darfst du von mir nicht erwarten aber ausgerechnet

    DIES IST KEIN BOT NUR EIN RECHNER FÜR NEUE SPAWNZEITEN NACH LEGUNG DES BOSSES!!!

    hat mich mistrauisch gemacht, deshalb spar ich mir die 20 Minuten die für einen geübten AutoIt-Programmierer imho reichen sollten das Projekt fertig zu stellen.

    Edit: evtl, benötigst du noch AdlibRegister

    mfg autoBert

  • Hey,

    also imo sieht es wie folgt aus.

    Dadurch das du mich auf die Funktion

    [autoit]

    _GUICtrlListView_GetItemText

    [/autoit]

    geschubst hast, hab ich es nun hinbekommen.

    Zitat

    DIES IST KEIN BOT NUR EIN RECHNER FÜR NEUE SPAWNZEITEN NACH LEGUNG DES BOSSES!!!

    Hatte ich eingefügt weil es damals schon probleme gab wegen der Zeit ausrechnen bei einem anderen Programm (Boss Calculator von einem anderen MMO) Link dazu: https://autoit.de/index.php?page=Thread&amp;postID=100526

    daher der Hinweis ^^


    Aber Problem gelöst, danke ^^