[Source Release] SetRandomOption erweitern

03/21/2012 12:55 Shuya83#1
Ich release euch mal wie ihr eure /SetRandomOption erweitern könnt.

Standardmäßig kann man nur Str,Dex,Int,Sta,Kritische Trefferrate,Geschwindigkeit,Angriffstempo,Verteidi gung,Erhöht die HP um,Erhöht die FP um,Erhöht die MP um,Magiebeschleunigung,Kritischer Schaden und Erhöht die ATK erwecken.

Ihr öffnet eure FuncTextCmd.cpp in Source _Interface Ordner und sucht nach

Code:
BOOL TextCmd_SetRandomOption( CScanner & s )
Weiter unten ersetzt ihr
Code:
				switch( nDst )
				{
					case 1:
					case 2:
					case 3:
					case 4:
					case 9:
					case 11:
					case 24:
					case 26:
					case 35:
					case 36:
					case 37:
					case 75:
					case 77:
					case 83:
						break;
					default:
Einfach durch

Code:
				switch( nDst )
				{
					case 1:
					case 2:
					case 3:
					case 4:
					case 5:
					case 6:
					case 7:
					case 8:
					case 9:
					case 10:
					case 11:
					case 12:
					case 13:
					case 14:
					case 15:
					case 16:
					case 17:
					case 18:
					case 19:
					case 20:
					case 21:
					case 22:
					case 23:
					case 24:
					case 25:
					case 26:
					case 27:
					case 28:
					case 29:
					case 30:
					case 31:
					case 32:
					case 33:
					case 34:
					case 35:
					case 36:
					case 37:
					case 38:
					case 39:
					case 40:
					case 41:
					case 42:
					case 43:
					case 44:
					case 45:
					case 46:
					case 47:
					case 48:
					case 49:
					case 50:
					case 51:
					case 52:
					case 53:
					case 54:
					case 55:
					case 56:
					case 57:
					case 58:
					case 59:
					case 60:
					case 61:
					case 62:
					case 63:
					case 64:
					case 65:
					case 66:
					case 67:
					case 68:
					case 69:
					case 70:
					case 71:
					case 72:
					case 73:
					case 74:
					case 75:
					case 76:
					case 77:
					case 78:
					case 79:
					case 80:
					case 81:
					case 82:
					case 83:
					case 84:
					case 85:
					case 86:
					case 87:
					case 88:
					case 89:
					case 90:
					case 91:
					case 92:
					case 93:
					case 94:
					case 95:
					case 96:
					case 97:
					case 98:
						break;
					default:
Nun könnt ihr alles erwecken was in dieser Liste steht.

Code:
DST_STR                      		 1   // Str			
DST_DEX                      		 2   // Dex			
DST_INT                      		 3   // Int		
DST_STA                      		 4   // Sta		
DST_YOY_DMG		             	 5   // Yoyo-Angriffskraft
DST_BOW_DMG		             	 6   // Bow-Angriffskraft
DST_CHR_RANGE                		 7   // Reichweite
DST_BLOCK_RANGE              		 8   // Fernkampfabwehr
DST_CHR_CHANCECRITICAL       	 9   // Kritische Trefferrate
DST_SPEED                   		11  // Geschwindigkeit
DST_ABILITY_MIN             		12  // Min. Fähigkeit
DST_ABILITY_MAX            	 	13  // Max. Fähigkeit
DST_BLOCK_MELEE             		14  // Nahkampfabwehr
DST_MASTRY_EARTH            		15  // Erde meistern
DST_MASTRY_FIRE             		17  // Feuer meistern
DST_MASTRY_WATER            		18  // Wasser meistern
DST_MASTRY_ELECTRICITY      	19  // Blitz meistern
DST_MASTRY_WIND             		20  // Wind meistern
DST_KNUCKLE_DMG             		21  // Knuckle-Angriffskraft
DST_PVP_DMG_RATE		22  // Schadensabsorbierung
DST_ATTACKSPEED             		24  // Angriffstempo
DST_SWD_DMG                 		25  // Sword-Angriffskraft
DST_ADJDEF                  		26  // Verteidigung
DST_RESIST_MAGIC            		27  // Magieabwehr
DST_RESIST_ELECTRICITY      		28  // Blitz DEF
DST_REFLECT_DAMAGE          		29  // Schadensreflektion
DST_RESIST_FIRE             		30  // Feuer DEF
DST_RESIST_WIND            	 	31  // Wind DEF
DST_RESIST_WATER            		32  // Wasser DEF
DST_RESIST_EARTH            		33  // Erde DEF
DST_AXE_DMG                 		34  // Axe-Angriffskraft								
DST_HP_MAX                  		35  // Erhöht die HP um
DST_MP_MAX                  		36  // Erhöht die MP um
DST_FP_MAX                  		37  // Erhöht die FP um
DST_HP                      		38  // HP Rate
DST_MP                      		39  // MP Rate
DST_FP                      		40  // FP Rate
DST_HP_RECOVERY             		41  // HP Regeneration
DST_MP_RECOVERY             		42  // MP Regeneration
DST_FP_RECOVERY             		43  // FP Regeneration
DST_KILL_HP			44  // HP Reg. bei Ableben des Ziels 
DST_KILL_MP			45  // MP Reg. bei Ableben des Ziels 
DST_KILL_FP			46  // FP Reg. bei Ableben des Ziels 
DST_ADJ_HITRATE             		47  // Treffsicherheit 
DST_ATTACKSPEED_RATE		51  // Das Angriffstempo nimmt zu
DST_HP_MAX_RATE			52  // Zusätzl. HP Rate	
DST_MP_MAX_RATE			53  // Zusätzl. MP Rate							
DST_FP_MAX_RATE			54  // Zusätzl. FP Rate						
DST_CHR_WEAEATKCHANGE	    	55  // Attribut Angriffsrate
DST_CHR_STEALHP			56  // Suck Blood(HP)
DST_CHR_CHANCEDARK		59  // Dunkelwiderstand :
DST_CHR_CHANCEPOISON	    	60  // Chance den Gegner zu vergiften
DST_IMMUNITY	 		61  // Immunität
DST_ADDMAGIC			62  // Zusätzl. Magiekraft
DST_CHR_DMG                 		63  // Zusätzl. Schaden
DST_CHRSTATE                		64  // Zusätzl. Attribute
DST_PARRY                   		65  // Abwehr
DST_ATKPOWER_RATE		66  // Angriffskraft
DST_EXPERIENCE			67  // EXP
DST_JUMPING                 		68  // Sprunghöhe
DST_ADJDEF_RATE			72  // Verteidigung
DST_MP_DEC_RATE			73  // Verringert die Rate des MP-Verbrauchs
DST_FP_DEC_RATE			74  // Verringert die Rate des FP-Verbrauchs
DST_SPELL_RATE			75  // Magiebeschleunigung
DST_CAST_CRITICAL_RATE		76  // Magiebeschleunigung
DST_CRITICAL_BONUS		77  // Kritischer Schaden
DST_MONSTER_DMG		79  // Schaden wird erhöht während dem Jagen.
DST_PVP_DMG			80  // Schaden wird erhöht während dem PvP.
DST_MELEE_STEALHP		81  // Suck Blood(HP)
DST_HEAL			82  // Heal
DST_ATKPOWER			83  // Erhöht die ATK um
DST_ONEHANDMASTER_DMG             	85  // Erhöht den Schaden während man eine Einhandwaffe verwendet.
DST_TWOHANDMASTER_DMG             	86  // Erhöht den Schaden während man eine Zweihandwaffe verwendet.
DST_YOYOMASTER_DMG             	87  // Erhöht den Schaden während man einen Yoyo verwendet.
DST_BOWMASTER_DMG             	88  // Erhöht den Schaden während man einen Bow verwendet.
DST_KNUCKLEMASTER_DMG             	89  // Erhöht den Schaden während man einen Knuckle verwendet.
DST_HAWKEYE_RATE             		90  // Angriffsentfernung
DST_RESIST_MAGIC_RATE            	91  // Magieabwehr
DST_GIFTBOX			92  // Erhöht die Droprate seltener Items um
DST_RESTPOINT_RATE		93  // Ruhebonus vergrößern.
DST_DECREASE_ATK		94  // Verrinerung der ATK
DST_DECREASE_DEF			95  // Verrinerung der DEF

Edit: Hab grade gesehen das es schon einen tut für gibt. Bitte löschen.
03/21/2012 13:52 Lumi#2
Wozu löschen ?
2 TuT's schade niemanden.
Lieber mehr als Wenig. ;3
Beim ersten mal hab ichs sogar Verstanden wie es funz. ;D
03/21/2012 14:34 Sedrika#3
Statt die Zahlen zu adden, könnte man viel besser einfach die Switch abfrage rausnehmen ;)
03/21/2012 15:59 Jopsi332#4
habe das schonmal releast.
03/21/2012 19:13 Incestus#5
if(nDst < 1 || nDst > 98)
return FALSE;

Für was denn ein Switch. o,o
04/06/2012 15:40 inteL96#6
Just want to ask if what is the difference between the normal and this? Because the title says 'setrandomoption expand'.
04/06/2012 19:29 inFlame'#7
Kann man doch auch in der Source einstellem, und randomoption.inc :) oder bin ich dumm ?
04/06/2012 21:20 xMootie#8
Logical... Here's a decent function (modification) I wrote a few weeks after I acquired Flyff's source code.

