Abfragen wie lange jemand im Job war

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
  • Hi, ich wollte mal fragen wie man prüfen kann wie lange jemand im Job war... also bei mir geht man so in Dienst :
    if(pickupid == mgmedicdienst)
    {
    new pnamez[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pnamez,sizeof pnamez);
    format(accFormat,sizeof accFormat,"%s.datei",pnamez);
    if(dini_Int(accFormat, "Job") != 1)return SendClientMessage(playerid,rot,"Du arbeitest nicht beim SAMD!");
    if(medicdienst[playerid] == 0)
    {
    new pNamey [MAX_PLAYER_NAME],
    stringy [128];
    GetPlayerName(playerid, pNamey, sizeof(pNamey)) ;
    SendClientMessageToAll(gruen,"__|Meldung|__");
    format(stringy, sizeof(stringy), "%s hat den Dienst als Artzt begonnen!", pNamey) ;
    SendClientMessageToAll(gelb,stringy);
    dienst[playerid] = 1;
    medicdienst[playerid] = 1;
    SetPlayerSkin(playerid,275);
    SetPlayerColor(playerid,gruen);
    medicpayday[playerid] = SetTimerEx("medicpd1",3000,1,"i",playerid); // Ist jetz nur für Test's gewesehn obs funkt ^^
    }
    else if(medicdienst[playerid] == 1)
    {
    new pNamey [MAX_PLAYER_NAME],
    stringy [128];
    GetPlayerName(playerid, pNamey, sizeof(pNamey)) ;
    SendClientMessageToAll(gruen,"__|Meldung|__");
    format(stringy, sizeof(stringy), "%s hat den Dienst als Artzt beendet!", pNamey) ;
    SendClientMessageToAll(gelb,stringy);
    dienst[playerid] = 0;
    medicdienst[playerid] = 0;
    SetPlayerSkin(playerid,dini_Int(accFormat,"skin"));
    SetPlayerColor(playerid,grau);
    KillTimer(medicpayday[playerid]);
    }
    return 0;
    }
    Momentaner "Payday" Timer^^
    public medicpd1(playerid)
    {
    GivePlayerMoney(playerid, 400);
    return 1;
    }
    und jetz würd ich halt gerne haben das man halt eine Art "Minuten-Lohn" kriegt, also das am Ende wenn man ausm Dient geht : Minuten * Lohn gerechnet wird.
    kann mir jemand helfen`? :D

  • public medicpd1(playerid)
    {
    GivePlayerMoney(playerid, 400);
    SetPVarInt(playerid, "Arbeitszeit", GetPVarInt(playerid, "Arbeitszeit)+1);
    return 1;
    }


    else if(medicdienst[playerid] == 1)
    {
    new pNamey [MAX_PLAYER_NAME],
    stringy [128],
    money = GetPVarInt(playerid, "Arbeitszeit") * 400;
    GetPlayerName(playerid, pNamey, sizeof(pNamey)) ;
    SendClientMessageToAll(gruen,"__|Meldung|__");
    format(stringy, sizeof(stringy), "%s hat den Dienst als Artzt beendet!", pNamey) ;
    SendClientMessageToAll(gelb,stringy);
    dienst[playerid] = 0;
    GivePlayerMoney(playerid, money);
    medicdienst[playerid] = 0;
    SetPlayerSkin(playerid,dini_Int(accFormat,"skin"));
    SetPlayerColor(playerid,grau);
    KillTimer(medicpayday[playerid]);
    }

  • Du rechnest eine Variable in deinem "medicpayday" immer hoch, das nehme ich an sind die Minutenanzahl.
    In dieser Zeile:
    money = GetPVarInt(playerid, "Arbeitszeit") * 400;
    Wird das ganze dann gerechnet.

  • Nur so als zweite Lösung, man könnte den unix timestamp am entry date rechnen und dann den unix timestamp wenn man beendet.


    Dass dann timestamp_finish - timestamp_entry = Sekunden die im Dienst waren.


    Das wäre ohne Timer und ressourcensparender ;)