Beiträge von Kaliber

    Du Scherzkeks, wieso verwendest du den Code, wenn ich dir doch schon in meiner 1. Antwort erklärt habe, wieso da nichts angezeigt wird?!


    Wieso verwendest du dann weiter deinen Code und wunderst dich, wieso es weiterhin nicht geht?


    Nimm doch meinen Code?!

    Wenn der String von dem ersten Charakter leer ist, wird das sogenannte NULL-Byte zurückgegeben.


    Sobald im String das NULL-Byte steht, wird jede lese Operation darauf abgebrochen.


    Beispiel kann dein string sein "\0Hallo" dann würdest du nicht Hallo lesen können, da beim NULL Byte schon abgebrochen wird.


    Folglich musst du prüfen ob das im String vorhanden ist :D


    aber dachte man kann den chat closen.

    Ja theoretisch ginge das, wenn du ein einfaches Include erstellst.


    Hier habe das mal für dich gemacht:



    Funktionieren tut das ganz einfach in deinem Fall:



    C
    //Wenn er in den TV-Mode geht:
    ClearChat(playerid); //cleart den chat
    HideChatForPlayer(playerid); //sorgt dafür, dass keine weiteren Nachrichten mehr an den Spieler gesendet werden können
    
    
    //Wenn er wieder raus geht:
    ShowChatForPlayer(playerid); //jetzt können wieder Nachrichten an den Spieler gesendet werden


    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------




    Allerdings würde er Informationen verlieren, falls er angeschrieben worden wäre in dieser Zeit.


    Dafür hatte ich mal das hier entwickelt: Nachrichten Cache


    Wenn du die Nachrichten zusätzlich dem Spieler erhalten magst, kannst du das integrieren.


    Also du musst das nachrichten-cache Include inkludieren und dann, das nachrichten-control Include so abändern:





    Nutzen tust du das dann einfach so:






    Hahaha, nur für den Fall der Fälle hahaha :D

    HideChatForPlayer oder wie?

    Eine native Funktion gibt es leider dafür nicht, aber sowas könnte man skripten.


    for(new i; i<50; i++) SendClientMessage(playerid,-1," ");


    Das Beispielsweise cleart den chat für den Spieler.
    Anschließend müsstest du dafür sorgen, dass der Spieler keine Nachrichten mehr bekommt über OnPlayerText. Ja ist etwas aufwändiger, aber ansonsten gibt es da keine Möglichkeit oder du sagst ihm er soll 2x F7 drücken hahaha :D

    Hab es versucht mit Textdraw Filterscript zu erstellen aber ich habe eine ganz alte Version und das hat nicht ganz geklappt.

    Das ist eine ziemlich schlechte & faule Ausrede...schließlich könntest du einfach eine neue Version downloaden und es nochmal probieren ^^


    Ansich nicht schlecht und in Zukunft wohl eine der besten Optionen.

    Naja...


    Da finde ich die Idee von Google viel ambitionierter und eleganter:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Wenn die glauben Fleisch wächst auf Bäumen, dann wurden die mit Lügen erzogen.

    Meins schon :lach:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    was ist hier los

    Ja wie schon erwähnt ist dies ein Skript Fehler.


    Nun bräuchten wir Code...so von OnPlayerConnect, OnPlayerRequestClass und eben da wo du den Spieler Einloggen willst usw.


    Oder du kannst auch auf eigene Faust ermitteln und mal überall prints verteilen und schauen, wie weit du kommst bzw wo der Code hängen bleibt :)


    Wenn du das gezielt machst, kannst du genau feststellen, an welcher Zeile es hängen bleibt ;)

    Meine fresse was juckt mich das wenn jemand vergewaltigt wird und getötet wird.

    In meinen Augen haben Leute die sowas sagen Sozial Strafen zu erledigen, damit sie mal etwas Empathie lernen.


    Ich bekomm richtig das Kotzen, wenn ich Menschen reden höre, die so 0 Empathie haben, das ist in meinen Augen der Untergang der Gesellschaft.

    Durchgeht er ja jedes mal das Server Limit von 500 Usern. Wie geht es perfomanter?

    Am besten wäre es einfach, sowas zu machen, das würde beide deiner Probleme auf einen Schlag lösen:



    C
    #undef MAX_PLAYERS
    #define MAX_PLAYERS 25

    Dann würdest du eben nur 25 Einträge durchgehen hahaha :D


    Aber schon richtig foreach wäre am besten:


    http://forum.sa-mp.com/showthread.php?t=570868


    Gehen würde auch sowas wie:


    for(new i=GetPlayerPoolSize(); i!=-1; i--)


    Das beispielsweise beginnt ab der höchsten spielerid auf dem Server und nicht z.B. ab 500 :)


    Also zur Verdeutlichung:


    MAX_PLAYERS = Ein fester (konstanter) Wert, den du für Arrays nutzen kannst. (Da dort nur feste Werte verwendet werden können, also Dinge die sich nicht ändern. Die müssen von vorne herein fest definiert sein.) Habe oben ja gezeigt, wie du das anpassen kannst.


    GetMaxPlayers = Diese Funktion liest dir aus der server.cfg den Wert aus. Ist schlecht und kann nicht für Arrays verwendet werden, da es eine Funktion ist und keine konstante! Also am Besten einfach MAX_PLAYERS den Wert von der server.cfg mittels dem Makro trick oben anpassen.


    GetPlayerPoolSize = Gibt die höchste Spielerid auf dem Server wieder. Halt gut geeignet für Loops, aber foreach ist besser, da bei foreach keine Lücken zwischen den IDs entstehen. Quasi wenn ID 4 die höchste Spielerid ist, aber nur ID 1 noch online. Dann beginnt die Loop trotzdem von 4 runter zu zählen. Und bei foreach hättest du nur 2 anstatt 5 (4-0) Einträge.




    Zu deinem 2. Punkt kann man nicht viel sagen.
    Es gibt Memory Editing Plugins, so dass man Variablen dynamisch allozieren kann.


    Einfacher wäre der spezielle Gebrauch von PVars, da du diesen Speicher wieder freigeben kannst.


    Oder eben gezielte Anpassung des Makros von MAX_PLAYERS :)

    Lade mal crashdetect und schaue in deinen server_log.


    Hast du auch alle Ordner erstellt in den scriptfiles und die ganzen Libs? xD

    Also du bist am Boden und bist quasi gefreezt?!


    Und du kannst auch nicht springen?


    Aber du kannst die Kamera bewegen?


    Kannst du uns mal dein Skript zeigen? :D