Problem beim Levelup 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
  • Hallo Leute,


    ich habe gescriptet, das jeder Spieler wenn er 10 Respektpunkte hat, sich ein Level kaufen kann.



    public Levelup(playerid)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(pInfo[i][respektpunkte] >=10)
    {
    ShowPlayerDialog(playerid, DIALOG_LEVELUP, DIALOG_STYLE_MSGBOX, "LEVELUP", "Sie sind ein Level aufgestiegen.\nDies sehen sie in der Spielertabelle\nSpielen sich 10 weitere Stunde,\nfür das nächste Level.", "OK", "");
    SendClientMessage(playerid, Gruen, "Bargeld: -3000$");
    GivePlayerMoney(playerid, -3000);
    SetPlayerScore(playerid,GetPlayerScore(playerid)+1);
    pInfo[i][level] +=1;
    }
    pInfo[i][respektpunkte] -=10;
    return 1;
    }
    }
    return 1;
    }



    Jetzt sollen von den Respektpunkten 10 abgezogen werden sobald er sich ein Level gekauft hat.
    Wenn er statt 10 nun 12 hat sollen 2 über bleiben. (vorteil wenn er 2h länger spielt)


    ich ziehe die 10 Rp wie folgt ab.

    pInfo[i][respektpunkte] -=10;


    Wenn er nun ausversehen ganz oft /levelup macht werden immer wieder 10 abgezogen und man landet dann im minus bereicht ( z.b. - 10, -20 usw.)
    wie kann ich ganz klar sagen das nur 10 abgezogen werden sollen.?!


    MFG
    Der Danger34

  • public Levelup()
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(pInfo[i][respektpunkte] >=10)
    {
    ShowPlayerDialog(i, DIALOG_LEVELUP, DIALOG_STYLE_MSGBOX, "LEVELUP", "Sie sind ein Level aufgestiegen.\nDies sehen sie in der Spielertabelle\nSpielen sich 10 weitere Stunde,\nfür das nächste Level.", "OK", "");
    SendClientMessage(i, Gruen, "Bargeld: -3000$");
    GivePlayerMoney(i, -3000);
    SetPlayerScore(i,GetPlayerScore(i)+1);
    pInfo[i][level] +=1;
    pInfo[i][respektpunkte] -=10;
    }
    }
    }
    return 1;
    }


    4 Fehler hatteste:


    • Du hast in der for Schleife mittels return abgebrochen (also nur ID 0 ging)
    • Du hast -10 Punkte ausserhalb der Abfrage gehabt, sprich jedes Mal wenn die Funktion aufgerufen wird, werden ihm 10 Points abgezogen (Iwann landet er im Minus)
    • Du bist in einer Schleife, verwende also kein playerid
    • Passe forward public Levelup(player) zu forward public Levelup() an (Wegen der Schleife brauchste keine playerid als Parameter)


    Gruss


    Edit: Habs nur schnell korrigiert