So sicher fragt ihr euch jetzt was ich damit meine, ich meine damit das jeder Spieler seinen Payday bekommt wenn er 60 Minuten / oder angepasst voll hat.So was wir als erstes Brauchen ist ein enum wo die Variable rein muss es sei denn ihr benutzt PlayerVariablen (PVars) dann halt auch ohne enum^^
Schritt 1:
enum sinfo
{
NextPayday, // die variable
P_Timer //Falls ihr MySQL benutzt, solltet ihr das am Besten ganz Unten stehen haben
}//das kommt einfach bei euren variablen rein wo ihr PlayerInfo/Spieler o.ä. benutzt
new Acc[MAX_PLAYERS][sinfo];
so nun Schritt 2: die Login/Register Geschichte
da jedes Login/Register System anders ist benutze ich einfach ein Standart von dini und mein eigenes mit PVars
//ACHTUNG NUR FÜR ENUM BENUTZER!!!!!!
//OnDialogResponse
if(dialogid == Dialog_Login)//der Login Dialog!
{
//string definition etc.
//alle eure Variablen
Acc[playerid][NextPayday] = dini_Int(string,"NextPayday"); //wo ihr das gespeichert habt
//und nun ganz wichtig!
Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); //PaydayTimeCheck ist der Public der kommt in den nächsten Schritten, 60000 sind 1 minute d.h. er fragt jede minute ab, der Rest ist klar
}
if(dialogid == Dialog_Reg) // der Register Dialog!
{
//string etc.
//variablen
Acc[playerid][NextPayday] = 0;
dini_IntSet(string,"NextPayday",0); // das der schonmal die Datei hat
Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); // wie oben!
}
//PVars
if(dialogid == Dialog_Login)//der Login Dialog!
{
//string definition etc.
//alle eure Variablen
SetPVarInt(playerid,"NextPayday",dini_Int(string,"NextPayday")); //wo ihr das gespeichert habt
//und nun ganz wichtig!
Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); //PaydayTimeCheck ist der Public der kommt in den nächsten Schritten, 60000 sind 1 minute d.h. er fragt jede minute ab, der Rest ist klar
}
if(dialogid == Dialog_Reg) // der Register Dialog!
{
//string etc.
//variablenSetPVarInt(playerid,"NextPayday",0);
dini_IntSet(string,"NextPayday",0); // das der schonmal die Datei hat
Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); // wie oben!
}
Bevor wir die Funktionen schreiben, gehen wir noch zu OnPlayerDisconnect, damit es nicht zu Lags kommt
public OnPlayerDisconnect(playerid,reason)
{
KillTimer(Acc[playerid][P_Timer]); // Das sorgt für weniger Lags, da der User mit dem Timer geht
}
nun fragen wir mal den Public ab dafür brauchen wir auch ein forward!
forward PaydayTimeCheck(playerid);
forward Payday(playerid);
public PaydayTimeCheck(playerid)
{ //für enum nutzer
if(Acc[playerid][NextPayday] < 60)
Acc[playerid][NextPayday] += 1; // da wird die variable da die kleiner als 60 ist +1 gemacht
if(Acc[playerid][NextPayday] == 60) {
Payday(playerid);
Acc[playerid][NextPayday] = 0;
}
//für PVar Nutzer
if(GetPVarInt(playerid,"NextPayday") < 60)
SetPVarInt(playerid,"NextPayday",GetPVarInt(playerid,"NextPayday")+1);
if(GetPVarInt(playerid,"NextPayday") == 60)
{
Payday(playerid);
SetPVarInt(playerid,"NextPayday",0);
}
return 1;
}
public Payday(playerid)
{
//Das müsst ihr anpassen!
return 1;
}
Es ist nur ein Kleiner Change, aber trotzdem Danke an niklasbollmer für sein Einwand.
MfG NicoAiko
PS: Wie immer bei Fragen hier schreiben oder direkt an mich wenden.
€dits:
Zeilen besser gemacht
Unnötige Dinge entfernt (z.B. [ u ] usw)
Updated