TimeInterval Function

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öchen,


    wie kann ich nun via JavaScript eine Funktion benutzen, um alle X Sekunden ein Event aufzurufen?


    C
    mp.events.add("playerAutoSave", (player) => {
        player.loggedInAs = "";
        gm.mysql.handle.query("UPDATE `account` SET money = ?, posX = ?, posY = ?, posZ = ? WHERE `username` = ?", [player.money, player.position.x, player.position.y, player.position.z, player.name], function(err,res){
            if(!err){
                console.log(`Account saved: ${player.name}`)
            } else (
                console.log("ERROR: " + err)
            )
        });
    });


    Sprich alle 8 Sekunden etwa!

  • In meiner events.js


  • Jetzt addest du alle 8 Sekunden das Event "playerQuit".


    Das willst du ja nicht, du willst ja den Spieler speichern oder?


    Die Lambda Notation bringt dich glaube ich etwas durcheinander.


    Aber (player) => ist eigentlich nichts anderes als:


    function (player) {


    Und nur die, willst du im Interval glaube ich aufrufen.

    ast2ufdyxkb1.png


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

  • Also meinst du so?


  • Nein...


    Also schau mal, du lässt das so:


    JavaScript
    mp.events.add("playerAutoSave", (player) => {
        player.loggedInAs = "";
        gm.mysql.handle.query("UPDATE `account` SET money = ?, posX = ?, posY = ?, posZ = ? WHERE `username` = ?", [player.money, player.position.x, player.position.y, player.position.z, player.name], function(err,res){
            if(!err){
                console.log(`Account saved: ${player.name}`)
            } else (
                console.log("ERROR: " + err)
            )
        });
    });

    Und dann machst du sowas:


    setInterval((player) => mp.trigger('playerAutoSave', player), 8000, player);


    Du musst das ja dann für den Spieler aufrufen.


    Hab aber noch nie was für GTA V programmiert, ist jetzt reine Code-Logik.

    ast2ufdyxkb1.png


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

  • Asoooo jetzt kapier ich ....


    Aber dein Code funktioniert nicht :D


    Code
    Loading packages
            "five-life" loaded
    Error: ReferenceError: player is not defined at Object.<anonymous> (C:\RAGEMP\server-files\packages\five-life\events.js:83:69)
    
    
    setInterval((player) => mp.trigger('playerAutoSave', player), 8000, player);
  • Aber dein Code funktioniert nicht

    Doch er funktioniert aber player ist nicht definiert.


    setInterval((player) => mp.trigger('playerAutoSave', player), 8000, HIERMUSS_PLAYERID_REIN);


    Da muss halt eine Spielerid rein.


    Das heißt du kannst Beispielsweise setInterval unter OnPlayerConnect (bzw dem GTA V äquivalent) packen und dann für den Spieler laufen lassen und unter OnPlayerDisconnect clearInterval nutzen um den Timer wieder zu löschen.


    Oder du loopst durch alle Spieler.


    Weiß ja nicht genau, was du vor hast ^^


    Natürlich kannst du aber das nicht irgendwo random hinpacken, da dann player nicht definiert ist.

    ast2ufdyxkb1.png


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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wäre es bei meiner anderen Methode zwar auch nicht, aber dann schreib es so:


    PS: Jetzt solltest du es außerhalb von einer Funktion schreiben, ansonsten würde es immer und immer wieder aufgerufen werden:


    JavaScript
    setInterval(function() {
        mp.players.forEach(function(player){
            mp.trigger('playerAutoSave', player);
        });
    }, 8000);

    ast2ufdyxkb1.png


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