Ergebnis 1 bis 5 von 5

Thema: Wie ist die Exp Formel für RM2k3?

  1. #1

    Wie ist die Exp Formel für RM2k3?

    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?

  2. #2
    Aus dem rpgmaker.net Forum:

    Zitat Zitat
    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.

  3. #3
    Wow das ist wirklich eine sehr stumpfe Formel.
    Vielen Dank!

  4. #4
    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



    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/bl....cpp#L530-L566 (ich glaube aber hier ist der Level evtl. 0-basiert)

    Code:
    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());
    }

    Geändert von Cherry (26.12.2020 um 19:23 Uhr)

  5. #5
    Das ist genau das, was ich gesucht habe. Danke!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •