#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=icon.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseAnsi=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

; *******************************************************
; Stämme-Bot von IsleOfTechno
; *******************************************************
;

#include <GUIConstants.au3>
#include <IE.au3>
#include <Date.au3>
#Include <Constants.au3>
#Include <Array.au3>
#include <File.au3>
#include <GUIListBox.au3>
#Include <String.au3>

;Tray Einstellungen und Menüpunkte
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1)
Opt("MouseCoordMode", 2)
Opt("WinTitleMatchMode", 2)
TraySetClick(16)
$fensteritem = TrayCreateItem("Fenster ins Tray")
TrayItemSetOnEvent(-1, "gui_anzeigen")
TrayCreateItem("")
$exititem = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "ExitScript")
TraySetState()
Opt("TrayIconHide", 0)
;Tray Ende

;HotKeySet( "{F8}" , "Aufgaben_Timer" )

Opt("SendKeyDelay", 2)


Global $Secs, $Mins, $Hour, $Time, $ident, $aktuelle_Welt, $gesanzahl_einheiten, $body, $oFrame, $oForm, $oIE, $benutzername, $passwort, $erfolg


; Arrays:
Global $aufgabe_start[1]        ; Startzeitpunkt in $tag * 24 * 60 + $stunde * 60 + $minute
Global $aufgabe_ende[1]         ; Endzeitpunkt der Aufgabe
Global $aufgabenintervall[1]    ; Anzahl der Wiederholungen der Aufgabe (bei Angriffen/Unterstützung)
Global $bauvorhaben[1] 	     ; enthält gebäude, das ausgebaut werden soll bzw. die einheit, die rekrutiert werden soll
Global $dorf_der_aufgabe[1]     ; Dorf, in dem die Aufgabe ausgeführt werden soll
Global $aufgabenort[1]          ; enthält das gebäude, wo er was machen soll, zB bei Gebäudeausbau " Hauptgebäude" oder bei Spähern " Stall"
Global $Einheitenanzahl[1]      ; Anzahl der zu rekrutierenden Einheiten
Global $aufgaben_typ[1] 	     ; Wert um zb Einheitenforschung von der Rekrutierung zu unterscheiden, gibt den Typ der Aufgabe an
Global $aufgaben_status[1] 	 ; 0: Konnte nicht ausgeführt werden; 1: ausführen, so bald wie möglich; 2: neu
Global $Doerfer[1]              ; enthält alle Dörfer des Spielers
Global $Dorfkoordinaten[1] 	 ; enthält die den Dörfern zugeordneten Koordinaten sowie die Dorfnamen
Global $Log_file[1]             ; enthält die Log


Global $uebersichten = "Übersichten"
Global $intervallminute = @MIN
Global $intervall_zufall = 40
Global $schonmaleingeloggt = 0
Global $aufgaben_log_fenster_klein = 0
Global $progress = 0, $Timer_aktiv = 0

Global $neue_menueleiste = False
Global $softwareversion = "1.0.8f" 


login_daten()

Global $fenstertitel = $aktuelle_Welt & " - DSBot 2008   V." & $softwareversion
Global $graphic_size = 187831

dateien_installieren()

Global $aufgStartArt = IniRead("data\settings.ini", "Programm", "Aufgabenstart", "Zufall")			
Global $trenner = Chr (IniRead("data\settings.ini", "Programm", "Trennzeichen", 124))
Opt("GUIDataSeparatorChar", $trenner)
Opt("WinTitleMatchMode", 2)

;kein plan, muss aber wohl drin sein
_IEErrorHandlerRegister()

;erstellt den eingebetten IE
$oIE = _IECreateEmbedded()
$oIE2 = _IECreateEmbedded()


;

#region Haupt_Fenster
$main_window = GUICreate($fenstertitel, @DesktopWidth - 14, @DesktopHeight - 66, 0, 0, $WS_CAPTION + $WS_SYSMENU + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_VISIBLE + $WS_CLIPSIBLINGS)
GUISetState(@SW_MAXIMIZE, $main_window)
$mainpos_array = WinGetPos($main_window)

GUISetBkColor(0xded3b9)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 60, $mainpos_array[2] - 30, $mainpos_array[3] - 200)

$GUI_Button_Back = GUICtrlCreatePic("graphic\IE\back.jpg", 10, 5, 28, 27)
$GUI_Button_Forward = GUICtrlCreatePic("graphic\IE\forward.jpg", 38, 5, 28, 27)
$GUI_Button_Refresh = GUICtrlCreatePic("graphic\IE\refresh.jpg", 80, 7, 22, 22)
$GUI_Button_Stop = GUICtrlCreatePic("graphic\IE\stop.jpg", 110, 7, 22, 22)

$dorf_back = GUICtrlCreatePic("graphic\button\links.gif", 480, 42, 11, 11)
$dorf_forward = GUICtrlCreatePic("graphic\button\rechts.gif", 510, 42, 11, 11)

$mainpic = GUICtrlCreatePic("graphic\buildings\main.jpg", 20, 40, 16, 16)
$barrackspic = GUICtrlCreatePic("graphic\buildings\barracks.jpg", 50, 40, 16, 16)
$stablepic = GUICtrlCreatePic("graphic\buildings\stable.jpg", 80, 40, 16, 16)
$garagepic = GUICtrlCreatePic("graphic\buildings\garage.jpg", 110, 40, 16, 16)
$snobpic = GUICtrlCreatePic("graphic\buildings\snob.jpg", 140, 40, 16, 16)
$smithpic = GUICtrlCreatePic("graphic\buildings\smith.jpg", 170, 40, 16, 16)
$placepic = GUICtrlCreatePic("graphic\buildings\place.jpg", 200, 40, 16, 16)
$marketpic = GUICtrlCreatePic("graphic\buildings\market.jpg", 230, 40, 16, 16)
$woodpic = GUICtrlCreatePic("graphic\buildings\wood.jpg", 260, 40, 16, 16)
$stonepic = GUICtrlCreatePic("graphic\buildings\stone.jpg", 290, 40, 16, 16)
$ironpic = GUICtrlCreatePic("graphic\buildings\iron.jpg", 320, 40, 16, 16)
$farmpic = GUICtrlCreatePic("graphic\buildings\farm.jpg", 350, 40, 16, 16)
$storagepic = GUICtrlCreatePic("graphic\buildings\storage.jpg", 380, 40, 16, 16)
$hidepic = GUICtrlCreatePic("graphic\buildings\hide.jpg", 410, 40, 16, 16)
$wallpic = GUICtrlCreatePic("graphic\buildings\wall.jpg", 440, 40, 16, 16)

;~ $GUI_Button_Login = GUICtrlCreateButton("Login", 10, $mainpos_array[3] - 100, 100, 30)
$GUI_Button_Login = GUICtrlCreatePic("graphic\button\login.gif", 10, $mainpos_array[3] - 100, 86, 30)
$GUI_Button_aufgabe = GUICtrlCreatePic("graphic\button\aufgabe.gif", 106, $mainpos_array[3] - 100, 86, 30)
$GUI_Button_einstellungen = GUICtrlCreatePic("graphic\button\einstellungen.gif", 202, $mainpos_array[3] - 100, 86, 30)
$GUI_Button_rechner = GUICtrlCreatePic("graphic\button\rechner.gif", 298, $mainpos_array[3] - 100, 86, 30)
$GUI_Button_aufgabe_start = GUICtrlCreatePic("graphic\button\aufgabe_start.gif", 394, $mainpos_array[3] - 100, 86, 30)
$GUI_Button_loeschen = GUICtrlCreatePic("graphic\button\löschen.gif", $mainpos_array[2] - 534, $mainpos_array[3] - 95, 86, 30)
$GUI_Button_status = GUICtrlCreatePic("graphic\button\log.gif", $mainpos_array[2] - 534, $mainpos_array[3] - 126, 86, 30)
$aktive_aufgaben_liste = GUICtrlCreateList("", $mainpos_array[2] - 421, $mainpos_array[3] - 126, 400, 70, $WS_BORDER + $WS_VSCROLL)
GUICtrlSetBkColor($aktive_aufgaben_liste, 0xdbfbd9)
GUICtrlSetData($aktive_aufgaben_liste, "Keine Aufgabe vorhanden")
$statusliste = GUICtrlCreateList("", $mainpos_array[2] - 421, $mainpos_array[3] - 126, 400, 70, $WS_BORDER + $WS_VSCROLL + $LBS_NOSEL)
GUICtrlSetBkColor($statusliste, 0xffface)
GUICtrlSetState($statusliste, $GUI_HIDE)
$label_uhrzeit = GUICtrlCreateLabel("", $mainpos_array[2] - 115, 7, 110, 26)
GUICtrlSetFont($label_uhrzeit, 18)
$label_warten = GUICtrlCreateLabel("", $mainpos_array[2] - 350, 7, 180, 26)
GUICtrlSetFont($label_warten, 16)
GUICtrlSetColor($label_warten, 0xeb0e0e)
$label_statusmeldung = GUICtrlCreateLabel("", 20, $mainpos_array[3] - 130, 500, 20)
GUICtrlSetFont($label_statusmeldung, 10)

GUICtrlCreateGraphic ( 0, 61 , 5, 600 )
;GUICtrlSetBkColor(-1,0xffffff)
GUICtrlSetColor(-1,0)
GUICtrlSetGraphic ( -1, $GUI_GR_RECT, 0, 0, 5, 600 )




_FileReadToArray("data\log.isl", $Log_file)
_ArrayDelete($Log_file, 0)
For $z = 0 To _ArrayMinIndex($Log_file, 0, 0) - 1
	_GUICtrlListBox_InsertString ($statusliste, $Log_file[$z], 0)
Next



#endregion
#region Aufgaben_Fenster

;erstellt im Hintergrund das GUI-Fenster Aufgaben mit allen Elementen darauf
$aufgaben_window = GUICreate("Neue Aufgabe", 500, 500, @DesktopWidth / 2 - 250, @DesktopHeight / 2 - 250, $WS_CAPTION, $WS_EX_TOPMOST, $main_window)
GUISetBkColor (0xded3b9)
$tab_aufgaben = GUICtrlCreateTab(10, 5, 480, 445)
;--- Tab Gebäude ausbauen
$tab0_aufgaben = GUICtrlCreateTabItem("Gebäude")
GUICtrlCreateLabel("Dörfer:", 20, 40, 60, 20)
$liste_dorf_aufgaben = GUICtrlCreateList("", 20, 60, 150, 385)
GUICtrlSetBkColor(-1, 0xd2f7b4)
$gebaeude_liste = GUICtrlCreateList("", 178, 60, 145, 200, $WS_BORDER + $WS_VSCROLL)
GUICtrlCreateGroup("Startart", 333, 54, 145, 194)
GUIStartGroup()
$radio1 = GUICtrlCreateRadio("Fester Zeitpunkt", 350, 84, 110, 20)
$radio2 = GUICtrlCreateRadio("Von ... bis ...", 350, 114, 110, 20)
GUICtrlSetState($radio1, $GUI_CHECKED)
$label_von_bis = GUICtrlCreateLabel(" alle 5 Minuten einen    Klick versuchen", 364, 136, 105, 46)
$group_aufgaben_2 = GUICtrlCreateGroup("Startzeitpunkt", 179, 252, 145, 178)
GUIStartGroup()
GUICtrlCreateLabel("Datum:", 195, 300, 50, 20)
$datum_input_gebaeude = GUICtrlCreateInput(@MDAY, 235, 297, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0xeeee00)
GUICtrlCreateLabel("Uhrzeit:", 193, 350, 50, 20)
$uhrzeit_input_gebaeude_h = GUICtrlCreateInput(@HOUR, 235, 347, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0x22ee00)
GUICtrlCreateLabel(":", 269, 350, 10, 20)
$uhrzeit_input_gebaeude_min = GUICtrlCreateInput(@MIN + 1, 275, 347, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0x22ee00)
;Endzeitpunkt
$group_aufgaben_3 = GUICtrlCreateGroup("Endzeitpunkt", 333, 252, 145, 178)
GUIStartGroup()
GUICtrlCreateLabel("Datum:", 349, 300, 50, 20)
$datum_input_gebaeude2 = GUICtrlCreateInput(@MDAY, 389, 297, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0xeeee00)
GUICtrlCreateLabel("Uhrzeit:", 347, 350, 50, 20)
$uhrzeit_input_gebaeude_h2 = GUICtrlCreateInput(@HOUR, 389, 347, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0x22ee00)
GUICtrlCreateLabel(":", 423, 350, 10, 20)
$uhrzeit_input_gebaeude_min2 = GUICtrlCreateInput(@MIN + 1, 429, 347, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0x22ee00)
GUICtrlSetState($datum_input_gebaeude2, $GUI_DISABLE)
GUICtrlSetState($uhrzeit_input_gebaeude_h2, $GUI_DISABLE)
GUICtrlSetState($uhrzeit_input_gebaeude_min2, $GUI_DISABLE)
;--- bis hier Tab Gebäude ausbauen


; --- ab hier Einheiten bauen
$tab1_aufgaben = GUICtrlCreateTabItem("Einheiten")

GUICtrlCreateLabel("Dörfer:", 20, 40, 60, 20)
$liste_dorf_einheitenbau = GUICtrlCreateList("", 20, 60, 150, 385)
GUICtrlSetBkColor(-1, 0xd2f7b4)
$einheiten_liste = GUICtrlCreateList("", 178, 60, 145, 200, $WS_BORDER + $WS_VSCROLL)
$radio_group_aufgaben_einheiten = GUICtrlCreateGroup("Anzahl", 333, 54, 145, 194)
GUIStartGroup()
$radio3 = GUICtrlCreateRadio("Stück:", 350, 84, 50, 20)
$radio4 = GUICtrlCreateRadio("(max ...)", 350, 114, 110, 20)
GUICtrlCreateLabel("____________________________", 350, 149, 112, 2, $WS_BORDER + $WS_VSCROLL)
$radio5 = GUICtrlCreateRadio("Einheit (Er)Forschen", 350, 164, 115, 20)
GUICtrlSetState($radio4, $GUI_CHECKED)
$anzahl_einheiten = GUICtrlCreateInput("", 404, 84, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 5, 1)
$group_aufgaben_einheiten = GUICtrlCreateGroup("Startzeitpunkt", 179, 252, 145, 178)
GUIStartGroup()
GUICtrlCreateLabel("Datum:", 195, 300, 50, 20)
$datum_input_einheiten = GUICtrlCreateInput(@MDAY, 235, 297, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0xeeee00)
GUICtrlCreateLabel("Uhrzeit:", 193, 350, 50, 20)
$uhrzeit_input_einheiten_h = GUICtrlCreateInput(@HOUR, 235, 347, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0x22ee00)
GUICtrlCreateLabel(":", 269, 350, 10, 20)
$uhrzeit_input_einheiten_min = GUICtrlCreateInput(@MIN + 1, 275, 347, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0x22ee00)


;----- Tab 3  ....
$tab2_angriff_hilfe = GUICtrlCreateTabItem("Platz")

