Nachrichten Cache

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
  • Hallöle,


    habe gerade was auf meiner Platte gefunden, was für den Ein oder Anderen eventuell ganz hilfreich sein kann.


    In der heutigen SA:MP Zeit, wird ja viel auf so interaktives reden gelegt wo man manchmal in Squenzen landet, wo es einem so vorkommt als ob der Bot/Actor mit einem redet.


    Blöd nur, wenn es einen O-Chat (Globalen Chat) gibt (oder Neulings Chat) oder what ever, was diese Sequenz quasi kaputt macht.


    Viele Server denken sich hier, ok dann senden wir dem Spieler einfach keine Nachrichten.


    Gut, das geht auch in vielen Fällen gut, nur ist es so, das zum Beispiel gerade wenn der User im Tutorial ist oder so, viele Spieler ihn grüßen oder ähnliches mit ihm schreiben, ohne zu wissen, dass er die Nachrichten nie erhalten wird.


    Um diesem Problem entgegen zu wirken hatte ich mal diese Include geschrieben.


    Da werden alle Nachrichten gespeichert, die der User nicht erhalten hat und nach der Sequenz wiedergegeben.
    So gibt es keinen Informationsverlust und der User hat nichts verpasst und eine schöne Sequenz gehabt :)


    Konfiguration
    Nun, hier gibt es nicht viel zu zu sagen. Einfach unter OnPlayerConnect die Funktion initCache(playerid); aufrufen, für den Reset.
    Falls sich hier Leute fragen, wieso ich das nicht gehookt habe lautet die Antwort einfach, weil ich keinen anderen Includes dazwischen funken will.
    Kann natürlich bei belieben verändert werden.


    Nutzung
    Hier mal ein "typischer" Auszug aus OnPlayerText:



    Also schauen wir uns das ganz kurz an:


    Wenn der Spieler im "Cache-Modus" ist, nichts anderes prüft die Funktion isCache, dann werden die Nachrichten dem Cache hinzugefügt und dem Spieler in diesem Moment nicht gesendet. Andernfalls, wird natürlich einfach die Nachricht gesendet.


    In den "Cache-Modus" kann der Spieler durch die Funktion startCache(playerid) gesetzt werden.


    Am Ende, wenn er aus der Sequenz (z.B. dem Tutorial) raus ist, einfach die Funktion: endCache(playerid) nutzen, dann wird alles gespeicherte gelöscht und dem User werden alle verpassten Nachrichten gesendet :)


    Download
    Source-Code: PasteBin
    Direkter-Download: MediaFire


    [size=12]Schlusswort
    Hoffe für den Ein oder Anderen, ist das eine kleine Hilfe :)


    Zusatz-Info für Skripter:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber () aus folgendem Grund: Spoiler hat gespackt

  • Hättest du das 1-2 Jahre früher released, hätte ich das definitiv gut gebrauchen können! :D
    Aber so an sich: Super Funktion, also für Spielsequenzen oder diverse Aktionen echt nützlich. Top!


    Edit:
    Der Code sieht auch sauber aus. Aber ist man ja bei dir gewöhnt xd