Beiträge von Kaliber

    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:

    @Kaliber sobald man bei einem Spieler auf "Hinzufügen" / "Abziehen" klickt, obwohl kein Betrag eingegeben wurde, steht da "NaNM" und man kann diesem Spieler nichts mehr Abziehen sowie Hinzufügen.

    Joa, da parseInt daraus nicht 0, sondern NaN macht...


    Kannst ja die Abfrage ändern von if(sum <= 0) zu if(isNaN(sum)).


    Frage: Ist es nicht sinnlos, beim Input negativ Beträge zu erlauben, wenn es bereits einen "Abziehen" Button gibt?

    Ist es nicht sinnlos mir diese Fragen zu stellen, wobei du das System nicht einmal nutzt?


    Ist doch Jacke wie Hose...

    Hoffe ich habe das richtig verstanden:


    Also in der Mitte haste die Kontrolle.


    Du gibst da einen Betrag ein und diesen kannst du dann mit der Tabelle auf der Linken Seite hinzufügen oder abziehen.


    Oder eben auf der Rechten Seite, je nachdem wie du das magst ^^


    Falls dich noch was stört oder nicht funzt, kannste gerne hier nochmal schreiben :)


    Hoffe es taugt was xD


    //Edit: Die Namen kannst du im Quellcode ändern.


    Oben steht ein Array und dort einfach direkt reinschreiben, habe es extra markiert :)


    //Edit2: Für alle, die es nicht downloaden wollen, und sich nur mal anschauen wollen hier ein Screen:


    //Edit3: Für Freiparken, einfach noch einen User hinzufügen und "Freiparken" nennen xD


    Paar Fragen:


    1. Sollen die Daten gespeichert werden? Im Sinne von, wenn man das HTML-File schließt, sollen dann die Daten weiterhin verfügbar sein?


    2. Was soll das Feld in der Mitte? Das sieht aus wie ein Taschenrechner, aber ist dieser Relevant? Weil..eh den hat man ja mal schnell zur Hand...


    3. Ist das für mehrere oder hast nur du das offen und ihr schaut alle drauf?

    Das Problem ist ja dass ich es in dem Editor so mit dem Infernus erstelle und er dann aber das nicht richtig exportiert sondern mit CJ Skin

    Wir haben es begriffen, nachdem du es 3x geschrieben hast, da gibt es wohl einen Fehler im Filterscript, dass kann ja gut sein.


    Aber du kannst doch einfach die Funktion die schon gepostet wurde einfügen und da die id 411 für den Infernus verwenden und fertig.

    Da fehlt der check, ob der Spieler auch wirklich online ist..


    Ja, da versuchst du auf ein Array zuzugreifen und z.B. pID hat den Wert von INVALID_PLAYER_ID.


    check ob pID gleich INVALID_PLAYER_ID und brich das ob oder setz bestimmte Dinge nicht.
    Wir müssten halt mal den Code sehen xD

    Also aufgrund hoher Anfragen habe ich nun noch 2 Singleplayer Missionen veröffentlicht, die kann man aber erst spielen, wenn man den Singleplayer an sich durchgespielt hat! :)


    Bevor es weitere Updates gibt, wird es erstmal ein wenig dauern :)


    Also schaut euch alles in Ruhe an, bleibt gelassen & viel Spaß bei den Missionen! :thumbup: