Beitrag von Apokrate ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
Genau, über den Timestamp kannst du das machen.
Geht ganz einfach:
ocmd:tpremium(playerid, params[])
{
new pID, zeit, string[128];
if(sscanf(params,"ui", pID, zeit))return SendClientMessage(playerid, fGREY, "Benutze: /premium [ID] [Zeit in Tagen]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid, fGREY, "Der Spieler ist nicht eingeloggt!");
if(!isPlayerAnAdmin(playerid, 5)) return SendClientMessage(playerid, Grey,""#ADMINSATZ"");
Spieler[pID][Donator] = 1;
Spieler[pID][DonatorBis] = gettime() + zeit * 86400; //1 Tag = 86400 Sekunden
format(string, sizeof(string), "%s hat deinen Accountstatus auf Premium gesetzt. Tage: %i", SpielerName(playerid),zeit);
SendClientMessage(pID, COLOR_LIGHTBLUE, string);
return 1;
}
Beim Login und bei einem Timer die Abfrage:
if(Spieler[playerid][DonatorBis] < gettime())
{
//Donator-Status weg nehmen.
}
Normal, dass ich bei 2 Tagen Premium so eine Zahl bekomme?: 1427634429
also beim speichern in der datenbank
Ja
Das kann durchaus sein, denn GetTime zählt vom 01.01.1970 bis Jetzt + die Zeit die du drufhaust
Das ist normal, das ist der Unix Timestamp, zu dem der Donator Status abläuft.
Siehe hier für den momentanen Timestamp:
http://www.unixtimestamp.de/
Wie errechne ich die Restzeit?
Die kannst du so errechnen:
new days, hours, minutes, seconds, tmp;
tmp = Spieler[playerid][DonatorBis] - gettime();
days = tmp / 86400;
tmp -= days * 86400;
hours = tmp / 3600;
tmp -= hours * 3600;
minutes = tmp / 60;
tmp -= minutes * 60;
seconds = tmp;
new str[145];
format(str, sizeof(str), "Du hast noch %d Tage, %d Stunden, %d Minuten und %d Sekunden den Donator Status.", days, hours, minutes, seconds);
SendClientMessage(playerid, 0xFF0000FF, str);