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`?
Abfragen wie lange jemand im Job war
- Aarys
- Geschlossen
- Erledigt
-
-
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]);
} -
und wo wird da jetzt "geprüft" ob der Spieler eine Minute im Dienst war?
-
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. -
ne die gibts ja nichtmals die variable für die minuten deswegen frag ich ja wie das geht
-
Du stellst beim Timer einfach 60000 ein , was 1 Minute ist:
60000 = 1 Min (60.000 Milisekunden)
120000 = 2 Min ...Fertig und falls der Spieler aus dem Dienst geht Beende den Timer! vergess das nicht
-
Hmmm... hab jetz oben im Script :
new Arbeitszeit[MAX_PLAYERS];
eingefügt und ich kriege ein Warning das die Variable nicht genutzt wird obwohl ich alles so wie Vincent geschrieben hat gemacht habe -
ne bei vincents lösung brauchste das nicht weils per pvarint geht^^
-
kannst dich ja ma die tage bei mir melden ich helfe dir gern schreib mir ne pn
mfg
-
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
-
breadfish.de
Hat das Thema geschlossen.