Wie mache ich das wen ich jetzt einen Perso beantrage, und ich ihn erst nach 3 stunden abholen kann?, könnt ihr mir das bitte sagen, wäre sehr nett.
Vielen dank vorträglich
[Echtzeit]Erst nach 3 Stunden Perso bekommen.
- ENEF
- Geschlossen
- Erledigt
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
-
-
Hmm...
SetTimerEx währe schlecht.
Genau so wie ein normaler SetTimer^^Müsstest nen Timer durchlaufen lassen, der das nach Online Zeit macht, wenn ich mich nicht irre.
MfG Firer
-
hab ich jetzt mit settimerex gemacht, aber wird der timer nur fertig sein wen der player on is? oder läuft der auch wen er off ist..
hier 3 stunden SetTimerEx("Abholtime", 10800000, 0, "i", playerid);oder könnt ihr mir sagen wie es besser is
-
Hast du einen SetTimer mit Repeating true und einem niedrigen Invtervall (z.B. 1000er)?
-
wie bitte?, ich weiß nicht was des heissen/sein soll
-
häh mach doch einfach unter command oder wo du das haben willst
if (/perso)
{
Settimer (Perso, 10800000)
}public Perso
{
give perso
}ps: Diente nur zu veranschaulichung
-
ne das wäre doof ... mach es mit einer timestamp funktion , dafür brauchst du eine neue variable
hier:
stock mktime(hour,minute,second,day,month,year)
{
new timestamp2;timestamp2 = second + (minute * 60) + (hour * 3600);
new days_of_month[12];
if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) {
days_of_month = {31,29,31,30,31,30,31,31,30,31,30,31}; // Schaltjahr
} else {
days_of_month = {31,28,31,30,31,30,31,31,30,31,30,31}; // keins
}
new days_this_year = 0;
days_this_year = day;
if(month > 1) { // No January Calculation, because its always the 0 past months
for(new i=0; i<month-1;i++) {
days_this_year += days_of_month[i];
}
}
timestamp2 += days_this_year * 86400;for(new j=1970;j<year;j++) {
timestamp2 += 31536000;
if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) timestamp2 += 86400; // Schaltjahr + 1 Tag
}return timestamp2;
}stock Now()
{
new hour,minute,second,year,month,day;
gettime(hour, minute, second);
getdate(year, month, day);
return mktime(hour,minute,second,day,month,year);
}//z.B mit einem dialog ;)
if(dialogid==20)
{
if(response==0) return 0;
SetPVarInt(playerid,"abholtermin",Now()+10800);//10800 sind die 3 stunden
SendClientMessage(playerid,COLOR,"Du kannst deinen Perso in 3 stunden abholen");
}if (strcmp("/perso", cmdtext, true, 4) == 0)
{
if(GetPVarInt(playerid,"abholtermin")>Now()) return SendClientMessage(playerid,COLOR,"Du kannst den Perso erst 3 stunden nach der beantragung abholen");
GivePerso(playerid);
DeletePVar(playerid,"abholtermin");
}// damit er es speichert musst du den wert GetPVarInt(playerid,"abholtermin") bei onplayerdisconnect in die datei speichern und beim connecten den wert wiedersetzen
edit: verbessert
-
Unter Gamemodeinit
SetTimer("AllgemeinerTimer", 1000, true);new ATimer[3];
forward AllgemeinerTimer();
public AllgemeinerTimer()
{
for(new s; s<(sizeof(ATimer); s++) ATimer[s]++;
if(ATimer[0] == 60) { ATimer[0] = 0; }//1 Minute
if(ATimer[1] == 30) { ATimer[1] = 0; }//30 Sekunden
if(ATimer[2] == 3600) { ATimer[2] = 0; }//1 Stunde
return 1;
}Da kannst du auch eine for Schleife einbauen und eine Variable ++; en und wenn die 60 o.ä. erreicht kann man Perso kaufen oder so
Edit: Zabus´ Methode finde ich persönlich besser und schonender
-
wow ich wollt mal drauf hinweisen ich bin noch anfänger
aber danke für die schnelle hilfe aber ich versteh nur bahnhof sorry
//edit habs nun verstanden und richtig durchgelesen, habs eingebaut 2 errors und die gefixxt weil die ";" gefehlt haben^^..
dankeschön ich close mal, fals was buggt öffne ich nochma