MineCraft ServerInterface

  • moin moin

    jaja ich bin ein inaktiver user geworden.
    aber ich brauch auch mal help und ich hab mich auch schon näher mit Foren angefreundet, anstatt immer Chats zu verwenden...

    Bevor ich jetzt also komplett ins gras Beisse frag ich mal euch, denn ich mache alles komplett falsch abgesehen der ersten zeile..
    Ich kann einfach den fehler nicht orten, also erkläre ich mal worum es geht

    Ick bin glückliker besitzer eines MinecraftServers. Ein Teilnehmer hat mir nun einen neuen Server mit Plugins und solchem zeug zusammen gebastelt, weil ich mit Plugins nur Stress bekomme.
    Ich bin aber glücklicher AutoIt bastler und um die Administration zu halten, wollte ich ein makro dazu schreiben, ein Server Interface um genau zu sein.

    Dieses Interface soll dinge wie VoteMaps über den Chat hosten können.
    Und es soll die User auf die regeln aufmerksam machen und hallo User sagen usw..

    Der Server wird mit folgenden Kommandos gestartet:

    Code
    "%ProgramFiles(x86)%\Java\jre1.6.0_07\bin\java.exe" -Xms1512M -Xmx1512M -jar craftbukkit.jar


    Es ist ein bukkit server, daher der name... genaus darüber weiss ich nicht, aber bukkit hab isch schon mal selber zum laufen gebracht.
    allerdings war ich so bequem den server von minecraft.net zu nehmen damit die lows nich cheaten.

    Dieser server gibet nun solche ConsoleWrite daten zurück.
    Ich will den Server über AutoIt starten können und diese Konsolen Infos haben.
    Besser wäre noch wenn ich das Makro so OnTheFly am server anbringen könnte.

    Die Konsole sieht so aus:

    Spoiler anzeigen


    Dies spuckt also auch mal Java Fehler aus, aber ich kann die mit Regex schon erkennen.

    Ich müsste dann halt auch Kommandos geben können, sonst kann das makro den usern ja nich hallo sagen.
    aber die kann ich notfalls auch mit ControlSend machen glaube ich ...

    und ääh ja was muss ich noch sagen?

    genau. zum code:

    [autoit]

    $PID = Run("C:\Program Files (x86)\Java\jre1.6.0_07\bin\java.exe -Xms1512M -Xmx1512M -jar craftbukkit.jar", "D:\Programme(x86)\MINECRAFT\GAMMA SERVER", @SW_MINIMIZE, 0x2)
    Sleep(400)
    $stream = StdoutRead($PID)
    If @error Then
    MsgBox(48, "Server Console error", @error&" Server fehler")
    Exit
    EndIf
    While True
    $stream &= StdoutRead($PID)
    ClipPut($stream)
    WEnd

    [/autoit]


    Die erste zeile klappt, dann kommt die ganze konsole sozusagen in SciTe's Konsolenanzeige:

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI

    Einmal editiert, zuletzt von TimBlo (8. Februar 2011 um 23:40) aus folgendem Grund: problem gelöst

  • Erste frage wenn es ein Minecraft server ist auf welchem betriebssystem läuft er ?
    Läuft er auf deinem localhost ?
    Oder auf einem root server wo linux drauf ist ?
    Wenn dort linux drauf ist kannst du autoit doch vergessen (oder irre ich mich?)

    Es gibt so viele einstellungen bei bukkit, z.B. die wilkommensnachricht.
    Schau dir einfach mal die
    "plugins\General\general.modt oder propeties" file an für wilkommensnachrichten.
    Dort kann man auch das Menu bearbeiten wenn mal /help eingibt.

  • Also, Ich brauche eig umbedingt diesen STD OUT, und der sollte sich iwie haben können

    Am server ist alles Bestens, er ist im inet und läuft sauber und den ganzen tag mit bis zu 10 spielern lagfrei, weiter ist ungetestet.
    Zombiemode laggt halt mal.

    Klar - Win7 64 bla bla.

    Was möglich ist weiss ich ja schon,

    aber schaut euch mal im post oben den code zu unterst an, da schickt java weiter ne fehler info die kommt eigentlich nicht.
    Ist mir halt nicht aufgefallen weil die normalerweise nicht kommt.
    //Edit: das war weil bei opt flaf 0x2 drin hatte sry. das problem muss anders sein.

    Die eigentliche frage ist immernoch wie ich an das komme was im Konsolenfenster steht

    iwie wird das doch zu schaffen sein.
    Omg wenn ich bei Google STD Tutorial Autoit eingeb dann kommt er mit stunden und standard -.-

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI

    Einmal editiert, zuletzt von TimBlo (8. Februar 2011 um 14:20)

  • Hilft dir das weiter ?

    [autoit]

    ; Demonstrates the use of StdinWrite()
    #include <Constants.au3>

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

    Local $foo = Run("cmd.exe", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
    ; Write string to be sorted to child sort.exe's STDIN
    StdinWrite($foo, "echo tuttifrutti is cute" & @CRLF)
    ; Calling with no 2nd arg closes stream
    StdinWrite($foo)

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

    ; Read from child's STDOUT and show
    Local $data
    While True
    $data &= StdoutRead($foo)
    If @error Then ExitLoop
    Sleep(25)
    WEnd
    MsgBox(0, "Debug", $data)

    [/autoit]
  • eigentlich habe ich genau das programmiert..?
    kanns an java liegen?

    also der ganze text landet ja in SciTe..

    oder wenn ich einfach das win-cmd fenster lesen könnte, also was drin steht, aber ich glaub das geht auch net so gut?

    irgendwas mache ich garantiert beim auslesen falsch denn das kommt alles problemlos in die SciTe konsolenanzeige rüber

    bei deinem codebeispiel landet das nicht in der konsolenanzeige :S
    und da klappts auch. omg ich hab so kein plan :(

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI

    2 Mal editiert, zuletzt von TimBlo (8. Februar 2011 um 15:23)

  • Halo timblo,

    wenn bei deinem Skript der eingelesene Konsolen-Text in Scite anstatt im Clipboard landet gibt es nur 3 Möglichkeiten:

    • der/die Ersteller dieses Server-Tools haben etwas dagegen das sie über ein Fremprogramm gesteuert/überwacht werden
    • das Server-Tool ist fehlerhaft programmiert und bringt Windows durcheinander
    • das Tool ist falsch installiert/konfiguriert, siehe 2. und auch die Fehlermeldungen auf deinem ScreenShot


    Die 1. und die 3. Möglichkeit sind für mich die warscheinlichsten,

    Da auf dem ScreenShot zu sehen ist, dass SQLite-Datenbanken verwendet werden solltest du nach der Datenbank suchen. Diese bzw. echte Logfiles sollte man zeitnah (beinahe Echtzeit) auswerten können wodurch das ganze einfacher zu bewerkstelligen ist.

    Solange du es nicht schaffst das Java-Tool so zu konfigurieren dass es fehlerfrei alles lädt solltest du dich nicht um eine AutoIt-Erweiterung kümmern, sondern dich in einem Minecraft- /Java Forum schlau machen was zu tun ist,

    mfg autoBert

  • okay, danke.

    Ich geh über die Logfiles, hoffe auf zuverlässigkeit.
    und die befehle sollte ich an die konsole schicken können.

    ich denke wirklich dass java etwas locker programmiert ist (abgesehen davon dass es noch in Beta ist), denn es spuckt jedes mal wenn ein client die verbindung abbricht nen fehler raus.
    Aber so wirds hoffentlich gehen.

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI

  • In dem was du gepostet hast steht doch "2011-02-08 13:14:48 [WARNING] **** FAILED TO BIND TO PORT!"
    Hast du denn den 25565 Port freigegeben?

  • So, ich sehe, du hast noch nicht so viel erfahrung mit Craftbukkit...
    1. Das **** FAILED TO BIND TO PORT!" liegt zu 100% daran, dass der Server schon läuft
    2. Die meisten Java-Exception liegen daran, dass deine Plugins Probleme machen
    --> stell sicher, dass die Plugins ständig aktuallisiert werden und sind
    -->und stell sicher, dass Craftbukkit auf dem neuesten Stand ist (siehe Plugin BukkitUp)
    Ich helfe dir gerne, denn ich hab auch Interesse an dem Projekt.
    Bin dort Pluginentwickler und hoste mit so ner Gruppe einen Server auf nem Debian root auf worth-dying-for.de (bisschen Eigenwerbung ^^)
    Kannste mir bitte PN oder ne Nachricht per Skype schicken?

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Der Server lief schon, ich wollte nur die sache demonstrieren!

    Ich habe ungefähr viel erfahrung mit bukkit :D
    Auf dem Server sind durchschnittlich 6 Spieler, und ich schlag mich dann immer mit der Konsole rum um alles schön am laufen zu haben.
    Vielleicht bin ich nicht der Top von allen Server besitzern, aber erfahrung hab ich sicher und so wies aussieht genügts um einen server "normal" zu hosten.

    Die user helfen sich halt selber und so kommt es ständig zu einem durcheinander, ich versuche mit meinen kleinen mühen alles ordentlich zu halten.
    --> aufm ersten Bukkit Server hatte ich netmal ein plugin und der machte schon fehler.
    Das ist auch nix schwerwiegendes, eher so "exceptions" wie der name schon sagt.

    Mit servern allgemein kenn ich mich schon aus, daher war es ein leichtes den server zu erstellen.
    und du hast deine aussage beinahe selber gemäht, du hast interresse am projekt (autoit) und sagst hastn Debian Root :D
    willst du etwa mit Wine Spielen? lol

    Also ich sage mal, das Makro für den Server bekomm ich locker zum laufen:
    -> anzeige einiger Infos wenn ein user einloggt
    -> anzeige ob ein user spielabsturz hatte oder disconnected hat.
    -> anzeige ob jemand gestorben ist.
    -> anzeige wer alles on ist
    -> anzeige eines geplanten serverneustarts mit countdown
    -> eigende Gruppenmanage funktion. (für das plugin GroupUser)
    -> eigene Votemaps
    -> automatische aktualisierung der website.
    -> funktionen wie spieler zeitweise bannen.

    ich denke ich habe mich zusammengefasst :D

    Das problem war nur die konsole, problem gelöst.
    ente gut, alles gut :D

    aber danke nochmal ^^

    ------------------------------ EDIT heute 10.2.11 --------------
    Der Server spukt nun keine fehler mehr aus =)
    Ich habe nun die 64bit version von Java und kann dem Server mehr als 2 gigs geben.
    Daher werde ich mir auch neue Rahm kaufen :)
    also damit ir wisst was mit 2 gigs gemeint ist ^^

    Die speicherdatei des Spiels : 20 MB
    Die Serverspeicherauslastung: 2+ gig
    fail :D

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI

    Einmal editiert, zuletzt von TimBlo (10. Februar 2011 um 13:05)