Nachrichten Cache

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Nachrichten Cache

      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:


      C-Quellcode

      1. public OnPlayerText(playerid,text[])
      2. {
      3. new string[145],name[MAX_PLAYER_NAME];
      4. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
      5. format(string,sizeof(string),"%s sagt: %s",name,text);
      6. for(new i=GetPlayerPoolSize(); i!=-1; i--)
      7. {
      8. if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
      9. if(isCache(i))
      10. {
      11. appendCache(i,grey,string);
      12. }
      13. else
      14. {
      15. SCM(i,grey,string);
      16. }
      17. }
      18. return 0;
      19. }
      Alles anzeigen
      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

      Schlusswort
      Hoffe für den Ein oder Anderen, ist das eine kleine Hilfe :)

      Zusatz-Info für Skripter:
      Spoiler anzeigen

      Falls ihr euch fragt, wieso ich 2 Variablen verwende, einfach weil diese schnell erreichbar sein müssen und oft abgefragt werden. Das geht schneller, als mit pVars.
      Falls es euch stört, ihr könnt das System natürlich nach Belieben ändern ;)


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

      Dieser Beitrag wurde bereits 1 mal 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

      CEO & Art Director
      H: fuenf-vier.de
      M: hallo [at] fuenf-vier [dot] de
      SOCIAL: @fuenfvier54


      maddin schrieb:

      die einen gehen auf pornhub, ich nutz halt die modtools