Online zeit wie an besten berechnen ?

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 Morgen ich habe so eine frage an euch undswar wie kann ich das machen das der mir in stats anzeigt wie viel minunten ich schon da war ?


    hier anfangs code :D


    SetPVarInt(playerid, "Spielzeit", GetPVarInt(playerid, "Spielzeit")+1);
    so hab ich jetzt bei payday aber dann sagt er gleich ich war eine stunde aufnserver was nicht stimmt ich will es genau haben zb mit onplayerupdate

  • mach es am besten mit einem Timer der jede Minute aufgerufen wird.
    Wenn der Timer sich aufruft einfach in die PVar immer eine minute + drauf rechnen dann haste minütlich aktualisierte zeiten
    OnPlayerUpdate würde zuviel unnötige ressourcen ziehen, würd ich dir nicht empfehlen da einzubauen.

    >> sPa.M << go, go,Bann me, Bann me

  • Minute 600000 oder ? ^^ also für timer berechnung

    Einmal editiert, zuletzt von DJSatrox () aus folgendem Grund: edit

  • wie müsste ich den timer machen ?
    da ich playerid brauche


    forward Onlinetimer();
    public Onlinetimer()
    {
    for(new playerid = 0; playerid<MAX_PLAYERS; playerid++)
    {
    SetPVarInt(playerid, "Spielzeit", GetPVarInt(playerid, "Spielzeit")+1);
    }
    return 1;
    }
    habs jetzt mal so

  • public OnPlayerConnect(playerid)
    {
    SetTimerEx("OnlineZeit",60000,true,"u",playerid); // onlinezeit=timer name / 60000=millisekunden / true=timer wiederholt sich / "u"=übergebe eine user variable / variable die übergeben werden soll
    }

    >> sPa.M << go, go,Bann me, Bann me

  • Hab es jetzt so
    bei onplayerconnect
    SetTimerEx("Onlinetimer",60000,true,"u",playerid);

    forward Onlinetimer(playerid);
    public Onlinetimer(playerid)
    {
    SetPVarInt(playerid, "Spielzeit", GetPVarInt(playerid, "Spielzeit")+1);
    return 1;
    }

  • public OnPlayerConnect(playerid)
    {
    SetTimerEx("OnlineZeit",1000*60,1,"i",playerid); //Timer starten
    return 1;
    }


    forward OnlineZeit(playerid); //Timer forwarden
    public OnlineZeit(playerid) //erstellen des Timer Callbacks
    {
    SetPVarInt(playerid, "Spielzeit", GetPVarInt(playerid, "Spielzeit")+1)//Wenn Timer 1min weg hat setzen wie es +1
    return 1;
    }

  • danke dir aber die lösung von Grek ist die beste geht so wie ich es haben will


    SetTimerEx("Onlinetimer",60000,true,"u",playerid);




    forward Onlinetimer(playerid);
    public Onlinetimer(playerid)
    {
    SetPVarInt(playerid, "Spielzeit", GetPVarInt(playerid, "Spielzeit")+1);
    return 1;
    }

  • Hier eine Erklärung wie man sowas eigentlich richtig machen sollte:
    http://wiki.sa-mp.com/wiki/GetTickCount


    Für sowas braucht man keine Timer, man ruft mit GetTickCount() die aktuelle OnlineZeit des Servers ab(steigt um 1000 pro Sekunde, also Millisekunden)


    In OnPlayerConnect die Zeit zwischenspeichern und beim Abfragen die Aktuelle Zeit minus die gespeicherte
    new OnlineZeit[MAX_PLAYERS];
    public OnPlayerConnect(playerid)
    {
    OnlineZeit[playerid] = GetTickCount();
    return 1;
    }


    GetPlayerOnlineTimeInMinutes(playerid)
    {
    new time=GetTickCount()-OnlineZeit[playerid]; // 1000 = 1 Sekunde, 60000 = 1 Minute
    return floatround( floatdiv(time, 60000.0) );
    }

  • funktionieren tut aber beides, jeder hat seine eigene methode. Nun kann DJ sich für 1 von 2 möglichkeiten entscheiden ;)
    Ach und danke D0erf|er jetzt habe auch ich was dazu gelernt ;)

    >> sPa.M << go, go,Bann me, Bann me

  • Diese Funktion kannte ich auch sie ist aber aufwendiger die von Grek ist einfacher da man diregt alles in ein Public anschließen kann danke euch für eure hilfe


    //close

  • udn wo aoll ich da meins abrufen also
    hier
    (code)
    new OnlineZeit[MAX_PLAYERS];
    public OnPlayerConnect(playerid)
    {
    OnlineZeit[playerid] = GetTickCount();
    return 1;
    }


    GetPlayerOnlineTimeInMinutes(playerid)
    {
    new time=GetTickCount()-OnlineZeit[playerid]; // 1000 = 1 Sekunde, 60000 = 1 Minute
    return floatround( floatdiv(time, 60000.0) );
    }
    wo muss dann das hin ?
    SetPVarInt(playerid, "Spielzeit", GetPVarInt(playerid, "Spielzeit")+1);

  • also so könnte ich es dann so abfragen ?
    ich will ja das die zeit gespeicherd wird..



    format(string,sizeof(string),"Spielzeit: %i Minute(n)"),GetPlayerOnlineTimeInMinutes(playerid));
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"{FF0000}Meine Stats",string, "_","_");