Text von Gameserver in VB-Programm übertragen

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von -Tim-.

    Text von Gameserver in VB-Programm übertragen

    Hallo,

    da ich mir nicht sicher bin ob dies der richtige Bereich ist, bitte verschieben sollte es der falsche sein. Danke.


    Nun zu meiner Frage. Ich möchte einen Text von einem Gameserver in ein mit VB geschriebenes Programm übertragen.
    Bei dem Text handelt es sich um Reports von Spielern, die einen Cheater/Hacker auf dem Server gesehen haben und diesen
    melden wollen. Da nicht immer Administratoren auf dem Gameserver online sind, möchte ich die Reportnachricht in das VB-Programm
    übertragen, welches die Admins ja im Hintergrund, während sie am Computer sitzen, laufen lassen können.

    Leider weiß ich nicht wirklich wie ich ansetzten soll und hoffe auf ein paar Tipps.

    Bei dem Gameserver handelt es sich um das Spiel "Grand Theft Auto - San Andreas" im SAMP Multiplayer.
    Die Programmiersprache des Gameserverscripts ist Pawn. Dort ist es möglich,
    mit der Funktion "HTTP", Daten an eine Url zu übertragen. (Link zu der Funktion: wiki.sa-mp.com/wiki/HTTP)

    Wäre es damit machbar, Daten/Text an die VB-Anwendung zu senden, welche diese dann wieder in einer Textbox
    ausgibt und dabei einen Sound abspielt sodass man sofort weiß, dass ein neuer Report eingetroffen ist?

    Hoffentlich versteht ihr was ich meine. :)

    Hier noch ein Bild welches grob zeigt wie die Form aussehen soll (noch ohne Design):




    Mit freundlichen Grüßen

    Tim
    entweder liege ich falsch oder du liegst falsch

    ich glaube man kann mit samp nur eine html datei auslesen und diese im spiel wiedergeben
    also wenn auf deiner website eine datei namens "www.hanswerner.de/hallo.html" vorhanden ist und in der datei "hallo.html", wenn man sie aufrufen würde der satz "ich bin eine htmldatei" in deinem firefox käme dan kannst du nur den text in deinem spiel einbauen... nicht aber die seite als fenster anzeigen lassen! ich kann mich jetzt auch irren
    sollte ich mich irren
    dan mach es doch so

    wenn man auf die seite
    "www.hanswerner.de/index.php?hackermelden-daniel-danielHATmeinAUTOgeklaut-hans
    dan trägt die phpdatei in eine datenbank das hier ein
    hacker = daniel
    verdacht auf= danielHATmeinAUTOgeklaut
    sender=hans

    so ist dan der eintrag in der datenbank dan müsste dein programm nurnoch (am besten mit einem timer) überprüfen ob ein neuer eintrag vorhanden ist und wenn ja "piepsen" und vllt die dne neuen eintrag anzeigen...
    kannst ja nochmal eine neue phpdatei machen die die einträge der datenbank zählt und dein vbprogramm dan nur die "zahl" von der phpdatei (also die einträöge in der datenbank) speichert und wenn der eintrag mehr geworden ist als beim letzten überprüfung dan pieps dein vb programm
    Das man das mit php machen muss habe ich mir schon fast gedacht.
    Leider kenne ich mich weder mit php noch mit Datenbanken aus.

    Könnte man nicht einfach den Text/Report in eine .txt übertragen und diese einfach in dem Programm als Webbrowser immer neu laden?


    Gruß Tim
    Hi,

    Könnte man nicht einfach den Text/Report in eine .txt übertragen
    Kann man schon aber dafür wäre PHP nicht schlecht. Guck dir mal das an: phpbox.de/. Aber ständig das im WebBrowser zu laden ist auch nicht gerade die beste Idee. Mach dir doch auf dem Server ein Programm zu dem du dich dann Verbindest und der dir dann nur was sendet wenns was Neues gibt. Multiserver (TCP)
    Mit freundlichen Grüßen,
    Thunderbolt
    ich denke ma das es um dein vb progra<mm nur um admins geht die warscheinlich alle ruhig zugriff auf einen ganz speciellen ordner auf deinem ftp haben könnten?

    du könntest zb machen das dein sampserver den reporttext in eine report.txt chreiben würde (ob das samp kann weiss ich allerdings nicht)
    ich würde es zb so lösen
    jemand sendet an den server das hier
    "/report hans der daniel cheatet weil er cheten kann"
    dan müsste der server eine datei erstellen die so heissen würde
    report-daniel.txt
    und der inhalt wäre dan "der daniel cheatet weil er cheten kann"
    so diese datei macht dein sampserver dan in den ordner "sampserver"reports"report-daniel.txt"
    (ich würde bei der datei ambesten die zeit mitbeihängen sonst kann es problemen mit doppelten namen geben)

    wenn das dein server getan hat dan müsste dein vb programm auf den ftp server zugreiffen (was wiederum unsicer wäre weil man das password vom ftpserver dan im code sehen könnte) alle report.txt dateien in eine richtextbox anzeigen lassen (die anzahl wieder speichern) und mit einem timer immerwieder neu laden lassen und wenn die anzahl mehr geworden ist wieder piepsen :D


    edit
    du müsstest nur irgentwie die dateien bekommen ob als datei oder datenbank ist ja egal
    und dein vb programm müsste dan immerwieder die anzahl überprüfen
    Hey,

    schon mal danke für die Hilfestellungen.

    Ich habe eine Funktion bzw. Include für das Gameserverscript gefunden, welches den im Spiel eingegebenen Text
    an eine EMail Adresse versendet. Dies funktioniert auch super. Der eingegebene Text wird an eine PHP Datei versendet
    welche dann die EMail an mich schickt.

    Könnte man diesen PHP-Code so verändern, dass man es in dem Programm nutzen kann?

    PHP Code

    PHP-Quellcode

    1. <?php
    2. ini_set( 'html_errors', false );
    3. if ( empty( $_POST[ 't' ] ) || empty( $_POST[ 'f' ] ) || empty( $_POST[ 'n' ] ) || empty( $_POST[ 's' ] ) || empty( $_POST[ 'm' ] ) )
    4. die( 'Error: Missing parameters.' );
    5. mail(
    6. $_POST[ 't' ],
    7. utf8_encode( $_POST[ 's' ] ),
    8. $_POST[ 'm' ],
    9. implode(
    10. "\r\n",
    11. array
    12. (
    13. 'From: "' . addslashes( $_POST[ 'f' ] ) . "\" <{$_POST[ 'n' ]}>",
    14. "Reply-To: {$_POST['f']}",
    15. "X-Mailer: PHP/" . phpversion( ),
    16. )
    17. )
    18. );
    19. ?>



    Ich habe auch mal angefangen mir PHP Tutorials anzulesen aber so komplizierte Dinge verstehe ich nicht.

    Die Version wo ich die Reports in einer .txt abspeichere und auslese funktioniert zwar, ist aber wie schon erwähnt nicht die Beste.

    Gruß Tim
    @-Tim-
    deine hauptaufgabe ist ja erstmal den reporttext den ja jemand ingame schreibt irgentwie irgentwo zu speichern... (ja ich kenne und hab sorgar samp)
    angenommen du hast den reporttext irgentwie nun als eine reporttext.txt datei irgentwie in dem selben ordner wie der gameserver ist...
    dan musst du dich fragen wie du nun ambesten da dran kommst ;) da gibt es sicherlich einige gute möglichkeiten ;) mit einem ftpserver darauf zu zugreiffen wäre naja ich weiss ja nit...

    was aber hier angesprochen wurde war der tcp server (damit baue ich zurzeit ein chatserver)
    das heisst dort wo die report.txt datei ist baust du ein eigenen server der dan überprüft ob es eine weitere txt datei gibt und sendet dan an einen client(den musst du natürlich auch bauen) einen befehl...
    der server kann nun nur die anzahl der .txt dateien überprüfen und dir nur die anzahl senden und wenn die anzahl mehr geworden ist kann der client ja piepsen... aber ein tcp server kann dir auch die anzahl senden wenn mehr geworden ist piepsen "UND" er kann dir sogar den inhalt der txt datei zusenden! die sogar den inhalt in einer textbox von deinem client/programm anzeigen lassen mit name/cheatername/und allem weiterm ;)
    wenn du fragen hast frag ruhig ;) wie gesagt mit einem tcp server baue ich zurzeit ein chatserver der bisjetzt richtig gut funktioniert
    Hi,

    also ich habe es soweit geschafft, einen Text mit der HTTP Funktion an eine PHP Datei zu senden (Liegt auf meinem Webspace) welche den Text dann in eine .txt
    packt die man mit dem Browser in Visual Basic einfach anzeigen kann.

    Hier mal der Code dazu:

    Pawn

    new string[180],stringx[260], reason[80], Pos = strlen(string);
    format(string, sizeof(string), "\n[%s | %s] %s (ID: %d) Report: %s", GetCurrentDate(), GetCurrentTime(), SpielerName(playerid),playerid, reason);
    StringURLEncode(string[Pos],180-Pos);
    format(stringx, sizeof(stringx), "meinedomain.de/mailer.php?report=%s", string);
    HTTP(playerid, HTTP_HEAD, stringx, "", "MyHttpResponse");



    PHP

    <?php
    $report = utf8_encode($_GET['report']);
    $datei = fopen("reports.txt","a");
    fwrite($datei, $report);
    fclose($datei);
    ?>



    Ich würde das gerne anders machen aber die Sache mit dem TCP verstehe ich einfach gar nicht.


    Gruß Tim

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-Tim-“ ()

    gut du hast schonmal die report.txt datei ;) das war ja nun die hauptaufgabe..
    aber moment mal...
    erstellst du dir nur eine reports.txt datei und schreibst jeden report immerwieder darein? oder wird der alte überschrieben?
    also wenn ich immer mehrere dateien erstellen möchte die nicht den selben namen haben dürfen nehme ich immer die variable "time" time ist immer ein zahlencode der ie gleich sein kann (bei mir zumindest nochnie vorgekommen) müsstest du mal kucken wie du das ambesten willst/machst

    ein tcp server ist wie ein samp-server nur eben das er nicht die spieldaten übergibt sondern in deinem beispiel eben die sachen die du willst ;)

    ein beispiel ist zb hier der chatserver
    [VB.NET] Multiserver (TCP)

    jetzt ist natürlich nur die frage was du genau willst ;)
    willst du nur sobald es eine neue report.txt gibt das dein programm piepst? somit müsste der tcp server an dein client (dein programm auf deinem rechner) ein befehl senden zb "/pieps mal" und dein client/programm müsste dan sobald der befehl /pieps mal" ankommt einfach nur eine wav datei abspielen...

    willst du aber nun das der server schon direkt die txt datei komplett anzeigt? somit müsste der server zb dashier übertragen
    /reportdatei1 daniel ist ein hacker
    und dein programm macht dan sobald der befehl wieder kommt wieder was anderes zb
    speichert er reportdatei1 in eine variable und den rest "daniel ist ein hacker" in eine andere variable
    so dan kann er die variale "daniel ist ein hacker" in die textbox (was du ja in deinem programm dan schon hast) als text einfügen ;)

    somit würdest du auch direkt sehen ob es ein neuer eintrag an report gibt und du könntest direkt sehen ob es nur quatsch wäre oder du ins spiel als admin kommen müsstest ;)

    client= das programm was eine verbindung zu einem server aufbaut
    Ja, ich habe mir das so gedacht, dass die Reports untereinander aufgeführt werden.
    Der neuste Report soll immer ganz unten oder oben stehen und die Form soll halt,
    wenn ein neuer Report rein kommt, einen Sound abspielen.

    Beispiel:


    (Im Moment ist das ein Webbrowser der alle 2 Sekunden neu geladen wird. Frisst halt sehr Ressourcen)

    Wie ginge das dann mit dem TCP Multiserver? Wo läuft dieser dann? Muss ich mir dazu einen Root Server mieten?

    Gruß
    der server müsste auf dem rechner laufen wo auch der sampserver läuft er muss ja den ordner überprüfen bzw die datei überprüfen...

    aber du könntest auch den tcp server auf deinem rechner laufen lassen dan müsste er nur immerwieder die report.txt datei runterladen oder den inhalt speichern und dan weiterschicken... vorraussetzung ist dan er müsste halt irgentwie an die datei kommen... und ftpzugang ist bei sowas ehr sinnlos :D
    Hm, das ist Schade. Oft kann man auf den Servern wirklich nur die Gameserver laufen lassen und nichts anderes.
    Dafür dann extra noch einen Server zu mieten wo ich beides laufen lassen kann, finde ich zu viel für diesen Zweck.

    Gäbe es noch einer andere Möglichkeit außer TCP? Falls nicht muss ich es halt so wie es jetzt ist lassen. :D

    Gruß Tim
    och son mini rootserver kostet ja nit mehr viel
    gc-server.de/v2/Restposten/AMD-X2-3800-2GB-RAM-80GB.html

    wenn du nich viele besucher auf deinem sampserver hast sollte das ausreichen ;)
    ich weiss ja nich was du im mom für dein sampserver bezahlst ;) aber gibt ja auch genug sponsoren die sowas auch machen und son tcpserver wie du willst der frisst sogut wie 0 leistung den könnte eig dein hoster verkraften :D

    andere möglichkeit wäre dan wirklich ftp zugang
    oder du speicherst dir alle zeichen von dem webbrowser also von der txtdatei in eine anzahl also zb
    daniel cheatet =14 zeichen
    und wenn beim nächsten mal mehr sind als 14 zeichen dan piepst dein programm :D
    Naja, im Moment ist der Gameserver noch nicht online und knapp 30 Euro für einen Server zu bezahlen ist es mir nicht Wert. :D
    Trotzdem danke für den Tipp.

    Ich habe es jetzt einfach mal so probiert:

    VB Code

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim File1 As Integer
    3. Dim Größe As Integer
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. File1 = "http://www.meinedomain.de/reports.txt"
    6. Größe = FileLen(File1)
    7. End Sub
    8. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    9. File1 = "http://www.meinedomain.de/reports.txt"
    10. If (Größe < FileLen(File1)) Then
    11. WebBrowser1.Refresh()
    12. My.Computer.Audio.Play(My.Resources.info, AudioPlayMode.Background)
    13. Größe = FileLen(File1)
    14. End If
    15. End Sub
    16. End Class


    Ich hatte vor jedes mal wenn der Timer aufgerufen wird die Dateigröße abzufragen und zu vergleichen.
    Ist sie größer als zuvor wird ein Sound abgespielt und der Webbrowser neu geladen.

    Nur leider klappt das mit dem herausfinden der Dateigröße nicht.

    Tim