Huhu com!
Könnte mir jemand einen kleinen Anschwung geben wie man ein EXP System macht?
EXP System hilfe?
- encrusted.
- Geschlossen
- Erledigt
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 EXPBei 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 = 0Fertig
Noch Fragen? -
Bisschen ausführlicher und ein ganz wenig schnipsel wäre nett .. :s
-
Ich werde dir nichts vorscripten
Ich werde dir auch nichts schicken oder per Teamviewer helfenIst 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? -
schau doch einfach in ein Godfather an, wie z.B das Level(Score) ist so gesagt auch ein Exp System...
-
schau doch einfach in ein Godfather an, wie z.B das Level(Score) ist so gesagt auch ein Exp System...
Es soll also hilfreich sein das aus einem 40 - 100k Zeilen script rauszusuchen und zu kopieren? -
Natürlich nicht, er soll es aber so ähnlich hinbekommen.?
-
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
-
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 hierSchritt 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.
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. Sehr gut erklärt, Respekt, dass du dir die Mühe machst! -
breadfish.de
Hat das Thema geschlossen.