Timer setzen

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
  • Hallo leute,
    ich wollte mal fragen, wie ich die Donator zeit erstellen, heißt ich möchte das z.B. einer Donator für 2 Tagen kaufen kann.
    Ich habe schon ein Premiumshop errichtet und weiß nur nicht wie ich das einrichten soll kann mir jemand ein Tutorial schicken oder mir helfen


    Givedonator befehl:
    dcmd_givedonator(playerid, params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 2000)
    {
    new pID, Rank;
    if(sscanf(params, "ui", pID, Rank)) return SendClientMessage(playerid, COLOR_WHITE, "Befehl: /givedonator [Spieler-ID/Name] [Donatorrank]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_WHITE, "Der Spieler ist nicht Online.");
    if(Rank==0||Rank >= 5) return SendClientMessage(playerid, COLOR_GREY, "Es gibt nur die Ränge 1-4.");
    if(Rank == 1) {
    GivePlayerMoney(pID, 50000);
    PlayerInfo[pID][pExp] += 3;
    }
    else if(Rank == 2) {
    GivePlayerMoney(pID, 100000);
    PlayerInfo[pID][pExp] += 6;
    }
    else if(Rank == 3) {
    GivePlayerMoney(pID, 150000);
    PlayerInfo[pID][pExp] += 9;
    }
    else if(Rank == 4) {
    GivePlayerMoney(pID, 350000);
    PlayerInfo[pID][pExp] += 12;
    }
    PlayerInfo[pID][pDonateRank] = Rank;
    format(stringx, sizeof(stringx), "Herzlichen Glückwunsch! Du hast den Donator-Rang %d! Siehe unter /rechte zu sehen was er dir für Vorteile bringt.", Rank);
    SendClientMessage(pID, COLOR_LIGHTBLUE, stringx);
    format(stringx, sizeof(stringx), "AdmCmd: Admin %s hat %s den Donator-Rang %d gegeben!", MeinName(playerid), MeinName(pID), Rank);
    ABroadCast(COLOR_LIGHTRED, stringx, 1);
    }
    else return SendClientMessage(playerid, COLOR_WHITE, "Nur für Projektleiter/High Admins!");
    return 1;
    }


    Mehr transparents zu der Community!
    Aber bitte künftig: Transparenz und nicht Transparents

  • Du kannst das über eine Variable (die du als Stat speicherst im Account) speichern.


    Unter die Includes:
    new donatorAblauf[MAX_PLAYERS];


    Dort wo du den Status gibst:
    donatorAblauf[pID] = gettime()+(86400*TAGE);


    In einem Timer:
    if(donatorAblauf[playerid] < gettime()) // Donator weg nehmen

  • donatorAblauf[pID] = gettime()+(86400*TAGE);

    Was ist das für eine Zahl, also für was ist die? "86400"? sind das die 24 Stunden in Millisekunden oder so?
    Ich kapiere das immer noch nicht :/ muss ich das unter


    if(Rank == 1) {
    GivePlayerMoney(pID, 50000);
    PlayerInfo[pID][pExp] += 3;
    }
    else if(Rank == 2) {
    GivePlayerMoney(pID, 100000);
    PlayerInfo[pID][pExp] += 6;
    }
    else if(Rank == 3) {
    GivePlayerMoney(pID, 150000);
    PlayerInfo[pID][pExp] += 9;
    }
    else if(Rank == 4) {
    GivePlayerMoney(pID, 350000);
    PlayerInfo[pID][pExp] += 12;
    }
    schreiben?
    Und wenn ich die Zeit angeben möchte wie mache ich das ?


    Mehr transparents zu der Community!
    Aber bitte künftig: Transparenz und nicht Transparents

  • Ich kapiere das nicht... Gibt es ein Tut dazu oder kannst du mir richtig Helfen, da drin bin ich ein richtiger Noob :D
    //edit


    Mehr transparents zu der Community!
    Aber bitte künftig: Transparenz und nicht Transparents

  • if(Rank == 1) {
    GivePlayerMoney(pID, 50000);
    PlayerInfo[pID][pExp] += 3;
    donatorAblauf[pID] = gettime()+(86400*TAGE_WIE_LANGE);
    }
    else if(Rank == 2) {
    GivePlayerMoney(pID, 100000);
    PlayerInfo[pID][pExp] += 6;
    donatorAblauf[pID] = gettime()+(86400*TAGE_WIE_LANGE);
    }
    else if(Rank == 3) {
    GivePlayerMoney(pID, 150000);
    PlayerInfo[pID][pExp] += 9;
    donatorAblauf[pID] = gettime()+(86400*TAGE_WIE_LANGE);
    }
    else if(Rank == 4) {
    GivePlayerMoney(pID, 350000);
    PlayerInfo[pID][pExp] += 12;
    donatorAblauf[pID] = gettime()+(86400*TAGE_WIE_LANGE);
    }


    Das hier unter die Includes:
    new donatorAblauf[MAX_PLAYERS];


    Und das hier in einen Timer den du hast, der durch alle Spieler geht:
    if(donatorAblauf[playerid] < gettime())
    {
    // Donator weg nehmen
    }


    donatorAblauf[playerid] behandelst du beim Login und Speichern wie einen Stat, also wie zum Beispiel "Geld".



    Kommst du damit klar? Wenn nicht, beschreibe bitte wo du hängst.