Levelsystem nach Spielzeit

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
  • Moin leutzz..


    Wie erstelle ich ein Levelsystem, wenn ein Spieler 10 Stunden gespielt aht bekommt er automatisch Level 2.
    Mit 15 Stunde Level 3 und so weiter...
    Wäre nett wenn mir einer helfen könnte.
    Gruß
    Denninho
    Aja ich habe nen Selfmade script, also kein GF :D

  • Du könnest eine von mir ausgedachte Version machen.


    Du brauchst folgende Funktion:
    stock mktime(hour,minute,second,day,month,year)
    {
    new timestamp2 = second + (minute * 60) + (hour * 3600), days_of_month[12], days_this_year = day;
    if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) days_of_month = {31,29,31,30,31,30,31,31,30,31,30,31};
    else days_of_month = {31,28,31,30,31,30,31,31,30,31,30,31};
    if(month > 1) for(new i=0; i<month-1;i++) days_this_year += days_of_month[i];
    timestamp2 += days_this_year * 86400;
    for(new j=1970;j<year;j++) {
    timestamp2 += 31536000;
    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) timestamp2 += 86400;
    }
    return timestamp2;
    }


    und eine Variable bei "OnPlayerConnect":
    new year, month, day, hr, mi, se;
    gettime(hr, mi, se);
    getdate(year, month, day);
    SetPVarInt(playerid, "loginStart", mktime(hr, mi, sc, day, month, year));


    Jetzt nur noch überall, wo das Level abgerufen ist (am besten durch eine Funktion ersetzen) :
    stock getMoney(playerid)
    {
    if(!IsPlayerOnline(playerid)) return 0;
    updateLevel(playerid);
    return PlayerInfo[playerid][pMoney]; // Anpassen!!!
    }


    Letzendlich brauchst du noch die "updateLevel" Funktion:
    stock updateLevel(playerid)
    {
    new play_minutes, day, mon, yea, hr, mi, sc;
    gettime(hr, mi, sc);
    getdate(yea, mon, day);
    play_minutes = mktime(hr, mi, sc, day, mon, yea) - GetPVarInt(playerid, "loginStart");
    // Hier das Level berechnen (play_minutes = die gespielten minuten bis jetzt)
    // Auch die bereits gespielten Minuten addieren ;-)
    // PlayerInfo[playerid][pLevel] = ....;
    return 1;
    }