OnPlayerSpawn

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
  • Hallo, habe folgendes Problem.
    Habe bei


    public OnPlayerSpawn(playerid)


    Folgendes stehen:



    if(SpielerInfo[playerid][pTutorial] == 0)
    {
    TutorialNew(playerid);
    return 1;
    }


    So nur ist das Problem das das Stock zwei mal beim Spawnen wiedergegeben wird aber nur beim Spawnen wenn man sich einloggt.



    stock TutorialNew(playerid)
    {
    SetPlayerPos(playerid,-1888.7814,-2758.8206,249.7387);
    SetPlayerCameraPos(playerid,-1888.7814,-2758.8206,249.7387);
    SetPlayerCameraLookAt(playerid,-1888.8400,-2764.6589,249.7387);
    SendClientMessage(playerid,GOLD,"Willkommen im Tutorial von Fort Carson Roleplay.");
    SendClientMessage(playerid,GOLD,"Ihr werdet nun auf RP verständniss, wissen usw getestet.");
    SendClientMessage(playerid,GRAU,"Tipp: Um einen Admin wärend des Tutorials zu verständigen nutze /a [Text]");
    return 1;
    }


  • Du könntest es über eine Zeitabfrage lösen:
    stock TutorialNew(playerid)
    {
    static lastCalled[MAX_PLAYERS];
    if(lastCalled[playerid]+3 > gettime()) return 1;
    lastCalled[playerid] = gettime();
    SetPlayerPos(playerid,-1888.7814,-2758.8206,249.7387);
    SetPlayerCameraPos(playerid,-1888.7814,-2758.8206,249.7387);
    SetPlayerCameraLookAt(playerid,-1888.8400,-2764.6589,249.7387);
    SendClientMessage(playerid,GOLD,"Willkommen im Tutorial von Fort Carson Roleplay.");
    SendClientMessage(playerid,GOLD,"Ihr werdet nun auf RP verständniss, wissen usw getestet.");
    SendClientMessage(playerid,GRAU,"Tipp: Um einen Admin wärend des Tutorials zu verständigen nutze /a [Text]");
    return 1;
    }



  • Könntest du bitte das ganze einmal erleutern.

  • Klar.


    //Erstellt eine statische Variable (sprich die bleibt erhalten)
    static lastCalled[MAX_PLAYERS];


    //Fragt ab, ob der Spieler in den letzten 3 Sekunden OnPlayerSpawn bzw. die Funktion aufgerufen hat.
    //Falls ja, dann returnt er ohne etwas zu machen.
    if(lastCalled[playerid]+3 > gettime()) return 1;


    //Falls nicht, dann schreibt er den jetzigen Zeitpunk in die Variable und zeigt das Zeug an.
    lastCalled[playerid] = gettime();