Chat verkleinern

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
  • Servus Leute, ist es möglich den Spielchat von SAMP zu verschieben, zu verkleinern oder irgendwie zu bearbeiten?
    Die erste Zeile vom Chat stört mich gerade ein wenig und ich wollte mal wissen ob man diese zB entfernen könnte.


    //Edit
    Oder ist es möglich es neu zu scripten bzw. die erste Zeile zu Anfang immer zu clearen und den Rest da lassen?

    KleineHilfe 2.0

  • Ich meine ihn global zu verändern auch wenn man nur die oberste Zeile weg nimmt. Evt das bei jeder Chat eingabe alles gecleart wird bis auf die letzten 5 Sätze o.ä


    //Edit Oder kann man den Chat eig. mit Textdraws überdecken?

    KleineHilfe 2.0

  • Eine Box bleibt im Hintergrund, wie kriege ich diese in den Vordergrund, einfach unter OnPlayerText die Box ein hauen?


    Seit wann kann man die Position des Chats verändern?^^


    achso, dachte die Box deckt den Chat ab^^. Die Position des Chats kann man nicht verändern. Aber du kannst dir einen eigenen Chat basteln.
    aber da die Box den "Normalen" chat nicht überdeckt, ist es ja schon hinfällig ;)

  • es gibt dafür nen speziellen Befehl, aber der ist mir im Moment leider entgangen.
    Am besten google mal, es gibt dafür 100% nen Befehl :)

    Du meinst /pagesize [1-10] oder ähnliches?
    Das ändert zwar die Zeilen-Menge des Chats für den Spieler selbst,
    löst aber nicht das Problem.
    Verzeihung, wenn ich nicht das gemeint hab, was du meintest. ^^

  • Ich hoffe jetzt nicht das du vom GF /clearchat oder von den F-Tasten redest.
    Wenn doch ließ dir bitte noch mal alles genau durch was hier geschrieben wurde.


    mfg :)


    //Edit
    Was ist mit Pagesize Seitengröße gemeint?

    KleineHilfe 2.0

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Würde mich mal bitte einer aufklären was dies bewirkt? ^^

    /pagesize bewirkt die menge der Zeilen für den Spieler, der den Befehl eingibt.
    Sprich: Generell sind es nur ca. 6 Zeilen Chat-Text die dir Standartmäßig angezeigt werden.
    Wenn du den Befehl eingibst, sprich /pagesize 10, dann hast du statt 6 Zeilen, 10.

  • Du könntest immer, wenn SendClientMessage aufgerufen wird (am besten mit Hooking arbeiten), die zu sendende Nachricht in ein Array speichern.
    Dieses Array sollte dann die letzten Nachrichten enthalten, die der Spieler erhalten hat (sollten so hundert Stück sein).
    Nach jeder Nachricht löschst du den Chat beim Spieler und lässt die gespeicherten Nachrichten erneut ausgeben, sendest aber jede 10. Zeile
    (es würde für dein Vorhaben aber auch einfach die 10. letzte Zeile reichen) anstatt der eigentlichen Nachricht einfach eine leere Zeile.
    Dann würde es so aussehen, dass der Chat "verkleinert" ist, zumindest solange, bis der Spieler auf die Idee kommt zu scrollen.
    Mit diesem Trick könnte man, wenn auch nicht sehr elegant, dein Problem lösen.
    Man könnte dies auch mit einem Plugin umgehen, so ist es jedoch einfacher zu realisieren.




    BlackLegend

  • Daran habe ich auch schon gedacht, sie wieder zu geben und die oberste Zeile leer lassen. Dies würde ich auch am liebsten machen aber ich weiß nicht wie ich das umsetzen könnte.
    Scrollen ist komplett irrelevant jetzt. Mir gehts nur darum das die oberste Zeile weg ist.

    KleineHilfe 2.0

  • ICh möchte noch kurz anmerken, dass wenn jemand /timestamp aktiviert hat, alle Chaterläufe die gleiche Uhrzeit haben, da sie ja erneut gesendet werden.
    Davon mal abgesehen



    new chatkeller[MAX_PLAYERS][100][128];


    Dann müstest du entweder SendClientMessage und SendClientMessageToAll umschreiben oder im Script alle EInträge der beiden natives durch folgende natives ersetzen:



    SendModClientMessage(playerid,color,text[128])
    {
    // Der Text wird in den Keller geworfen
    for(new i = 0;i<100;i++)
    {
    if(strlen(chatkeller[playerid][i]) == 0)
    {
    strcat(chatkeller[playerid][i],text);
    break;
    }
    }
    // Sollte dieser Code ausgeführt werden, bedeutet dass, das der Keller voll ist. Wir droppen ale das unterste Element und rücken alle folgenden Elemente auf
    for(new i = 0;i<100;i++)
    {
    if(i = 0) chatkeller[playerid][i] = "";
    chatkeller[playerid][i-1] = chatkeller[playerid][i];
    }
    chatkeller[playerid][99] = "";
    strcat(chatkeller[playerid][99],text);


    // Jetzt löschen wir den Chat des Spielers
    for(new i = 0;i<100;i++)
    {
    SendClientMessage(playerid,-1,"");
    }
    // Jetzt geben wir den Chat des Spielers wieder aus (ausgehend von 10 Zeilen pro Seite)
    new count = 0;
    for(new i = 0;i<100;i++)
    {
    if(count == 9) // 9 Zeilen wurden bereits gesendet
    {
    SendClientMessage(playerid,-1,""); // Die erforderte Leerzeile
    SendClientMessage(playerid-1,chatkeller[playerid][i];
    count = 1;
    }
    else
    {
    SendClientMessage(playerid-1,chatkeller[playerid][i];
    count ++;
    }
    }
    }


    So gehts dann auch mit SendClientMessageToAll


    Hinweis: Die Farbe wird hier nicht mit gespeichert. Das kann man aber durch ein weiteres Array oder durch eine weitere Dimension im alten Array realisieren.
    Hinweis: Mir ist gerade aufgefallen, dass man den Array nach FIFO und nicht nach LIFO ausgeben muss. Ich bin aber jetzt zu faul überall den variablenNamen zu ändern.
    Hinweis: Das ganze ist keine gute Lösung !, dann je nachdem wie viele Nachrichten gespeichert sind, funktionierts wieder nicht :D