Droprate von Statted Parts

12/11/2015 21:38 ibuhexal#1
Kann mir zufällig jemand erklären, wie man die Dropchance / Rate von Setteilen einstellt mit Stats?

bsp.: Sta+ Luzaka Axe


danke schon mal
12/12/2015 03:09 xTwiLightx#2
Schau mal in die propItemEtc.inc, da findest du ganz unten Angaben dazu:
Code:
    RandomOptItem    1    IDS_PROPITEMETC_INC_000083    10    90000000
    {
        DST_STR    1
    }
RandomOptItem kommt immer vor, die Zahl danach ist eine fortlaufende ID.
Der String danach gibt an, wie der "Bonus" heißen soll.
Die Zahl danach gibt an, ab welchem Level dieser Bonus bekommen werden kann.
Die letzte Zahl ist die Chance auf diesen Bonus.


Bei der Chance musst du beachten, dass das Maximum 3000000000 beträgt.
Ich glaube, dass alle standard Stats hier bei 90000000 liegen => (90000000 / 3000000000 ) =0,03% Chance.
12/12/2015 11:44 ibuhexal#3
Als erstes danke aber ich glaube das wir uns da missverstanden haben oder es nicht funktioniert.


Das hatte ich schon gemacht aber trotzdem droppen die stattes Parts nicht besser.

Meine vermutung liegt also da, irgendwo muss die Rate noch eingestellt werden das die Statts öfter kommen.
weil wenn es dann so ist:
RandomOptItem 1 IDS_PROPITEMETC_INC_000083 10 3000000000
müßte das ja zu 100% immer droppen?
12/12/2015 17:22 xTwiLightx#4
In der Theorie, ja.
Aber man muss natürlich auch auf die Level achten, etc.
Versuche es da lieber mit einer Chance von sagen wir mal 50%.
12/12/2015 17:59 ibuhexal#5
Also habe jetzt mal folgendes versucht:

RandomOptItem 1 IDS_PROPITEMETC_INC_000083 10 1500000000
{
DST_STR 4
}

neue Files erstellt und Server natürlich auch neugestartet

Habe dann mehrere Monster gekillt und auch Sachen gedroppt (ab level 10) aber keins davon hatte statts.

deswegen kam ich ja drauf das es woanders eingestellt werden muss und die Zahl in der PropItemetc nur die Chance ist wenn es statts hat welche ;( aber ich finde absolut nicht wo es sein könnte


und vllt weiß ja auch jemand wo man einstellt wie oft kommt welches Event läuft, weil das kommt jetzt jede Minute was ich ziemlich nervig finde
12/13/2015 00:30 Spheromany#6
Code:
int CRandomOptItemGen::GenRandomOptItem( int nLevel, FLOAT fPenalty, ItemProp* pItemProp, DWORD dwClass )
{
	if( !pItemProp )
		return 0;
	
	if( pItemProp->dwItemKind1 != IK1_WEAPON && pItemProp->dwItemKind1 != IK1_ARMOR )
		return 0;

#if __VER >= 15 // __HERO129_VER15				// 15Â÷ È÷¾î·Î ·¹º§È®Àå
	if( nLevel >= MAX_MONSTER_LEVEL )
		nLevel = MAX_MONSTER_LEVEL - 1 ;
#endif	// 15Â÷ È÷¾î·Î ·¹º§È®Àå

	int i	= m_anIndex[nLevel];

	if( i != -1 )
	{
int nIndex	= xRandom( i + 1 );
		DWORD dwRandom	= xRandom( 3000000000 );
		if( dwClass == RANK_MIDBOSS )
			dwRandom	/= 5;	// ÁØ º¸½º ¸ó½ºÅÍ ·£´ý ¿É¼Ç È®·ü 500%
		DWORD dwProbability	= (DWORD)(m_aRandomOptItem[nIndex].dwProbability * fPenalty);
		if( dwRandom < dwProbability )
			return m_aRandomOptItem[nIndex].nId;
	}
	return 0;
}

Aus dem obigen Abschnitt müsste dieser geändert werden:

Code:
if( i != -1 )
	{
int nIndex	= xRandom( i + 1 );
		DWORD dwRandom	= xRandom( 3000000000 );
		if( dwClass == RANK_MIDBOSS )
			dwRandom	/= 5;	// ÁØ º¸½º ¸ó½ºÅÍ ·£´ý ¿É¼Ç È®·ü 500%
		DWORD dwProbability	= (DWORD)(m_aRandomOptItem[nIndex].dwProbability * fPenalty);
		if( dwRandom < dwProbability )
			return m_aRandomOptItem[nIndex].nId;
	}