Erfahrungssystem für Rpg

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

BananaSalat

Betreff: Erfahrungssystem für Rpg

BeitragFr, Aug 04, 2006 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Sodala nach langem suchen, nichts gefunden.

Da dacht ich mir frag ich mal nach Wink

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: [AUSKLAPPEN]
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

BeitragFr, Aug 04, 2006 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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: [AUSKLAPPEN]

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

BeitragFr, Aug 04, 2006 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
So könnts ganz einfach gehen:

Code: [AUSKLAPPEN]

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

BeitragFr, Aug 04, 2006 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

BananaSalat

BeitragFr, Aug 04, 2006 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

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 Wink

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

BeitragSa, Aug 05, 2006 0:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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: [AUSKLAPPEN]
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragSa, Aug 05, 2006 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

BladeRunner

Moderator

BeitragSa, Aug 05, 2006 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wenn Du die Punkte expilzit festlegen willst kannst Du auch ne Lookuptable machen:

Code: [AUSKLAPPEN]
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

BeitragSo, Aug 06, 2006 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Shocked Das ist suppi, thx BladeRunner Wink

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 Wink

Jolinah

BeitragSo, Aug 06, 2006 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
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: [AUSKLAPPEN]
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: [AUSKLAPPEN]
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: [AUSKLAPPEN]
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). Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group