Kleines Chatroomsystem v 2.0

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • ChatRoomSystem
    by RealGamer


    Folgende Software ist in 5 Minuten aus Langeweile entstanden.
    Wie der Name es bereits verrät, handelt es sich um ein kleines Chatsystem.
    Wie in Messengern wie z.B. ICQ/MSN usw. ist es hier Möglich, Nachrichten in einem Chatroom zu schreiben.
    Ich habe es bisher nur allein getestet, ich weiß nicht, ob die Nachrichten bei allen Leuten ankommen.


    Naja, testet es einfach ^^.


    Vorschau




    Commands

    /chat: Öffentlichem Raum beitreten
    /joinchat [playerid]: Einen Spielerraum betreten
    /delmessage [msgnr. 1-5]: Eine Nachricht aus dem eigenen Chatraum löschen
    delmessage [msgnr. 1-5] im Chatfenster: Eine Nachricht aus dem eigenen Chatraum löschen
    /kickfromchat [playerid]: Einen Spieler aus dem Chat schmeißen
    kickfromchat [playerid] im Chatfenster: Einen Spieler aus dem Chat schmeißen

    Download


    PasteBin
    oder im Anhang


    edit: neue Links, kleinen Fehler ausgebessert
    edit2: edit geaddet
    edit3: nochmal einen kleinen Fehler behoben, "OnPlayerDisconnect"
    edit4: kleines Update: Codeopdimierung
    edit5: Verbesserung von Goldkiller integriert
    edit6: Komplettedit ^^
    edit7: Neue Features
    edit8: Links vergessen
    edit9: Überschrift geändert: v 2.0
    edit10: Update: Neue Befehle, man fliegt nun aus dem Chat sobald der Master offline geht
    edit11: DlLink geaddet

    11 Mal editiert, zuletzt von RG_ ()

  • Idee: 4,5/5
    Umsetzung: 3,75/5
    Also hast du von mir
    8,25/10 Breadis :)
    Weiter so

  • Hmmmm ok für RL nicht sooooo zu gebrauchen


    Idee: 6/10
    Umsetzung: 4/10
    Gebrauch: 3/10 (da für RL nicht wirklich zu gebrauchen)
    Funktion -/10 (ungetestet)

  • Hmmmm ok für RL nicht sooooo zu gebrauchen


    Idee: 6/10
    Umsetzung: 4/10
    Gebrauch: 3/10 (da für RL nicht wirklich zu gebrauchen)
    Funktion -/10 (ungetestet)

    Es ist eig. so gedacht, dass man es in ein (vorhandenes) Internet-System einbauen könnte.


    aber danke für die Bewertungen.

  • Nunja - ist sehr klein ^^.
    Ein Chat für alle.
    Des Weiteren wird es nicht funktionieren.
    Denn du fragst in der forschleife, die spieler ab die im chat sind, aber schickst nur (wieder einmal) playerid den dialog und nicht dem Spieler "i".
    Bei mehr als 30 spielern werden die 5 nachrichten auch sehr schnell verschwunden sein.


    Insgesammt 6/10

  • ...


    Tatsächlich, wieder ein kleiner Fail -.-


    ich bessers sofort aus.


    Danke, dass du mir den Fehler gezeigt hast.


    edit: so ausgebessert, und man kann ja eig. ziehmlich einfach mehr Zeilen in dem Chat adden.


    edit2: kleines Update: Codeoptimierung und aufgeräumt

    Einmal editiert, zuletzt von RG_ ()

  • strval(inputtext); // Zeile 101
    Diese Zeile ist total unnötig.
    new string1[256],string2[256],string3[256],string4[256],string5[256],string6[256],string7[256],string8[512];
    Maximaler Inputtext in Dialogen ist 192 Zeichen,es reicht also wenn du anstatt 256 192+1 machst.Für String8 solltest du denn jeweils sizeof(StringX) nehmen,da du ja bei String1 und String7 nicht die 256 bzw (192+1) Zeichen ausnutzt.
    Das Gleiche gilt auch für msg1-5


    if (strcmp("/chat", cmdtext, true, 10) == 0)
    Dort brauchst du auch nicht 10Zeichen zu überprüfen,es reicht wohl auch 5 ;).


    //Edit:
    Bei UpdateChat() solltest du die ganzen Strings außerhalb des Loops einmalig erstellen.Du erstellst sie im Loop immer wieder neu,wenn Ich mich richtig erinnere haust du dadurch irgendeinen Speicher voll.Auch solltest du sie einmalig formatieren,ist definitiv besser von der Performence bei mehr als 1Spieler im Chat.


    //Edit2:
    Oh...das ganze unter UpdateChat() müsste so aussehen:
    public UpdateChat()
    {
    new
    string1[128],
    /*
    Wozu diese Strings?
    string2[256],
    string3[256],
    string4[256],
    string5[256],
    string6[256],
    */
    string7[128],
    string8[7*(192+1)+1];
    format(string1, sizeof(string1), "|________________________ Chatroom ______________________|");
    /*
    Die brauchst du doch nicht formatieren,wenn sie eh in den globalen Strings sind
    Musst halt nur im letzten format() die globalen Strings einsetzten
    format(string2, sizeof(string2), "%s",msg5);
    format(string3, sizeof(string3), "%s",msg4);
    format(string4, sizeof(string4), "%s",msg3);
    format(string5, sizeof(string5), "%s",msg2);
    format(string6, sizeof(string6), "%s",msg1);
    */ format(string7, sizeof(string7), "|________________________________________________________|");
    format(string8, sizeof(string8), "%s\n%s\n%s\n%s\n%s\n%s\n%s",string1,msg5,msg4,msg3,msg2,msg1,string7);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(inchat[i] == 1)
    {
    ShowPlayerDialog(i,chatdiag,DIALOG_STYLE_INPUT,"Chatroom",string8,"Senden","Verlassen");
    }
    }
    return 1;
    }


    //Edit3: @Unter mir:
    Tjo,leider :S

    2 Mal editiert, zuletzt von Goldkiller ()

  • Zitat

    Maximaler Inputtext in Dialogen ist 192 Zeichen,es reicht also wenn du anstatt 256 192+1 machst.Für String8 solltest du denn jeweils sizeof(StringX) nehmen,da du ja bei String1 und String7 nicht die 256 bzw (192+1) Zeichen ausnutzt.
    Das Gleiche gilt auch für msg1-5


    Wetten dass er davon nix verstanden hat ? :P


    7/10

  • :O Stimmt, die Strings 2-6 sind völlig überflüssig, ich verbessere das mal.


    U.a.


    Zitat

    Wetten dass er davon nix verstanden hat ? :P

    da hast nur halb Recht, mit der Größe von 256 hab ich verstanden, dass dies zu Groß ist, doch warum es 192+1 ist, verstehe ich nicht



    Edit: achsoo jetz verstehe ich das 7*(192+1)+1
    Edit2: ich hab die Verbesserung von Goldkiller nun eingebaut

    2 Mal editiert, zuletzt von RG_ ()

  • Ich würde das System eher mit Chat-Führer machen.
    Wobei ein Spieler den Text als PlayerVariable speichert.
    So können dann mehrere Chats gleichzeitig geführt werden und die PlayerVariables können schließlich jederzeit gelöscht werden, weshalb wieder Speicher freigelegt wird.


    [table=2]
    [*]Punkte
    [*]Notiz
    [*]4 von 10
    [*]Sehr simples Chatsystem
    [/table]

  • Das ist doch logisch, wenn der Chat-Admin den Chat verlässt, dass jemand anderer aum Chat gewählt wird.
    Wenn aber keiner mehr da ist, dann wird der Chat gelöscht.

    ich hab es ein bischen anders umgesetzt, man fliegt nun aus dem Chat, sobald der Master nichtmehr online ist.
    Der Master kann nun auch Spieler aus dem Chat schmeißen


    Geplant ist noch: Einen Spieler aus einem Chat temporär verbannen