Code:
BOOL TextCmd_SetRandomOption( CScanner & s )
{
#ifdef __WORLDSERVER
	CUser* pUser	= (CUser*)s.dwValue;
	CItemElem* pItemElem	= pUser->m_Inventory.GetAt( 0 );
	if( pItemElem )
	{
		int nRandomOptionKind	= g_xRandomOptionProperty->GetRandomOptionKind( pItemElem );
		if( nRandomOptionKind >= 0 )
		{
			g_xRandomOptionProperty->InitializeRandomOption( pItemElem->GetRandomOptItemIdPtr() );
			int nDst, nAdj;
			int cb	= 0;
			nDst	= s.GetNumber();
			while( s.tok != FINISHED )
			{
				nAdj	= s.GetNumber();
				if( nDst == 48 ) // Broken attribute
					break;
				if ( nDst >= MAX_ADJPARAMARY || nDst <= 0 )
					break;
				if ( nAdj > 512 || nAdj < -512 ) // Prevent integer overflows
					break;
				g_xRandomOptionProperty->SetParam( pItemElem->GetRandomOptItemIdPtr(), nDst, nAdj );
				cb++;
				if( cb >= MAX_RANDOM_OPTION )
					break;
				nDst	= s.GetNumber();
			}
			pUser->UpdateItemEx( (BYTE)( pItemElem->m_dwObjId ), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId() );
		}
	}
#endif	// __WORLDSERVER
	return TRUE;
}
Simple and effective, although could use some user output.
04/07/2012 17:49 inteL96#9
XorLethal, what this actually do? what's the difference between the ordinary one and this? :S