Voting system\text aus programm auslesen

  • Hi bin relativ neu in dieser Matherie. Ich möchte gerne für meinen Gameserver ein Votng system bauen da es das für dieses spiel noch nicht gibt. nun habe ic haber ein problem:

    [Blockierte Grafik: http://img510.imageshack.us/img510/2025/unbenannt2jc6.png]

    Wie stelle ich es an dass er die letzte zeile ausliest? (der text wird auch in eine textdatei geschrieben falls das wichtig sein sollte)

    2 Mal editiert, zuletzt von hofi02 (11. April 2008 um 19:17)

  • hmm das funktioniert aber so nicht
    er soll den wert ja dan zurück geben und senden in den chat, wenn ich aber nun vvss eingebe im chat passiert nix. Eigentlich sollte er +1 auf den alten wert ausgeben

    am ende sol ldas dann halt in etwa so aussehen: wenn ein user vvss eingibt gibt mein program an den server zurück: 1 players want to skip map (needed: 5) << dieser wert soll sich je nachdem wieviele spieler auf dem server sind ändern
    und so dass jeder spieler nur 1 mal voten kann.wenn dann der wert 5 erreicht worden ist soll der server die map wechseln. Aber so weit bin ich noch nicht

    3 Mal editiert, zuletzt von hofi02 (6. April 2008 um 14:12)

  • hat keiner eine idee wie ich das bewerkstelligen könnte?

    wenn ich WinGetText benutze gibt er mir die komplette console aus, ich brauche aber nur die letzte zeile davon ...


    danke schonmal ...

    • Offizieller Beitrag

    wenn ich WinGetText benutze gibt er mir die komplette console aus, ich brauche aber nur die letzte zeile davon ...

    Na was erwartest du denn? Sollen dir die gebratenen Tauben in den Mund fliegen? :D
    Etwas mußt du schon noch selbst erledigen, Zeilen kann man an ihrem Umbruch splitten. Dafür gibt es Makros (@LF, @CRLF).
    Einfach mal etwas in der Hilfe lesen.

  • ich habe schon stundenlang die hilfe geweltzt + google, bin abe rauf keine brauchbaren ergebnisse gekommen ...

    Zitat

    Na was erwartest du denn? Sollen dir die gebratenen Tauben in den Mund fliegen? :D


    lol nein sicher nicht. das soll ja mein erstes eienes projekt werden ;)
    ein beispiel wäre aber zum beispiel nicht schlecht, sowas würde mir weiterhelfen.

    Danke erstmal für deine antwort, ich werd mal sehen was ich damit anfangen kann und nochmal die hilfe weltzen.

  • Was mir jetzt spontan einfällt was du brauchen könntest: StringRight, StringTrimRight, StringLeft, StringTrimLeft, StringSplit _StringBetween, StringInStr, StringLen, StringMid und wenns hart kommt StringRegExp also eigentlich alle ;)

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

  • ich bin och ein noob in AutoIt, also nicht schlagen wenn ich einfach nur zu blind bin :D
    hmm das tut hilf mir auch nicht so richtig weiter

    [autoit]

    #include <string.au3> ; <-- Wichtig!

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

    $string = "<html><body> Hello world! </body> </html>"
    $abda = "<html><body>"
    $bisda = " </body> </html>"

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

    $between = _StringBetween($string, $abda, $bisda)

    [/autoit]

    in diesem beispiel bleibt ja das "<html><body>" und "</body> </html>" immer gleich. Das trift aber bei mir nicht zu

    [Blockierte Grafik: http://img402.imageshack.us/img402/16/unbenannt5xb4.jpg]
    Der werte vor "vvss" bzw die in der zeile darüber sind immer anders.
    Wie mache ich das jetzt das nur noch "vvss" übrig bleibt

    • Offizieller Beitrag

    Kleiner Denkanstoß:

    [autoit]


    $Edit = GUICtrlCreateEdit('', 10, 10, 200, 100)

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

    Dim $aZeilen

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

    $aZeilen = StringSplit(GUICtrlRead($Edit), @CRLF)

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

    For $i = 1 To $aZeilen[0]
    If StringInStr($aZeilen, 'vvss') Then MsgBox(0, 'Test', 'User hat vvss eingegeben')
    Next

    [/autoit]
  • das reicht aber noch nicht ganz. Da kommt die Box auch, wenn der User vvss in seinem Namen hat :)
    Also muss noch ein StringRight dazu :)

  • Hmm er springt auf "vvss" nicht an

    [autoit]

    While 1
    If Not WinActive("Rommie's AvP2 Stand-Alone Dedicated Server Application v2.0") Then
    WinActivate("Rommie's AvP2 Stand-Alone Dedicated Server Application v2.0")
    endIf
    WinWaitActive("Rommie's AvP2 Stand-Alone Dedicated Server Application v2.0")
    $Edit = GUICtrlCreateEdit('', 26, 302, 741, 85)

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

    Dim $aZeilen

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

    $aZeilen = StringSplit(GUICtrlRead($Edit), @CRLF)

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

    For $i = 1 To $aZeilen[0]
    If StringInStr($aZeilen, 'vvss') Then MsgBox(0, 'Test', 'User hat vvss eingegeben')
    Next
    WEnd

    [/autoit]

    [Blockierte Grafik: http://img384.imageshack.us/img384/5774/ee5zhrhej6ej56lw1.png]

    Was mache ich falsch? ?(

  • ähhm, du musst natürlich wingettext bzw. ControlGetText einbauen :)
    statt GUICtrlRead($Edit)
    das kannst du löschen : $Edit = GUICtrlCreateEdit('', 26, 302, 741, 85)

  • EDIT: habs jetzt soweit hinbekommen das er den popup öffnet wenn jemand "vvss" eingibt

    Danke für eure Hilfe, wenn ich wieder auf ein problem stoßen sollte was ich nicht lösen kann meld ich mich hier nochmal .

    4 Mal editiert, zuletzt von hofi02 (7. April 2008 um 23:29)

  • ich habe ein neues problem wo ich nicht weiterkomme:

    Wie verhindere ich das ein spieler mehrmals hintereinander voten kann ,also wenn spieler 1 vvss eingegeben hat und spieler 1 nochmal vvss eingibt das das 2. dann ignoriert wird

    3 Mal editiert, zuletzt von hofi02 (8. April 2008 um 17:22)

  • Mach ein Array, in das die Spielernamen eingetragen werden, wenn sie gevotet haben. Wenn sie drin sind, kein Vote, bei nuer Map / Neustart usw. Das Array löschen.

  • uff, jetzt wirds langsamm schwer ^^

    kannst du mir mal bitte etwas starthilfe damit geben, ich weis gerade nicht wirklich wie ich das anfangen könnte
    wenn du willst kann ich dir auch mal mein komplettes script schicken was ic hbisher zustande bekommen habe.
    das mit dem auslesen wird so nicht klappen wie ich es bei "vvss" gelöst habe ...

    [offtopic] ist das forum nur bei mir so langsam ??? der seienaufbau dauert länger als 10 minuten[/offtopic]

  • Also, in der Zeile steht doch der Benutzername mit drin:
    << .... >> vvss
    gehören die << >> zum Namen oder sind die vom Server hinzugefügt?
    Dann geht es z.B. so:

    [autoit]

    $line = "<< THe NAME>xf>> vvss"

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

    $Endezeichen = Stringinstr($line,">>",1,-1)
    $Name = Stringmid($line,3,$endezeichen-3)
    $vvss = (StringRight($line,4) == "vvss")
    MsgBox(0, $Name, "Command vvss: " & $vvss & " ")

    [/autoit]
  • so ic hhabe den teil jetzt umgeschrieben, muss ich jetzt für jeden user eine variable erstellen? also 16 (maximale spieler)

  • Nö, das sollte ein Array sein:

    [autoit]

    Dim $users_voted[1] ; Array erstellen
    _ArrayAdd($users_voted,$name) ; User adden
    _ArraySearch($users_voted,$name) ; User suchen
    Dim $users_voted[1] ;Array löschen

    [/autoit]