Premium auf Zeit

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 Brotfische, ich suche jemanden der mit eventuel über Teamviewer helfen kann mein Script zu erweiter.
    Ich möchte es so machen das die admins Premium in Tagen einstellen können also zwischen 1-9999 Tagen nur leider komme ich nicht weiter

  • WIe du ein Befehl mit Parametern machst, sollte dir klar sein. (Eigentlich)
    Den Rest kann ich dir gerade nicht genauer erklären, da ich so etwas auch noch nie gemacht habe, jedoch eine Methode weiß, aber diese wahrscheinlich zu ressourcenfressend ist.


  • ocmd:premium(playerid,params[])
    {
    new time, pid;
    if(sscanf,"ui",pid,time) return SendClientMessage(playerid,Farbe,"/premium pid time");
    new Name[MAX_PLAYERS_NAME], year,month, day, data[64];
    Getdate(year,month,day);
    GetPlayerName(pid,Name,sizeof(Name));
    format(data,sizeof(data),"/Premium/%s",Name);
    new Premium = day + time;
    if(!dini_Exists(data))
    {
    dini_Create(data));
    dini_Int(data,"PTime",Premium);
    return 1;
    }


    ACHTUNG: Das ist mit dem Handy gedchrieben, solltest du aber noch etwas überarbeiten und Abfragen ob die Zeit schon vergangen ist gerne schreib ichs dir Freitag alles auf dem Pc


    Mfg

  • Ich hab des mit dcmd Gemacht

    dcmd_setprem(playerid, params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 2000)
    {
    new pID, Rank, DonateTime;
    if(sscanf(params, "uii", pID, Rank, DonateTime)) return SendClientMessage(playerid, COLOR_WHITE, "Befehl: /givedonator [Spieler-ID/Name] [Donatorrank] [Tage]");
    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;
    PlayerInfo[pID][pDonateTime] = DonateTime*1440;
    format(stringx, sizeof(stringx), "Herzlichen Glückwunsch! Du hast nub den Premium-Rang %d für %i Tage!", Rank, DonateTime);
    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;
    }


    Für den User eine variable gesetzt in der steht wie viele minuten er hat und pro minute wird im eins abgezogen.



    if(PlayerInfo[i][pDonateTime] >= 1 && PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pDonateTime]--;
    }
    if(PlayerInfo[i][pDonateTime] == 0 && PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pDonateRank] = 0;
    PlayerInfo[i][pDonateTime] = 0;
    SendClientMessage(i, COLOR_RED,"ACHTUNG! Dein Donate Status ist abgelaufen!");
    }


    Und bei den Stats steht halt wie viele Tage/Stunden/minuten er noch hat.



  • Wird das abgespeichert? und wenn ja wo muss ich den 2ten queltext einfügen?

  • Was meinste ?
    Es wird abgespeichert ja ^^


    if(PlayerInfo[i][pDonateTime] >= 1 && PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pDonateTime]--;
    }
    if(PlayerInfo[i][pDonateTime] == 0 && PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pDonateRank] = 0;
    PlayerInfo[i][pDonateTime] = 0;
    SendClientMessage(i, COLOR_RED,"ACHTUNG! Dein Donate Status ist abgelaufen!");
    }



    wo ich das einfügen muss z.b. unter OnPlayerConnect

  • Du musst bei

    enum pInfo
    {


    am ende noch pDonateTime
    machen


    danach wenn bei dir irgendwo PlayerInfo[playerid][pGesperrt] = 0;


    dadrunter noch PlayerInfo[playerid][pDonateTime] = 0;


    dann müsste format(var, 32, "Gesperrt=%d\n",PlayerInfo[playerid][pGesperrt]);fwrite(hFile, var); 2x vorhanden sein


    unter beide dann dadrunter format(var, 32, "DonateTime=%d\n",PlayerInfo[playerid][pDonateTime]);fwrite(hFile, var);


    dann if( strcmp( key , "Gesperrt" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pGesperrt] = strval( val ); } suchen


    und if( strcmp( key , "DonateTime" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDonateTime] = strval( val ); } drunter tuhen

    Einmal editiert, zuletzt von Flobo ()

  • Das musst du so einbauen das es alle 60Sekunden ausgeführt wird.




    Wobei ich das ganze lieber anders machen würde. Einfach beim setzen den aktuellen Timestamp abfragen, auf diesen dann die Sekunden drauf rechnen bis der Status ablaufen soll und dann fragt man entweder vor jedem Payday ab ob der Donator Timestamp in der Vergangenheit liegt oder eben nicht. Und setzt dann den Status entsprechend auf Null.
    Das unterscheidet sich jetzt nicht allzu dolle von den hier beschriebenen daher denke ich das du das auch so schaffst ;)

  • [MrM]Florian Hast recht mit dem Timestamp ist ne gute idee dann macht ers auch wenn er off ist :* dank dir
    und im mom ist es in nem Timer drin der jede minute 1x läuft ;)



    Es kann sein das bei euch net pGesperrt steht
    pGesperrt ist nur der letzte eintrag der bei mir steht.

    enum pInfo
    {
    pKey[128],
    pLevel,
    pMoney,
    pAdmin,
    pSupporter,
    pDonateRank,
    gPupgrade,
    pConnectTime,
    pReg,
    pSex,
    pAge,
    pOrigin,
    pCK,
    pMuted,
    pExp,
    pCash,
    pAccount,
    pPlayerKreditDauer,
    pPlayerKredit,
    pCrimes,
    pKills,
    pDeaths,
    pArrested,
    pWantedDeaths,
    pPhoneBook,
    pLottoNr,
    pFishes,
    pBiggestFish,
    pJob,
    pPayCheck,
    pRest,
    pHeadValue,
    pJailed,
    pJailTime,
    pGangJailed,
    pMauled,
    pMats,
    pDrugs,
    pLeader,
    pMember,
    pFMember,
    pRank,
    pChar,
    pContractTime,
    pDetSkill,
    pSexSkill,
    pBoxSkill,
    pLawSkill,
    pMechSkill,
    pJackSkill,
    pCarSkill,
    pNewsSkill,
    pDrugsSkill,
    pCookSkill,
    pFishSkill,
    Float:pHealth,
    Float:pSHealth,
    pInt,
    pLocal,
    pTeam,
    pModel,
    pPnumber,
    pPhousekey,
    pPbiskey,
    Float:pPos_x,
    Float:pPos_y,
    Float:pPos_z,
    pCarLic,
    pNewLic,
    pFlyLic,
    pBoatLic,
    pFishLic,
    pGunLic, //Definition des Scheines zb die Aufgabe später
    pLKWLic,
    pRollerLic,
    pMotoLic,
    pZig,
    pKekse,
    pZigSucht,
    pGun1,
    pGun2,
    pGun3,
    pGun4,
    pAmmo1,
    pAmmo2,
    pAmmo3,
    pAmmo4,
    pCarTime,
    pMulltime,
    pPayDay,
    pPayDayHad,
    pCDPlayer,
    pWins,
    pLoses,
    pAlcoholPerk,
    pDrugPerk,
    pMiserPerk,
    pPainPerk,
    pTraderPerk,
    pTut,
    pWarns,
    Float:pGWD,
    pAdjustable,
    pFuel,
    pMarried,
    pMarriedTo[128],
    pInvWeapon,
    pInvAmmo,
    pInvWeapon2,
    pInvAmmo2,
    pInvDrugs,
    pInvMats,
    pFlugTime,
    pRoadblock,
    pPlayMinutes,
    pGesamtMinutes,
    pMinutesSinceLogin,
    pMinutesSinceAn,
    pSFPASS,
    pLVPASS,
    pHandyGeld,
    pHandyVer,
    pUhrID,
    pHandyID,
    pOwnPerso,
    pOwnAntrag,
    pPersoStop,
    pGehalt,
    pFrakSperre,
    pBoxMats,
    pBoxDrugs,
    pban,
    Text:LetterboxTop,Text:LetterboxBottom2, Text:LetterboxBottom,
    pTot,
    pFarmTime,
    pGDeaths,
    pGKills,
    pMeldung,
    pPtankekey,
    pZollPass,
    pZollPassTime,
    pGesperrt,
    pDonateTime,
    };

    Einmal editiert, zuletzt von Flobo ()