PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie ist die Exp Formel für RM2k3?



Raildex
16.12.2020, 08:37
Im RM2k3 haben wir einen Base Wert, einen Extra Wert und eine Acceleration.
Kann mir jemand erklären, wie die Formel lautet um die Exp für den nächsten Level zu berechnen?

DFYX
16.12.2020, 16:32
Aus dem rpgmaker.net Forum: (https://rpgmaker.net/forums/topics/11264/?post=383789#post383789)


Depends on what he set the EXP curves to in the database. The EXP needed to reach the next level in RM2K3 is Primary + (Secondary * current level) + Tertiary. Primary, Secondary and Tertiary are the three sliders in the database when you are setting the EXP curves.

Yes, the primary and tertiary sliders do exactly the same thing. Yes, really.

Raildex
17.12.2020, 12:22
Wow das ist wirklich eine sehr stumpfe Formel.
Vielen Dank!

Cherry
26.12.2020, 18:15
Das wurde im 2k3 verschlimmbessert. Im 2k war die Formel wesentlich weniger stumpf. Ich hab das jetzt versucht ca. zu rekonstruieren aber es kann sein dass da noch wo Fehler drin sind... Es gilt: a = Primary, b = Secondary, c = Tertiary, l = Level

https://cherryshare.at/i/fYw6hy/image.png

Ich weiß du hast nach 2k3 gefragt und nicht 2k, aber vielleicht findet das noch mal wer anderer und glaubt dann es gilt auch für 2k...

EDIT: Hier die entsprechende Funktion im EasyRPG-Code: https://github.com/EasyRPG/Player/blob/268a3e872da81903d62daad3dd84fe0e7e280ae1/src/game_actor.cpp#L530-L566 (ich glaube aber hier ist der Level evtl. 0-basiert)


int Game_Actor::CalculateExp(int level) const {
const lcf::rpg::Class* klass = lcf::ReaderUtil::GetElement(lcf::Data::classes, data.class_id);

double base, inflation, correction;
if (klass) {
base = klass->exp_base;
inflation = klass->exp_inflation;
correction = klass->exp_correction;
}
else {
const lcf::rpg::Actor& actor = *lcf::ReaderUtil::GetElement(lcf::Data::actors, GetId());
base = actor.exp_base;
inflation = actor.exp_inflation;
correction = actor.exp_correction;
}

int result = 0;
if (Player::IsRPG2k()) {
inflation = 1.5 + (inflation * 0.01);

for (int i = level; i >= 1; i--)
{
result = result + (int)(correction + base);
base = base * inflation;
inflation = ((level+1) * 0.002 + 0.8) * (inflation - 1) + 1;
}
} else /*Rpg2k3*/ {
for (int i = 1; i <= level; i++)
{
result += (int)base;
result += i * (int)inflation;
result += (int)correction;
}
}
return min(result, max_exp_value());
}

lylayanez
26.04.2021, 04:43
Das ist genau das, was ich gesucht habe. Danke!

five nights at freddy's (https://fivenightsatteddys.com)