Level System Problem

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
  • Guten Tag brotfische,


    Ich arbeite grade an mein Level System.
    Derzeit will ich nur die Funktion das der Wert sich jede Minute um 1 erhöht.
    Den Timer habe ich bei OnPlayerSpawn aufgerufen: SetTimer("Payday", 1000*60, true); Dieser sollte 1 Minute enstsprechen wenn ich mich nicht irre.
    Nun wird im Public der PVarInt jede Minute um 1 erhöht.


    public Payday()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    SetPVarInt(i, "Payday", GetPVarInt(i, "Payday") + 1);
    SendClientMessage(i,Grün,"1 Minute vorbei");
    }
    return 1;
    }


    Ich habe als Test eine Message hineingescriptet aber die Message kommt nicht alle 60 Sekunden sondern unterschiedlich.
    Hat jemand eine Idee warum?


    Viele Grüße,
    James_Pablo

  • Kurze Erklärung des Unterschiedes von SetTimer und SetTimerEx. Der Unterschied von SetTimerEx zu SetTimer ist, dass man mit SetTimerEx dem public noch eine Variable mitgeben kann. Das bedeutet soviel wie, dass du mit SetTimerEx dem public "Payday" noch die playerid schicken kannst.


    Das würde dann so aussehen:
    SetTimerEx("Payday", 1000*60, true, i, playerid);


    public Payday(playerid)
    {
    SetPVarInt(playerid, "Payday", GetPVarInt(playerid, "Payday") + 1);
    SendClientMessage(playerid,Grün,"1 Minute vorbei");
    return 1;
    }


    So sollte es stimmen. Bin mir aber nicht ganz sicher.
    Kleiner Tipp von mir noch: Erstelle den Timer nicht unter OnPlayerRespawn, es kann nämlich sein das Spieler respawnen, auch wenn sie sich nicht gerade neu eingeloggt haben.
    Lass den Timer am besten erstellen, nachdem der Spieler sich eingeloggt hat.

  • Dann bekomme ich aber 2 Errors, siehe hier:


    :\Users\John_Jones\Desktop\Virtuelles-Leben\gamemodes\Selfmade.pwn(905) : error 017: undefined symbol "i"
    C:\Users\John_Jones\Desktop\Virtuelles-Leben\gamemodes\Selfmade.pwn(2073) : error 025: function heading differs from prototype


    Error Zeile 905 ist die Zeile vom Timer.
    Die Zeile 2073 ist diese Zeile: public Payday(playerid)

  • bei deinem forward payday
    zwichen () noch playerid :D