GUICtrlCreatePic("graphic\unit\unit_spear.jpg", 20, 45, 18, 18)
$einheiten_spear = GUICtrlCreateInput("", 45, 45, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

GUICtrlCreatePic("graphic\unit\unit_sword.jpg", 20, 80, 18, 18)
$einheiten_sword = GUICtrlCreateInput("", 45, 80, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

GUICtrlCreatePic("graphic\unit\unit_axe.jpg", 20, 115, 18, 18)
$einheiten_axe = GUICtrlCreateInput("", 45, 115, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)
;-----------------------------------

GUICtrlCreatePic("graphic\unit\unit_archer.jpg", 100, 45, 18, 18)
$einheiten_archer = GUICtrlCreateInput("", 125, 45, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

GUICtrlCreatePic("graphic\unit\unit_spy.jpg", 100, 80, 18, 18)
$einheiten_spy = GUICtrlCreateInput("", 125, 80, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

GUICtrlCreatePic("graphic\unit\unit_light.jpg", 100, 115, 18, 18)
$einheiten_light = GUICtrlCreateInput("", 125, 115, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)
;-----------------------------------

GUICtrlCreatePic("graphic\unit\unit_marcher.jpg", 180, 45, 18, 18)
$einheiten_marcher = GUICtrlCreateInput("", 205, 45, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

GUICtrlCreatePic("graphic\unit\unit_heavy.jpg", 180, 80, 18, 18)
$einheiten_heavy = GUICtrlCreateInput("", 205, 80, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

GUICtrlCreatePic("graphic\unit\unit_ram.jpg", 180, 115, 18, 18)
$einheiten_ram = GUICtrlCreateInput("", 205, 115, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)
;-----------------------------------
GUICtrlCreatePic("graphic\unit\unit_catapult.jpg", 260, 45, 18, 18)
$einheiten_catapult = GUICtrlCreateInput("", 285, 45, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

If $aktuelle_Welt = "Welt 4"  Then
	GUICtrlCreatePic("graphic\unit\unit_priest.jpg", 260, 80, 18, 18)
Else
	GUICtrlCreatePic("graphic\unit\unit_knight.jpg", 260, 80, 18, 18)
EndIf
$einheiten_knight = GUICtrlCreateInput("", 285, 80, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

GUICtrlCreatePic("graphic\unit\unit_snob.jpg", 260, 115, 18, 18)
$einheiten_snob = GUICtrlCreateInput("", 285, 115, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, "0")
GUICtrlSetLimit(-1, 5, 0)

GUICtrlCreateLabel("Ziel der Truppen:", 365, 44, 100, 20)
GUICtrlCreateLabel("x :", 340, 70, 14, 20)
$einheiten_x = GUICtrlCreateInput("", 358, 68, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetBkColor(-1, 0xb4f6f7)
GUICtrlSetLimit(-1, 3, 0)
GUICtrlCreateLabel("y :", 410, 70, 14, 20)
$einheiten_y = GUICtrlCreateInput("", 426, 68, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetBkColor(-1, 0xb4f6f7)
GUICtrlSetLimit(-1, 3, 0)
GUICtrlCreateGroup("", 222, 140, 98, 100)
GUIStartGroup()
$radio_angriff = GUICtrlCreateRadio("Angreifen", 232, 160, 65, 20)
$radio_unterstuetzung = GUICtrlCreateRadio("Unterstützen", 232, 190, 80, 20)
GUICtrlSetState($radio_angriff, $GUI_CHECKED)
;GUICtrlSetState ( $radio_unterstuetzung, $GUI_DISABLE)  ;;;;;

GUICtrlCreateGroup("Startzeitpunkt", 334, 140, 130, 100)
GUIStartGroup()
GUICtrlCreateLabel("Datum:", 345, 170, 50, 20)
$datum_input_angriff = GUICtrlCreateInput(@MDAY, 385, 167, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0xeeee00)
GUICtrlCreateLabel("Uhrzeit:", 345, 200, 50, 20)
$uhrzeit_input_angriff_h = GUICtrlCreateInput(@HOUR, 385, 197, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0x22ee00)
GUICtrlCreateLabel(":", 419, 200, 10, 20)
$uhrzeit_input_angriff_min = GUICtrlCreateInput(@MIN + 1, 425, 197, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 2, 1)
GUICtrlSetBkColor(-1, 0x22ee00)

GUICtrlCreateGroup("Intervall", 334, 250, 130, 90)
GUICtrlCreateLabel("Minuten:", 354, 278, 50, 20)
$auftrag_angriff_intervall = GUICtrlCreateInput("", 404, 275, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 4, 1)
GUICtrlCreateLabel("Zeit zwischen den Wiederholungen", 354, 310, 90, 40)

GUICtrlCreateGroup("Wiederholungen", 334, 350, 130, 90)
GUICtrlCreateLabel("Anzahl:", 354, 378, 50, 20)
$auftrag_angriff_wiederholungen = GUICtrlCreateInput("", 404, 375, 30, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetData(-1, 0)
GUICtrlSetLimit(-1, 4, 1)
GUICtrlCreateLabel("Anzahl der Wiederholungen", 354, 410, 90, 40)

$liste_angriff_speicher = GUICtrlCreateList("", -210, 150, 190, 300, $WS_BORDER + $WS_VSCROLL)
GUICtrlSetBkColor(-1, 0xb4f6f7)
$liste_angriff_mydorf = GUICtrlCreateList("", 20, 150, 190, 300)
GUICtrlSetBkColor(-1, 0xd2f7b4)
; GUICtrlSetBkColor(-1, 0xdf7c7b4)

;~ $button_angriff_speichern = GUICtrlCreateButton("Angriff speichern", 221, 370, 100, 30)
;~ GUICtrlSetState($button_angriff_speichern, $GUI_DISABLE)  ;;;;;
$button_dorf_waehlen = GUICtrlCreatePic("graphic\button\choose.gif", 228, 299, 86, 30)
;~ $button_angriff_laden = GUICtrlCreateButton("Angriff laden", 221, 411, 100, 30)
;~ GUICtrlSetState($button_angriff_laden, $GUI_DISABLE)  ;;;;;
$button_angriff_koord = GUICtrlCreatePic("graphic\button\attkord.gif", 228, 258, 86, 30)


;----- Tab 4  ....
$tab3_sonstiges = GUICtrlCreateTabItem("Markt")
GUICtrlCreateTabItem("") ; Ende der Tab-Definitionen

;----- Tab 5  ....
$tab3_sonstiges = GUICtrlCreateTabItem("Sonstiges")
GUICtrlCreateTabItem("") ; Ende der Tab-Definitionen


$button_aufgaben_ok = GUICtrlCreatePic("graphic\button\save.gif", 320, 460, 86, 30)


;~ $button_aufgaben_ok = GUICtrlCreateButton("Speichern", 320, 460, 80, 30)
$button_aufgaben_abbr = GUICtrlCreatePic("graphic\button\abbrechen.gif", 410, 460, 86, 30)

;$alle_doerfer = _ArrayToString ( $Doerfer, $trenner, 1, UBound($Doerfer) )

; die dörfer werden bei der show-funktion neue_aufgabe() geladen, da neue hinzu gekommen sein könnten zB ber die einstllungen
GUICtrlSetData($gebaeude_liste, "Hauptgebäude" & $trenner & "Holzfäller" & $trenner & "Lehmgrube" & $trenner & "Eisenmine" & $trenner & "Bauernhof" & $trenner & "Speicher" & $trenner & "Versteck" & $trenner & "Kaserne" & $trenner & "Stall" & $trenner & "Werkstatt" & $trenner & "Adelshof" & $trenner & "Schmiede" & $trenner & "Marktplatz" & $trenner & "Wall")
GUICtrlSetData($einheiten_liste, "Speerträger" & $trenner & "Schwertkämpfer" & $trenner & "Axtkämpfer" & $trenner & "Späher" & $trenner & "Leichte Kavallerie" & $trenner & "Schwere Kavallerie" & $trenner & "Ramme" & $trenner & "Katapult" & $trenner & "Adelsgeschlecht")
#endregion



#region Einstellungen_Fenster
;BitOR($WS_POPUPWINDOW, $WS_BORDER, $GUI_ONTOP), $WS_EX_STATICEDGE + $WS_EX_TOPMOST,$main_window)
$einstellungen_window = GUICreate("Einstellungen", 500, 500, @DesktopWidth / 2 - 250, @DesktopHeight / 2 - 250, $WS_CAPTION, $WS_EX_TOPMOST, $main_window)
;$einstellungen_window = GUICreate("Einstellungen", 500, 500, @DesktopWidth / 2 - 250, @DesktopHeight / 2 - 250, $WS_CAPTION, $WS_EX_APPWINDOW, $main_window)
GUISetBkColor (0xded3b9)
$tab_einstellungen = GUICtrlCreateTab(10, 5, 480, 445)
$tab0_einstellungen = GUICtrlCreateTabItem("Dörfer")
GUICtrlCreateGroup("Meine Dörfer", 20, 35, 190, 320)
GUIStartGroup()
$liste_dorf_einstellungen = GUICtrlCreateList("", 40, 60, 150, 200)
GUICtrlSetBkColor(-1, 0xd2f7b4)
;$alle_einstellungen = _ArrayToString ( $Doerfer, $trenner , 1, UBound($Doerfer) )
GUICtrlSetData($liste_dorf_einstellungen, alle_doerfer())
$input_dorf_einstellungen = GUICtrlCreateInput("", 40, 260, 150, 20)
$button_einstellungen_add = GUICtrlCreateButton("Hinzufügen", 40, 315, 70, 30)
$button_einstellungen_delete = GUICtrlCreateButton("Entfernen", 120, 315, 70, 30)

GUICtrlCreateGroup("Dorfkoordinaten", 230, 35, 190, 320)
GUIStartGroup()
$liste_dorf_einstellungen_koord = GUICtrlCreateList("", 250, 60, 150, 200, $WS_BORDER + $WS_VSCROLL)
GUICtrlSetBkColor(-1, 0xb4f6f7)
;$alle_einstellungen = _ArrayToString ( $Doerfer, $trenner , 1, UBound($Doerfer) )
GUICtrlSetData($liste_dorf_einstellungen, alle_doerfer())
$input_dorf_einstellungen_koord = GUICtrlCreateInput("", 250, 260, 150, 20)
GUICtrlCreateLabel("x :", 250, 288, 14, 20)
$input_dorf_einstellungen_x = GUICtrlCreateInput("", 264, 285, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 3, 0)
GUICtrlCreateLabel("y :", 349, 288, 14, 20)
$input_dorf_einstellungen_y = GUICtrlCreateInput("", 363, 285, 37, 20, $ES_CENTER + $ES_NUMBER)
GUICtrlSetLimit(-1, 3, 0)
$button_einstellungen_add2 = GUICtrlCreateButton("Hinzufügen", 250, 315, 70, 30)
$button_einstellungen_delete2 = GUICtrlCreateButton("Entfernen", 330, 315, 70, 30)

GUICtrlCreateLabel("- Bitte trag links alle deine Dörfer ein" & @CRLF & @CRLF & _
		"- Zur Erleichterung kannst du rechts einem Dorfnamen die entsprechenden Koordinaten zuordnen, so dass du bei den Aufgaben einfach den Dorfnamen wählen kannst", 20, 380, 440, 60)

GUICtrlCreateTabItem("") ; Ende der Tab-Definitionen


$tab1_einstellungen = GUICtrlCreateTabItem("Programm")
$group_einstellungen_1 = GUICtrlCreateGroup("Autostart/Autologin", 20, 34, 440, 50)
$start_checkbox = GUICtrlCreateCheckbox("Bot mit Windows automatisch starten", 30, 52)
$login_checkbox = GUICtrlCreateCheckbox("Beim Starten automatisch einloggen", 260, 52)
$group_einstellungen_2 = GUICtrlCreateGroup("", 20, 88 , 440, 40)
GUICtrlCreateLabel ( "Trennzeichen (das in deinen Dorfbezeichnungen NIE vorkommt) - default: |", 30, 104 , 362 )
$gui_trenner = GUICtrlCreateInput("|", 400, 100, 15, 20, $ES_CENTER )

$group_einstellungen_2 = GUICtrlCreateGroup("Aufgabenstart", 20, 140, 440, 80)


GUIStartGroup()

$radio6 = GUICtrlCreateRadio("Die Aufgabenliste jede ", 30, 160, 124, 20)
$sec_input = GUICtrlCreateInput("",158,160,20)
GUICtrlCreateLabel ( ". Sekunde in jeder Minute ausführen (nach PC-Uhr)", 181, 163 , 362 )
$radio7 = GUICtrlCreateRadio("Die Aufgabenliste jede Minute zu einer zufälligen Sekunde ausführen", 30, 190, 400, 20)
If IniRead("data\settings.ini", "Programm", "Aufgabenstart", "Zufall") <> "Zufall" Then
	GUICtrlSetData($sec_input, IniRead("data\settings.ini", "Programm", "Aufgabenstart", "Zufall"))
	GUICtrlSetState($radio6, $GUI_CHECKED)
Else
	GUICtrlSetState($radio7, $GUI_CHECKED)
EndIf

$group_einstellungen_3 = GUICtrlCreateGroup("Aufträge in der Bauwarteschleife", 20, 235, 440, 50)

GUIStartGroup()
$radio8 = GUICtrlCreateRadio("Maximal 2 Aufträge", 50, 255, 124, 20)
$radio9 = GUICtrlCreateRadio("Maximal 3 Aufträge (PA-Account)", 240, 255, 180, 20)
If IniRead("data\settings.ini", "Programm", "Bauwarteschleife", "2") <> "3" Then
	GUICtrlSetState($radio8, $GUI_CHECKED)
Else
	GUICtrlSetState($radio9, $GUI_CHECKED)
EndIf




$pw_name_delete = GUICtrlCreateButton("Name und PW löschen", 320, 400, 150, 30)

$welt_combo = GUICtrlCreateCombo("Welt 2",320,350,150)
$welten = ""
for $l=2 to 23
	$welten = $welten & "Welt " & $l & $trenner
next
$welten = StringTrimRight($welten,1)
GUICtrlSetData(-1,$welten,$aktuelle_Welt) 


GUICtrlCreateTabItem("") ; Ende der Tab-Definitionen

$tab2_einstellungen = GUICtrlCreateTabItem("Hotkeys")

GUICtrlCreateTabItem("") ; Ende der Tab-Definitionen


$button_einstellungen_ok = GUICtrlCreatePic("graphic\button\save.gif", 320, 460, 80, 30)
$button_einstellungen_abbr = GUICtrlCreatePic("graphic\button\abbrechen.gif", 410, 460, 80, 30)
#endregion
#region Rechner_Fenster
$berechner_window = GUICreate("Berechner", 500, 300, @DesktopWidth / 2 - 250, @DesktopHeight / 2 - 150, $WS_CAPTION, $WS_EX_TOPMOST, $main_window)
;GUISetBkColor (0xded3b9)
#endregion
#region start_Fenster
$start_window = GUICreate("", 500, 300, @DesktopWidth - 440 - 500, @DesktopHeight / 2 - 150, BitOR($WS_POPUPWINDOW, $WS_BORDER, $GUI_ONTOP), $WS_EX_STATICEDGE + $WS_EX_TOPMOST,$main_window)
$start_label = GUICtrlCreateLabel("Starte Bot ...", 30, 40, 400, 200)
GUICtrlSetFont(-1, 14)
$progressbar1 = GUICtrlCreateProgress(150, 200, 200, 20)
GUISetBkColor(0xded3b9)

#endregion
#region Info_Fenster
$info_window = GUICreate("", 500, 300, @DesktopWidth - 440 - 500, @DesktopHeight / 2 - 150, BitOR($WS_POPUPWINDOW, $WS_BORDER, $GUI_ONTOP), $WS_EX_STATICEDGE + $WS_EX_TOPMOST,$main_window)
GUISetBkColor(0xded3b9)
$info_label = GUICtrlCreateLabel("Keine Infos (noch im Bau)", 5, 5, 490, 290)
GUICtrlSetFont(-1, 14)
#endregion

#region tool_Fenster
$tool_window = GUICreate("", 500, 600, @DesktopWidth - @DesktopWidth - 490 + 600, 87 , BitOR($WS_POPUPWINDOW, $WS_BORDER, $GUI_ONTOP), $WS_EX_STATICEDGE + $WS_EX_TOPMOST,$main_window)
;$tool_window = GUICreate("", 500, 600, @DesktopWidth - @DesktopWidth - 490 + 600, 87 , $WS_POPUP + $WS_BORDER, $WS_EX_APPWINDOW + $WS_EX_TOPMOST, $main_window)
$tab_tool = GUICtrlCreateTab(10, 5, 480, 580)
$tab0_tool = GUICtrlCreateTabItem("Navigation")
$GUIActiveX = GUICtrlCreateObj($oIE2, 10, 30, 450, 500)

GUICtrlCreateTabItem("") ; Ende der Tab-Definitionen
$tab1_tool = GUICtrlCreateTabItem("Seite 2")
GUICtrlCreateTabItem("") ; Ende der Tab-Definitionen
$tab2_tool = GUICtrlCreateTabItem("Seite 3")
GUICtrlCreateTabItem("") ; Ende der Tab-Definitionen



GUISetBkColor(0xded3b9)
;GUICtrlCreateLabel("das neue Tool-Fenster",30,100)
GUISetState(@SW_HIDE, $tool_window)
_IENavigate($oIE2,"http://google.de")
#endregion
#region werbung_Fenster
$werbung_window = GUICreate("", 160, $mainpos_array[3] - 212, $mainpos_array[2]  + 10 -195, 64, BitOR($WS_POPUP, $GUI_ONTOP), $WS_EX_MDICHILD,$main_window)
;$tool_window = GUICreate("", 500, 600, @DesktopWidth - @DesktopWidth - 490 + 600, 87 , $WS_POPUP + $WS_BORDER, $WS_EX_APPWINDOW + $WS_EX_TOPMOST, $main_window)
GUISetState(@SW_SHOW, $werbung_window)


GUISetBkColor(0xded3b9)
GUICtrlCreateLabel("Das Fenster das die " & @CRLF & " Werbung überdeckt ^^",20,20)
GUISetState(@SW_HIDE, $tool_window)
#endregion
;

status("Software gestartet, Version " & $softwareversion)
GUISetState(@SW_SHOW, $main_window)


arrays_laden()
einheiten_regeln()

If IniRead("data\settings.ini", "Programm", "auto_login", "") = 1 Then einloggen()

HotKeySet("{BACKSPACE}","ruecktaste")

;Befehl sorgt für die Ausführung der Funktion alle angegebenen millisekunden (uhr und aufgabenüberprüfung)
AdlibEnable("Time", 1000)

;Schleife, die das Programm immer laufen lässt (bis es geschlossen wird vom Benutzer) und auf Buttons etc reagiert
While 1

	Sleep(25)
	$msg = GUIGetMsg(1)
	
	If WinActive("Einstellungen") Then
		Select
			Case $msg[0] = $button_einstellungen_ok
				einstellungen_sichern()
			Case $msg[0] = $button_einstellungen_abbr
				fenster_abbr($einstellungen_window)
			Case $msg[0] = $button_einstellungen_delete
				dorf_delete()
			Case $msg[0] = $button_einstellungen_delete2
				dorfkoordinaten_delete()
			Case $msg[0] = $button_einstellungen_add
				dorf_add()
			Case $msg[0] = $button_einstellungen_add2
				dorfkoordinaten_add()
			Case $msg[0] = $liste_dorf_einstellungen_koord
				liste_dorf_einstellungen_koord_angeklickt()
			Case $msg[0] = $pw_name_delete
				name_pw_delete()
		EndSelect
	EndIf
	
	If WinActive("Neue Aufgabe") Then
		Select
			Case $msg[0] = $button_angriff_koord
				angriff_koord_laden()
			Case $msg[0] = $button_aufgaben_ok
				aufgaben_speichern()
			Case $msg[0] = $button_aufgaben_abbr
				fenster_abbr($aufgaben_window)
			Case $msg[0] = $button_dorf_waehlen
				button_dorf_waehlen()
			Case $msg[0] = $liste_angriff_speicher
				liste_dorf_aufgaben_koord_angeklickt()
			Case $msg[0] = $radio1 ()
				GUICtrlSetState($datum_input_gebaeude2, $GUI_DISABLE)
				GUICtrlSetState($uhrzeit_input_gebaeude_h2, $GUI_DISABLE)
				GUICtrlSetState($uhrzeit_input_gebaeude_min2, $GUI_DISABLE)
			Case $msg[0] = $radio2 ()
				GUICtrlSetState($datum_input_gebaeude2, $GUI_ENABLE)
				GUICtrlSetState($uhrzeit_input_gebaeude_h2, $GUI_ENABLE)
				GUICtrlSetState($uhrzeit_input_gebaeude_min2, $GUI_ENABLE)
		EndSelect
	EndIf
	
	Select
		Case $msg[0] = $GUI_EVENT_CLOSE
			ExitScript()
		Case $msg[0] = $GUI_Button_Refresh
			_IEAction($oIE, "refresh")
		Case $msg[0] = $GUI_Button_Back
			_IEAction($oIE, "back")
		Case $msg[0] = $GUI_Button_Forward
			_IEAction($oIE, "forward")
		Case $msg[0] = $GUI_Button_Stop
			_IEAction($oIE, "stop")
		Case $msg[0] = $dorf_back
			dorf_back()
		Case $msg[0] = $dorf_forward
			dorf_forward()
		Case $msg[0] = $mainpic
			schnellleiste("Hauptgebäude")
		Case $msg[0] = $barrackspic
			schnellleiste("Kaserne")
		Case $msg[0] = $stablepic
			schnellleiste("Stall")
		Case $msg[0] = $garagepic
			schnellleiste("Werkstatt")
		Case $msg[0] = $snobpic
			schnellleiste("Adelshof")
		Case $msg[0] = $smithpic
			schnellleiste("Schmiede")
		Case $msg[0] = $placepic
			schnellleiste("Versammlungsplatz")
		Case $msg[0] = $marketpic
			schnellleiste("Marktplatz")
		Case $msg[0] = $woodpic
			schnellleiste("Holzfäller")
		Case $msg[0] = $stonepic
			schnellleiste("Lehmgrube")
		Case $msg[0] = $ironpic
			schnellleiste("Eisenmine")
		Case $msg[0] = $farmpic
			schnellleiste("Bauernhof")
		Case $msg[0] = $storagepic
			schnellleiste("Speicher")
		Case $msg[0] = $hidepic
			schnellleiste("Versteck")
		Case $msg[0] = $wallpic
			schnellleiste("Wall")
			
		Case $msg[0] = $GUI_Button_einstellungen
			GUISetState(@SW_HIDE, $info_window)
			einstellungen()
		Case $msg[0] = $GUI_Button_Login
			GUISetState(@SW_HIDE, $info_window)
			einloggen()
		Case $msg[0] = $GUI_Button_aufgabe
			GUISetState(@SW_HIDE, $info_window)
			neue_aufgabe()
		Case $msg[0] = $GUI_Button_rechner
			GUISetState(@SW_HIDE, $info_window)
			berechner()
		Case $msg[0] = $GUI_Button_aufgabe_start
			Aufgaben_Timer()
		Case $msg[0] = $GUI_Button_status
			status_fenster_anzeigen_verbergen()
		Case $msg[0] = $GUI_Button_loeschen
			GUISetState(@SW_HIDE, $info_window)
			loeschen_knopf()
		Case $msg[0] = $aktive_aufgaben_liste
			aktive_aufgaben_liste_angeklickt()
		Case $msg[0] = $GUI_EVENT_PRIMARYDOWN
			GUISetState(@SW_HIDE, $info_window)
		Case $msg[0] = $info_label
			GUISetState(@SW_HIDE, $info_window)
		Case $msg[0] = $GUI_EVENT_PRIMARYUP 
			If $msg[1] = $main_window And BitAND(WinGetState($tool_window), 2) = 0 Then tool_window_einblenden()
		Case $msg[0] = $GUI_EVENT_MOUSEMOVE
			
			
			
			If $msg[1] = $tool_window And BitAND(WinGetState($tool_window), 2) <> 0 Then 
				;nix()
				$array = MouseGetPos()
				If $array[0] > 600 Or $array[1] > 700 Or $array[1] < -50 Then
					GUISetState(@SW_HIDE, $tool_window)
				EndIf
			EndIf
				
			
			

	
			

			
			;Listen nur verändern bzw überprüfen wenn das Hauptfenster aktiv ist
			If WinActive($fenstertitel) Then
				$array = MouseGetPos()
				If $array[0] > $mainpos_array[2] - 380 And $array[0] < $mainpos_array[2] - 370 + 400 And $array[1] > $mainpos_array[3] - 126 And $array[1] < $mainpos_array[3] - 126 + 70 And $aufgaben_log_fenster_klein < 1 Then
					$aufgaben_log_fenster_klein = 1
				ElseIf ($array[0] < $mainpos_array[2] - 424 Or $array[0] > $mainpos_array[2] - 421 + 400 + 30) Or ($array[1] < 10 Or $array[1] > $mainpos_array[3] - 356 + 300 + 30) And $aufgaben_log_fenster_klein = 2 Then
					$aufgaben_log_fenster_klein = 3
				EndIf
				
				
				;Vergrößern
				;Vergrößern wenn mehr als 4 Einträge in der Liste oder wenn gelbes Statusfenster vorne ist ...
				If _GUICtrlListBox_GetCount ($aktive_aufgaben_liste) > 4 Or GUICtrlGetState($statusliste) <> "96"  Then
					If $aufgaben_log_fenster_klein = 1 Then
						GUICtrlSetPos($aktive_aufgaben_liste, $mainpos_array[2] - 421, $mainpos_array[3] - 464, 400, 400)
						GUICtrlSetPos($statusliste, $mainpos_array[2] - 421, 60, 400, $mainpos_array[3] - 125)
						GUICtrlSetPos($GUIActiveX, 10, 60, $mainpos_array[2] - 30 - 420, $mainpos_array[3] - 200)
						$aufgaben_log_fenster_klein = 2
					EndIf
				EndIf
				
				;Verkleinern (immer)
				If $aufgaben_log_fenster_klein = 3 Then
					GUICtrlSetPos($aktive_aufgaben_liste, $mainpos_array[2] - 421, $mainpos_array[3] - 126, 400, 70)
					GUICtrlSetPos($statusliste, $mainpos_array[2] - 421, $mainpos_array[3] - 126, 400, 70)
					GUICtrlSetPos($GUIActiveX, 10, 60, $mainpos_array[2] - 30, $mainpos_array[3] - 200)
					$aufgaben_log_fenster_klein = 0
				EndIf
			EndIf
			

	EndSelect
	



	
;If _IEPropertyGet ($oIE, "busy") <> 0 And stringinstr(_IEDocReadHTML ($oFrame),"screen=overview_villages") <> 0  Then
	;nix()
	;frames_IELoadWait($oIE)
;	_IELoadWait($oFrame)
;	If  stringinstr(_IEDocReadHTML ($oFrame),"quickbar") = 0 Then
;	$oTag = _IETagNameGetCollection ( $oFrame , "hr", 0 )
;		$schnellleiste = '<br /><table align="center"><tr><td><ul class="menu nowrap quickbar">' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=main" ><img src="graphic/buildings/main.png" alt="Hauptgebäude" />Hauptgebäude</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=barracks" ><img src="graphic/buildings/barracks.png" alt="Kaserne" />Kaserne</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=stable" ><img src="graphic/buildings/stable.png" alt="Stall" />Stall</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=garage" ><img src="graphic/buildings/garage.png" alt="Werkstatt" />Werkstatt</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=snob" ><img src="graphic/buildings/snob.png" alt="Adelshof" />Adelshof</a></li> ' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=smith" ><img src="graphic/buildings/smith.png" alt="Schmiede" />Schmiede</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=place" ><img src="graphic/buildings/place.png" alt="Platz" />Platz</a></li> ' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=market" ><img src="graphic/buildings/market.png" alt="Markt" />Markt</a></li></ul> ' & _
;							'</td></tr></table>'
;
;		_IEDocInsertHTML($oTag, $schnellleiste, "beforebegin")
;	Endif
;	
;	If text_im_html($oFrame,"Ins Adressbuch") = 1 Then
;		$url = _IEPropertyGet ( $oFrame, "locationurl")
;		$welt = Stringmid($url,stringinstr($url,"de")+2,stringinstr($url,".")-stringinstr($url,"de")-2)
;		$html = _IEDocReadHTML($oFrame)
;		$id = Stringmid($url,stringinstr($url,"player_id")+10,7)
;		
;	EndIf
;EndIf	
	
WEnd


;Funtion der Zeituhr und startet jede Minute Aufgaben_Timer()
Func Time()
	If WinActive($fenstertitel) Or WinActive($aufgaben_window) Or WinActive($einstellungen_window) Or WinActive($berechner_window) Or WinActive($info_window) Then
		$Time = StringFormat("%02i:%02i:%02i", @HOUR, @MIN, @SEC)
		Opt("WinTitleMatchMode", 4)
		ControlSetText($main_window, "", $label_uhrzeit, $Time)
		Opt("WinTitleMatchMode", 2)
	EndIf

	;If @SEC = $aufgStartArt Then nix($aufgStartArt & "  " )

	If $aufgStartArt <> "Zufall" AND $aufgStartArt < 60 AND $aufgStartArt > -1 And @MIN <> $intervallminute AND @SEC > $aufgStartArt Then
		;nix($Timer_aktiv)
		If $Timer_aktiv = 0 Then Aufgaben_Timer()
		$intervallminute = @MIN
	ElseIf (@MIN <> $intervallminute) And (@SEC > $intervall_zufall) And $aufgStartArt = "Zufall" Then
		;nix($Timer_aktiv & "  " & "2")
		$intervallminute = @MIN
		$intervall_zufall = Random(1, 50, 1)
		If $Timer_aktiv = 0 Then Aufgaben_Timer()
	EndIf
EndFunc   ;==>Time


; überprüft uhrzeiten in $aufgabe_start[] und $aufgabe_ende[] und markiert ggf die Aufgaben mit dem entspr status, danach Func Aufgaben_starten()
Func Aufgaben_Timer()
	$Timer_aktiv = 1
	;Farbe während Aufgabendurchführung auf gelb
	GUICtrlSetBkColor($aktive_aufgaben_liste, 0xeeee00)
	;mit festen werten arbeiten, da sich sie Uhrzeit beim abarbeiten des arrays verändert
	$minute = @MIN
	$stunde = @HOUR
	$tag = @MDAY
	$jetzt = $tag * 24 * 60 + $stunde * 60 + $minute
	;Durchsuch das Array mit den Aufgabenstartwerten bis zur kleinesten zahl, das ist das erste leere feld unten drunter ...
	$i= 0
	While $aufgabe_start[$i] <> ""
		;msgbox(0,"","los gehts")
		If $aufgabe_start[$i] <= $jetzt And $aufgabe_ende[$i] <= $jetzt And $aufgabe_start[$i] <> "" And $aufgaben_status[$i] = "3" Then
			;nix("start: " & $aufgabe_start[$i] & "    Ende: " & $aufgabe_ende[$i] & "   Jetzt: " & $jetzt) 
			$aufgaben_status[$i] = 1
			;msgbox(0,"","aufgaben_status 1")
		ElseIf $aufgabe_start[$i] <= $jetzt And $aufgabe_ende[$i] >= $jetzt And $aufgabe_start[$i] <> "" Then
			$aufgaben_status[$i] = 2
			;msgbox(0,"","aufgaben_status 2")
		EndIf
		$i += 1
	WEnd
	;msgbox(0,"","start")
	;If schonmalein
	Aufgaben_starten()
EndFunc   ;==>Aufgaben_Timer


; startet alle Aufgaben die vorher von der funktion Aufgaben_Timer den Status 1 oder 2 bekommen haben (1er zuerst, 2er danach ausgeführt)
Func Aufgaben_starten()
	
	For $a2 = 1 To 2
		$i = 0
		While $aufgabe_start[$i] <> ""
			;msgbox(0,"","los gehts")
			$return2 = 0
			If $aufgaben_status[$i] = $a2 Then
				;MsgBox(0,$a2,"und es ist 1 oder 2")
				If $schonmaleingeloggt = 0 Then
					$schonmaleingeloggt = 1
					einloggen()
				EndIf
				label_warten(1)
				statusmeldung_aufgabenstart($aufgaben_typ[$i], $i)
				;msgbox(0,"loooos",$i)
				If StringInStr($aufgaben_typ[$i], "Gebäudeausbau") <> 0 Then $return2 = aufgabe_start_Gebaeude($i)
				If $aufgaben_typ[$i] = "Einheitenforschung"  Then $return2 = aufgabe_start_Einheitenforschung($i)
				If $aufgaben_typ[$i] = "Einheiten_max_rekrutieren"  Then $return2 = aufgabe_start_Einheiten_max($i)
				If $aufgaben_typ[$i] = "Einheiten_anzahl_rekrutieren"  Then $return2 = aufgabe_start_Einheiten_anzahl($i)
				If $aufgaben_typ[$i] = "Angriff"  Then $return2 = angriff_ausfuehren($i)
				If $aufgaben_typ[$i] = "Unterstuetzung"  Then $return2 = angriff_ausfuehren($i)
				
			EndIf
			if $return2 <> 1 Then $i += 1
		WEnd
	Next
	
	GUICtrlSetBkColor($aktive_aufgaben_liste, 0xdbfbd9)   ;Farbe während aufgabendurchführung von gelb zurück auf grün
	$Timer_aktiv = 0
	
EndFunc   ;==>Aufgaben_starten


; Funktion zum Einloggen in die stämme-homepage    (Return 1 bei Erfolg)
Func einloggen()
	If $schonmaleingeloggt = 0 Then GUISetState(@SW_SHOW, $start_window)
	$schonmaleingeloggt = 1
	status("Anmelden beim Stämme-LogIn")
	
	If WinGetTitle(	" - DSBot 2008   V." & $softwareversion, "") <> $fenstertitel Then 
		WinSetTitle ( " - DSBot 2008   V." & $softwareversion, "", $fenstertitel )
	EndIf
	
	$fenstertitel = $aktuelle_Welt & " - DSBot 2008   V." & $softwareversion
	
	GUICtrlSetData($progressbar1, 10)
	label_warten(1)
	status("Versuch: Anmelden")
	GUICtrlSetData($progressbar1, 20)
	_IENavigate($oIE, "http://www.die-staemme.de")
	_IELoadWait($oIE)
	$sText = _IEBodyReadText($oIE)
	; falls 2dauereingeloggt
	If StringInStr($sText, "welcher Welt") <> 0 Then
		_IEFormImageClick($oIE, "server_de" & StringTrimLeft($aktuelle_Welt, 5), "name", 0, 0)
		_IELoadWait($oIE)
		einloggen_erfolgtest()
		;falls formularmaske mit benutzername und passwort
	Else
		$oForm = _IEFormGetCollection($oIE, 0)
		$oQuery = _IEFormElementGetObjByName($oForm, "user")
		_IEFormElementSetValue($oQuery, $benutzername)
		$oQuery = _IEFormElementGetObjByName($oForm, "password")
		_IEFormElementSetValue($oQuery, $passwort)
		$oQuery = _IEFormElementGetObjByName($oForm, "server")
		_IEFormElementOptionSelect($oQuery, $aktuelle_Welt, 1, "byText")
		_IEFormImageClick($oForm, "graphic/lang/de/login.png", "src", 0, 0)
		
		;If _IEFormElementGetValue ( $oQuery ) = "ds" & StringTrimLeft($aktuelle_Welt,5) Then
		;	_IEFormSubmit ($oForm,0)
		;	einloggen_erfolgtest()
		;Else
		;	status("Welt konnte nicht ausgewählt werden")
		;	status("Warte 30 sekunden ...")
		;	sleep(30000)
		;	einloggen()
		;EndIf
		_IELoadWait($oIE)
		 If einloggen_erfolgtest() = 1 Then
			 Return 1
		 Else 
			 Return 0
		EndIf
	EndIf
EndFunc   ;==>einloggen


; prüft ob das einloggen erfolgreich war
Func einloggen_erfolgtest()
	status("Teste ob erfolgreich angemeldet")
	;Sleep(1000)
	GUICtrlSetData($progressbar1, 35)
	_IELoadWait($oIE, 0, 20000)
	$oFrame = _IEFrameGetObjByName($oIE, "main")
	; Test ob Einloggen erfolgreich, sonst wiederholung ...
	$oTags = _IETagNameGetCollection ($oFrame, "a")
	For $oTag In $oTags
		If StringInStr($oTag.href,"screen=overview_villages") <> 0 Then 
			status("DSBot erfolgreich angemeldet")
			GUICtrlSetData($progressbar1, 50)
			;Sleep(1000)
			GUICtrlSetData($progressbar1, 100)
			;Sleep(1000)
			GUISetState(@SW_HIDE, $start_window)
			GUISetState(@SW_SHOW, $main_window)
			TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "gui_anzeigen")
			TraySetState()
			Opt("TrayIconHide", 0)
			label_warten(0)
			Return 1
		EndIf
	Next
		status("Keine Dorfübersicht, einloggen fehlgeschlagen")
		;Sleep(1000)
		Return 0
EndFunc   ;==>einloggen_erfolgtest


; holt die Login-Daten aus der settings.ini bzw speichert die Daten beim ersten Start; holen bzw erstellen der ident-Nummer
Func login_daten()
	
	If FileExists("data") = 0 Then
		If MsgBox(36,"Data-Ordner","Ich kann keinen Data-Ordner finden. Wenn du das erste mal startest ist das normal. Wenn du aber bereits einen Data-Ordner mit Einstellungen und Aufgaben hast, so führ mich dort aus wo sich dieser befindet. Ansonsten müssen alle Einstellungen etc neu eingetragen werden." & @CRLF & "Soll ich jetzt starten und einen neuen Data-Ordner anlegen ?") = 7 Then Exit
		DirCreate("data")
	EndIf
		
	$ident = IniRead("data\settings.ini", "Programm", "Identifikation", "")
	If $ident = "" Then
		$ident = Int(Random(111111111, 999999998))
		IniWrite("data\settings.ini", "Programm", "Identifikation", $ident)
	EndIf
	
	$pfad = IniRead("data\settings.ini", "Programm", "Pfad", "")
	If $pfad = "" Then
		IniWrite("data\settings.ini", "Programm", "Pfad", @ScriptDir)
	ElseIf $pfad <> @ScriptDir And IniRead("data\settings.ini", "Programm", "autostart", "") = 1 Then
		RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "StämmeBot-" & $ident)
		IniWrite("data\settings.ini", "Programm", "autostart", "0")
		MsgBox(0, "", "Weil das Programm seit dem letzen Start verschoben wurde, kann die Autostart-Funktion nich ausgeführt werden. Bitte in den Einstellungen erneut auswählen !")
	EndIf
	
	$benutzername = IniRead("data\settings.ini", "Login", "Benutzername", "")
	If $benutzername = "" Then $benutzername = InputBox("Stämme-Benutzername", 'Bitte den Stämme-Benutzernamen eingeben, wird in der Datei "settings.ini" im Ordner "data" gespeichert:', "", "", 300, 145)
	If $benutzername = "" Then
		MsgBox(0, "Fehler", "Ohne Benutzernamen kann sich der Bot nicht einloggen ... bitte neustarten")
		If $schonmaleingeloggt = 0 Then
			Exit
		Else
			ExitScript()
		EndIf
	EndIf
	IniWrite("data\settings.ini", "Login", "Benutzername", $benutzername)

	$passwort = _StringEncrypt(0, IniRead("data\settings.ini", "Login", "Passwort", ""), "staemme123bot")
	If $passwort = "" Then $passwort = InputBox("Stämme-Passwort", 'Bitte Stämme-Passwort eingeben, wird verschlüsselt in der Datei "settings.ini" im Ordner "data" gespeichert:', "", "#", 300, 145)
	If $passwort = "" Then
		MsgBox(0, "Fehler", "Ohne Passwort kann sich der Bot nicht einloggen ... bitte neustarten")
		If $schonmaleingeloggt = 0 Then
			Exit
		Else
			ExitScript()
		EndIf
	EndIf
	IniWrite("data\settings.ini", "Login", "Passwort", _StringEncrypt(1, $passwort, "staemme123bot"))
	
	
	$aktuelle_Welt = IniRead("data\settings.ini", "Programm", "Welt", "")
	If $aktuelle_Welt = "" Then
		$aktuelle_Welt = "Welt " & InputBox("Stämme-Welt", "Auf welcher Welt spielt dieser Bot ? Bitte Zahl zwischen 2 und 23 eingeben", "", "", 300, 145)
		If $aktuelle_Welt = "" Then
			MsgBox(0, "Fehler", "Keine Welt angegeben, bitte neustarten !")
		EndIf
		IniWrite("data\settings.ini", "Programm", "Welt", $aktuelle_Welt)
	EndIf
	
EndFunc   ;==>login_daten


; wenn der ordner graphic nicht existiert oder wenn er nicht die größe aus $grapihc_size hat, dann werden die dateien alle entpackt und die ordner erstellt
Func dateien_installieren()
	
	If FileExists("graphic") = 0 Then
		If MsgBox(52, "Grafikdateien fehlen", "Der Ordner 'graphic' ist nicht vorhanden. Soll Der Ordner erstellt werden, denn die Grafiken werden für den Bot benötigt.") <> 6 Then
			MsgBox(16, "Fehler", "Ohne Grafiken läuft der Bot nicht. Bitte erneut Starten!")
			Exit
		EndIf
		DirCreate("graphic\buildings")
		DirCreate("graphic\button")
		DirCreate("graphic\IE")
		DirCreate("graphic\unit")
	EndIf
	
	
	If DirGetSize ( "graphic"  ) <> $graphic_size Then
				If FileExists("graphic") = 0 Then DirCreate("graphic")
				If FileExists("graphic\buildings") = 0 Then DirCreate("graphic\buildings")
				If FileExists("graphic\button") = 0 Then DirCreate("graphic\button")
				If FileExists("graphic\IE") = 0 Then DirCreate("graphic\IE")
				If FileExists("graphic\unit") = 0 Then DirCreate("graphic\unit")
				FileInstall("graphic\buildings\barracks.jpg", "graphic\buildings\barracks.jpg")
				FileInstall("graphic\buildings\church.jpg", "graphic\buildings\church.jpg")
				FileInstall("graphic\buildings\farm.jpg", "graphic\buildings\farm.jpg")
				FileInstall("graphic\buildings\garage.jpg", "graphic\buildings\garage.jpg")
				FileInstall("graphic\buildings\hide.jpg", "graphic\buildings\hide.jpg")
				FileInstall("graphic\buildings\iron.jpg", "graphic\buildings\iron.jpg")
				FileInstall("graphic\buildings\main.jpg", "graphic\buildings\main.jpg")
				FileInstall("graphic\buildings\market.jpg", "graphic\buildings\market.jpg")
				FileInstall("graphic\buildings\place.jpg", "graphic\buildings\place.jpg")
				FileInstall("graphic\buildings\smith.jpg", "graphic\buildings\smith.jpg")
				FileInstall("graphic\buildings\stable.jpg", "graphic\buildings\stable.jpg")
				FileInstall("graphic\buildings\stone.jpg", "graphic\buildings\stone.jpg")
				FileInstall("graphic\buildings\snob.jpg", "graphic\buildings\snob.jpg")
				FileInstall("graphic\buildings\storage.jpg", "graphic\buildings\storage.jpg")
				FileInstall("graphic\buildings\wall.jpg", "graphic\buildings\wall.jpg")
				FileInstall("graphic\buildings\wood.jpg", "graphic\buildings\wood.jpg")
				FileInstall("graphic\button\aufgabe.gif", "graphic\button\aufgabe.gif")
				FileInstall("graphic\button\aufgabe_start.gif", "graphic\button\aufgabe_start.gif")
				FileInstall("graphic\button\einstellungen.gif", "graphic\button\einstellungen.gif")
				FileInstall("graphic\button\links.gif", "graphic\button\links.gif")
				FileInstall("graphic\button\log.gif", "graphic\button\log.gif")
				FileInstall("graphic\button\login.gif", "graphic\button\login.gif")
				FileInstall("graphic\button\löschen.gif", "graphic\button\löschen.gif")
				FileInstall("graphic\button\rechner.gif", "graphic\button\rechner.gif")
				FileInstall("graphic\button\rechts.gif", "graphic\button\rechts.gif")
				FileInstall("graphic\button\abbrechen.gif", "graphic\button\abbrechen.gif")
				FileInstall("graphic\button\attkord.gif", "graphic\button\attkord.gif")
				FileInstall("graphic\button\choose.gif", "graphic\button\choose.gif")
				FileInstall("graphic\button\save.gif", "graphic\button\save.gif")
				FileInstall("graphic\button\forum.gif", "graphic\button\forum.gif")
				FileInstall("graphic\button\löschen.gif", "graphic\button\löschen.gif")
				FileInstall("graphic\IE\back.jpg", "graphic\IE\back.jpg")
				FileInstall("graphic\IE\forward.jpg", "graphic\IE\forward.jpg")
				FileInstall("graphic\IE\refresh.jpg", "graphic\IE\refresh.jpg")
				FileInstall("graphic\IE\stop.jpg", "graphic\IE\stop.jpg")	
				FileInstall("graphic\unit\att.jpg", "graphic\unit\att.jpg")
				FileInstall("graphic\unit\att_cav.jpg", "graphic\unit\att_cav.jpg")
				FileInstall("graphic\unit\booty.jpg", "graphic\unit\booty.jpg")
				FileInstall("graphic\unit\def.jpg", "graphic\unit\def.jpg")
				FileInstall("graphic\unit\def_cav.jpg", "graphic\unit\def_cav.jpg")
				FileInstall("graphic\unit\speed.jpg", "graphic\unit\speed.jpg")
				FileInstall("graphic\unit\unit_archer.jpg", "graphic\unit\unit_archer.jpg")
				FileInstall("graphic\unit\unit_axe.jpg", "graphic\unit\unit_axe.jpg")
				FileInstall("graphic\unit\unit_catapult.jpg", "graphic\unit\unit_catapult.jpg")
				FileInstall("graphic\unit\unit_heavy.jpg", "graphic\unit\unit_heavy.jpg")
				FileInstall("graphic\unit\unit_knight.jpg", "graphic\unit\unit_knight.jpg")
				FileInstall("graphic\unit\unit_light.jpg", "graphic\unit\unit_light.jpg")
				FileInstall("graphic\unit\unit_marcher.jpg", "graphic\unit\unit_marcher.jpg")
				FileInstall("graphic\unit\unit_priest.jpg", "graphic\unit\unit_priest.jpg")
				FileInstall("graphic\unit\unit_ram.jpg", "graphic\unit\unit_ram.jpg")
				FileInstall("graphic\unit\unit_snob.jpg", "graphic\unit\unit_snob.jpg")
				FileInstall("graphic\unit\unit_spear.jpg", "graphic\unit\unit_spear.jpg")
				FileInstall("graphic\unit\unit_spy.jpg", "graphic\unit\unit_spy.jpg")
				FileInstall("graphic\unit\unit_sword.jpg", "graphic\unit\unit_sword.jpg")
	EndIf
EndFunc   ;==>dateien_installieren


; sorgt dafür dass der Bot mit den verfügbaren Einheiten pro Welt zurecht kommt (nicht vorhandene werden ausgeblendet)
Func einheiten_regeln()
	$weltnummer = StringTrimLeft($aktuelle_Welt, 5)

	Select
		Case $weltnummer = 2
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
		Case $weltnummer = 3
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
		Case $weltnummer = 4
			$gesanzahl_einheiten = 10
		Case $weltnummer = 5
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
		Case $weltnummer = 6
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
		Case $weltnummer = 7
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
		Case $weltnummer = 8
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
		Case $weltnummer = 9
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
		Case $weltnummer = 10
			$gesanzahl_einheiten = 12
		Case $weltnummer = 11
			$gesanzahl_einheiten = 12
		Case $weltnummer = 12
			$gesanzahl_einheiten = 12
		Case $weltnummer = 13
			$gesanzahl_einheiten = 12
		Case $weltnummer = 14
			$gesanzahl_einheiten = 12
		Case $weltnummer = 15
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
		Case $weltnummer = 16
			$gesanzahl_einheiten = 12
		Case $weltnummer = 17
			$gesanzahl_einheiten = 12
		Case $weltnummer = 18
			$gesanzahl_einheiten = 12
		Case $weltnummer = 19
			$gesanzahl_einheiten = 11
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
		Case $weltnummer = 20
			$gesanzahl_einheiten = 12
		Case $weltnummer = 21
			$gesanzahl_einheiten = 12
		Case $weltnummer = 22
			$gesanzahl_einheiten = 12
		Case $weltnummer = 23
			$gesanzahl_einheiten = 9
			GUICtrlSetState($einheiten_knight, $GUI_DISABLE)
			GUICtrlSetState($einheiten_archer, $GUI_DISABLE)
			GUICtrlSetState($einheiten_marcher, $GUI_DISABLE)
	EndSelect
	
EndFunc   ;==>einheiten_regeln


; lädt alle Daten aus den Dateien in die Arrays (wie z.B. die Aufgaben, Dörfer, etc ...)
Func arrays_laden()
	_FileReadToArray("data\Dörfer.isl", $Doerfer)
	_ArrayDelete($Doerfer, 0)

	_FileReadToArray("data\start.isl", $aufgabe_start)
	_ArrayDelete($aufgabe_start, 0)

	_FileReadToArray("data\ende.isl", $aufgabe_ende)
	_ArrayDelete($aufgabe_ende, 0)

	_FileReadToArray("data\intervall.isl", $aufgabenintervall)
	_ArrayDelete($aufgabenintervall, 0)

	_FileReadToArray("data\bau.isl", $bauvorhaben)
	_ArrayDelete($bauvorhaben, 0)

	_FileReadToArray("data\dorf.isl", $dorf_der_aufgabe)
	_ArrayDelete($dorf_der_aufgabe, 0)

	_FileReadToArray("data\ort.isl", $aufgabenort)
	_ArrayDelete($aufgabenort, 0)

	_FileReadToArray("data\anzahl.isl", $Einheitenanzahl)
	_ArrayDelete($Einheitenanzahl, 0)

	_FileReadToArray("data\typ.isl", $aufgaben_typ)
	_ArrayDelete($aufgaben_typ, 0)
	
	_FileReadToArray("data\status.isl", $aufgaben_status)
	_ArrayDelete($aufgaben_status, 0)

	_FileReadToArray("data\dorfkoord.isl", $Dorfkoordinaten)
	_ArrayDelete($Dorfkoordinaten, 0)

	;Falls es gespeicherte Aufgaben gibt, Aufgaben anzeigen
	If $aufgabe_start[0] <> "" Then
		aufgaben_anzeigen()
	EndIf
EndFunc   ;==>arrays_laden



Func _FileWriteFromArray2($File, $a_Array, $i_Base = 0, $i_UBound = 0)
	; Check if we have a valid array as input
	If Not IsArray($a_Array) Then Return SetError(2, 0, 0)

	; determine last entry
	Local $last = UBound($a_Array) - 1
	If $i_UBound < 1 Or $i_UBound > $last Then $i_UBound = $last
	If $i_Base < 0 Or $i_Base > $last Then $i_Base = 0

	; Open output file for overwrite by default, or use input file handle if passed
	Local $hFile
	If IsString($File) Then
		$hFile = FileOpen($File, 2)
	Else
		$hFile = $File
	EndIf
	If $hFile = -1 Then Return SetError(1, 0, 0)

	; Write array data to file
	Local $ErrorSav = 0
	For $x = $i_Base To $i_UBound
		;If $x <> UBound($a_Array) - 1 Then
		If $a_Array[$x] <> "" Then
			If FileWrite($hFile, $a_Array[$x] & @CRLF) = 0 Then
				$ErrorSav = 3
				ExitLoop
			EndIf
		EndIf
	Next

	; Close file only if specified by a string path
	If IsString($File) Then FileClose($hFile)
	
	; Return results
	If $ErrorSav Then
		Return SetError($ErrorSav, 0, 0)
	Else
		Return 1
	EndIf
EndFunc   ;==>_FileWriteFromArray2



; zur Dorfübersicht wechseln (fertig für alle stämme-einstellungen)
Func irgendeine_dorfuebersicht($dorf_der_aufgabe)  ;überarbeiten, soll wie dorfwechsel sein
	For $t = 1 to 1
		label_warten(1)
		$oFrame = _IEFrameGetObjByName($oIE, "main")
		;_IELinkClickByTextTeil($oFrame, "Übersichten")
		If html_link_anklicken("screen=overview_villages") = 0 Then ExitLoop
		frames_IELoadWait($oIE)
		warten_auf_screenoverviewvillages(1)
		If _IELinkClickByTextTeil($oFrame, $dorf_der_aufgabe) = 1 Then Return 1
		label_warten(0)
	Next
	Return 0
EndFunc   ;==>irgendeine_dorfuebersicht



; Ändert das aktuelle Dorf auf das im Parameter  (Return 1 bei Erfolg)
Func Dorfwechsel($dorf_der_aufgabe)	
	;erstmal Name des aktuell angezeigten Dorfes aus der Titelleiste holen
	$oFrame = _IEFrameGetObjByName($oIE, "main")
	$html = _IEDocReadHTML($oFrame)
	;msgbox(0,"",$html)
	$start_titel = (StringInStr($html, "<title>") + 7)
	$laenge = StringInStr($html, "</title>") - $start_titel - 23
	;msgbox(0,"", Stringmid( $html,$start_titel, $laenge) )
	$aktuell_dorf = StringMid($html, $start_titel, $laenge)
	
	If $dorf_der_aufgabe <> $aktuell_dorf Then
		_IELinkClickByTextTeil($oFrame, "Übersichten")
		If _IELinkClickByTextTeil($oFrame, $dorf_der_aufgabe) <> 1 Then
			status("Dorf nicht vorhanden (oder Fehler weil Seite nicht geladen)")
			Return 0
			frames_IELoadWait($oIE)
		Else
			Return 1
		EndIf
	EndIf
EndFunc   ;==>Dorfwechsel



; Holt die main ran, falls net da wir einmal einloggt  (Return 1 bei Erfolg)
Func get_oFrame_main() ;  +NEU+
	
	If $schonmaleingeloggt = 0 Then 
		einloggen()
	Else
		html_link_anklicken("screen=overview_villages")
	EndIf

	frames_IELoadWait($oIE)
	
	If stringinstr(_IEDocReadHTML ($oFrame),"screen=overview_villages") = 0 Then einloggen()
	
	frames_IELoadWait($oIE)

	If stringinstr(_IEDocReadHTML ($oFrame),"screen=overview_villages") <> 0 Then Return 1
	Return 0
	
EndFunc



; Überprüft ob in allen tags <a> im href der inhalt von $href vorkommt   (Return 1 bei Erfolg)
Func href_im_code($href) ;  +NEU+	
	$oFrame = _IEFrameGetObjByName($oIE, "main")
	$oTags = _IETagNameGetCollection ( $oFrame , "a" )
	For $oTag In $oTags
		If StringInStr($oTag.href,$href) Then Return 1
	Next
	Return 0
EndFunc   ;==>href_im_code


; überprüft ob der text im Objekt ist   (Return 1 bei Erfolg)
func text_im_html($object,$text)
	If stringinstr(_IEDocReadHTML ( $object), $text) <> 0 Then Return 1
	Return 0
EndFunc   ;==>warten_auf_text


; wartet auf dorfübersicht; falls $h=1 wird bei PA kombiniert leiste auf den ersten punkt geklickt damit alle dörfer sichtbar sind   (Return 1 bei Erfolg)
func warten_auf_screenoverviewvillages($h=0)
	$q = 0
	Do 
		sleep(50)
		$oFrame = ""
		$oFrame = _IEFrameGetObjByName($oIE, "main")
		If stringinstr(_IEDocReadHTML ( $oFrame ), "mode=combined") and $h = 1 Then html_link_anklicken("mode=combined")
		$q = $q + 1
	Until stringinstr(_IEDocReadHTML ( $oFrame ), "screen=overview_villages") <> 0 OR $q > 130
	If stringinstr(_IEDocReadHTML ( $oFrame ), "screen=overview_villages") <> 0 Then Return 1
	Return 0
	
EndFunc   ;==>warten_auf_screenoverviewvillages



; bleibt in einer Schleife bis $text im hrml-code lesbar ist   (Return 1 bei Erfolg)
func warten_auf_text($text)
	$r = 0
	Do 
		sleep(50)
		$oFrame = _IEFrameGetObjByName($oIE, "main")
		$r = $r +1
	Until stringinstr(_IEDocReadHTML ( $oFrame ), $text) <> 0 OR $r > 130
	
	If stringinstr(_IEDocReadHTML ( $oFrame ), $text) <> 0 then Return 1

	Return 0
	
EndFunc   ;==>warten_auf_text


	Func frames_IELoadWait($o_object, $i_delay = 0)
     _IELoadWait($o_object, $i_delay)
     ; recurse into any frames
     $oFrames = _IEFrameGetCollection($o_object)
     $iCount = @EXTENDED
     for $i = 0 to $iCount-1
          frames_IELoadWait(_IEFrameGetCollection ($o_object, $i), $i_delay)
     next
endfunc


; öffnet wenn man schon auf der dorfübersicht ist das gebäude in $geb     (Return 1 bei Erfolg)
func gebaeude_oeffnen($geb)
	$oLinks = _IELinkGetCollection($oFrame)
	$iNumLinks = @extended
	;MsgBox(0, "Link Info", $iNumLinks & " links found")
	frames_IELoadWait($oIE)
	For $oLink In $oLinks
		;msgbox(0,"",$oLink.href)
		If StringInStr($oLink.href, name_to_html($geb)) <> 0 Then
			$oLink.click
			Return 1
		EndIf
	Next
	Return 0
EndFunc   ;==>gebaeude_oeffnen


; klickt einen link an, der im href den inhalt von $link_im_html enthält; Return 1/0
Func html_link_anklicken($link_im_html) ; +NEU+		
		$oLinks = _IELinkGetCollection($oFrame)
		$iNumLinks = @extended
		;MsgBox(0, "Link Info", $iNumLinks & " links found")
		frames_IELoadWait($oIE)
		For $oLink In $oLinks
			If StringInStr($oLink.href, $link_im_html) <> 0 Then
				;MsgBox(0, "Link Info", $oLink.href)
				$oLink.click
				label_warten(0)
				Return 1
			EndIf
		Next
		Return 0
	label_warten(0)
EndFunc   ;==>html_link_anklicken

;





; Die Erforschung oder WEiterforschung einer einheit in der Schmiede starten
Func aufgabe_start_Einheitenforschung($y)
		
	; Stämme-Spielseite öffnen
	get_oFrame_main()
		
	irgendeine_dorfuebersicht($dorf_der_aufgabe[$y])
	
	; wartet auf die normale Stämme-Spielseite (erkennbar am im htmlcode von jeder seite enthaltenen screenoverviewvillages
	warten_auf_screenoverviewvillages()
	
	gebaeude_oeffnen("Schmiede")
	
		;warten auf diesen text (ist nur im htmlcode von der schmiede)
	warten_auf_text('src="graphic/big_buildings/smith3.png')
	
	$string_im_html_link = "action=research&id=" & name_to_html($bauvorhaben[$y])
	
	$erfolg =  html_link_anklicken($string_im_html_link) 
	
	
	
	
	If $erfolg = 1 Then status("Forschung " & $bauvorhaben[$y] & " in " & $dorf_der_aufgabe[$y] & " erfolgreich.")
	If $erfolg <> 1 Then status("Forschung " & $bauvorhaben[$y] & " in " & $dorf_der_aufgabe[$y] & " NICHT erfolgreich.")
	
	aufgabe_loeschen($y)
	aufgaben_anzeigen()
	label_warten(0)
	Return 1
EndFunc   ;==>aufgabe_start_Einheitenforschung


; Gebäudeausbau starten
Func aufgabe_start_Gebaeude($z)
	label_warten(1)
	For $s = 1 to 1	
		; Stämme-Spielseite öffnen
		If get_oFrame_main() = 0 Then ExitLoop
		
		;frames_IELoadWait($oIE)
			;nix()
		If irgendeine_dorfuebersicht($dorf_der_aufgabe[$z]) = 0 Then ExitLoop
		
		;frames_IELoadWait($oIE)
		;nix()
		; wartet auf die normale Stämme-Spielseite (erkennbar am im htmlcode von jeder seite enthaltenen screenoverviewvillages
		If warten_auf_screenoverviewvillages() = 0 Then  ExitLoop

		
		If gebaeude_oeffnen("Hauptgebäude") = 0 Then  ExitLoop
		
		;warten auf diesen text (ist nur im htmlcode vom hauptgebäude)
		If warten_auf_text("screen=main&amp;action=change_name") = 0 Then  ExitLoop
			
		
		If test_ob_zwei_auftraege_in_bauwarteschlange($z) = True Then 
			$return = 2
		Else
			$string_im_html_link = "id=" & name_to_html($bauvorhaben[$z])
			$return =  html_link_anklicken($string_im_html_link)
			
			
			;WinWait("Internet Explorer", "Willst du den Bauauftrag wirklich abbrechen?")
			;ControlClick ( "Internet Explorer", "Willst du den Bauauftrag wirklich abbrechen?", "Button 1"  )



		EndIf

			
			;MsgBox(0,"",$return)
		;wenn es sich um eine einmalige ausführung handelt oder wenn die endzeit erreicht ist: auftrag löschen
		;msgbox(0,"",$aufgabe_start[$z] & "   " & $aufgabe_ende[$z] )
			
		
		If $return = 2 Then
			$aufgabe_start[$z] = $aufgabe_start[$z] + 10
			$aufgabe_ende[$z] = $aufgabe_ende[$z] + 10
			status("Aufgabe aufgeschoben wegen voller Bauschleife.")
			aufgaben_anzeigen()
			label_warten(0)
			Return 0
		EndIf 
		;ElseIf $return= 1 Then status("Aufgabe erfolgreich ausgeführt: " & $bauvorhaben[$z] & " in " & $dorf_der_aufgabe[$z])
			
		If $aufgabe_start[$z] >= $aufgabe_ende[$z] Then
			If $return = 1 Then
				status("Aufgabe erfolgreich ausgeführt: " & $bauvorhaben[$z] & " in " & $dorf_der_aufgabe[$z])
				aufgabe_loeschen($z)
				;_ArrayDisplay($aufgabe_start, "2")
				;Aufgabenanzeige refreshen
				aufgaben_anzeigen()
				label_warten(0)
				Return 0
			ElseIf $return = 0 Then
				; wenn erfolg 2 nichtz kommt, so ist die aufgabe zu löschen, auf jeden fall da dies eine einzelfestzeitaufgabe ist, egal ob erfolgreich oder nicht
				status("Aufgabe NICHT erfolgreich ausgeführt: " & $bauvorhaben[$z] & " in " & $dorf_der_aufgabe[$z])
				aufgabe_loeschen($z)
				label_warten(0)
				Return 0
			Endif
		Else
			If $return = 1 Then
				status("Aufgabe erfolgreich ausgeführt: " & $bauvorhaben[$z] & " in " & $dorf_der_aufgabe[$z])
				aufgabe_loeschen($z)
				;_ArrayDisplay($aufgabe_start, "2")
				;Aufgabenanzeige refreshen
				aufgaben_anzeigen()
				label_warten(0)
				Return 0
			elseif $return = 0 Then
				Do
					$aufgabe_start[$z] += $aufgabenintervall[$z] ;Startpunkt mit Intervall addieren für nächsten startpunkt solange bis startpunkt nach der aktuellen zeit liegt (falls verzögerungen aufgekommen sind und er versucht den startpunkt in die vergangenheit zu legen
				Until $aufgabe_start[$z] > (@MIN + @HOUR * 60 + @MDAY * 24 * 60)
				$aufgaben_status[$z] = 3
				If $aufgabe_start[$z] >= $aufgabe_ende[$z] Then ;Sollte damit der Startpunkt hinter das Ende rutschen ... Aufgabe löschen
					aufgabe_loeschen($z)
					status("Intervall-Aufgabe NICHT erfolgreich ausgeführt: " & $bauvorhaben[$z] & " in " & $dorf_der_aufgabe[$z])
				EndIf
				aufgaben_anzeigen()
				label_warten(0)
				Return 0
			EndIf
		EndIf
	Next
	status("Fehler bei IE-Bedienung: " & $bauvorhaben[$z] & " in " & $dorf_der_aufgabe[$z])
	aufgabe_loeschen($z)
	aufgaben_anzeigen()
	label_warten(0)
	Return 1
	
	
	
	
	
		;lösche element im array und schiebe alle eins hoch ...
		;If 
		;erfolg 2 kommt wenn in der bauwarteschlange bereits 2 gebäude drin sind ... dann soll er die aufgabe um 10 minuten aufschieben ...


		;_ArrayDisplay($aufgabe_start, "1")

		;Wenn die end zeit noch nicht erreicht ist (es muss ja nun ein intervallauftrag sein), so soll er bei erfogltem klick den auftrag löschen
		;Wenn es sich um ein noch nicht erfolgreich abgeschlossenes und noch nicht abgelaufenes Intervall handelt

EndFunc   ;==>aufgabe_start_Gebaeude


;liefert true wenn mehr als ein bauauftrag in der warteschlange, sonst false
Func test_ob_zwei_auftraege_in_bauwarteschlange($z)
	$oLinks = _IELinkGetCollection($oFrame)
	$zaehler = 0
	$iNumLinks = @extended
	;MsgBox(0, "Link Info", $iNumLinks & " links found")
	_IELoadWait($oIE, 0, 20000)
	For $oLink In $oLinks
		If StringInStr($oLink.href, "cancel") <> 0 Then
			$zaehler += 1
			;MsgBox(0, "Link Info", $oLink.href)
		EndIf
		;MsgBox(0, "Link Info", $oLink.href)
	Next
	If $zaehler > IniRead("data\settings.ini", "Programm", "Bauwarteschleife", "2")-1 Then
		;msgbox(0,"","mehr als 2")
		$aufgaben_status[$z] = 3
		Return True
	Else
		Return False
	EndIf
EndFunc   ;==>test_ob_zwei_auftraege_in_bauwarteschlange


; startet die Rekrutierung der gerade maximalen möglichen Anzahl von einer bestimmten Einheit
Func aufgabe_start_Einheiten_max($x)
	Local $i
	For $i = 1 to 1
		; Stämme-Spielseite öffnen
		If get_oFrame_main() = 0 Then ExitLoop
		
		If irgendeine_dorfuebersicht($dorf_der_aufgabe[$x]) = 0 Then ExitLoop

		If warten_auf_screenoverviewvillages() = 0 Then ExitLoop

		If gebaeude_oeffnen(StringTrimLeft($aufgabenort,1)) = 0 Then ExitLoop
		
		
		;warten auf diesen text (ist nur im htmlcode von Kaserne)
		If warten_auf_text("amp;screen=barracks&amp;action=train") = 0 Then  ExitLoop
		
		
		If html_link_anklicken("insertUnit(gid('" & name_to_html($bauvorhaben[$x])) = 0 Then  ExitLoop
		
		Local $input = _IEGetObjByName($oFrame, name_to_html($bauvorhaben[$x]))
		Local $max_einheiten = _IEFormElementGetValue (  $input )
		
			
		
		$oSubmit = _IEGetObjByName ( $oFrame,"submit" )
		_IEAction($oSubmit, "click")
		
		If warten_auf_text( $max_einheiten & " " & $bauvorhaben[$x]) = 0 Then  ExitLoop
		
		
		If $aufgabe_start[$x] = $aufgabe_ende[$x] Then
			;lösche element im array und schiebe alle eins hoch ...
			status("Aufgabe erfolgreich ausgeführt: " & $bauvorhaben[$x] & " in " & $dorf_der_aufgabe[$x])
			aufgabe_loeschen($x)
			aufgaben_anzeigen()
			label_warten(0)
			Return 1
			;Wenn die end zeit noch nicht erreicht ist (es muss ja nun ein intervallauftrag sein), so soll er bei erfogltem klick den auftrag löschen
		ElseIf $erfolg = 1 Then
			status("Aufgabe erfolgreich ausgeführt: " & $bauvorhaben[$x] & " in " & $dorf_der_aufgabe[$x])
			aufgabe_loeschen($x)
			aufgaben_anzeigen()
			label_warten(0)
			Return 1
		EndIf
	Next
	Return 0
EndFunc   ;==>aufgabe_start_Einheiten_max


; startet die Rekrutierung einer bestimmten Anzahl von einer bestimmten Einheit
Func aufgabe_start_Einheiten_anzahl($w)

	get_oFrame_main()
	
	irgendeine_dorfuebersicht($dorf_der_aufgabe[$w])

	gebaeude_oeffnen(StringTrimLeft($aufgabenort,1))
	
	warten_auf_text("amp;screen=barracks&amp;action=train")
	
	$oQuery = _IEGetObjById ( $oFrame, name_to_html($bauvorhaben[$w]))
	_IEFormElementSetValue($oQuery, $Einheitenanzahl[$w])
	
	$oSubmit = _IEGetObjByName ( $oFrame,"submit" )
	_IEAction($oSubmit, "click")
	
	;löschen des auftrags / oder auch nicht falls intervall ...
	If $aufgabe_start[$w] = $aufgabe_ende[$w] Then
		;lösche element im array und schiebe alle eins hoch ...
		status("Aufgabe erfolgreich ausgeführt: " & $bauvorhaben[$w] & " in " & $dorf_der_aufgabe[$w])
		aufgabe_loeschen($w)
		aufgaben_anzeigen()
		label_warten(0)
		Return 1
		;Wenn die end zeit noch nicht erreicht ist (es muss ja nun ein intervallauftrag sein), so soll er bei erfogltem klick den auftrag löschen
	ElseIf $erfolg = 1 Then
		status("Aufgabe erfolgreich ausgeführt: " & $bauvorhaben[$w] & " in " & $dorf_der_aufgabe[$w])
		aufgabe_loeschen($w)
		aufgaben_anzeigen()
		label_warten(0)
		Return 1
	EndIf
	Return 0
EndFunc   ;==>aufgabe_start_Einheiten_anzahl


;Führt einen Aufgabe "Angriff" aus
Func angriff_ausfuehren($i)
			
		; Stämme-Spielseite öffnen
		get_oFrame_main()
		
		irgendeine_dorfuebersicht($dorf_der_aufgabe[$i])
	
		; wartet auf die normale Stämme-Spielseite (erkennbar am im htmlcode von jeder seite enthaltenen screenoverviewvillages
		warten_auf_screenoverviewvillages()
	
		gebaeude_oeffnen("Versammlungsplatz")
	
		;warten auf diesen text (ist nur im htmlcode vom Versammlungsplatz)
		warten_auf_text("amp;screen=place&amp;try=confirm")
		

		
		
		$oForm = _IEFormGetCollection($oFrame, 0)
		
		;indexzahl des links von der anzahl der speerträger holen
		$oLinks = _IELinkGetCollection($oFrame)
		$iNumLinks = @extended
		$speer_index = 0
		For $oLink In $oLinks
			If StringInStr($oLink.href, "document.forms[0].spear") Then
				;msgbox(0,"",$speer_index)
				ExitLoop
			Else
				$speer_index += 1
			EndIf
		Next
		
		
		For $form_element = 0 To $gesanzahl_einheiten - 1
			$wert_aus_array = angriff_zahl_aus_EinheitenArray_holen($i, $form_element + 1)
			If $wert_aus_array <> "0"  And $wert_aus_array <> "" Then
				_IELinkClickByIndex($oFrame, ($speer_index - 1) + ((($form_element + 1) * 2) - 1))
				;Do
					$oQuery = _IEFormElementGetCollection($oForm, $form_element)
					$max_wert_DS = _IEFormElementGetValue($oQuery)
					;msgbox(0,$form_element,$max_wert_DS)
					;Sleep(50)
				;Until $max_wert_DS <> ""
				If Floor($max_wert_DS) > Floor($wert_aus_array) Then
					_IEFormElementSetValue($oQuery, Floor($wert_aus_array))
					;msgbox(0,"","setzen")
				EndIf
				If Floor($max_wert_DS) < Floor($wert_aus_array) Then
					status("Nicht genügend Einheiten: " & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $aufgaben_typ[$i] & "   " & $aufgabenort[$i] & "  " & $Einheitenanzahl[$i])
					aufgabe_loeschen($i)
					aufgaben_anzeigen()
					label_warten(0)
					If aufg_angriff_loeschen($i) = 1 Then Return 1
					Return 0
				EndIf
				
			EndIf
		Next
		
		
		$oQuery = _IEGetObjByName ( $oFrame, "x" )
		_IEFormElementSetValue($oQuery, StringLeft($aufgabenort[$i], 3))
		$oQuery = _IEGetObjByName ( $oFrame, "y" )
		_IEFormElementSetValue($oQuery, StringRight($aufgabenort[$i], 3))
		
		If $aufgaben_typ[$i] = "Unterstuetzung"  Then
			$oQuery = _IEGetObjByName ( $oFrame, "support" )
		Else
			$oQuery = _IEGetObjByName ( $oFrame, "attack" )
		EndIf
		_IEAction ($oQuery, "click")		
		
		
		
		warten_auf_text("screen=place")
		$sText = _IEBodyReadText($oFrame)
		If StringInStr($sText, "Der Angriffstrupp muss aus mindestens") <> 0 Then
			status("Der Angriffstrupp muss aus mindestens blabla Einheiten bestehen !")
			status("FEHLER: " & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $aufgaben_typ[$i] & "   " & $aufgabenort[$i] & "  " & $Einheitenanzahl[$i])
			aufgabe_loeschen($i)
			aufgaben_anzeigen()
			label_warten(0)
			If aufg_angriff_loeschen($i) = 1 Then Return 1
			Return 0
		EndIf
		
		warten_auf_text("screen=place&amp;action=command")
			
		$oQuery = _IEGetObjByName ( $oFrame, "submit" )
		
		
		_IEAction($oQuery, "click")
		status("OK: " & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $aufgaben_typ[$i] & "   " & $aufgabenort[$i] & "  " & $Einheitenanzahl[$i])
		

		If aufg_angriff_loeschen($i) = 1 Then Return 1

		aufgaben_anzeigen()
		label_warten(0)
		Return 0

EndFunc   ;==>angriff_ausfuehren



; überprüft ob es eine einzelne oder eine intervallaufgabe ist, im ersten fall wird die aufgabe gelöscht
Func aufg_angriff_loeschen($i)
	If $aufgabe_start[$i] = $aufgabe_ende[$i] Then
			;lösche element im array und schiebe alle eins hoch ...
			aufgabe_loeschen($i)
			aufgaben_anzeigen()
			label_warten(0)
			Return 1
			;_ArrayDisplay($aufgabe_start, "1")

	ElseIf $aufgabe_start[$i] < $aufgabe_ende[$i] Then
		Do
			$aufgabe_start[$i] += $aufgabenintervall[$i]
		Until $aufgabe_start[$i] > @MDAY * 24 * 60 + @HOUR * 60 + @MIN
		;status("Interval hochgesetzt: " & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $aufgaben_typ[$i] & "   " & $aufgabenort[$i] & "  " & $Einheitenanzahl[$i])
		$aufgaben_status[$i] = 3
		
	EndIf
		
	If $aufgabe_start[$i] > $aufgabe_ende[$i] Then
		aufgabe_loeschen($i)
		aufgaben_anzeigen()
		label_warten(0)
		Return 1
	EndIf
	Return 0
EndFunc



; holt die Anzahl der Einheiten von der einheit nR. "$einheit" aus dem array $Einheitenarray[$i]
Func angriff_zahl_aus_EinheitenArray_holen($i, $einheit)
	$anzahl = StringMid($Einheitenanzahl[$i], (StringInStr($Einheitenanzahl[$i], " ", 0, $einheit) + 1), (StringInStr($Einheitenanzahl[$i], " ", 0, $einheit + 1)) - (StringInStr($Einheitenanzahl[$i], " ", 0, $einheit) + 1))
	Return $anzahl
	;msgbox(0,"",$anzahl)
EndFunc   ;==>angriff_zahl_aus_EinheitenArray_holen


;öffnet das Fenster Aufgaben und setzt das aktuelle Datum
Func neue_aufgabe()
	GUICtrlSetData($liste_dorf_aufgaben, "")
	GUICtrlSetData($liste_dorf_aufgaben, alle_doerfer())
	GUICtrlSetData($liste_dorf_einheitenbau, "")
	GUICtrlSetData($liste_dorf_einheitenbau, alle_doerfer())
	If GUICtrlRead($datum_input_gebaeude) < @MDAY Then GUICtrlSetData($datum_input_gebaeude, @MDAY)
	If GUICtrlRead($datum_input_gebaeude2) < @MDAY Then GUICtrlSetData($datum_input_gebaeude2, @MDAY)
	If GUICtrlRead($datum_input_einheiten) < @MDAY Then GUICtrlSetData($datum_input_einheiten, @MDAY)
	button_dorf_waehlen()
	GUISetState(@SW_SHOW, $aufgaben_window)
	
EndFunc   ;==>neue_aufgabe


;Liefert einen String mit allen Aufgaben mit $trenner getrennt und aktualisiert die Aufgabenliste
Func aufgaben_anzeigen()
	$alle_aufgaben = ""
	For $i = 0 To _ArrayMinIndex($aufgabe_start, 0, 0)
		If $aufgabe_start[$i] <> "" Then
			If $aufgaben_typ[$i] = "Gebäudeausbau_Intervall"  Then $alle_aufgaben = $alle_aufgaben & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & StringTrimLeft(zeitwert_in_uhrzeit($aufgabe_ende[$i]), 6) & "   " & $bauvorhaben[$i] & " in " & $dorf_der_aufgabe[$i] & $trenner
			If $aufgaben_typ[$i] = "Gebäudeausbau_Zeitpunkt"  Then $alle_aufgaben = $alle_aufgaben & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $bauvorhaben[$i] & " in " & $dorf_der_aufgabe[$i] & $trenner
			If $aufgaben_typ[$i] = "Einheitenforschung"  Then $alle_aufgaben = $alle_aufgaben & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $bauvorhaben[$i] & " forschen" & " in " & $dorf_der_aufgabe[$i] & $trenner 
			If $aufgaben_typ[$i] = "Einheiten_max_rekrutieren"  Then $alle_aufgaben = $alle_aufgaben & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   Max. " & $bauvorhaben[$i] & " rekrutieren" & " in " & $dorf_der_aufgabe[$i] & $trenner 
			If $aufgaben_typ[$i] = "Einheiten_anzahl_rekrutieren"  Then $alle_aufgaben = $alle_aufgaben & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $Einheitenanzahl[$i] & " " & $bauvorhaben[$i] & " rekrutieren" & " in " & $dorf_der_aufgabe[$i] & $trenner 
			If $aufgaben_typ[$i] = "Angriff"  Then $alle_aufgaben = $alle_aufgaben & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & "A." & " > " & $aufgabenort[$i] & "  " & $Einheitenanzahl[$i] & "   " & $dorf_der_aufgabe[$i] & $trenner 
			If $aufgaben_typ[$i] = "Unterstuetzung"  Then $alle_aufgaben = $alle_aufgaben & zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & "U." & " > " & $aufgabenort[$i] & "  " & $Einheitenanzahl[$i] & "   " & $dorf_der_aufgabe[$i] & $trenner 
			
		EndIf
	Next
	;StringTrimRight ( $alle_aufgaben, 1 )
	GUICtrlSetData($aktive_aufgaben_liste, "")
	GUICtrlSetData($aktive_aufgaben_liste, $alle_aufgaben)
	
	_FileWriteFromArray2("data\Dörfer.isl", $Doerfer)
	_FileWriteFromArray2("data\start.isl", $aufgabe_start)
	_FileWriteFromArray2("data\ende.isl", $aufgabe_ende)
	_FileWriteFromArray2("data\intervall.isl", $aufgabenintervall)
	_FileWriteFromArray2("data\bau.isl", $bauvorhaben)
	_FileWriteFromArray2("data\dorf.isl", $dorf_der_aufgabe)
	_FileWriteFromArray2("data\ort.isl", $aufgabenort)
	_FileWriteFromArray2("data\anzahl.isl", $Einheitenanzahl)
	_FileWriteFromArray2("data\typ.isl", $aufgaben_typ)
	_FileWriteFromArray2("data\status.isl", $aufgaben_status)
	_FileWriteFromArray2("data\dorfkoord.isl", $Dorfkoordinaten)
EndFunc  ;==>aufgaben_anzeigen


;Speichert die Aufgabe ins Array         <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Func aufgaben_speichern()

	
	;msgbox(0,"",GUICtrlRead ( $radio5))
	
	#region Gebäude
	
	;wenn ein dorf angegeben ist und ein Gebäude, das ausgebaut werden soll, so wird der Auftrag an eine freie Stelle ins Array gespeichert
	If GUICtrlRead($liste_dorf_aufgaben) <> "" And GUICtrlRead($gebaeude_liste) <> "" Then
		$datum1 = GUICtrlRead($datum_input_gebaeude)
		$stunde1 = GUICtrlRead($uhrzeit_input_gebaeude_h)
		$minute1 = GUICtrlRead($uhrzeit_input_gebaeude_min)
		If $datum1 > 0 And $datum1 < 32 And $stunde1 >= 0 And $stunde1 < 24 And $minute1 >= 0 And $minute1 < 60 Then
			;_ArrayDisplay ( $aufgabe_start, "Hallo")
			;msgbox(0,"", _ArrayMinIndex ( $aufgabe_start,0,0) )
			$i = _ArrayMinIndex($aufgabe_start, 0, 0)

			If $aufgabe_start[$i] = "" Then
				_ArrayInsert($aufgabe_start, $i, $datum1 * 24 * 60 + $stunde1 * 60 + $minute1)
				_ArrayInsert($bauvorhaben, $i, GUICtrlRead($gebaeude_liste))
				
				;MsgBox(0,"",GUICtrlRead($gebaeude_liste))
				
				_ArrayInsert($dorf_der_aufgabe, $i, GUICtrlRead($liste_dorf_aufgaben))
				
				_ArrayInsert($aufgabenort, $i, " Hauptgebäude")
				
				
				;Zeitpunkt für das Ende der Aufgabe einstellen (bei einmaligem aufgabenstart sind anfangs und endwerte gleich)
				If GUICtrlRead($radio1) = 1 Then
					$datum2 = $datum1
					$stunde2 = $stunde1
					$minute2 = $minute1
					_ArrayInsert($aufgaben_typ, $i, "Gebäudeausbau_Zeitpunkt")
				Else
					$datum2 = GUICtrlRead($datum_input_gebaeude2)
					$stunde2 = GUICtrlRead($uhrzeit_input_gebaeude_h2)
					$minute2 = GUICtrlRead($uhrzeit_input_gebaeude_min2)
					_ArrayInsert($aufgaben_typ, $i, "Gebäudeausbau_Intervall")
				EndIf
				_ArrayInsert($aufgabe_ende, $i, $datum2 * 24 * 60 + $stunde2 * 60 + $minute2)
				
				_ArrayInsert($aufgabenintervall, $i, 5)
				
				;Leere Arrays trotzdem mit leerzeile füllen ...
				_ArrayInsert($Einheitenanzahl, $i, "0")
				
				_ArrayInsert($aufgaben_status, $i, "3")
				
				;msgbox(0,"",$aufgabe_start[$i] & "  " & $aufgabe_ende[$i] & "  " & $bauvorhaben[$i] & "  " & $dorf_der_aufgabe[$i] &  "  " & $aufgabenort[$i] &"  " &  $i)
				;ExitLoop ;Schleife verlassen sobald aufgabe in ein Freies Feld im Array eingetragen worden ist
			EndIf
			
		Else
			MsgBox(48, "Neue Aufgabe speichern", "Datum und/oder Uhzeit ungültig !")
		EndIf
	EndIf
	If (GUICtrlRead($liste_dorf_aufgaben) = "" Or GUICtrlRead($gebaeude_liste) = "") Then
		;msgbox(48,"Neue Aufgabe speichern","Es kann keine Gebäude-Aufgabe gespeichert werden, weil keine Daten vollständig sind.")
	Else
		;If  $datum1 > 0 AND $datum1 < 32 AND $stunde1 >= 0 AND $stunde1 < 24 AND $minute1 >=0 AND $minute1 < 60 Then
		GUICtrlSetData($liste_dorf_aufgaben, "")
		GUICtrlSetData($liste_dorf_aufgaben, alle_doerfer())
		;Aufgabenanzeige refreshen
		aufgaben_anzeigen()
		status("Neue Aufgabe gespeichert: " & GUICtrlRead($gebaeude_liste))
		;_ArrayDisplay($aufgabe_start, "")
		;_ArrayDisplay($aufgabe_ende, "")
		;_ArrayDisplay($bauvorhaben, "")
		;_ArrayDisplay($aufgabenort, "")
		;_ArrayDisplay($dorf_der_aufgabe, "")
		
		
		;EndIf
	EndIf
	
	#endregion
	
	
	#region Einheiten bauen
	
	
	If GUICtrlRead($liste_dorf_einheitenbau) <> "" And GUICtrlRead($einheiten_liste) <> "" Then
		;GUISetState(@SW_SHOW,$aufgaben_window )
		$datum1 = GUICtrlRead($datum_input_einheiten)
		$stunde1 = GUICtrlRead($uhrzeit_input_einheiten_h)
		$minute1 = GUICtrlRead($uhrzeit_input_einheiten_min)
		
		If $datum1 > 0 And $datum1 < 32 And $stunde1 >= 0 And $stunde1 < 24 And $minute1 >= 0 And $minute1 < 60 Then
			$i = _ArrayMinIndex($aufgabe_start, 0, 0)
			
			
			_ArrayInsert($aufgabe_start, $i, $datum1 * 24 * 60 + $stunde1 * 60 + $minute1)
			_ArrayInsert($bauvorhaben, $i, GUICtrlRead($einheiten_liste))
			_ArrayInsert($dorf_der_aufgabe, $i, GUICtrlRead($liste_dorf_einheitenbau))
			_ArrayInsert($aufgaben_status, $i, "3")
			
			;Falls geforscht werden soll
			If GUICtrlRead($radio5) = 1 Then
				_ArrayInsert($aufgabenort, $i, " Schmiede")
				_ArrayInsert($aufgaben_typ, $i, "Einheitenforschung")
				_ArrayInsert($Einheitenanzahl, $i, "0")
				
			Else
				; Case auwahl, welches gebäude er klicken muss wo die eineit produziert wird
				Select
					Case $bauvorhaben[$i] = "Adelsgeschlecht" 
						_ArrayInsert($aufgabenort, $i, " Adelshof")
					Case $bauvorhaben[$i] = "Katapult" 
						_ArrayInsert($aufgabenort, $i, " Werkstatt")
					Case $bauvorhaben[$i] = "Ramme" 
						_ArrayInsert($aufgabenort, $i, " Werkstatt")
					Case $bauvorhaben[$i] = "Späher" 
						_ArrayInsert($aufgabenort, $i, " Stall")
					Case $bauvorhaben[$i] = "Leichte Kavallerie" 
						_ArrayInsert($aufgabenort, $i, " Stall")
					Case $bauvorhaben[$i] = "Schwere Kavallerie" 
						_ArrayInsert($aufgabenort, $i, " Stall")
					Case Else
						_ArrayInsert($aufgabenort, $i, " Kaserne")
				EndSelect
				
				; wenn einheiten eingegeben werden ... dann in das array $Einheitenanzahl speichern
				If GUICtrlRead($radio3) = 1 Then
					_ArrayInsert($Einheitenanzahl, $i, GUICtrlRead($anzahl_einheiten))
					_ArrayInsert($aufgaben_typ, $i, "Einheiten_anzahl_rekrutieren")
					
				EndIf
				
				If GUICtrlRead($radio4) = 1 Then
					_ArrayInsert($aufgaben_typ, $i, "Einheiten_max_rekrutieren")
					_ArrayInsert($Einheitenanzahl, $i, "0")
				EndIf
				
				
				
			EndIf
			
			; damit in ende das gleiche steht wie in aufgabenzeitpunkt
			$datum2 = $datum1
			$stunde2 = $stunde1
			$minute2 = $minute1
			_ArrayInsert($aufgabe_ende, $i, $datum2 * 24 * 60 + $stunde2 * 60 + $minute2)

			;Leere Arrays trotzdem mit leerzeile füllen ...

			_ArrayInsert($aufgabenintervall, $i, "0")
			
			$status = "Neue Aufgabe gespeichert: " 
			If $aufgaben_typ[$i] = "Einheiten_anzahl_rekrutieren"  Then
				$status &= $Einheitenanzahl[$i]
			ElseIf $aufgaben_typ[$i] = "Einheitenforschung"  Then
				$status = "Gespeichert: Forschung: " 
			Else
				$status &= "max " 
			EndIf
			$status &= $bauvorhaben[$i] & " in " & $dorf_der_aufgabe[$i]
			status($status)
			
		EndIf
		
		aufgaben_anzeigen()
		GUICtrlSetData($liste_dorf_einheitenbau, "")
		GUICtrlSetData($liste_dorf_einheitenbau, alle_doerfer())
		
		; so also noch ein Array: Einheitenanzahl ... im aufgaben_timer: falls anzahl > als 0 dann soll er was besonderes machen, nämlich
		; wie beim einloggen ins 0. oder 1. oder 2. feld die Einheitenanzahl eintragen und dann Rekrutieren
		; ansonsten falls nicht > 0 ... wie immer auf link klicken, also für forschung bzw für max zahl
		
		;check

		;_ArrayDisplay($aufgabe_start, "")
		;_ArrayDisplay($aufgabe_ende, "")
		;_ArrayDisplay($bauvorhaben, "")
		;_ArrayDisplay($aufgabenort, "")
		;_ArrayDisplay($dorf_der_aufgabe, "")
		;_ArrayDisplay($aufgaben_typ, "")
		;_ArrayDisplay($Einheitenanzahl, "")
		
	EndIf
	
	
	#endregion
	
	#region Angriff/Unterstützung/Farmen
	
	
	;noch abfrage rein ob ein dorf angeklickt ist ^^
	If GUICtrlRead($einheiten_x) <> "" And GUICtrlRead($einheiten_y) <> "" And GUICtrlRead($liste_angriff_mydorf) <> "" Then
		
		If GUICtrlRead($auftrag_angriff_wiederholungen) > 0 And GUICtrlRead($auftrag_angriff_intervall) = "" Then
			GUICtrlSetData($auftrag_angriff_intervall, InputBox("Intervall", "Bitte Interval in Minuten eingeben", "120"))
		EndIf
		$datum1 = GUICtrlRead($datum_input_angriff)
		$stunde1 = GUICtrlRead($uhrzeit_input_angriff_h)
		$minute1 = GUICtrlRead($uhrzeit_input_angriff_min)
		
		If $datum1 > 0 And $datum1 < 32 And $stunde1 >= 0 And $stunde1 < 24 And $minute1 >= 0 And $minute1 < 60 Then
			$i = _ArrayMinIndex($aufgabe_start, 0, 0)
			_ArrayInsert($aufgabe_start, $i, $datum1 * 24 * 60 + $stunde1 * 60 + $minute1)
			If GUICtrlRead($auftrag_angriff_wiederholungen) > 0 Then
				_ArrayInsert($aufgabe_ende, $i, GUICtrlRead($auftrag_angriff_wiederholungen) * GUICtrlRead($auftrag_angriff_intervall) + $aufgabe_start[$i])
			Else
				_ArrayInsert($aufgabe_ende, $i, $datum1 * 24 * 60 + $stunde1 * 60 + $minute1)
			EndIf
			_ArrayInsert($aufgabenintervall, $i, GUICtrlRead($auftrag_angriff_intervall))
			If GUICtrlRead($radio_angriff) = 1 Then _ArrayInsert($aufgaben_typ, $i, "Angriff")
			If GUICtrlRead($radio_unterstuetzung) = 1 Then _ArrayInsert($aufgaben_typ, $i, "Unterstuetzung")
			$einheiten = " " & GUICtrlRead($einheiten_spear) & " " & GUICtrlRead($einheiten_sword) & " " & GUICtrlRead($einheiten_axe) 
			If GUICtrlGetState ( $einheiten_archer ) <> 144 Then $einheiten = $einheiten & " " & GUICtrlRead($einheiten_archer)
			$einheiten = $einheiten	 & " " & GUICtrlRead($einheiten_spy) & " " & GUICtrlRead($einheiten_light)
			If GUICtrlGetState ( $einheiten_marcher ) <> 144 Then $einheiten = $einheiten & " " & GUICtrlRead($einheiten_marcher)
			$einheiten = $einheiten  & " " & GUICtrlRead($einheiten_heavy) & " " & GUICtrlRead($einheiten_ram) & " " & GUICtrlRead($einheiten_catapult)
			If GUICtrlGetState ( $einheiten_marcher ) <> 144 Then $einheiten = $einheiten  & " " & GUICtrlRead($einheiten_knight)
			$einheiten = $einheiten	 & " " & GUICtrlRead($einheiten_snob) & " " 
			_ArrayInsert($Einheitenanzahl, $i, $einheiten)
			_ArrayInsert($dorf_der_aufgabe, $i, GUICtrlRead($liste_angriff_mydorf))
			$koords = GUICtrlRead($einheiten_x) & "#" & GUICtrlRead($einheiten_y)
			_ArrayInsert($aufgabenort, $i, $koords)
			
			;Leere Arrays trotzdem mit leerzeile füllen ...
			_ArrayInsert($bauvorhaben, $i, "0")
			_ArrayInsert($aufgaben_status, $i, "3")
			
			;Koordinaten wieder leer machen
			GUICtrlSetData($einheiten_x, "")
			GUICtrlSetData($einheiten_y, "")
			
			
			aufgaben_anzeigen()
			status("Neue Aufgabe gespeichert: " & $aufgaben_typ[$i])
			
		EndIf
	EndIf
	#endregion
	
EndFunc   ;==>aufgaben_speichern


Func aufgabe_loeschen($index)
	_ArrayDelete($aufgabe_start, $index)
	_ArrayDelete($aufgabe_ende, $index)
	_ArrayDelete($bauvorhaben, $index)
	_ArrayDelete($dorf_der_aufgabe, $index)
	_ArrayDelete($aufgabenort, $index)
	_ArrayDelete($Einheitenanzahl, $index)
	_ArrayDelete($aufgaben_typ, $index)
	_ArrayDelete($aufgaben_status, $index)
	_ArrayDelete($aufgabenintervall, $index)
	aufgaben_anzeigen()
	_ArrayInsert($aufgabe_start, _ArrayMinIndex($aufgabe_start, 0, 0), "")
	_ArrayInsert($aufgabe_ende, _ArrayMinIndex($aufgabe_start, 0, 0), "")
EndFunc   ;==>aufgabe_loeschen







;eigene Funktion zum vergleichen von Textteilen beim klicken auf links   (Return 1 bei Erfolg)
Func _IELinkClickByTextTeil(ByRef $o_object, $s_linkText, $i_index = 0, $f_wait = 1)
	If Not IsObj($o_object) Then
		__IEErrorNotify ("Error", "_IELinkClickByText", "$_IEStatus_InvalidDataType")
		SetError($_IEStatus_InvalidDataType, 1)
		Return 0
	EndIf
	;
	Local $found = 0, $link, $linktext, $links = $o_object.document.links
	$i_index = Number($i_index)
	For $link In $links
		$linktext = $link.outerText & "" ; Append empty string to prevent problem with no outerText (image) links
		If StringInStr($linktext, $s_linkText) <> 0 Then
			If ($found = $i_index) Then
				$link.click
				If $f_wait Then
					_IELoadWait($o_object)
					SetError(@error)
					Return 1
				EndIf
				Return 1
				SetError($_IEStatus_Success)
				Return -1
			EndIf
			$found = $found + 1
		EndIf
	Next
	__IEErrorNotify ("Warning", "_IELinkClickByText", "$_IEStatus_NoMatch")
	SetError($_IEStatus_NoMatch) ; Could be caused by parameter 2, 3 or both
	Return 0
EndFunc   ;==>_IELinkClickByTextTeil



;



;minimiert die GUI in tray und zeigt sie wieder, je nachdem was wie der status gerad ist
Func gui_anzeigen()
	If TrayItemGetText($fensteritem) = "Fenster ins Tray"  Then
		GUISetState(@SW_HIDE, $main_window)
		GUISetState(@SW_HIDE, $werbung_window)
		
		TrayItemSetText($fensteritem, "Fenster maximieren")
	Else
		GUISetState(@SW_SHOW, $main_window)
		GUISetState(@SW_SHOW, $werbung_window)
		TrayItemSetText($fensteritem, "Fenster ins Tray")
	EndIf
EndFunc   ;==>gui_anzeigen


;Versteckt das im Parameter übergebene Fenster
Func fenster_abbr($fenster)
	GUISetState(@SW_HIDE, $fenster)
EndFunc   ;==>fenster_abbr


;öffnet das Fenster Einstellungen und stellt alles ein
Func einstellungen()
	GUISetState(@SW_SHOW, $einstellungen_window)
	GUICtrlSetData($liste_dorf_einstellungen, "")
	GUICtrlSetData($liste_dorf_einstellungen, alle_doerfer())
	GUICtrlSetData($input_dorf_einstellungen, "")
	GUICtrlSetData($liste_dorf_einstellungen_koord, "")
	GUICtrlSetData($liste_dorf_einstellungen_koord, alle_doerfer_koord())
	GUICtrlSetData($input_dorf_einstellungen_koord, "")
	GUICtrlSetData($input_dorf_einstellungen_x, "")
	GUICtrlSetData($input_dorf_einstellungen_y, "")
	
	If IniRead("data\settings.ini", "Programm", "autostart", "") = 1 Then
		GUICtrlSetState($start_checkbox, $GUI_CHECKED)
	Else
		GUICtrlSetState($start_checkbox, $GUI_UNCHECKED)
	EndIf
	
	If IniRead("data\settings.ini", "Programm", "auto_login", "") = 1 Then
		GUICtrlSetState($login_checkbox, $GUI_CHECKED)
	Else
		GUICtrlSetState($login_checkbox, $GUI_UNCHECKED)
	EndIf
	
EndFunc   ;==>einstellungen


; Speichert die getätigten Einstellungen
Func einstellungen_sichern()
	
	If GUICtrlRead($start_checkbox) = 1 Then
		IniWrite("data\settings.ini", "Programm", "autostart", "1")
		RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "StämmeBot-" & $ident, "REG_SZ", @ScriptFullPath)
	Else
		IniWrite("data\settings.ini", "Programm", "autostart", "0")
		RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "StämmeBot-" & $ident)
	EndIf
	
	If GUICtrlRead($login_checkbox) = 1 Then
		IniWrite("data\settings.ini", "Programm", "auto_login", "1")
	Else
		IniWrite("data\settings.ini", "Programm", "auto_login", "0")
	EndIf
	
	IniWrite("data\settings.ini", "Programm", "Welt", GUICtrlRead ( $welt_combo ))
	$aktuelle_Welt = GUICtrlRead ( $welt_combo )
	$fenstertitel = $aktuelle_Welt & " - DSBot 2008   V." & $softwareversion
	einheiten_regeln()
	
	
	
	
	
	If StringLen ( GUICtrlRead($gui_trenner))  > 1 Or StringLen ( GUICtrlRead($gui_trenner))  < 1 Then
		MsgBox(16,"Fehler","Das Trennzeichen muss eingegeben werden und es darf nur ein Zeichen lang sein. Es muss ein Zeichen sein das nicht in den Namen deiner Dörfer vorkommt. Ich habe das | (senkrechter Strich auf der Taste links neben dem y) gewählt, aber du kannst auch ein anderes nehmen wie zB + * : $ & % ")
	Else
		if $trenner <> GUICtrlRead($gui_trenner) then
			$trenner = GUICtrlRead($gui_trenner)
			;msgbox(0,,$trenner)
			Opt("GUIDataSeparatorChar", $trenner)
			IniWrite("data\settings.ini", "Programm", "Trennzeichen", Asc ($trenner))
			aufgaben_anzeigen()
		EndIf		
		fenster_abbr($einstellungen_window)
	EndIf

	
	If GUICtrlRead($radio6) = 1 AND GUICtrlRead($sec_input) >= 0 AND GUICtrlRead($sec_input) < 60 Then
		$aufgStartArt = GUICtrlRead($sec_input)
		IniWrite("data\settings.ini", "Programm", "Aufgabenstart", $aufgStartArt)
	ElseIf GUICtrlRead($radio6) = 1 Then
		MsgBox(16,"Fehler","Die Sekunde muss eine Zahl zwischen 0 und 59 sein !")
		GUICtrlSetState($radio7, $GUI_CHECKED)		
	Else
		IniWrite("data\settings.ini", "Programm", "Aufgabenstart", "Zufall")
		$aufgStartArt = "Zufall"
	EndIf
	
	
	
	If GUICtrlRead($radio8) = 1 Then IniWrite("data\settings.ini", "Programm", "Bauwarteschleife", "2")
	If GUICtrlRead($radio9) = 1 Then IniWrite("data\settings.ini", "Programm", "Bauwarteschleife", "3")
		

	
EndFunc   ;==>einstellungen_sichern


;



;fügt dem Array $Doerfer ein dorf hinzu und aktualisiert die Liste unter einstellungen
Func dorf_add()
	If GUICtrlRead($input_dorf_einstellungen) <> "" Then
		;For $i = 0 to _ArrayMinIndex ( $Doerfer,0,0)-1
		;	If $Doerfer[$i]= "" Then
		;		$Doerfer[$i]= GUICtrlRead($input_dorf_einstellungen)
		;		ExitLoop
		;	EndIf
		;Next
		
		_ArrayInsert($Doerfer, _ArrayMinIndex($Doerfer, 0, 0), GUICtrlRead($input_dorf_einstellungen))
		status("Dorf hinzugefügt: " & GUICtrlRead($input_dorf_einstellungen))
		GUICtrlSetData($liste_dorf_einstellungen, "")
		GUICtrlSetData($liste_dorf_einstellungen, alle_doerfer())
		GUICtrlSetData($input_dorf_einstellungen, "")
		fenster_abbr($aufgaben_window)
		; Dorfliste abspeichern
		_FileWriteFromArray2("data\Dörfer.isl", $Doerfer)
	Else
		MsgBox(48, "Dorf hinzufügen", "Bitte den Dorfnamen eingeben")
	EndIf
EndFunc   ;==>dorf_add


; fügt dem Array mit den dörfer mit Dorfkoordinaten ein Dorf hinzu -> Einstellungen
Func dorfkoordinaten_add()
	If GUICtrlRead($input_dorf_einstellungen_koord) <> "" And GUICtrlRead($input_dorf_einstellungen_x) <> "" And GUICtrlRead($input_dorf_einstellungen_y) <> "" Then
		_ArrayInsert($Dorfkoordinaten, _ArrayMinIndex($Dorfkoordinaten, 0, 0), GUICtrlRead($input_dorf_einstellungen_x) & GUICtrlRead($input_dorf_einstellungen_y) & GUICtrlRead($input_dorf_einstellungen_koord))
		status("Dorf mit Koordinaten hinzugefügt: " & GUICtrlRead($input_dorf_einstellungen_koord))
		;_ArrayDisplay($Dorfkoordinaten,"")
		GUICtrlSetData($liste_dorf_einstellungen_koord, "")
		GUICtrlSetData($liste_dorf_einstellungen_koord, alle_doerfer_koord())
		GUICtrlSetData($input_dorf_einstellungen_koord, "")
		GUICtrlSetData($input_dorf_einstellungen_x, "")
		GUICtrlSetData($input_dorf_einstellungen_y, "")
		fenster_abbr($aufgaben_window)
		; Dorfkoordinatenliste abspeichern
		_FileWriteFromArray2("data\dorfkoord.isl", $Dorfkoordinaten)
	Else
		MsgBox(48, "Dorf hinzufügen", "Bitte alle Felder ausfüllen")
	EndIf
EndFunc   ;==>dorfkoordinaten_add


;löscht ein Dorf aus dem Array $Doerfer und aktualisiert die Liste unter einstellungen
Func dorf_delete()
	If GUICtrlRead($liste_dorf_einstellungen) <> "" Then
		If MsgBox(36, "Dorf entfernen", "Willst du wirklich " & GUICtrlRead($liste_dorf_einstellungen) & " aus der Liste entfernen ?") = 6 Then
			_ArrayDelete($Doerfer, _ArraySearch($Doerfer, GUICtrlRead($liste_dorf_einstellungen)))
			status("Dorf entfernt: " & GUICtrlRead($liste_dorf_einstellungen))
			GUICtrlSetData($liste_dorf_einstellungen, "")
			GUICtrlSetData($liste_dorf_einstellungen, alle_doerfer())
			fenster_abbr($aufgaben_window)
		EndIf
	Else
		MsgBox(48, "Dorf entfernen", "kein Dorf ausgewählt")
	EndIf
	
EndFunc   ;==>dorf_delete


Func dorfkoordinaten_delete()
	If GUICtrlRead($liste_dorf_einstellungen_koord) <> "" Then
		If MsgBox(36, "Dorf entfernen", "Willst du wirklich " & GUICtrlRead($liste_dorf_einstellungen_koord) & " aus der Liste entfernen ?") = 6 Then
			_ArrayDelete($Dorfkoordinaten, _GUICtrlListBox_GetCurSel ($liste_dorf_einstellungen_koord))
			status("Dorf mit Koordinaten entfernt: " & GUICtrlRead($liste_dorf_einstellungen_koord))
			GUICtrlSetData($liste_dorf_einstellungen_koord, "")
			GUICtrlSetData($liste_dorf_einstellungen_koord, alle_doerfer_koord())
			GUICtrlSetData($input_dorf_einstellungen_x, "")
			GUICtrlSetData($input_dorf_einstellungen_y, "")
			fenster_abbr($aufgaben_window)
		EndIf
	Else
		MsgBox(48, "Dorf entfernen", "kein Dorf ausgewählt")
	EndIf
EndFunc   ;==>dorfkoordinaten_delete


;Funktion liefert einen String mit allen Dörfern durch $trenner getrennt zurück aus  $Doerfer[]
Func alle_doerfer()
	$doerfer2 = ""
	For $a = 0 To _ArrayMinIndex($Doerfer, 0, 0)
		If $Doerfer[$a] = "" Then
		Else
			$doerfer2 = $doerfer2 & $Doerfer[$a] & $trenner
		EndIf
	Next
	StringTrimRight($doerfer2, 1)   ; letzter unnützer $trenner wird hinten abgeschnitten
	Return $doerfer2
EndFunc   ;==>alle_doerfer


;Funktion liefert einen String mit allen Dörfern durch $trenner getrennt zurück aus  $Doerfer[]
Func alle_doerfer_koord()
	$doerfer2 = ""
	For $a = 0 To _ArrayMinIndex($Dorfkoordinaten, 0, 0)
		If $Dorfkoordinaten[$a] = "" Then
		Else
			$doerfer2 = $doerfer2 & StringTrimLeft($Dorfkoordinaten[$a], 6) & $trenner 
		EndIf
	Next
	StringTrimRight($doerfer2, 1)   ; letzter unnützer $trenner wird hinten abgeschnitten
	Return $doerfer2
EndFunc   ;==>alle_doerfer_koord




;



;gtrerg
Func schnellleiste($gebaeude)
	label_warten(1)
	$oFrame = _IEFrameGetObjByName($oIE, "main")
	$sText = _IEBodyReadText($oFrame)
	If StringInStr($sText, "Übersichten") <> 0 Then
		If StringInStr($sText, "Übersichten") = 0 Then
			_IELinkClickByTextTeil($oFrame, "Dorfübersicht")
		Else
			;bei neuer Menüleiste auf den aktuellen stammnamen klicken statt dorfübersicht
			;erstmal Name des aktuell angezeigten Dorfes aus der Titelleiste holen
			$html = _IEDocReadHTML($oFrame)
			;msgbox(0,"",$html)
			$start_titel = (StringInStr($html, "<title>") + 7)
			$laenge = StringInStr($html, "</title>") - $start_titel - 23
			;msgbox(0,"", Stringmid( $html,$start_titel, $laenge) )
			$aktuell_dorf = StringMid($html, $start_titel, $laenge)
			_IELinkClickByTextTeil($oFrame, $aktuell_dorf)
		EndIf
		
		
		frames_IELoadWait($oIE)
		
		$sText = _IEBodyReadText($oFrame)
		If StringInStr($sText, "klassischen") <> 0 Then
			_IELinkClickByTextTeil($oFrame, "klassischen")
		EndIf
		frames_IELoadWait($oIE)
		
		_IELinkClickByTextTeil($oFrame, $gebaeude)
	Else
		einloggen()
		schnellleiste($gebaeude)
	EndIf
	label_warten(0)
	
EndFunc   ;==>schnellleiste

;Wandelt die Monatstag-stunden-minuten-zahl in einen Uhrzeitstring um ... Bsp.: 3556 in "2. 11 : 16"
Func zeitwert_in_uhrzeit($zeitwert)
	Return null_vor_ne_einstellige_zahl(Int($zeitwert / 1440)) & ".   " & null_vor_ne_einstellige_zahl(Int(Mod($zeitwert, 1440) / 60)) & ":" & null_vor_ne_einstellige_zahl(Mod(Mod($zeitwert, 1440), 60))
EndFunc   ;==>zeitwert_in_uhrzeit



;verwandelt die deutsche Bezeichung in die im HTML code benutze zeichenkette
Func name_to_html($name)
	Select
		Case $name = "Versammlungsplatz" 
			$name = "place" 
		Case $name = "Hauptgebäude" 
			$name = "main" 
		Case $name = "Holzfäller" 
			$name = "wood" 
		Case $name = "Lehmgrube" 
			$name = "stone" 
		Case $name = "Eisenmine" 
			$name = "iron" 
		Case $name = "Bauernhof" 
			$name = "farm" 
		Case $name = "Speicher" 
			$name = "storage" 
		Case $name = "Versteck" 
			$name = "hide" 
		Case $name = "Kaserne" 
			$name = "barracks" 
		Case $name = "Stall" 
			$name = "stable" 
		Case $name = "Werkstatt" 
			$name = "garage" 
		Case $name = "Adelshof" 
			$name = "snob" 
		Case $name = "Schmiede" 
			$name = "smith" 
		Case $name = "Marktplatz" 
			$name = "market" 
		Case $name = "Wall" 
			$name = "wall" 
		Case $name = "Speerträger" 
			$name = "spear" 
		Case $name = "Schwertkämpfer" 
			$name = "sword" 
		Case $name = "Axtkämpfer" 
			$name = "axe" 
		Case $name = "Späher" 
			$name = "spy" 
		Case $name = "Leichte Kavallerie" 
			$name = "light" 
		Case $name = "Schwere Kavallerie" 
			$name = "heavy" 
		Case $name = "Ramme" 
			$name = "ram" 
		Case $name = "Katapult" 
			$name = "catapult" 
		Case $name = "Adelsgeschlecht" 
			$name = "snob" 
	EndSelect
	Return $name
EndFunc   ;==>name_to_html



; überprüft die parameterzahl und fügt vor ne einstellige zahl eine 0 ein
Func null_vor_ne_einstellige_zahl($zahl)
	If StringLen($zahl) = 1 Then $zahl = "0" & $zahl
	Return $zahl
EndFunc   ;==>null_vor_ne_einstellige_zahl




Func Dorfname_aus_Array_durch_koords($koords)
	For $i = 0 To _ArrayMinIndex($Dorfkoordinaten, 0, 0) - 1
		If StringInStr($Dorfkoordinaten[$i], (StringLeft($koords, 3) & StringRight($koords, 3))) <> 0 Then
			Return StringTrimLeft($Dorfkoordinaten[$i], 6)
		EndIf
	Next
	Return StringLeft($koords, 3) & "#" & StringRight($koords, 3)
EndFunc   ;==>Dorfname_aus_Array_durch_koords




;



Func statusmeldung_aufgabenstart($typ, $i)
	$statusmeldung = "Führe Aufgabe aus: " 
	If $typ = "Gebäudeausbau_Intervall"  Then $statusmeldung &= zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & StringTrimLeft(zeitwert_in_uhrzeit($aufgabe_ende[$i]), 6) & "   " & $bauvorhaben[$i] & $trenner 
	If $typ = "Gebäudeausbau_Zeitpunkt"  Then $statusmeldung &= zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $bauvorhaben[$i] & $trenner
	If $typ = "Einheitenforschung"  Then $statusmeldung &= zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $bauvorhaben[$i] & " forschen" & $trenner 
	If $typ = "Einheiten_max_rekrutieren"  Then $statusmeldung &= zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   Max. " & $bauvorhaben[$i] & " rekrutieren" & $trenner 
	If $typ = "Einheiten_anzahl_rekrutieren"  Then $statusmeldung &= zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & $Einheitenanzahl[$i] & " " & $bauvorhaben[$i] & " rekrutieren" & $trenner 
	If $typ = "Angriff"  Then $statusmeldung &= zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & "A." & " > " & $aufgabenort[$i] & "  " & $Einheitenanzahl[$i] & "   " & $dorf_der_aufgabe[$i] & $trenner
	If $typ = "Unterstuetzung"  Then $statusmeldung &= zeitwert_in_uhrzeit($aufgabe_start[$i]) & "   " & "U." & " > " & $aufgabenort[$i] & "  " & $Einheitenanzahl[$i] & "   " & $dorf_der_aufgabe[$i] & $trenner
	
	status($statusmeldung)
	
EndFunc   ;==>statusmeldung_aufgabenstart


; gibt auf dem label unter der Uhr den statustext aus und trägt ihn in die StatusListe ein
Func status($text)
	$text = @HOUR & ":" & @MIN & ":" & @SEC & "   " & $text
	GUICtrlSetData($label_statusmeldung, $text)
	_GUICtrlListBox_InsertString ($statusliste, $text, 0)
	$index = _ArrayMinIndex($Log_file, 0, 0)
	_ArrayInsert($Log_file, $index, $text)
	_FileWriteFromArray2("data\log.isl", $Log_file)
	
	
	; Falls startfenster sichtbar ist, da auch eintragen ...
	Opt("WinTitleMatchMode", 4)
	If BitAND(WinGetState($start_window), 2) Then
		GUICtrlSetData($start_label, $text)
	EndIf
	Opt("WinTitleMatchMode", 2)
EndFunc   ;==>status


; schaltet den schriftzug bitte warten ein und aus
Func label_warten($wert)
	If $wert = 1 Then GUICtrlSetData($label_warten, "... Bitte Warten ...")
	If $wert = 0 Then GUICtrlSetData($label_warten, "")
EndFunc   ;==>label_warten


; zeigt/verbirgt abwechselnd Status- und Aufgabenfenster
Func status_fenster_anzeigen_verbergen()
	If GUICtrlGetState($statusliste) = "96"  Then
		GUICtrlSetState($statusliste, $GUI_SHOW)
		GUICtrlSetState($aktive_aufgaben_liste, $GUI_HIDE)
	Else
		GUICtrlSetState($statusliste, $GUI_HIDE)
		GUICtrlSetState($aktive_aufgaben_liste, $GUI_SHOW)
	EndIf
EndFunc   ;==>status_fenster_anzeigen_verbergen


; löscht die Log-liste oder entfernt mit aufgabe_loeschen() einen Auftrag aus liste und array; wird aufgerufen vom button "löschen"
Func loeschen_knopf()
	;wenn Statusliste versteckt ist dann
	If GUICtrlGetState($statusliste) = "96"  Then
		;msgbox(36,"",_GUICtrlListBox_GetCurSel($aktive_aufgaben_liste))
		If _GUICtrlListBox_GetCurSel ($aktive_aufgaben_liste) <> "-1"  And GUICtrlRead($aktive_aufgaben_liste) <> "Keine Aufgabe vorhanden"  Then
			If MsgBox(36, "Aufgabe entfernen", "Willst du wirklich > " & GUICtrlRead($aktive_aufgaben_liste) & " < aus der Liste entfernen ?") = 6 Then
				aufgabe_loeschen(_GUICtrlListBox_GetCurSel ($aktive_aufgaben_liste))
				status("Aufgabe gelöscht")
			EndIf
		Else
			If GUICtrlRead($aktive_aufgaben_liste) = "Keine Aufgabe vorhanden"  Then
				MsgBox(48, "Aufgabe löschen", "Es ist keine Aufgabe vorhanden.")
			Else
				;GUICtrlRead($aktive_aufgaben_liste) <> ""   was soll das ???
			EndIf
		EndIf
	Else
		If MsgBox(36, "Log-Daten löschen", "Möchtest du alle Log-Daten löschen ?") = 6 Then GUICtrlSetData($statusliste, "")
	EndIf
EndFunc   ;==>loeschen_knopf


;öffnet das Infofenster und zeigt die Infos der angeklickten aufgabe
Func info_fenster($index)
	GUICtrlSetData($info_label, "")
	
	If $aufgaben_typ[$index] = "Gebäudeausbau_Intervall"  Then
		GUICtrlSetData($info_label, "Gebäudeausbau: Intervall" & @CRLF & @CRLF & _
				"Gebäude: " & $bauvorhaben[$index] & @CRLF & _
				"Dorf der Aufgabe: " & $dorf_der_aufgabe[$index] & @CRLF & _
				"Zeitpunkt: " & zeitwert_in_uhrzeit($aufgabe_start[$index]) & @CRLF & _
				"Intervall: " & $aufgabenintervall[$index] & " Minuten" & @CRLF & _
				"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
	EndIf
	
	If $aufgaben_typ[$index] = "Gebäudeausbau_Zeitpunkt"  Then
		GUICtrlSetData($info_label, "Gebäudeausbau: fester Zeitpunkt" & @CRLF & @CRLF & _
				"Gebäude: " & $bauvorhaben[$index] & @CRLF & _
				"Dorf der Aufgabe: " & $dorf_der_aufgabe[$index] & @CRLF & _
				"Zeitpunkt: " & zeitwert_in_uhrzeit($aufgabe_start[$index]) & @CRLF & _
				"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
	EndIf
	
	If $aufgaben_typ[$index] = "Einheitenforschung"  Then
		GUICtrlSetData($info_label, "Einheiten (Er-)Forschen" & @CRLF & @CRLF & _
				"Einheit: " & $bauvorhaben[$index] & @CRLF & _
				"Im Dorf: " & $dorf_der_aufgabe[$index] & @CRLF & _
				"Zeitpunkt: " & zeitwert_in_uhrzeit($aufgabe_start[$index]) & @CRLF & _
				"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
	EndIf
	
	If $aufgaben_typ[$index] = "Einheiten_anzahl_rekrutieren"  Then
		GUICtrlSetData($info_label, "Bestimmte Anzahl an Einheiten rekrutieren" & @CRLF & @CRLF & _
				"Einheit: " & $bauvorhaben[$index] & @CRLF & _
				"Anzahl: " & $Einheitenanzahl[$index] & @CRLF & _
				"Im Dorf: " & $dorf_der_aufgabe[$index] & @CRLF & _
				"Zeitpunkt: " & zeitwert_in_uhrzeit($aufgabe_start[$index]) & @CRLF & _
				"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
	EndIf
	
	If $aufgaben_typ[$index] = "Einheiten_max_rekrutieren"  Then
		GUICtrlSetData($info_label, "Maximale Anzahl an Einheiten rekrutieren" & @CRLF & @CRLF & _
				"Einheit: " & $bauvorhaben[$index] & @CRLF & _
				"Im Dorf: " & $dorf_der_aufgabe[$index] & @CRLF & _
				"Zeitpunkt: " & zeitwert_in_uhrzeit($aufgabe_start[$index]) & @CRLF & _
				"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
	EndIf
	
	If $aufgaben_typ[$index] = "Angriff"  Then
		If $aufgabenintervall[$index] <> "" Then
			GUICtrlSetData($info_label, "Angriff auf > " & Dorfname_aus_Array_durch_koords($aufgabenort[$index]) & @CRLF & @CRLF & _
					"Zielkoordinaten: " & StringLeft($aufgabenort[$index], 3) & $trenner & StringRight($aufgabenort[$index], 3) & @CRLF & _
					"Truppendorf: " & $dorf_der_aufgabe[$index] & @CRLF & _
					"Einheiten: " & $Einheitenanzahl[$index] & @CRLF & _
					"Zeitpunkt: " & zeitwert_in_uhrzeit($aufgabe_start[$index]) & @CRLF & _
					"Wiederholungen: Noch " & Int(($aufgabe_ende[$index] - $aufgabe_start[$index]) / $aufgabenintervall[$index]) & @CRLF & _
					"Intervall: " & $aufgabenintervall[$index] & " Minuten" & @CRLF & _
					"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
		Else
			GUICtrlSetData($info_label, "Angriff auf > " & Dorfname_aus_Array_durch_koords($aufgabenort[$index]) & @CRLF & @CRLF & _
					"Zielkoordinaten: " & StringLeft($aufgabenort[$index], 3) & $trenner & StringRight($aufgabenort[$index], 3) & @CRLF & _
					"Truppendorf: " & $dorf_der_aufgabe[$index] & @CRLF & _
					"Einheiten: " & $Einheitenanzahl[$index] & @CRLF & _
					"Zeitpunkt: " & zeitwert_in_uhrzeit($aufgabe_start[$index]) & @CRLF & _
					"Wiederholungen: keine" & @CRLF & _
					"Intervall: keins" & @CRLF & _
					"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
		EndIf
	EndIf

	If $aufgaben_typ[$index] = "Unterstuetzung"  Then
		If $aufgabenintervall[$index] <> "" Then
			GUICtrlSetData($info_label, "Unterstützung auf > " & Dorfname_aus_Array_durch_koords($aufgabenort[$index]) & @CRLF & @CRLF & _
					"Zielkoordinaten: " & StringLeft($aufgabenort[$index], 3) & $trenner & StringRight($aufgabenort[$index], 3) & @CRLF & _
					"Truppendorf: " & $dorf_der_aufgabe[$index] & @CRLF & _
					"Einheiten: " & $Einheitenanzahl[$index] & @CRLF & _
					"Zeitpunkt: " & zeitwert_in_uhrzeit($aufgabe_start[$index]) & @CRLF & _
					"Wiederholungen: Noch " & Int(($aufgabe_ende[$index] - $aufgabe_start[$index]) / $aufgabenintervall[$index]) & @CRLF & _
					"Intervall: " & $aufgabenintervall[$index] & " Minuten" & @CRLF & _
					"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
		Else
			GUICtrlSetData($info_label, "Unterstützung auf > " & Dorfname_aus_Array_durch_koords($aufgabenort[$index]) & @CRLF & @CRLF & _
					"Zielkoordinaten: " & StringLeft($aufgabenort[$index], 3) & $trenner & StringRight($aufgabenort[$index], 3) & @CRLF & _
					"Truppendorf: " & $dorf_der_aufgabe[$index] & @CRLF & _
					"Einheiten: " & $Einheitenanzahl[$index] & @CRLF & _
					"Wiederholungen: keine" & @CRLF & _
					"Intervall: keins" & @CRLF & _
					"Zeit bis zum Aufgabenstart: " & zeitwert_in_uhrzeit($aufgabe_start[$index] - (@MDAY * 24 * 60 + @HOUR * 60 + @MIN)) & "")
		EndIf
	EndIf
EndFunc   ;==>info_fenster



;



; Wenn man einen Eintrag unter Aufgaben/Angriff in der Liste der Dörfer mit Dorfkoordinaten angeklickt hat
Func liste_dorf_aufgaben_koord_angeklickt()
	;msgbox(0,"","")
	If GUICtrlRead($liste_angriff_speicher) <> "" Then
		GUICtrlSetData($einheiten_x, StringLeft($Dorfkoordinaten[_GUICtrlListBox_GetCurSel ($liste_angriff_speicher) ], 3))
		GUICtrlSetData($einheiten_y, StringMid($Dorfkoordinaten[_GUICtrlListBox_GetCurSel ($liste_angriff_speicher) ], 4, 3))
		button_dorf_waehlen()
	EndIf
EndFunc   ;==>liste_dorf_aufgaben_koord_angeklickt

Func aktive_aufgaben_liste_angeklickt()
	If GUICtrlRead($aktive_aufgaben_liste) <> "" And GUICtrlRead($aktive_aufgaben_liste) <> "Keine Aufgabe vorhanden"  Then
		info_fenster(_GUICtrlListBox_GetCurSel ($aktive_aufgaben_liste))
		GUISetState(@SW_SHOW, $info_window)
	Else
		MsgBox(48, "Aufgabe anzeigen", "Es ist keine Aufgabe markiert.")
	EndIf
EndFunc   ;==>aktive_aufgaben_liste_angeklickt

; Wenn man einen Eintrag unter Einstellungen in der Liste der Dörfer mit Dorfkoordinaten angeklickt hat
Func liste_dorf_einstellungen_koord_angeklickt()
	;msgbox(0,"","")
	If GUICtrlRead($liste_dorf_einstellungen_koord) <> "" Then
		GUICtrlSetData($input_dorf_einstellungen_x, StringLeft($Dorfkoordinaten[_GUICtrlListBox_GetCurSel ($liste_dorf_einstellungen_koord) ], 3))
		GUICtrlSetData($input_dorf_einstellungen_y, StringMid($Dorfkoordinaten[_GUICtrlListBox_GetCurSel ($liste_dorf_einstellungen_koord) ], 4, 3))
	EndIf
EndFunc   ;==>liste_dorf_einstellungen_koord_angeklickt





;

; holt bei "angriffe" die dorfkoordinatenliste der verschiedenen dörfer in den vordergrund und lädt die dörfer rein
Func angriff_koord_laden()
	GUICtrlSetPos($liste_angriff_speicher, 20, 150, 190, 300)
	GUICtrlSetPos($liste_angriff_mydorf, -210, 150, 190, 300)
	
	GUICtrlSetBkColor($liste_angriff_speicher, 0xeeee00)
	Sleep(100)
	GUICtrlSetData($liste_angriff_speicher, "")
	GUICtrlSetData($liste_angriff_speicher, alle_doerfer_koord())
	GUICtrlSetBkColor($liste_angriff_speicher, 0xb4f6f7)
EndFunc   ;==>angriff_koord_laden


; holt bei "angriffe" die dorfliste der eigenen dörfer in den vordergrund und lädt die dörfer rein
Func button_dorf_waehlen()
	GUICtrlSetPos($liste_angriff_speicher, -210, 150, 190, 300)
	GUICtrlSetPos($liste_angriff_mydorf, 20, 150, 190, 300)
	GUICtrlSetData($liste_angriff_mydorf, "")
	GUICtrlSetData($liste_angriff_mydorf, alle_doerfer())
EndFunc   ;==>button_dorf_waehlen


;


; lässt das tool-fenster hereinfahren
func tool_window_einblenden()
	$array = MouseGetPos()
	If BitAND(WinGetState($tool_window), 2) = 0 AND $array[0] > -1 And $array[0] < 10 And $array[1] > 60 And $array[1] < 660 Then
		for $i3 = -490 to 0 Step 70
			WinMove($tool_window,"",$i3,87)
			sleep(30)
			GUISetState(@SW_SHOW, $tool_window)
		next
	EndIf	
EndFunc  ;==> tool_window_einblenden()



; löscht aus der ini die Daten und führt login_daten() neu aus
func name_pw_delete()
	IniWrite("data\settings.ini", "Login", "Passwort", "")
	IniWrite("data\settings.ini", "Login", "Benutzername", "")
	login_daten()
EndFunc  ;==> name_pw_delete()


; ein dorf zurückwechseln
Func dorf_back() 
	$html = _IEDocReadHTML ( $oFrame )
	;msgbox(0,"",$html)
	$start_titel =  (StringinStr($html,"<title>")+7)
	$laenge = StringinStr($html,"</title>") - $start_titel - 23
	;msgbox(0,"", Stringmid( $html,$start_titel, $laenge) )
	$aktuell_dorf = Stringmid( $html,$start_titel, $laenge)
	
	$Pos = _ArraySearch ($Doerfer, $aktuell_dorf, 0, 0, 0, True)
	
	If $pos > 0 Then
		If $schonmaleingeloggt = 0 Then get_oFrame_main()
		Dorfwechsel($Doerfer[$pos-1])
	ElseIf UBound($Doerfer) - 1 = 1 Then
			MsgBox(262208,"Fehler","Du hast nur ein Dorf, wohin also wechseln ?")
	Else	
		If $schonmaleingeloggt = 0 Then get_oFrame_main()
		Dorfwechsel($Doerfer[UBound($Doerfer) - 1])
	EndIf
EndFunc


; ein dorf vorwärtswechseln
Func dorf_forward() 
	$html = _IEDocReadHTML ( $oFrame )
	;msgbox(0,"",$html)
	$start_titel =  (StringinStr($html,"<title>")+7)
	$laenge = StringinStr($html,"</title>") - $start_titel - 23
	;msgbox(0,"", Stringmid( $html,$start_titel, $laenge) )
	$aktuell_dorf = Stringmid( $html,$start_titel, $laenge)
	
	$Pos = _ArraySearch ($Doerfer, $aktuell_dorf, 0, 0, 0, True)
	
	
	If UBound($Doerfer) - 1 = 1 Then
		MsgBox(262208,"Fehler","Du hast nur ein Dorf, wohin also wechseln ?")
	ElseIf $pos < UBound($Doerfer) - 1 Then
		If $schonmaleingeloggt = 0 Then get_oFrame_main()
		Dorfwechsel($Doerfer[$pos+1])
	Else	
		If $schonmaleingeloggt = 0 Then get_oFrame_main()
		Dorfwechsel($Doerfer[1])
	EndIf
EndFunc


Func Terminate()
	MsgBox(0, "", @HotKeyPressed)
EndFunc   ;==>Terminate


Func ruecktaste()
	Send("{LEFT}{DELETE}")
	
EndFunc


;öffnet das Fenster Berechner
Func berechner()


;		$html = _IEDocReadHTML($oFrame)
;nix(Stringmid($html,stringinstr($html,"player_id")+10,7))






MsgBox(64,"Information","Diese Funktion ist noch nicht implementiert. Hier wird in Zukunft der Laufzeitenrechner etc zu finden sein.")


;$oFrames = _IEFrameGetCollection ($oIE)

    ;$oFrame = _IEFrameGetCollection ($oIE, 0)
    ;MsgBox(0, "Frame Info", )

		
		;_IENavigate($oIE,"http://www.die-staemme.de")
		





	;$oFrame = _IEFrameGetObjByName ($oIE, "ad")


;_IEAction ($oFrame, "disable" )




	;_IEHeadInsertEventScript ($oFrame, "document", "onclick", "parent.location.href = 'http://www.google.de';")
	
	;_IEHeadInsertEventScript ($oFrame, "document", "onclick", "parent.getElementsByTagName('frameset')[0].cols = '100,*';")
	
	;_IEHeadInsertEventScript ($oFrame, "document", "onclick", "window.setInterval('reload('ad_sky.php')', 18);")
	
	
	
	;   document.getElementById("meinframe").cols = "200,*";

;   alert('Someone clicked the document!');




;nix(_IEPropertyGet ($oIE, "busy"))

		
;		local $oTag
;		_IELoadWait($oIE)
		;$oBody = _IETagNameGetCollection($oFrame, "body", 0)
		

		
		
		;$oTags = _IETagNameGetCollection ( $oFrame , "a", $i )
		;nix($oTag.href)
		;nix($i)
;		$oTag = _IETagNameGetCollection ( $oFrame , "hr", 0 )
;		$schnellleiste = '<br /><table align="center"><tr><td><ul class="menu nowrap quickbar">' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=main" ><img src="graphic/buildings/main.png" alt="Hauptgebäude" />Hauptgebäude</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=barracks" ><img src="graphic/buildings/barracks.png" alt="Kaserne" />Kaserne</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=stable" ><img src="graphic/buildings/stable.png" alt="Stall" />Stall</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=garage" ><img src="graphic/buildings/garage.png" alt="Werkstatt" />Werkstatt</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=snob" ><img src="graphic/buildings/snob.png" alt="Adelshof" />Adelshof</a></li> ' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=smith" ><img src="graphic/buildings/smith.png" alt="Schmiede" />Schmiede</a></li>' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=place" ><img src="graphic/buildings/place.png" alt="Platz" />Platz</a></li> ' & _
;			 				'<li><a href="game.php?village=63353&amp;screen=market" ><img src="graphic/buildings/market.png" alt="Markt" />Markt</a></li></ul> ' & _
;							'</td></tr></table>'
;
;		_IEDocInsertHTML($oTag, $schnellleiste, "beforebegin")





;_IEDocInsertHTML($oElement, "<h2>This HTML is inserted After Begin</h2>", "afterend")



;_IEDocInsertHTML($oBody, "<h2>This HTML is inserted Before End</h2>", "beforeend")
		
		;$oBody = _IETagNameGetCollection($oIE, "body", 0)
		;_IEDocInsertHTML ( $oIE, "HALLO HALLO HALLO HALLO HALLO HALLO HALLO HALLO HALLO " )


	
	;$oFrame = _IEFrameGetObjByName ($oIE, "main")
	;nix(_IEPropertyGet ($oFrame, "locationurl"))



	;Aufgaben_Timer()

	;GUICtrlSetData($dorfliste, alle_doerfer())

	;href_im_code("screen=overview_villages")



    ;nix($intervall_zufall)

;nix(BitAND(WinGetState($tool_window), 2))



	
	;$oInputs = _IETagNameGetCollection ($oFrame, "area")
	;For $oInput In $oInputs
	;    MsgBox(0, "Form Input Type", "Form: " & $oInput.tagname & " Type: " & $oInput.innerText & "outer: "  & $oInput.href )
	;	If StringInStr($oInput.href,"main") Then $oInput.click
	
	;Next




EndFunc   ;==>berechner



;beendet das gesamte Programm und speichert nochmals die arrays
Func ExitScript()
	_FileWriteFromArray2("data\Dörfer.isl", $Doerfer)
	_FileWriteFromArray2("data\start.isl", $aufgabe_start)
	_FileWriteFromArray2("data\ende.isl", $aufgabe_ende)
	_FileWriteFromArray2("data\intervall.isl", $aufgabenintervall)
	_FileWriteFromArray2("data\bau.isl", $bauvorhaben)
	_FileWriteFromArray2("data\dorf.isl", $dorf_der_aufgabe)
	_FileWriteFromArray2("data\ort.isl", $aufgabenort)
	_FileWriteFromArray2("data\anzahl.isl", $Einheitenanzahl)
	_FileWriteFromArray2("data\typ.isl", $aufgaben_typ)
	_FileWriteFromArray2("data\status.isl", $aufgaben_status)
	_FileWriteFromArray2("data\dorfkoord.isl", $Dorfkoordinaten)
	_FileWriteFromArray2("data\log.isl", $Log_file)

	
	GUIDelete($main_window)
	Exit
EndFunc   ;==>ExitScript

Func nix($bla="hallo")
	MsgBox(0, "", $bla)
EndFunc   ;==>nix

GUIDelete()
Exit




	;	