| Frage - PayDay-System |

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
  • Guten Tag liebe Breadfish-Community,


    Ich habe mir ein PayDay System geschrieben, jedoch weiß ich nicht wie ich dies machen kann, das es alle 60min kommt.


    Das PayDay-System:


    Spoiler anzeigen


    public PayDay()
    {
    new string[128];
    new account,interest,zuschuss;
    new rent = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pLevel] > 0)
    {
    if(MoneyMessage[i]==1)
    {
    SendClientMessage(i, COLOR_LIGHTRED, "Du konntest deine Schulden nicht bezahlen und kommst in den Knast.");
    GameTextForPlayer(i, "~r~Gefangen!", 2000, 1);
    SetPlayerInterior(i, 6);
    SetPlayerPos(i, 264.6288,77.5742,1001.0391);
    PlayerInfo[i][pJailed] = 1;
    ResetPlayerWeapons(i);
    WantedPoints[i] = 0;
    PlayerInfo[i][pJailTime] = 240;
    format(string, sizeof(string), "Du musst für %d Sekunden in den Knast.", PlayerInfo[i][pJailTime]);
    SendClientMessage(i, COLOR_LIGHTBLUE, string);
    }
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(i, playername2, sizeof(playername2));
    account = PlayerInfo[i][pAccount];
    new key = PlayerInfo[i][pPhousekey];
    if(key != 255)
    {
    rent = HouseInfo[key][hRent];
    if(strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    rent = 0;
    }
    else if(rent > GetPlayerMoney(i))
    {
    PlayerInfo[i][pPhousekey] = 255;
    SendClientMessage(i, COLOR_WHITE, "Sie wurden vertrieben.");
    rent = 0;
    }
    HouseInfo[key][hTakings] = HouseInfo[key][hTakings]+rent;
    }
    new tmpintrate;
    if (key != 255 && strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    if(PlayerInfo[i][pDonateRank] > 0) { tmpintrate = intrate+4; }
    else { tmpintrate = intrate+2; }//HouseInfo[key][hLevel]
    }
    else
    {
    if(PlayerInfo[i][pDonateRank] > 0) { tmpintrate = 300; }
    else { tmpintrate = 300; }
    }
    if(PlayerInfo[i][pPayDay] >= 5)
    {
    Tax += TaxValue;//Should work for every player online
    PlayerInfo[i][pAccount] -= TaxValue;
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    new bonus = PlayerInfo[i][pPayCheck] / 2;
    PlayerInfo[i][pPayCheck] += bonus;
    }
    new fraktion = 0;
    if(PlayerInfo[i][pMember] > 0) fraktion = PlayerInfo[i][pMember] - 1;
    if(PlayerInfo[i][pLeader] > 0) fraktion = PlayerInfo[i][pLeader] - 1;
    if(fraktion >= 0)
    {
    if(FraktionsKasse[fraktion] - PlayerInfo[i][pGehalt] < 0)
    {
    zuschuss = 1; //fucked up to 1
    GivePlayerMoney(i, zuschuss);
    }
    else if(FraktionsKasse[fraktion] - PlayerInfo[i][pGehalt] >= 0)
    {
    zuschuss = PlayerInfo[i][pGehalt];
    GivePlayerMoney(i, zuschuss);
    FraktionsKasse[fraktion] -= zuschuss;
    }
    }
    new checks = PlayerInfo[i][pPayCheck];
    new ebill = (PlayerInfo[i][pAccount]/10000)*(PlayerInfo[i][pLevel]);
    ConsumingMoney[i] = 1;
    GivePlayerMoney(i, checks);
    if(PlayerInfo[i][pAccount] > 0)
    {
    PlayerInfo[i][pAccount] -= ebill;
    SBizzInfo[4][sbTill] += ebill;
    }
    else
    {
    ebill = 0;
    }
    interest = (PlayerInfo[i][pAccount]/1000)*(tmpintrate);
    PlayerInfo[i][pExp]++;
    PlayerPlayMusic(i);
    PlayerInfo[i][pAccount] = account+interest+zuschuss;
    SendClientMessage(i, COLOR_WHITE, "{FFFF00}===============| {990000}Zahltag{FFFF00} |===============");
    format(string, sizeof(string), " Lohn: $%d Steuern: -$%d", checks, TaxValue);
    SendClientMessage(i, COLOR_GRAD1, string);
    if(PlayerInfo[i][pPhousekey] != 255 || PlayerInfo[i][pPbiskey] != 255)
    {
    format(string, sizeof(string), "* Stromrechnung: -$%d", ebill);
    SendClientMessage(i, COLOR_GRAD1, string);
    }
    format(string, sizeof(string), "* Fraktionslohn: $%d", zuschuss);
    SendClientMessage(i, COLOR_WHITE, string);
    format(string, sizeof(string), "* Kontostand: $%d", account);
    SendClientMessage(i, COLOR_WHITE, string);
    format(string, sizeof(string), "* Zinssatz: 0.%d Prozent",tmpintrate);
    SendClientMessage(i, COLOR_WHITE, string);
    format(string, sizeof(string), "* Zinsen: $%d", interest);
    SendClientMessage(i, COLOR_WHITE, string);
    SendClientMessage(i, COLOR_WHITE, "{FFFF00}===============| {990000}Zahltag{FFFF00} |===============");
    format(string, sizeof(string), "* Neuer Kontostand: $%d", PlayerInfo[i][pAccount]);
    SendClientMessage(i, COLOR_AGEBUHR, string);
    format(string, sizeof(string), "* Miete: -$%d", rent);
    SendClientMessage(i, COLOR_WHITE, string);
    format(string, sizeof(string), "~y~PayDay~n~~w~Paycheck");
    GameTextForPlayer(i, string, 5000, 1);
    rent = 0;
    PlayerInfo[i][pPayDay] = 0;
    PlayerInfo[i][pPayCheck] = 0;
    PlayerInfo[i][pConnectTime] += 1;
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pPayDayHad] += 1;
    if(PlayerInfo[i][pPayDayHad] >= 5)
    {
    PlayerInfo[i][pExp]++;
    PlayerInfo[i][pPayDayHad] = 0;
    }
    }
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pPayDayHad] += 1;
    if(PlayerInfo[i][pPayDayHad] >= 5)
    {
    PlayerInfo[i][pExp]+=2;
    PlayerInfo[i][pPayDayHad] = 0;
    }
    }
    }
    else
    {
    SendClientMessage(i, COLOR_LIGHTRED, "* Du hast nicht lange genug gespielt, um PayDay zu erhalten.");
    }
    }
    }
    }
    Checkprop();
    return 1;
    }


    Ich hoffe ihr könnt helfen.



    MfG
    James.

  • Indem du einen Timer startest, der alle 60 Minuten aufgerufen wird.

  • Huhu, geht auch etwas anderst.



    Definiere:


    forward ServerMinute();


    Bei OnGameModeInit:


    SetTimer("ServerMinute",60000,1);//1 Minute


    Dann irgendwo unten im Script:


    public ServerMinute()//Dieser Public wird jede Minute aufgerufen
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    //Deine Definierung, dein Payday soll ja auch beim Disconnect gespeichert werden, bzw die Zeit zum nächsten
    PlayerInfo[i][pPayday] += 1;//Anpassen!
    if(PlayerInfo[i][pPayday] == 60)//Wenn dein Payday auf 60 ist, wird dein Public aufgerufen
    {
    PayDay(i);
    }
    }
    }
    return 1;
    }
    pPayday ist die Zeit des Spielers, wielange er schon Spielt. Dies wird in deiner Datenbank oder in deiner ini gespeichert(falls du das natürlich nicht willst, erstelle eine Globale Variable:


    new pPayday[MAX_PLAYERS];
    und ändere es dann in:
    if(pPayday[playerid] == 60)
    //und
    pPayday[playerid] += 1;


    Du musst jetzt nur noch bei deinem Payday Public ein (playerid) hinzufügen, somit brauchst du auch keine Schleife mehr.


    Falls was falsch ist, einfach verbessern oder falls ich was falsch erklärt habe



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Falls was falsch ist, einfach verbessern oder falls ich was falsch erklärt habe



    Muss ich jetzt hier etwas verändern?


    Spoiler anzeigen


    public PayDay()
    {
    new string[128];
    new account,interest,zuschuss;
    new rent = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pLevel] > 0)
    {
    if(MoneyMessage[i]==1)
    {
    SendClientMessage(i, COLOR_LIGHTRED, "Du konntest deine Schulden nicht bezahlen und kommst in den Knast.");
    GameTextForPlayer(i, "~r~Gefangen!", 2000, 1);
    SetPlayerInterior(i, 6);
    SetPlayerPos(i, 264.6288,77.5742,1001.0391);
    PlayerInfo[i][pJailed] = 1;
    ResetPlayerWeapons(i);
    WantedPoints[i] = 0;
    PlayerInfo[i][pJailTime] = 240;
    format(string, sizeof(string), "Du musst für %d Sekunden in den Knast.", PlayerInfo[i][pJailTime]);
    SendClientMessage(i, COLOR_LIGHTBLUE, string);
    }
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(i, playername2, sizeof(playername2));
    account = PlayerInfo[i][pAccount];
    new key = PlayerInfo[i][pPhousekey];
    if(key != 255)
    {
    rent = HouseInfo[key][hRent];
    if(strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    rent = 0;
    }
    else if(rent > GetPlayerMoney(i))
    {
    PlayerInfo[i][pPhousekey] = 255;
    SendClientMessage(i, COLOR_WHITE, "Sie wurden vertrieben.");
    rent = 0;
    }
    HouseInfo[key][hTakings] = HouseInfo[key][hTakings]+rent;
    }
    new tmpintrate;
    if (key != 255 && strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    if(PlayerInfo[i][pDonateRank] > 0) { tmpintrate = intrate+4; }
    else { tmpintrate = intrate+2; }//HouseInfo[key][hLevel]
    }
    else
    {
    if(PlayerInfo[i][pDonateRank] > 0) { tmpintrate = 300; }
    else { tmpintrate = 300; }
    }
    if(PlayerInfo[i][pPayDay] >= 5)
    {
    Tax += TaxValue;//Should work for every player online
    PlayerInfo[i][pAccount] -= TaxValue;
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    new bonus = PlayerInfo[i][pPayCheck] / 2;
    PlayerInfo[i][pPayCheck] += bonus;
    }
    new fraktion = 0;
    if(PlayerInfo[i][pMember] > 0) fraktion = PlayerInfo[i][pMember] - 1;
    if(PlayerInfo[i][pLeader] > 0) fraktion = PlayerInfo[i][pLeader] - 1;
    if(fraktion >= 0)
    {
    if(FraktionsKasse[fraktion] - PlayerInfo[i][pGehalt] < 0)
    {
    zuschuss = 1; //fucked up to 1
    GivePlayerMoney(i, zuschuss);
    }
    else if(FraktionsKasse[fraktion] - PlayerInfo[i][pGehalt] >= 0)
    {
    zuschuss = PlayerInfo[i][pGehalt];
    GivePlayerMoney(i, zuschuss);
    FraktionsKasse[fraktion] -= zuschuss;
    }
    }
    new checks = PlayerInfo[i][pPayCheck];
    new ebill = (PlayerInfo[i][pAccount]/10000)*(PlayerInfo[i][pLevel]);
    ConsumingMoney[i] = 1;
    GivePlayerMoney(i, checks);
    if(PlayerInfo[i][pAccount] > 0)
    {
    PlayerInfo[i][pAccount] -= ebill;
    SBizzInfo[4][sbTill] += ebill;
    }
    else
    {
    ebill = 0;
    }
    interest = (PlayerInfo[i][pAccount]/1000)*(tmpintrate);
    PlayerInfo[i][pExp]++;
    PlayerPlayMusic(i);
    PlayerInfo[i][pAccount] = account+interest+zuschuss;
    SendClientMessage(i, COLOR_WHITE, "{FFFF00}===============| {990000}Zahltag{FFFF00} |===============");
    format(string, sizeof(string), " Lohn: $%d Steuern: -$%d", checks, TaxValue);
    SendClientMessage(i, COLOR_GRAD1, string);
    if(PlayerInfo[i][pPhousekey] != 255 || PlayerInfo[i][pPbiskey] != 255)
    {
    format(string, sizeof(string), "* Stromrechnung: -$%d", ebill);
    SendClientMessage(i, COLOR_GRAD1, string);
    }
    format(string, sizeof(string), "* Fraktionslohn: $%d", zuschuss);
    SendClientMessage(i, COLOR_WHITE, string);
    format(string, sizeof(string), "* Kontostand: $%d", account);
    SendClientMessage(i, COLOR_WHITE, string);
    format(string, sizeof(string), "* Zinssatz: 0.%d Prozent",tmpintrate);
    SendClientMessage(i, COLOR_WHITE, string);
    format(string, sizeof(string), "* Zinsen: $%d", interest);
    SendClientMessage(i, COLOR_WHITE, string);
    SendClientMessage(i, COLOR_WHITE, "{FFFF00}===============| {990000}Zahltag{FFFF00} |===============");
    format(string, sizeof(string), "* Neuer Kontostand: $%d", PlayerInfo[i][pAccount]);
    SendClientMessage(i, COLOR_AGEBUHR, string);
    format(string, sizeof(string), "* Miete: -$%d", rent);
    SendClientMessage(i, COLOR_WHITE, string);
    format(string, sizeof(string), "~y~PayDay~n~~w~Paycheck");
    GameTextForPlayer(i, string, 5000, 1);
    rent = 0;
    PlayerInfo[i][pPayDay] = 0;
    PlayerInfo[i][pPayCheck] = 0;
    PlayerInfo[i][pConnectTime] += 1;
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pPayDayHad] += 1;
    if(PlayerInfo[i][pPayDayHad] >= 5)
    {
    PlayerInfo[i][pExp]++;
    PlayerInfo[i][pPayDayHad] = 0;
    }
    }
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pPayDayHad] += 1;
    if(PlayerInfo[i][pPayDayHad] >= 5)
    {
    PlayerInfo[i][pExp]+=2;
    PlayerInfo[i][pPayDayHad] = 0;
    }
    }
    }
    else
    {
    SendClientMessage(i, COLOR_LIGHTRED, "* Du hast nicht lange genug gespielt, um PayDay zu erhalten.");
    }
    }
    }
    }
    Checkprop();
    return 1;
    }


    P.S.: Wie kann ich die PayDay Zeit speichern? :/

  • Ja, du machst
    public PayDay()
    zu
    public PayDay(playerid)


    Dann entfern die schleife, die brauchen wir jetzt nicht mehr:


    for(new i = 0; i < MAX_PLAYERS; i++)//weg
    {//Weg(Die dazugehörige klammer ganz unten auch weg, sonst 26 errors :)


    Und jetzt alle "i" zu payerid
    bsp:


    if(PlayerInfo[i][pLevel] > 0)
    //zu
    if(PlayerInfo[playerid][pLevel] > 0)


    Und wie du die Zeit speicherst?
    Schau einfach mal nach, wie pLevel gespeichert wurde und mach das gleiche mit pPayday


    Wenn du fragen hast, frag einfach^^



    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Beitrag von James.Spader ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Wenn du fragen hast, frag einfach


    Muss ich dies auch verändern?



    if(PlayerInfo[playerid][pPayDay] >= 5)


    Und muss ich noch etwas anderes hier verändern?


    Spoiler anzeigen


    public PayDay(playerid)
    {
    new string[128];
    new account,interest,zuschuss;
    new rent = 0;
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pLevel] > 0)
    {
    if(MoneyMessage[playerid]==1)
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "Du konntest deine Schulden nicht bezahlen und kommst in den Knast.");
    GameTextForPlayer(playerid, "~r~Gefangen!", 2000, 1);
    SetPlayerInterior(playerid, 6);
    SetPlayerPos(playerid, 264.6288,77.5742,1001.0391);
    PlayerInfo[playerid][pJailed] = 1;
    ResetPlayerWeapons(playerid);
    WantedPoints[playerid] = 0;
    PlayerInfo[playerid][pJailTime] = 240;
    format(string, sizeof(string), "Du musst für %d Sekunden in den Knast.", PlayerInfo[playerid][pJailTime]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    }
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    account = PlayerInfo[playerid][pAccount];
    new key = PlayerInfo[playerid][pPhousekey];
    if(key != 255)
    {
    rent = HouseInfo[key][hRent];
    if(strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    rent = 0;
    }
    else if(rent > GetPlayerMoney(playerid))
    {
    PlayerInfo[playerid][pPhousekey] = 255;
    SendClientMessage(playerid, COLOR_WHITE, "Sie wurden vertrieben.");
    rent = 0;
    }
    HouseInfo[key][hTakings] = HouseInfo[key][hTakings]+rent;
    }
    new tmpintrate;
    if (key != 255 && strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    if(PlayerInfo[playerid][pDonateRank] > 0) { tmpintrate = intrate+4; }
    else { tmpintrate = intrate+2; }//HouseInfo[key][hLevel]
    }
    else
    {
    if(PlayerInfo[playerid][pDonateRank] > 0) { tmpintrate = 300; }
    else { tmpintrate = 300; }
    }
    if(PlayerInfo[playerid][pPayDay] >= 5)
    {
    Tax += TaxValue;//Should work for every player online
    PlayerInfo[playerid][pAccount] -= TaxValue;
    if(PlayerInfo[playerid][pDonateRank] > 0)
    {
    new bonus = PlayerInfo[playerid][pPayCheck] / 2;
    PlayerInfo[playerid][pPayCheck] += bonus;
    }
    new fraktion = 0;
    if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
    if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;
    if(fraktion >= 0)
    {
    if(FraktionsKasse[fraktion] - PlayerInfo[playerid][pGehalt] < 0)
    {
    zuschuss = 1; //fucked up to 1
    GivePlayerMoney(playerid, zuschuss);
    }
    else if(FraktionsKasse[fraktion] - PlayerInfo[playerid][pGehalt] >= 0)
    {
    zuschuss = PlayerInfo[playerid][pGehalt];
    GivePlayerMoney(playerid, zuschuss);
    FraktionsKasse[fraktion] -= zuschuss;
    }
    }
    new checks = PlayerInfo[playerid][pPayCheck];
    new ebill = (PlayerInfo[playerid][pAccount]/10000)*(PlayerInfo[playerid][pLevel]);
    ConsumingMoney[playerid] = 1;
    GivePlayerMoney(playerid, checks);
    if(PlayerInfo[playerid][pAccount] > 0)
    {
    PlayerInfo[playerid][pAccount] -= ebill;
    SBizzInfo[4][sbTill] += ebill;
    }
    else
    {
    ebill = 0;
    }
    interest = (PlayerInfo[playerid][pAccount]/1000)*(tmpintrate);
    PlayerInfo[playerid][pExp]++;
    PlayerPlayMusic(playerid);
    PlayerInfo[playerid][pAccount] = account+interest+zuschuss;
    SendClientMessage(playerid, COLOR_WHITE, "{FFFF00}===============| {990000}Zahltag{FFFF00} |===============");
    format(string, sizeof(string), " Lohn: $%d Steuern: -$%d", checks, TaxValue);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    if(PlayerInfo[playerid][pPhousekey] != 255 || PlayerInfo[playerid][pPbiskey] != 255)
    {
    format(string, sizeof(string), "* Stromrechnung: -$%d", ebill);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    format(string, sizeof(string), "* Fraktionslohn: $%d", zuschuss);
    SendClientMessage(playerid, COLOR_WHITE, string);
    format(string, sizeof(string), "* Kontostand: $%d", account);
    SendClientMessage(playerid, COLOR_WHITE, string);
    format(string, sizeof(string), "* Zinssatz: 0.%d Prozent",tmpintrate);
    SendClientMessage(playerid, COLOR_WHITE, string);
    format(string, sizeof(string), "* Zinsen: $%d", interest);
    SendClientMessage(playerid, COLOR_WHITE, string);
    SendClientMessage(playerid, COLOR_WHITE, "{FFFF00}===============| {990000}Zahltag{FFFF00} |===============");
    format(string, sizeof(string), "* Neuer Kontostand: $%d", PlayerInfo[playerid][pAccount]);
    SendClientMessage(playerid, COLOR_AGEBUHR, string);
    format(string, sizeof(string), "* Miete: -$%d", rent);
    SendClientMessage(playerid, COLOR_WHITE, string);
    format(string, sizeof(string), "~y~PayDay~n~~w~Paycheck");
    GameTextForPlayer(playerid, string, 5000, 1);
    rent = 0;
    PlayerInfo[playerid][pPayDay] = 0;
    PlayerInfo[playerid][pPayCheck] = 0;
    PlayerInfo[playerid][pConnectTime] += 1;
    if(PlayerInfo[playerid][pDonateRank] > 0)
    {
    PlayerInfo[playerid][pPayDayHad] += 1;
    if(PlayerInfo[playerid][pPayDayHad] >= 5)
    {
    PlayerInfo[playerid][pExp]++;
    PlayerInfo[playerid][pPayDayHad] = 0;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "* Du hast nicht lange genug gespielt, um PayDay zu erhalten.");
    }
    }
    }
    Checkprop();
    return 1;
    }

  • Nein nicht ändern :/


    Sorry, hab nicht gewusst das Payday schon exestiert.
    Mach dann bei meinem System "pPayday" zu "pPaydayZeit" dann passt es.


    Soweit ich das jetzt gesehen habe, stimmt alles bei deinem Public.



    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)