Hey,
Ich wollte ein Premiumsystem machen, das man halt 7Tage Premium bekommt und es automatich wieder entfernt.
Doch ich weiß nicht wie ich anfangen soll, da ich eh Probleme mit Timestamp habe da ich es einfach nicht verstehe
mfg
Hey,
Ich wollte ein Premiumsystem machen, das man halt 7Tage Premium bekommt und es automatich wieder entfernt.
Doch ich weiß nicht wie ich anfangen soll, da ich eh Probleme mit Timestamp habe da ich es einfach nicht verstehe
mfg
Timestamp gibt dir die Vergangenen Sekunden seit dem 01.01.1970 aus.
Damit kannst Du Zeitabstände wunderbar messen.
Als Beispiel:
Wenn der Jetzige Timestamp bei exakt "1390417341" liegen würde, und du abfragen willst ob eine Minute seit diesem Zeitpunkt vergangen ist:
if(time() >= 1390417341+60)
Du rechnest also 60 Sekunden drauf und fragst ab, ob der aktuelle Zeitstempel diesem Entspricht oder größer ist.
Dank dir, doch könnte vielleicht einer ein Beispiel machen, wie das so ungefähr mit dem 7Tage Premium geht?
Wäre korrekt
mfg
Klar, die Funktion "gettime()" (Ohne Parameterangaben) gibt dir nen aktuellen Timestamp aus.
Auf diesen rechnest Du einfach 7 Tage in Sekunden drauf (7*24*60*60 = 604800)
Sprich:
new ZeitAbgelaufenIn = gettime()+604800;
Abfragen kannste das dann mit:
if(gettime() >= ZeitAbgelaufenIn)
Ist in diesem Fall nur ein Beispiel. Das kannst Du im prinzip auch mit jedem anderen Zeitintervall durchziehen.
Die nötige Zeit für einen Tag wäre z.B. zu errechnen durch: 24*60*60 = 86400
Alles anzeigenKlar, die Funktion "gettime()" (Ohne Parameterangaben) gibt dir nen aktuellen Timestamp aus.
Auf diesen rechnest Du einfach 7 Tage in Sekunden drauf (7*24*60*60 = 604800)
Sprich:
new ZeitAbgelaufenIn = gettime()+604800;
Abfragen kannste das dann mit:
if(gettime() >= ZeitAbgelaufenIn)
Ist in diesem Fall nur ein Beispiel. Das kannst Du im prinzip auch mit jedem anderen Zeitintervall durchziehen.
Die nötige Zeit für einen Tag wäre z.B. zu errechnen durch: 24*60*60 = 86400
Ah jetzt verstehe ich das :), ich dank dir.
Doch, wie speichere ich das jetzt?
format(query,sizeof(query),"UPDATE user SET premium WHERE id='%i'",ZetAbgelaufen,sInfo[playerid][PlayerID]);
mysql_function_query(dbhandle,query,false,"","");
einfach als integer
format(query,sizeof(query),"UPDATE user SET `premium`='%d' WHERE id='%i'",ZetAbgelaufen,sInfo[playerid][PlayerID]);
einfach als integer
format(query,sizeof(query),"UPDATE user SET `premium`='%d' WHERE id='%i'",ZetAbgelaufen,sInfo[playerid][PlayerID]);
und wie lese ich das aus, weil i.wo muss man ja das gespeichert haben oder nicht?
Hey,
müsste so klappen:
format(query,sizeof(query),"SELECT `premium` FROM `user` WHERE id = '%i'", sInfo[playerid][PlayerID]);
und wie lese ich das aus, weil i.wo muss man ja das gespeichert haben oder nicht?
Du lädst es einfach wie andere zahlen->integer, wie zb. fraktionen etc.
Nur das es anders heißt.
Du lädst es einfach wie andere zahlen->integer, wie zb. fraktionen etc.
Nur das es anders heißt.
Wie lang muss die DB Länge sein bei der Spalte.
Ich zeig dir mal noch einen weiteren weg und zwar kannst du eine spalte erstellen mit der Eigenschaft timestamp.
Dann kannst du beim setzen des Premiumaccounts direkt die 7 Tage dazu rechnen das geht so bei dem UPDATE befehl
Beispiel
oder je nachdem kannst du das 7 auch durch einen Platzhalter ersetzen.
Nun brauchst du nur noch beim einloggen abfragen ob der Premiumaccount ausgelaufen ist oder nicht :
So prüfst du ab ob das Datum größer ist als das jetzige wenn ja hat Abgelaufen den wert 0 wenn nicht dann 1 somit kannst du Abgelaufen mit
cache_get_field_content_int(0, "Abgelaufen ");
auslesen