EXP System hilfe?

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
  • eine Variable mit dem Level
    Eine mit den EXP


    Bei jeder Aktion die anztahl von EXP auf die Variable zurechnen
    Wenn es höher ist als die geforderte (eigene rechnung machen vllt sowas wie level*2*100)
    und dann level +1 und exp = 0


    Fertig
    Noch Fragen?

    ik bin der vito c:

  • Ich werde dir nichts vorscripten
    Ich werde dir auch nichts schicken oder per Teamviewer helfen :D


    Ist nicht böse gemeint aber so lernst du es nie.


    Fang einfach mal an und frag hier nach, wenn du Probleme hast.
    Wobei hapert es denn?

    ik bin der vito c:

  • Ich gebe mal eine kleinen "Anstupser". Eigentlich sollte das aus diewersen youtube und foren tutorials bekannt sein.


    enum pInfo{ pLevel, pExp}
    new PlayerInfo[MAX_PLAYES][pInfo];



    Kommt die bestimmt bekannt vor. ;) Kann man aber auch mit PVars, oder was auch immer du benutzt, machen.
    Ich mache das mal anhand eines Commands:


    public OnPlayerCommandText(playerid, cmdtext[]){ if!strcmp(cmdtext, "/buylevel", true) { new lvl = GetPlayerScore(playerid); if(PlayerInfo[playerid][pExp] >= 2 && GetPlayerMoney(playerid) >= 2000) { SetPlayerScore(playerid, lvl + 1); GivePlayerMoney(playerid, -2000); PlayerInfo[playerid][pLevel] ++; PlayerInfo[playerid][pExp] = 0; } }}



    Das ist jetzt ein Anstupser. Hier ist nicht ausgeschmückt und würde auf einem ReallifemServer o.Ä. Wenig Sinn machen. Hier musst du kreativ Werden. :)


    //e sry, aber mit dem iPad funktioniert das einfach nicht richtig X(

  • Also, da es ja oben anscheinend keiner wirklich richtig erklären kann oder will (warum auch immer trotzdem gepostet, aber gut...), erklär ich dir das mal ganz grob und geb dir die Dinge vor, die du benötigst. Ich kann dir natürlich nicht alles bis hin ins kleinste Detail erklären, bzw. das ganze System erstellen, aber es sollte einigermaßen verständlich sein:


    Schritt 1: Initialisierung der Variablen
    new PlayerLevel[MAX_PLAYERS];
    new PlayerExp[MAX_PLAYERS];


    Schritt 2: Spieler betritt den Server (OnPlayerConnect)
    PlayerLevel[playerid] = 0; //Zu 0 setzen, damit er nicht die Statistiken eines anderen Spielers erhält, wichtig.
    PlayerExp[playerid] = 0;
    LoadPlayerStatistics(playerid); //Je nach dem wie du deine Spieler-Statistiken lädst.


    Schritt 3: Statistiken Laden
    PlayerLevel[playerid] = dini_Int(Spielerdatei, "Level");
    PlayerExp[playerid] = dini_Int(Spilerdatei, "Exp");
    //Ich habe hier dini als Beispiel genommen, musst du eben an dein System anpassen

    Schritt 4: Statistiken Speichern
    dini_IntSet(Spielerdatei, "Level", PlayerLevel[playerid]);
    dini_IntSet(Spielerdatei, "Exp", PlayerExp[playerid]);
    //Ebenso hier


    Schritt 5: Funktion zum geben der Experience
    stock GivePlayerExp(playerid, exp)
    {
    PlayerExp[playerid] += exp; //Experience geben
    while(PlayerExp[playerid] >= (PlayerLevel[playerid]+1)*1000)
    {
    PlayerLevel[playerid]++; //Level up
    PlayerExp[playerid] -= PlayerLevel[playerid]*1000; //Hier ziehen wir die Punkte wieder ab (Bsp: Exp = 999 Level = 0 => +10 => Exp = 9 Level = 1)
    }
    return 1;
    }


    Schritt 6: Ausgabe
    new str[144];
    format(str, sizeof(str), "Du bist im Experience Level %d und hast dort %d Punkte. Du musst noch %d Punkte sammeln um ins nächste Level zu kommen.", PlayerLevel[playerid], PlayerExp[playerid], ((PlayerLevel[playerid]+1)*1000)-PlayerExp[playerid]);
    SendClientMessage(playerid, 0xFF0000FF, str);



    Anmerkung:
    Die Levels sind so aufgebaut:
    Level 0 => 1: 1000 Punkte (ges. 1000)
    Level 1 => 2: 2000 Punkte (ges. 3000)
    Level 2 => 3: 3000 Punkte (ges. 6000)
    (usw.)


    So, das wars. Ich denke das ist anschaulich genug, damit solltest du eine Menge anfangen können.
    Natürlich musst/kannst du das ganze abändern, je nach dem wie du es wünschst. Das ist aber das grobe Gerüst auf das du aufbauen kannst. Nennen wir es das Skelett.

  • So gehts auch. :D
    Jetzt sollten auch keine Fragen mehr aufkommen, dass was Jeffry geschrieben hat, ist mehr als nur ein paar Schnipsel.
    Das ist ja fast ein halbes Tutorial. :P Sehr gut erklärt, Respekt, dass du dir die Mühe machst! :thumbup: