Automatisch Level up ?

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
  • Moin moin wollte gerne das man bei Vollen respektpunkten level up geht.


    Function Timer1()
    {
    SyncTime();
    DollahScoreUpdate();
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(PlayerInfo[i][pTot] == 1)
    {
    pIstTot[i] += 1;
    }
    if(PlayerInfo[i][pTot] == 1 && pIstTot[i] == 2)
    {
    if(IsPlayerInFrac(i, 1))
    {
    SetPlayerColor(i,NAMECOLOR_LSCOP);
    }
    else
    {
    SetPlayerColor(i,TEAM_HIT_COLOR);
    }
    PlayerInfo[i][pTot] = 0;
    pIstTot[i] = 0;
    SetPlayerVirtualWorld(i,0);
    if(PlayerInfo[i][pJailed] == 0)
    {
    SetCameraBehindPlayer(i);
    SetPlayerPos(i, 1176.2914,-1323.6859,14.0141);
    UnFreezePlayer(i);
    SetPlayerFacingAngle(i, 266.0591);
    SetPlayerSkin(i, PlayerInfo[i][pChar]);
    }
    else if(PlayerInfo[i][pJailed] > 0)
    {
    SetPlayerSpawn(i);
    UnFreezePlayer(i);
    SetPlayerSkin(i, PlayerInfo[i][pChar]);
    }
    SendClientMessage(i, COLOR_LIGHTGREEN, "Du wurdest erfolgreich aus dem Krankenhaus entlassen");
    SendClientMessage(i, COLOR_LIGHTGREEN, "Der aufenhalt kostet dich 500$ Schönen Tag noch");
    GivePlayerMoney(i, -500);
    FraktionsKasse[4] += 500;
    DestroyPickup(TotenKopf[i]);
    }
    if(IsPlayerConnected(i) && gPlayerLogged[i])
    {
    PlayerUpdate(i);
    }
    if(IsPlayerConnected(i))
    {
    PlayerInfo[i][pGesamtMinutes]++;
    PlayerInfo[i][pMinutesSinceLogin]++;
    PlayerInfo[i][pMinutesSinceAn]++;
    if(PlayerInfo[i][pPlayMinutes] <= 60)
    {
    PlayerInfo[i][pPlayMinutes]++;
    }
    if(PlayerInfo[i][pPlayMinutes] >= 60)
    {
    PlayerInfo[i][pPlayMinutes] = 0;
    new string[128];
    new account,interest;
    new rent = 0;
    if(IsPlayerConnected(i))
    {
    if(M_Bot[i][PAFK] == 0)
    {
    if(MoneyMessage[i]==1)
    {
    if(PlayerInfo[i][pJailed] == 0 && WantedLevel[i] >= 0)
    {
    SendClientMessage(i, COLOR_LIGHTRED, "Du konntest deine Schulden nicht Bezahlen und hast ein Wanted bekommen!");
    GivePlayerMoney(i, 1000);
    WantedLevel[i]++;
    }
    else if(PlayerInfo[i][pJailed] == 1)
    {
    SendClientMessage(i, COLOR_LIGHTRED, "Du bist in den Schulden und musst 3 Minuten länger sitzen!");
    PlayerInfo[i][pJailTime] += 180;
    GivePlayerMoney(i, 1000);
    }
    }
    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, "Du wurdest aus der Wohnung geschmissen!");
    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 = 3;
    }
    else
    {
    tmpintrate = 1;
    }
    }
    if(PlayerInfo[i][pPbiskey] > 0)
    {
    tmpintrate++;
    }
    new fraktion = 0;
    new checks;
    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)
    {
    checks = 0;
    GivePlayerMoney(i, checks);
    }
    else if(FraktionsKasse[fraktion] - PlayerInfo[i][pGehalt] >= 0)
    {
    checks = PlayerInfo[i][pGehalt];
    GivePlayerMoney(i, checks);
    FraktionsKasse[fraktion] -= checks;
    }
    }
    else if(PlayerInfo[i][pJob] != 0 || PlayerInfo[i][pMember] == 0 || PlayerInfo[i][pLeader] == 0)
    {
    checks = 500;
    GivePlayerMoney(i, checks);
    }//Should work for every player online
    PlayerInfo[i][pAccount] -= Tax;
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    new bonus = PlayerInfo[i][pPayCheck] / 2;
    PlayerInfo[i][pPayCheck] += bonus;
    }
    new ebill = (PlayerInfo[i][pAccount]/10000)*(PlayerInfo[i][pLevel]);
    //new oil = (PlayerInfo[i][pPhousekey]*100);
    ConsumingMoney[i] = 1;
    if(PlayerInfo[i][pAccount] > 0)
    {
    PlayerInfo[i][pAccount] -= ebill;
    SBizzInfo[3][sbTill] += ebill/5;
    }
    else
    {
    ebill = 0;
    }
    interest = (PlayerInfo[i][pAccount]/1000)*(tmpintrate);
    //PlayerInfo[i][pExp]++;
    PlayerPlayMusic(i);
    PlayerInfo[i][pAccount] = account+interest;
    SendClientMessage(i, COLOR_YELLOW, "|================| Payday |================|");
    format(string, sizeof(string), " Gehalt: $%d Miete: -$%d Steuern: -$%d", checks, rent, Tax);
    SendClientMessage(i, COLOR_GRAD1, string);
    if(PlayerInfo[i][pPhousekey] != 255 || PlayerInfo[i][pPbiskey] != 255)
    {
    format(string, sizeof(string), " Strom Kosten: -$%d", ebill);
    SendClientMessage(i, COLOR_GRAD1, string);
    }
    if(PlayerInfo[i][pHandyVer] == 1)
    {
    SendClientMessage(i,COLOR_GRAD2," Handyvertragskosten: -$100");
    GivePlayerMoney(i, -100);
    }
    if(PlayerInfo[i][pDonateRank] >= 1)
    {
    PlayerInfo[i][pExp]++;
    PlayerInfo[i][pExp]++;
    PlayerInfo[i][pExp]++;
    SendClientMessage(i, COLOR_GRAD1, "Du hast 3 Respektpunkte erhalten.");
    }
    else {
    PlayerInfo[i][pExp]++;
    SendClientMessage(i, COLOR_GRAD1, "Du hast 1 Respektpunkt erhalten.");
    }
    if(PlayerInfo[i][pPlayerKreditDauer] > 0)
    {
    PlayerInfo[i][pAccount] -= PlayerInfo[i][pPlayerKredit];
    PlayerInfo[i][pPlayerKreditDauer]--;
    format(string, sizeof(string), " Kreditrate: -%d", PlayerInfo[i][pPlayerKredit]);
    SendClientMessage(i, COLOR_GRAD1, string);
    }
    format(string, sizeof(string), " Zinsen: $%d [0.%d Prozent]", interest,tmpintrate);
    SendClientMessage(i, COLOR_GRAD2, string);
    SendClientMessage(i, COLOR_YELLOW, "|================| Gehalts-Abrechnung |================|");
    format(string, sizeof(string), " Neuer Kontostand: $%d", PlayerInfo[i][pAccount]);
    SendClientMessage(i, COLOR_GRAD5, string);
    format(string, sizeof(string), "~g~Zahltag~y~!!!");
    GameTextForPlayer(i, string, 5000, 1);
    if(checks == 0 && FrakMember(i) && PlayerInfo[i][pJob] == 0)
    {
    SendClientMessage(i,COLOR_LIGHTRED, "Da die Fraktionskasse leer ist bekommst du kein Gehalt!");
    }
    rent = 0;
    PlayerInfo[i][pPayCheck] = 0;
    PlayerInfo[i][pConnectTime] += 1;
    if(PlayerInfo[i][pZollPassTime] >= 25)
    {
    PlayerInfo[i][pZollPass] = 0;
    PlayerInfo[i][pZollPassTime] = 0;
    format(string, sizeof(string), "* Dein Zollpass ist nun nicht mehr gültig und vom Staat als ungültig anerkannt.");
    SendClientMessage(i, COLOR_LIGHTRED, string);
    }
    if(PlayerInfo[i][pZollPass] == 1)
    {
    PlayerInfo[i][pZollPassTime] += 1;
    format(string, sizeof(string), "* Du nutzt deinen Zollpass nun schon seit %d PayDays.", PlayerInfo[i][pZollPassTime]);
    SendClientMessage(i, COLOR_LIGHTBLUE, string);
    }
    if(WantedLevel[i] >= 1)
    {
    WantedLevel[i] --;
    new wlevel;
    wlevel = GetPlayerWantedLevel(i);
    new tmp[64];
    format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i", wlevel-1);
    SendClientMessage(i, COLOR_GREEN,tmp);
    }
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pPayDayHad] += 1;
    if(PlayerInfo[i][pPayDayHad] >= 5)
    {
    PlayerInfo[i][pExp]++;
    PlayerInfo[i][pPayDayHad] = 0;
    }
    new nxtlevel = PlayerInfo[i][pLevel]+1;
    new expamount = nxtlevel*levelexp-1;
    if (PlayerInfo[i][pExp] > expamount)
    {
    format(string, sizeof(string), "~g~LEVEL UP~n~~w~Du bist nun Level %d", nxtlevel);
    GameTextForPlayer(i, string, 5000, 1);
    //GivePlayerMoney(i, (-costlevel));
    PlayerInfo[i][pLevel]++;
    }
    }
    }
    else
    {
    SendClientMessage(i, COLOR_LIGHTRED, "* Du hast kannst keinen PayDay bekommen, solange du AFK bist!");
    }
    }
    }


    Dieser funktioniert aber irgendwie nicht so ganz.

  • Der Code ist ein wenig unübersichtlich.
    Hast du denn bereits einen Code, womit du überprüfst ob der Spieler die maximalen Punkten vom Level erreicht hat, und somit aufsteigen kann?

  • Folgendes. Wenn man nun die Respektpunkte voll hatt und dann wd ein Payday kommt. Wird man Level up Behält die punkte aber und nach jedem payday steht dann wd da Level up.


    //edit


    Ich dachte man kann es hier irgendwie umbauen also das einzige was ich habe wo die abfrage is is das hier ^^


    if (strcmp(cmd, "/buylevel", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (gPlayerLogged[playerid] != 0)
    {
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    if(PlayerInfo[playerid][pLevel] >= 0)
    {
    new nxtlevel = PlayerInfo[playerid][pLevel]+1;
    new costlevel = nxtlevel*levelcost;//10k for testing purposes
    new expamount = nxtlevel*levelexp;
    new infostring[256];
    if(GetPlayerMoney(playerid) < costlevel)
    {
    format(infostring, 256, " Du hast nicht genug Geld ($%d) !",costlevel);
    SendClientMessage(playerid, COLOR_GRAD1, infostring);
    return 1;
    }
    else if (PlayerInfo[playerid][pExp] < expamount)
    {
    format(infostring, 256, " Du brauchst mindestens %d Respekt Punkte, du hast [%d] !",expamount,PlayerInfo[playerid][pExp]);
    SendClientMessage(playerid, COLOR_GRAD1, infostring);
    return 1;
    }
    else
    {
    format(string, sizeof(string), "~g~LEVEL UP~n~~w~Du bist jetzt Level %d", nxtlevel);
    PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
    PlayerPlayMusic(playerid);
    GivePlayerMoney(playerid, (-costlevel));
    PlayerInfo[playerid][pLevel]++;
    if(PlayerInfo[playerid][pDonateRank] > 0)
    {
    PlayerInfo[playerid][pExp] -= expamount;
    new total = PlayerInfo[playerid][pExp];
    if(total > 0)
    {
    PlayerInfo[playerid][pExp] = total;
    }
    else
    {
    PlayerInfo[playerid][pExp] = 0;
    }
    }
    else
    {
    PlayerInfo[playerid][pExp] = 0;
    }
    if(PlayerInfo[playerid][pLevel] == 3)
    {
    Delete3DTextLabel(Noob[playerid]);
    Noobi[playerid] = 0;
    }
    }
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht eingeloggt !");
    }
    }
    return 1;
    }

  • Was ist wenn man mehr als die benötigte Exp hat?
    Dann verschwindet der Rest ja...
    Ersetz das
    if (PlayerInfo[i][pExp] > expamount)
    {
    format(string, sizeof(string), "~g~LEVEL UP~n~~w~Du bist nun Level %d", nxtlevel);
    GameTextForPlayer(i, string, 5000, 1);
    //GivePlayerMoney(i, (-costlevel));
    PlayerInfo[i][pLevel]++;
    }

    zu
    if (PlayerInfo[i][pExp] >= expamount) {
    format(string, sizeof(string), "~g~LEVEL UP~n~~w~Du bist nun Level %d", nxtlevel);
    GameTextForPlayer(i, string, 5000, 1);
    //GivePlayerMoney(i, (-costlevel));
    PlayerInfo[i][pLevel]++;
    PlayerInfo[i][pExp] -= expamount; // expamount falls man mehr als benötigt hat.
    }

    Dann sollte alles funktionieren


  • if(PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pPayDayHad] += 1;
    if(PlayerInfo[i][pPayDayHad] >= 5)
    {
    PlayerInfo[i][pExp]++;
    PlayerInfo[i][pPayDayHad] = 0;
    }
    }
    new nxtlevel = PlayerInfo[i][pLevel]+1;
    new expamount = nxtlevel*levelexp-1;
    if (PlayerInfo[i][pExp] >= expamount) {
    format(string, sizeof(string), "~g~LEVEL UP~n~~w~Du bist nun Level %d", nxtlevel);
    GameTextForPlayer(i, string, 5000, 1);
    //GivePlayerMoney(i, (-costlevel));
    PlayerInfo[i][pLevel]++;
    PlayerInfo[i][pExp] -= expamount; // expamount falls man mehr als benötigt hat.
    }


    Sollte so funktionieren