Problem beim Punktezähler

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,



    ich habe grade mit einem Textdraw ein Punktetext erstellt. Ich will jetzt das man Punkte kriegen kann die dann hinzugezählt werden.


    new Text:Punkte; Das Ganz Oben
    forward PunkteUp(playerid); Ganz Oben


    Punkte = TextDrawCreate(60,320,"Punkte: 0/1000"); So das unter OnGameModeInit.... jetzt möchte ich wenn man 1000 Punkte erreicht hat das die Punkte auf 0 gesetzt werden und
    man danach 1500 Punkte erreichen muss und dass immer so weiter


    public PunkteUp(playerid)
    {
    new newtext[41];
    new Max[MAX_PLAYER_NAME];
    format(newtext,sizeof(newtext),"Punkte:%d/1000",Spieler[playerid][Punkte]);
    TextDrawSetString(Punkte,newtext);
    TextDrawShowForPlayer(playerid,Punkte);
    }


    So wenn man jetzt z.B /punktegeben ID Anzahl eingibt und man 1000 eingibt soll das dann so aussehen


    format(newtext,sizeof(newtext),"Punkte:%d/1500",Spieler[playerid][Punkte]); Aber Ich weiss nicht wie ich das machen soll das der das Aktualiesiert und wenn man die Maximal punkte
    erreicht hat die Max-Punkte erhöht.




    Ist sehr umständlich erklärt aber ich hoffe ihr versteht es und mir kann jemand helfen.




    Mit freundlichen Grüßen


    Shoxi

  • Irgendwo in das Script:
    new Level[MAX_PLAYERS];


    Dort, wo sich die Punkte aktualisieren:
    if(Level[playerid]==2&&Spieler[playerid][Punkte]==1000)Level[playerid]++;
    if(Level[playerid]==3&&Spieler[playerid][Punkte]==1500)Level[playerid]++;
    if(Level[playerid]==4&&Spieler[playerid][Punkte]==2000)Level[playerid]++;
    if(Level[playerid]==5&&Spieler[playerid][Punkte]==2500)Level[playerid]++;
    //usw.


    Dort, wo das Textdraw erstellt/aktualisiert wird:
    format(newtext,sizeof(newtext),"Punkte:%d/%d",Spieler[playerid][Punkte],Level[playerid]*500);
    TextDrawSetString(Punkte,newtext);


    Unter OnPlayerConnect:
    if(Level[playerid]<=1)Level[playerid]=2;


    Die Variable Level müsstest du auch speichern, wenn du willst, dass das Level nach Ausloggen behalten wird. Ganz Simple, pro Level braucht man 500 Punkte, du willst bei 1000 Anfangen, also fängt jeder bei Level 2 an. Am besten Level im Enumerator "Spieler" speichern. Beim Verbinden vom Spieler wird überprüft, ob der Spieler unter oder genau Level 1 ist, falls ja, wird er auf Level 2 aufgestuft - da du wiegesagt bei 1000 anfängst.


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.


  • Ja, deswegen auch bei Level 2 anfangen da du bei 1000 anfangen möchtest. Pro Level braucht der Spieler 500 Punkte mehr. Mit Level 2 also Level (2) mal Summe (500) = 1000. Mit Level 3 = 3*500=1500. So wolltest du es doch?


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.