Frage wegen .ini abfrage

  • Hallo

    1. Dieser Script soll dazu dienen das nur die Spieler die einen Account bei mir haben auf den Server connecten können

    Ich habe neu angefangen Autoit zu lernen. Nun wollte ich ein kleines Script schreiben, bis jetzt sieht es gut aus aber habe Probleme wegen .ini Datei abfrage.

    Ich lade mit Inetget ( "link", C:\files.ini ) die .ini Datei runter wo die Logininformationen (Nickname und Passwort) stehen. Wie kann ich Nickname = $input1 und Passwort = $input2 von der .ini Datei abfragen? wie muss mein .ini Datei überhaupt aussehen?

    Und noch ein anderes Problem. Wenn die Leute sich eingelogt haben, wird automatisch das Spiel gestartet und wird direkt zu einem Server verbunden. Dieser Spieler soll dann auch den Nick wie beim Login verwenden. Ich habe es so probiert +set name $input1 aber leider wird nicht die Nickname übernommen sondern das "Wort" $input1 Wie kann ich diesen problem beheben?

    [autoit]

    #include <GUIConstants.au3>
    #include <GuiEdit.au3>
    $cod2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "MultiEXEString")
    $cod22 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "InstallPath")
    InetGet( "http://www.hardcoretr.com/files.ini", "C:\files.ini")
    $form = GUICreate("AsIz Clan SD Public Server Connecter", 321, 162, 193, 115)
    GUISetBkColor(0xFFFBF0)
    GUICtrlCreateLabel("Nick:", 40, 40, 46, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlCreateLabel("Password:", 40, 80, 76, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    $input1 = GUICtrlCreateInput("", 120, 40, 161, 21)
    $input2 = GUICtrlCreateInput("", 120, 80, 161, 21, $ES_PASSWORD)
    GUICtrlCreateLabel("", 72, 8, 181, 31)
    GUICtrlSetFont(-1, 14, 800, 0, "Arial Black")
    $leave = GUICtrlCreateButton("Cancel", 168, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    $go = GUICtrlCreateButton("Connect", 40, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $leave
    Exit
    Case $go
    If GUICtrlRead($input1) = "asizserverconnecter" AND GUICtrlRead($input2) = "1" Then
    ShellExecute($cod2, '+connect "85.153.5.155:28960" +set password "5544" +set cl_maxpackets "100" +set rate "25000" +set com_maxfps "0" +set name $input1', $cod22)
    Sleep(500)
    FileDelete( "C:\files.ini" )
    Exit
    Else
    MsgBox(0, "Attention", "Login Failed")
    Exit
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • zu 2.

    [autoit]

    ShellExecute($cod2, '+connect "85.153.5.155:28960" +set password "5544" +set cl_maxpackets "100" +set rate "25000" +set com_maxfps "0" +set name ' & GUICtrlRead($input1), $cod22)

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag
    [autoit]

    IniRead

    [/autoit]

    Schau mal in der Hilfe nach

  • [autoit]

    #include <GUIConstants.au3>
    #include <GuiEdit.au3>
    $cod2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "MultiEXEString")
    $cod22 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "InstallPath")
    $input1= IniRead("C:\files.ini", "account", "Loginname", "")
    $input2= IniRead("C:\files.ini", "account", "Password", "")
    $form = GUICreate("AsIz Clan SD Public Server Connecter", 321, 162, 193, 115)
    GUISetBkColor(0xFFFBF0)
    GUICtrlCreateLabel("Nick:", 40, 40, 46, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlCreateLabel("Password:", 40, 80, 76, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    $input1 = GUICtrlCreateInput("", 120, 40, 161, 21)
    $input2 = GUICtrlCreateInput("", 120, 80, 161, 21, $ES_PASSWORD)
    GUICtrlCreateLabel("", 72, 8, 181, 31)
    GUICtrlSetFont(-1, 14, 800, 0, "Arial Black")
    $leave = GUICtrlCreateButton("Cancel", 168, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    $go = GUICtrlCreateButton("Connect", 40, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $leave
    Exit
    Case $go
    If GUICtrlRead($input1) = "" AND GUICtrlRead($input2) = "" Then
    ShellExecute($cod2, '+connect "85.153.5.155:28960" +set password "5544" +set cl_maxpackets "100" +set rate "25000" +set com_maxfps "0" +set name' & GUICtrlRead($input1), $cod22)
    Sleep(500)
    FileDelete("C:\files.ini")
    Exit
    Else
    MsgBox(0, "Attention", "Login Failed")
    Exit
    FileDelete("C:\files.ini")
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    So sieht jetzt mein Script aus aber login klappt immernoch nicht ich denke mal das ich hier

    PHP
    If GUICtrlRead($input1) = "" AND GUICtrlRead($input2) = "" Then

    den Iniread irgendwie verknüpfen muss aber wie es gehen soll weis ich leider nicht

    und mein files.ini datei sieht so aus

    PHP
    [account] 
    ID=0 
    Loginname=test 
    Loginname=test
  • Probier mal dies...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiEdit.au3>
    $cod2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "MultiEXEString")
    $cod22 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "InstallPath")

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

    ; hier nicht die geliche Variable nehmen, wie später für die ID's der Input-Boxen
    $user= IniRead(@ScriptDir & "\files.ini", "account", "Loginname", "")
    $pass= IniRead(@ScriptDir & "\files.ini", "account", "Password", "")

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

    $form = GUICreate("AsIz Clan SD Public Server Connecter", 321, 162, 193, 115)
    GUISetBkColor(0xFFFBF0)
    GUICtrlCreateLabel("Nick:", 40, 40, 46, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlCreateLabel("Password:", 40, 80, 76, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")

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

    ; dies Input-Boxen meine ich. GUICtrlCreate... gibt die ID des Ctrl's zurück, über die man es ansprechen kann
    $input1 = GUICtrlCreateInput("", 120, 40, 161, 21)
    GUICtrlSetData(-1,$user) ; Daten der INI eintragen ; '-1' spricht das zuletzt erzeugte an
    $input2 = GUICtrlCreateInput("", 120, 80, 161, 21, $ES_PASSWORD)
    GUICtrlSetData(-1,$pass) ; Daten der INI eintragen

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

    GUICtrlCreateLabel("", 72, 8, 181, 31)
    GUICtrlSetFont(-1, 14, 800, 0, "Arial Black")
    $leave = GUICtrlCreateButton("Cancel", 168, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    $go = GUICtrlCreateButton("Connect", 40, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $leave
    Exit
    Case $go

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

    ; und hier muss es doch ungleich NICHTS sein oder ?
    If GUICtrlRead($input1) <> "" AND GUICtrlRead($input2) <> "" Then
    ShellExecute($cod2, '+connect "85.153.5.155:28960" +set password "5544" +set cl_maxpackets "100" +set rate "25000" +set com_maxfps "0" +set name' & GUICtrlRead($input1), $cod22)
    Sleep(500)
    FileDelete(@ScriptDir & "\files.ini")
    Exit
    Else
    MsgBox(0, "Attention", "Login Failed")
    Exit
    FileDelete(@ScriptDir & "\files.ini")
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    und INI-Dateien im Root von C: ??? Da darf nur ein Admin löschen. Warum nicht das Script-Verzeichnis ?

    Gruß
    micha_he

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • So ich habs jetzt mal probiert

    Wenn ich falsche Loginname eingebe kommt fehlermeldung dass login nicht stimmt aber wenn ich falsche password eingebe dann verbindet er mich zum server irgendwas stimtm mit der passwort abfrage nicht

  • wahrscheinlich weil Du im 'ShellExecute'-Aufruf (Zeile 30 meines Vorschlag's) folgendes geschrieben hast:

    ...+set password "5544"....

    dabei muss es bestimmt das Input auslesen (achte auf die Hochkomma's um das PW):

    ...+set password "' & GUICtrlRead($Input2) & '"...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • set password "5544" hat nichts mit der login zutun es ist nur das Passwort für den Server (server ist mit passwort geschützt)

  • und wo liest Du dann das Passwort aus Ctrl-ID '$input2' wieder aus ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Du verstehtst mich nicht. Du liest die INI in die 'Input-Box'. Das klappt auch. Weiter verwendest Du die Input-Box nicht und liest auch die INI-Datei nicht noch einmal ein.

    Bis dahin ist alles klar.

    Nun folgt der aktive Teil: Die 'ShellExecute'-Zeile 40 (nicht 30 wie ich schrieb). Hier verwendest Du aber keines der Passwörter. Weder das der INI, noch das des Input-Feldes, was ich benutzen würde.

    Wie soll die fehlerhafte Passwort-Eingabe im Inputfeld also zu einer Veränderung im Ablauf führen. Das Passwort steht dort flasch drin und wird nicht verwendet !!!

    Oder verwendet das Tool was Du aus der Registry ausliest und in 'ShellExecute' startest, die INI-Datei AUTOMATISCH ? Dann musst Du das Passwort nach der Eingabe, auch wieder in die INI-Datei zurückschreiben. (IniWrite...)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Irgendwie kapier ich es nicht :)

    Ich will wenn ich das Script starte das da Loginbox ( Loginname und Password) eingabe feld kommt, das haben wir schonmal

    Loginname und Passwort sollen wenn ich auf connect klicke mit der file.ini datei verglichen werden wenn Loginname und Passwort gleich wie in der Eingabefeld ist dann soll er den befehl

    PHP
    ShellExecute($cod2, '+connect "85.153.5.155:28960" +set password "5544" +set cl_maxpackets "100" +set rate "25000" +set com_maxfps "0" +set name' & GUICtrlRead($input2), $cod22) 
    Sleep(500) 
    FileDelete(@ScriptDir & "\files.ini")

    ausführen. Wenn Loginname oder Password oder auch alle beide nicht wie in der files.ini übereinstimmen dann soll es nicht den Shellexecute befehl ausführen sondern fehlermeldung geben oder das script beenden

  • Jetzt haben wir es. Du hast niemals genau erwähnt, das Du Eingaben und INI-Daten vergleichen willst 8o

    Dann so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiEdit.au3>
    $cod2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "MultiEXEString")
    $cod22 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "InstallPath")

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

    ; hier nicht die geliche Variable nehmen, wie später für die ID's der Input-Boxen
    $user= IniRead(@ScriptDir & "\files.ini", "account", "Loginname", "")
    $pass= IniRead(@ScriptDir & "\files.ini", "account", "Password", "")

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

    $form = GUICreate("AsIz Clan SD Public Server Connecter", 321, 162, 193, 115)
    GUISetBkColor(0xFFFBF0)
    GUICtrlCreateLabel("Nick:", 40, 40, 46, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlCreateLabel("Password:", 40, 80, 76, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")

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

    ; dies Input-Boxen meine ich
    $input1 = GUICtrlCreateInput("", 120, 40, 161, 21)
    ;GUICtrlSetData(-1,$user) ; dann dies natürlich nicht
    $input2 = GUICtrlCreateInput("", 120, 80, 161, 21, $ES_PASSWORD)
    ;GUICtrlSetData(-1,$pass) ; dann dies natürlich auch nicht

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

    GUICtrlCreateLabel("", 72, 8, 181, 31)
    GUICtrlSetFont(-1, 14, 800, 0, "Arial Black")
    $leave = GUICtrlCreateButton("Cancel", 168, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    $go = GUICtrlCreateButton("Connect", 40, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $leave
    Exit
    Case $go

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

    ; und hier muss es doch ungleich NICHTS sein oder ?
    If GUICtrlRead($input1) == $user AND GUICtrlRead($input2) == $pass Then ; Eingaben mit gelesenen aus INI vergleichen (== wegen Groß/Klein)
    ShellExecute($cod2, '+connect "85.153.5.155:28960" +set password "5544" +set cl_maxpackets "100" +set rate "25000" +set com_maxfps "0" +set name' & GUICtrlRead($input1), $cod22)
    Sleep(500)
    FileDelete(@ScriptDir & "\files.ini")
    Exit
    Else
    MsgBox(0, "Attention", "Login Failed")
    Exit
    FileDelete(@ScriptDir & "\files.ini")
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • ja das war mein problem ich habs nicht genau erwähnt.

    Also ich hab es jetzt ausprobiert es funktioniert. Ist es auch möglich das ich in die files.ini datei mehrere Loginnamen und Passwörte eintrage?

    mein files.ini sieht so aus

    PHP
    [account]
    ID=0
    Loginname=inan
    Password=inan
  • Ich würde es so machen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiEdit.au3>
    $cod2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "MultiEXEString")
    $cod22 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 2", "InstallPath")

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

    $form = GUICreate("AsIz Clan SD Public Server Connecter", 321, 162, 193, 115)
    GUISetBkColor(0xFFFBF0)
    GUICtrlCreateLabel("Nick:", 40, 40, 46, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlCreateLabel("Password:", 40, 80, 76, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")

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

    ; dies Input-Boxen meine ich
    $input1 = GUICtrlCreateInput("", 120, 40, 161, 21)
    ;GUICtrlSetData(-1,$user) ; dann dies natürlich nicht
    $input2 = GUICtrlCreateInput("", 120, 80, 161, 21, $ES_PASSWORD)
    ;GUICtrlSetData(-1,$pass) ; dann dies natürlich auch nicht

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

    GUICtrlCreateLabel("", 72, 8, 181, 31)
    GUICtrlSetFont(-1, 14, 800, 0, "Arial Black")
    $leave = GUICtrlCreateButton("Cancel", 168, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    $go = GUICtrlCreateButton("Connect", 40, 120, 113, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $leave
    Exit
    Case $go

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

    ; und hier muss es doch ungleich NICHTS sein oder ?
    $Accounts = IniReadSectionNames(@ScriptDir & "\files.ini")
    For $i = 1 to $Accounts[0]
    $user= IniRead(@ScriptDir & "\files.ini", $Accounts[$i], "Loginname", "")
    $pass= IniRead(@ScriptDir & "\files.ini", $Accounts[$i], "Password", "")
    If GUICtrlRead($input1) == $user AND GUICtrlRead($input2) == $pass Then ; Eingaben mit gelesenen aus INI vergleichen (== wegen Groß/Klein)
    ShellExecute($cod2, '+connect "85.153.5.155:28960" +set password "5544" +set cl_maxpackets "100" +set rate "25000" +set com_maxfps "0" +set name' & GUICtrlRead($input1), $cod22)
    Sleep(500)
    FileDelete(@ScriptDir & "\files.ini")
    Exit
    EndIf
    Next
    MsgBox(0, "Attention", "Login Failed")
    FileDelete(@ScriptDir & "\files.ini")
    EndSwitch
    WEnd

    [/autoit]
    files.ini

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Dann lasst Dir doch zwischen den Zeilen 39 & 40 mal folgende Werte in Msgboxen ausgeben:
    GUICtrlRead($input1), $user, GUICtrlRead($input2), $pass

    Dann kannst Du erkennen wie die IF-Abfrage anschließend reagieren müsste, da diese ja die Werte vergleicht.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • So

    endlich ist es fertig hab vergessen den files.ini zu kopieren :)

    Micha_he ich danke dir vielmals das du mir geholfen hast funktioniert super