Okay,
Ich hab jetzt alles nötige zusammengefasst.
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#include <EditConstants.au3>
; ### Prüft, ob das Programm bereits läuft. Lässt nur 1 Instanz zu.
$instanz = "kdsvkais"
If WinExists ($instanz) Then Exit
AutoItWinSetTitle ($instanz)
; ### Scriptoptionen.
Opt("GUIOnEventMode", 1)
Opt('MustDeclareVars', 1)
Opt("WinTitleMatchMode",1)
Local $colorbackground = 0x4A82B5
Local $colorblack = 0x000000
Local $colorstatic = 0xFFF000
Local $font = "Comic Sans MS"
Local $titel = "TEST Serverwatcher"
Local $ini1 = @ScriptDir & "\test1.ini"
Local $ini2 = @ScriptDir & "\test2.ini"
Local $mainwindow, $buttonname, $buttonserver1, $checkmanumod, $buttonserver1mam, $inix, $name, $mamname
Local $pfad, $game, $port, $config, $exe, $pb, $rcon, $mod, $plmax, $plprv, $message, $start
Local $header, $starten, $stoppen, $restart, $opendir, $editme, $back, $iniwindow, $inibuttonback, $takeover
Local $input1, $input2, $input3, $input4, $input5, $input6, $input7, $input8, $input9, $input10, $input11, $input12, $input13
guicreation()
Func guicreation() ; Benutzeroberfläche wird erstellt.
$mainwindow = GUICreate ("IFA Serverwatcher v2.0 in Entwicklung", 800, 600,0,0)
GUISetState (@SW_SHOW)
GUISetOnEvent ($GUI_EVENT_CLOSE, "ProgrammBeenden")
GUISetBkColor ($colorbackground)
GUICtrlSetDefColor ($colorblack)
GUISetFont (40, 400, 4, $font)
GUICtrlCreateLabel ($titel, 40, 20)
GUISetFont (11, 400, 0, $font)
GUICtrlSetDefBkColor($colorstatic)
buttons()
EndFunc
Func buttons() ; Serverbuttons werden erstellt und Funktionen werden zugewiesen.
GUISwitch($mainwindow)
$buttonname = IniRead($ini1,"Name des Buttons","Name des Buttons", "...noch frei...")
$buttonserver1 = GUICtrlCreateButton($buttonname, 40,100,150)
$buttonname = _GUICtrlButton_GetText($buttonserver1)
$checkmanumod = IniRead($ini1,"Manu Admin Mod nutzen","Manu Admin Mod nutzen", "")
If $checkmanumod= "ja" Then $buttonserver1mam = GUICtrlCreateButton("MAM " & $buttonname, 200,100,180)
If $buttonname = "" Then GUICtrlDelete ($buttonserver1)
If $buttonname = "" Then GUICtrlDelete ($buttonserver1mam)
GUICtrlSetOnEvent($buttonserver1, "server1")
GUICtrlSetOnEvent($buttonserver1mam, "mamserver1")
EndFunc
Func server1() ; Verhalten des Serverbuttons, Prüft den Gametype und liest Infos aus. Leitet weiter an Funktion "buttonscreate".
GUISwitch($mainwindow)
buttonsdelete()
$inix = $ini1
$name = IniRead($inix, "Name des Buttons", "Name des Buttons","")
$pfad = IniRead($inix, "Pfad zur Exe", "Pfad zur Exe","")
$game = IniRead($inix, "welches Game", "welches Game","")
$port = IniRead($inix, "Port", "Port","")
$config = IniRead($inix, "Name der Serverconfig", "Name der Serverconfig","")
$exe = IniRead($inix, "Name der Exe", "Name der Exe","")
$pb = IniRead($inix, "Punkbuster", "Punkbuster","")
$rcon = IniRead($inix, "Passwort RCon", "Passwort RCon","")
$mod = IniRead($inix, "Name des Mods", "Name des Mods","")
$plmax = IniRead($inix, "Maximale Spielerzahl", "Maximale Spielerzahl","")
$plprv = IniRead($inix, "Anzahl Private Slots", "Anzahl Private Slots","")
$message= $name & " ist bereits gestartet."
If $game = "cod4" Then
; Hier mit If/ElseIf mit einer Select/Case Verschachtelung um die Variable $start mit den richtigen Parametern zu versehen
; Es wird mit den oben ausgelesenen Variablen jongliert
EndIf
IniWrite($inix, "Startparameter", "Startparameter", $start)
buttonscreate()
EndFunc
Func mamserver1() ; Liest Infos des Manumods und leitet diese weiter an Funktion "buttonscreate2".
GUISwitch($mainwindow)
buttonsdelete()
$inix = $ini1
$name = IniRead($inix, "Name des Buttons", "Name des Buttons","")
$mamname= "MAM " & $name
$pfad = IniRead($inix, "Pfad zu MAM", "Pfad zu MAM", "")
$message= $mamname & " ist bereits gestartet."
buttonscreate2()
EndFunc
Func buttonscreate() ; erstellt "Aktionsgruppe" zur Serverkontrolle eines Serverbuttons.
$header = GUICtrlCreateGroup ($name, 400, 150, 200, 340)
$starten = GUICtrlCreateButton("starten", 450, 185, 100)
$stoppen = GUICtrlCreateButton("stoppen", 450, 225, 100)
$restart = GUICtrlCreateButton("restart", 450, 265, 100)
$opendir = GUICtrlCreateButton("öffne Ordner", 450, 325, 100)
$editme = GUICtrlCreateButton("bearbeiten", 450, 365, 100)
$back = GUICtrlCreateButton("zurück ", 450, 425, 100)
;~ GUICtrlSetOnEvent($starten, "serverstarten")
;~ GUICtrlSetOnEvent($stoppen, "serverstoppen")
;~ GUICtrlSetOnEvent($restart, "serverrestart")
;~ GUICtrlSetOnEvent($opendir, "openserver")
GUICtrlSetOnEvent($editme, "openini")
GUICtrlSetOnEvent($back, "buttonsdelete")
EndFunc
Func buttonscreate2() ; erstellt "Aktionsgruppe" zur Serverkontrolle eines ManuMod-Buttons.
$header = GUICtrlCreateGroup ($mamname, 400, 150, 200, 340)
$starten = GUICtrlCreateButton("starten", 450, 185, 100)
$stoppen = GUICtrlCreateButton("stoppen", 450, 225, 100)
$restart = GUICtrlCreateButton("restart", 450, 265, 100)
$opendir = GUICtrlCreateButton("öffne Ordner", 450, 325, 100)
$back = GUICtrlCreateButton("zurück ", 450, 425, 100)
;~ GUICtrlSetOnEvent($starten, "mamserverstarten")
;~ GUICtrlSetOnEvent($stoppen, "mamserverstoppen")
;~ GUICtrlSetOnEvent($restart, "mamserverrestart")
;~ GUICtrlSetOnEvent($opendir, "openserver")
GUICtrlSetOnEvent($back, "buttonsdelete")
EndFunc
Func openini() ; Übernimmt Daten des gedrückten Buttons und öffnet die INI des gewählten Servers / ManuMods.
$iniwindow = GUICreate($name,600,600,803,0)
GUISetState (@SW_SHOW)
GUISetOnEvent ($GUI_EVENT_CLOSE, "ProgrammBeenden2")
GUISetBkColor ($colorbackground)
$inibuttonback = GUICtrlCreateButton("Abbruch",50,550, 100)
$takeover = GUICtrlCreateButton("übernehmen",450, 550, 100)
GUICtrlSetOnEvent($inibuttonback, "ProgrammBeenden2")
GUICtrlSetOnEvent($takeover, "writetoini")
GUISetFont (11, 400, 0, $font)
Select
Case $game = "ts3"
GUICtrlCreateLabel("Welcher Art soll der Server angehören?" ,30,100)
$input1 = GUICtrlCreateInput($game, 350, 95, 200)
GUICtrlCreateLabel("Wie soll der Name des Buttons lauten?" ,30,140)
$input2 = GUICtrlCreateInput($name, 350, 135,200)
GUICtrlCreateLabel("Welchen Port soll der Server nutzen?" ,30,180)
$input5 = GUICtrlCreateInput($port, 350, 175, 200)
GUICtrlCreateLabel("Nenn mir den Pfad zur Server.exe!" ,30,220)
$input10 = GUICtrlCreateInput($pfad, 350, 215, 200)
GUICtrlCreateLabel("Nenn mir den Namen der Server.exe!" ,30,260)
$input11 = GUICtrlCreateInput($exe, 350, 255, 200)
Case Else
$game = InputBox("Serverart wählen...", "Welcher Natur soll der Server werden?")
Select
Case $game = "ts3"
GUICtrlCreateLabel("Welcher Art soll der Server angehören?" ,30,100)
$input1 = GUICtrlCreateInput($game, 350, 95, 200)
GUICtrlCreateLabel("Wie soll der Name des Buttons lauten?" ,30,140)
$input2 = GUICtrlCreateInput($name, 350, 135,200)
GUICtrlCreateLabel("Welchen Port soll der Server nutzen?" ,30,180)
$input5 = GUICtrlCreateInput($port, 350, 175, 200)
GUICtrlCreateLabel("Nenn mir den Pfad zur Server.exe!" ,30,220)
$input10 = GUICtrlCreateInput($pfad, 350, 215, 200)
GUICtrlCreateLabel("Nenn mir den Namen der Server.exe!" ,30,260)
$input11 = GUICtrlCreateInput($exe, 350, 255, 200)
EndSelect
EndSelect
EndFunc
Func writetoini() ; Schreibt die nötigen Einträge in die INI.
IniWrite($inix, "welches Game", "welches Game", GUICtrlRead($input1))
IniWrite($inix, "Name des Buttons", "Name des Buttons", GUICtrlRead($input2))
IniWrite($inix, "Manu Admin Mod nutzen", "Manu Admin Mod nutzen", GUICtrlRead($input3))
IniWrite($inix, "Pfad zu MAM", "Pfad zu MAM", GUICtrlRead($input4))
IniWrite($inix, "Port", "Port", GUICtrlRead($input5))
IniWrite($inix, "Punkbuster", "Punkbuster", GUICtrlRead($input6))
IniWrite($inix, "Name des Mods", "Name des Mods", GUICtrlRead($input7))
IniWrite($inix, "Name der Serverconfig", "Name der Serverconfig", GUICtrlRead($input8))
IniWrite($inix, "Passwort RCon", "Passwort RCon", GUICtrlRead($input9))
IniWrite($inix, "Pfad zur Exe", "Pfad zur Exe", GUICtrlRead($input10))
IniWrite($inix, "Name der Exe", "Name der Exe", GUICtrlRead($input11))
IniWrite($inix, "Maximale Spielerzahl", "Maximale Spielerzahl", GUICtrlRead($input12))
IniWrite($inix, "Anzahl Private Slots", "Anzahl Private Slots", GUICtrlRead($input13))
EndFunc
Func ProgrammBeenden() ; Beendet das Programm und alle laufenden Funktionen
Exit
EndFunc
Func ProgrammBeenden2() ; Beendet die 2. GUI
GUIDelete($iniwindow)
EndFunc
Func buttonsdelete() ; Entfernt die "Aktionsgruppe" zur Serverkontrolle. Wichtig für die Übersicht.
GUICtrlDelete($header)
GUICtrlDelete($starten)
GUICtrlDelete($stoppen)
GUICtrlDelete($restart)
GUICtrlDelete($opendir)
GUICtrlDelete($editme)
GUICtrlDelete($back)
EndFunc
; ### Funktion: Verhalten dieses Programms während es gestartet ist.
While 1
;~ safemode()
;~ watch()
;~ checker()
;~ cleaner()
Sleep(10000)
WEnd
Die Variable $inix wird übergeben, sobald auf den Button geklickt wird, genau wie alle andern Variablen auch.
Als Test kann man sich ja mal ne test.ini anlegen , das Script starten und bei der Eingabe ts3 eintippen.