Erfahrungssystem für Rpg
Übersicht

![]() |
BananaSalatBetreff: Erfahrungssystem für Rpg |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sodala nach langem suchen, nichts gefunden.
Da dacht ich mir frag ich mal nach ![]() Hat irgendwer ne idee wie man ein erfahrungssystem ala erfahrung bekommen level steigen etc. bewerkstelligen könnte? Hab jetzt erst mal ne Variable für die Erfahrung gemacht Global EX = 0 und eine fürs Level Global Stufe = 1 so weit so gut .... nun bekomme ich durch knopfdruck immer 100 erfahrungspunkte gutgeschrieben. Nun könnte ich das stufe steigen per: Code: if Ex = 200 then
Stufe = 2 Aber diese Methode kommt mir sehr ... naja, komisch vor da ich für jedes level eine neue if schleife machen müsste. Hat jemand eine Idee ? Danke |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Am besten (und auch in den meisten Fällen so gemacht) machst du das über eine mathematische Funktion, die vom Level abhängt.
Eine Möglichkeit wäre zum Beispiel Code: If Exp >= 3*level*level - 5 * level + 800 level = level + 1 ; restlicher Aufstiegscode endif |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
- Zuletzt bearbeitet von Dreamora am Fr, Aug 04, 2006 21:10, insgesamt einmal bearbeitet
![]() |
JustTheBest |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
So könnts ganz einfach gehen: Code: stufe = EX/100 Müsste gehen! mfg |
||
www.mas-online.de.gg
__________ Liegt der Camper tot im Keller war der Rusher wieder schneller. Liegt der Rusher tot daneben hat der Camper nen Kollegen! |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
das wäre dumm, da man ja immer gleich viel exp benötigen würde um ein level zu steigen
das macht man ja nicht |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
BananaSalat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora,
dein Code ist schon mal sehr schick, hat bloß ein problem, der erste levelsprung ist bei 800 exp, dann springt er alle 100 exp immer um die 5 level weiter und dann springt er nur noch 1 level alle ca 200 exp .... XD Wär cool wenn du es umschreiben könntest, wenn nicht versuche ich selber mein glück ![]() Edit: Hab nochmal nachgedacht, bräuchte ich nicht sowas wie 1/2 * x ^3 ? Edit2: So das funktioniert schon mal suppa, mit meiner formel bloß stat 1/2 muss man 0.5 nehmen ![]() Jetzt is halt wieder das problem das man gleich mit den ersten 100 exp auf level 8 ist und dann auf level 14 mit den nächsten. |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
du musst float werte nehmen. dann kannst du auch 1/2 nehmen
musst eben statt 1/2 eingeben: 1./2. Dreamoras Formel funktioniert, wenn du die beiden Segmente in klammern setzt. Also: Code: If Exp >= (3.*level^2) - (5. * level + 800.)
level = level + 1 ; restlicher Aufstiegscode endif dürfte auch gehen |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Funktion war auch nur als ein Beispiel gedacht wie man es prinzipiell machen könnte.
Wegen dem - bei der einerpotenz müsste man eigentlich die höheren Potenzen stärker gewichten. Aber normalerweise macht man das auch nicht von dieser Seite. Sondern man schreibt sich die level und gewünschten Erfahrungspunktewerte auf und erzeugt dann mit X Punkten (je nachdem wie hoch man die höchste Potenz will, denn Anzahl Punkte = Höchste Potenz + 1) ein gleichungssystem woraus man das Polynom berechnen kann das diese Punkte beinhaltet. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wenn Du die Punkte expilzit festlegen willst kannst Du auch ne Lookuptable machen:
Code: Dim levelgrenzen(10)
for i = 1 to 10 read levelgrenzen(i) next Data 100,300,600,1100,2000,2600,3200,4000,5000,6500 ... if exp > levelgrenzen (level+1) then level+1 |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
BananaSalat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey ![]() ![]() Edit: Funzt bloß leider nicht so ganz ... versteh auch nicht wie der auf data zugreift. Und mir ist auch nicht ganz klar was if exp > levelgrenzen (Stufe+1) das bewirkt. Eine aufklärung währ sehr nett ![]() |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Data reiht einfach irgendwelche Daten in der angegebenen Reihenfolge auf. Read liest diese Daten wieder ein, bei jedem Aufruf von Read wird die nächste Zahl ausgelesen die vorher mit Data gespeichert wurde.
Code: Data 100, 200, 300
Read a ; a = 100 Read b ; b = 200 Read c ; c = 300 Und mit Dim levelgrenzen (10) wird ein Array mit der Grösse 10 (bzw 11. in BB) erstellt. Array bedeutet frei übersetzt "Reihe", und ist eigentlich auch nichts anderes. Du kannst über einen Namen eine ganze Reihe an Daten speichern und lesen. Code: Dim levelgrenzen(10)
levelgrenzen(1) = 100 levelgrenzen(2) = 200 levelgrenzen(3) = 300 Wie gesagt hat levelgrenzen die Grösse 10 (bzw. 11), das gewünschte Feld 0 - 10 kannst du in der Klammer angeben. Mit Read werden nun die Grenzen für jedes Level in dieses Array gelesen. Code: if exp > levelgrenzen(Stufe + 1)
Wenn du Momentan Stufe 1 bist, dann wird nun die Levelgrenze für Level 2 abgrefragt (Stufe + 1). Das ist das Selbe wie levelgrenzen(2). ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group