⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 char_data.c.bak

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 BAK
📖 第 1 页 / 共 4 页
字号:
160,		// 24
175,		// 25
190,		// 26
205,		// 27
220,		// 28
235,		// 29
250,		// 30
270,		// 31
290,		// 32
310,		// 33
330,		// 34
350,		// 35
375,		// 36
400,		// 37
425,		// 38
450,		// 39
475,		// 40
500,		// 41
525,		// 42
550,		// 43
575,		// 44
600,		// 45
625,		// 46
650,		// 47
675,		// 48
700,		// 49
725,		// 50
750,		// 51
775,		// 52
800,		// 53
825,		// 54
850,		// 55
875,		// 56
900,		// 57
925,		// 58
950,		// 59
980,		// 60
1010,		// 61
1040,		// 62
1070,		// 63
1100,		// 64
1130,		// 65
1160,		// 66
1190,		// 67
1220,		// 68
1250,		// 69
1280,		// 70
1310,		// 71
1345,		// 72
1380,		// 73
1415,		// 74
1450,		// 75
1485,		// 76
1520,		// 77
1555,		// 78
1590,		// 79
1630,		// 80
1670,		// 81
1710,		// 82
1750,		// 83
1790,		// 84
1830,		// 85
1870,		// 86
1910,		// 87
1950,		// 88
1990		// 89
};           // 90
















// 酵烂读卅烦董袄煌遥
int GetEnemyExp( int level ){
/*
	int exp = 0;
	if( level < 5 ){
		exp = 2 * level;
	}else
	if( level < 10 ){
		exp = 10 * level;
	}else
	if( level < 20 ){
		exp = 15 * level;
	}else
	if( level < 30 ){
		exp = 30 * level;
	}else
	if( level < 40 ){
		exp = 50 * level;
	}else
	if( level < 50 ){
		exp =60 * level;
	}else
	if( level < 60 ){
		exp =60 * level;
	}else{
		exp =70 * level;
	}
*/
	if( level >= arraysizeof( EnemyExpTbl ) )level = arraysizeof( EnemyExpTbl )-1;
	return EnemyExpTbl[level];
}
#endif

#ifdef _NEWOPEN_MAXEXP
/*static int NeedLevelUpTbls[] = {
			0, 0,
	        2,        6,       18,       37,       67,      110,      170,
	      246,      344,      464,      610,      782,      986,     1221,
	     1491,     1798,     2146,     2534,     2968,     3448,     3978,
		 4558,     5194,     5885,     6635,     7446,     8322,     9262,
	    10272,    11352,    12506,    13734,    15042,    16429,    17899,
		19454,    21098,    22830,    24656,    26576,    28594,    30710,
		32930,    35253,    37683,    40222,    42874,    45638,    48520,
		51520,    54642,    57886,    61258,    64757,    68387,    72150,
		76050,    80086,    84264,   106110,   113412,   121149,   129352,
	   138044,   147256,   157019,   167366,   178334,   189958,   202282,
	   215348,   229205,   243901,   259495,   276041,   293606,   312258,
	   332071,   353126,   375511,   399318,   424655,   451631,   480370,
	   511007,   543686,   578571,   615838,   655680,   698312,   743971,
	   792917,   845443,   901868,   962554,  1027899,  1098353,  1174420,
	  1256663,  1345723,  1442322,  1547281,  1661531,  1786143,  1922340,
	  2071533,  2235351,  2415689,  2614754,  2835137,  3079892,  3352633,
	  3657676,  4000195,  4386445,  4824041,  5322323,  5892866,  6550125,
	 12326614, 15496114, 20025638, 26821885, 37698249, 56734876, 68097265,
	 68290815, 68487425, 68687119, 68889921, 69095855, 69304945, 69517215,
	 69732689, 69951391, 70173345, 70398575, 70627105, 70858959, 71244161,
	 71342735, 71584705, 71830095, 72078929, 72331231, 72587025, 72846335,
	 73109185, 73615599, 73655601, 73929215, 74206465, 74487375, 74771969,
	 75060271, 75352305, 75648095, 75947665, 76421039, 76563241, 76874295,
	 77189225, 77508055, 77830809, 78157511, 78488185, 78822855, 79161545,
	 79724279, 79856081, 80206975, 80561985, 80921135, 81284449, 81651951,
	 82023665, 82399615, 82779825, 83434319, 83558121, 83951255, 84348745,
	 84750615, 85156889, 85567591, 85982745, 86402375, 86826505, 87575159,
	 87693361, 88131135, 88573505, 89020495, 89472129, 89928431, 90389425,
	 90855135, 91325585, 91800799
};
*/
#endif
static int LevelUpTbl[] = { // 经验值 等级 换算表
0,			//  0 EX=(lv^4)/10
0,			//  1
	        2,        8,       25,       62,      129,
	      240,      409,      656,     1000,     1464,		// 11
	     2073,     2856,     3841,     5062,     6553,		// 16
	     8352,    10497,    13032,    16000,    19448,    23425,		// 22
	    27984,    33177,    39062,    45697,    53144,    61465,		// 28
	    70728,    81000,    92352,   104857,   118592,   133633,		// 34
	   150062,   167961,   187416,   208513,   231344,   256000,		// 40
	   282576,   311169,   341880,   374809,   410062,   447745,		// 46
	   487968,   530841,   576480,   625000,   676520,   731161,		// 52
	   789048,   850305,   915062,   983449,  1055600,  1131649,		// 58
	  1211736,  1296000,
	  1402110,    // 61	EX=(lv^4)/(10-0.125*(lv-60))
	  1515521,   1636671,   1766022,   1904066,   2051322,   2208342,	// 67
	  2375708,   2554041,   2744000,   2946281,   3161630,   3390834,	// 73
	  3634736,   3894230,   4170272,   4463878,   4776136,   5108207,	// 79
	  5461333,   5836843,   6236162,   6660816,   7112448,   7592818,	// 85
	  8103824,   8647511,   9226082,   9841920,  10497600,  11195912,	// 91
	 11939882,  12732800,  13578242,  14480111,  15442664,  16470563,	// 97
	 17568917,  18743336,  20000000,  21345723,  22788045,  24335325,	// 103
	 25996856,  27783000,  29705340,  31776872,  34012224,  36427912,	// 109
	 39042666,  41877804,  44957696,  48310329,  51968004,  55968200,	// 115
	 60354645,  65178685,  70501009,  76393874,  82944000,

	  95270613,	// 121 Nuke 0624 EX=(lv^4)/(2.5-0.25*(lv-120))
	 110766728, 130792366, 157614250, 195312500,						// 125
	 252047376,      // 126 EX=lv^4+60000000*(lv-126)^2 Nuke 0816
	 320144641, 388435456, 456922881, 525610000, 594499921, 663595776,	// 132
	 732900721, 802417936, 872150625, 942102016,1012275361,1082673936,	// 138
	1153301041,1224160000      // 140
};

int CHAR_GetLevel()
{	
	return arraysizeof( LevelUpTbl )-1;
}
int CHAR_GetLevelExp( int candp, int level, int corp )

{
#ifdef _NEWOPEN_MAXEXP
#ifdef _USER_EXP_CF
	if(corp=0){
		if(CHAR_getInt(candp,CHAR_TRANSMIGRATION)<6){
			if(level>140)
				return -1;
		}else{
			if(level>160)
				return -1;
		}
	}else{
		if(CHAR_getInt(candp,CHAR_TRANSMIGRATION)<2){
			if(level>140)
				return -1;
		}else{
			if(level>160)
				return -1;
		}
		return getNeedLevelUpTbls(level);
#endif
/*	if( level >= arraysizeof( NeedLevelUpTbls ) ){
		return -1;
	}
	return NeedLevelUpTbls[level];*/
#else
	if( level >= arraysizeof( LevelUpTbl ) ){
		return -1;
	}
	return LevelUpTbl[level];
#endif
}

int CHAR_GetOldLevelExp( int level)
{
	if( level >= arraysizeof( LevelUpTbl ) ){
		return -1;
	}
	return LevelUpTbl[level];
}

int CHAR_LevelUpCheck( int charaindex , int toindex)
{
	int exp, level, nextexp, iRet = FALSE;
	if( CHAR_CHECKINDEX( charaindex  ) == FALSE )return 0;
	exp = CHAR_getInt( charaindex, CHAR_EXP );
	while( 1 ){
		level = CHAR_getInt( charaindex, CHAR_LV );
		nextexp = CHAR_GetLevelExp( charaindex, level+1, 0 );
		if( nextexp < 0 )
			break;
		// Arminius 7.30 pet limit lv
		if (CHAR_getInt(charaindex, CHAR_WHICHTYPE)==CHAR_TYPEPET) {

			if (level >= CHAR_getInt(charaindex, CHAR_LIMITLEVEL) && 
				CHAR_getInt(charaindex, CHAR_LIMITLEVEL) > 0 )	{
#ifdef _NEWOPEN_MAXEXP
				CHAR_setInt( charaindex, CHAR_EXP , 0);
#else
#ifdef	_PET_LIMITLEVEL
				if( CHAR_getInt( charaindex, CHAR_PETID) == 718 
#ifdef _PET_2LIMITLEVEL
					|| CHAR_getInt( charaindex, CHAR_PETID) == 401 
#endif
					)	{
					nextexp = CHAR_GetLevelExp( charaindex, CHAR_getInt(charaindex, CHAR_LIMITLEVEL), 0 );
					CHAR_setInt( charaindex, CHAR_EXP , nextexp );
				}
#endif
#endif
				break;
			}
		}
		if( exp >= nextexp ){
			iRet ++;
			if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER ){
				CHAR_setInt( charaindex, CHAR_DUELPOINT,
					CHAR_getInt( charaindex, CHAR_DUELPOINT) + (level+1)*10 );
			}
#ifdef	_PET_LIMITLEVEL
			else {
				CHAR_CheckPetDoLimitlevel( charaindex, toindex, level );
			}
#endif
			
#ifdef _NEWOPEN_MAXEXP
			if( level >= CHAR_MAXUPLEVEL ){
			}else{
				if( CHAR_HandleExp( charaindex) != -1 ){
					exp = CHAR_getInt( charaindex, CHAR_EXP );
					CHAR_setInt( charaindex, CHAR_LV, level+1 );
				}
			}
#else
			CHAR_setInt( charaindex, CHAR_LV, level+1 );
#endif
		}else{
			break;
		}
	}
	return iRet;
}

#ifdef	_PET_LIMITLEVEL
void CHAR_CheckPetDoLimitlevel( int petindex , int toindex, int level)	
{
	int LevelUpPoint,vital,str,tgh,dex;
	int j,k;
	char token[56];
#define RAND(x,y)   ((x-1)+1+ (int)( (double)(y-(x-1))*rand()/(RAND_MAX+1.0)) )

	if( CHAR_getInt( petindex, CHAR_PETID) == 718 
#ifdef	_PET_2LIMITLEVEL
		|| CHAR_getInt( petindex, CHAR_PETID) == 401
#endif
		)	{
		LevelUpPoint = CHAR_getInt( petindex, CHAR_ALLOCPOINT );
		vital = (int )(( LevelUpPoint >> 24 ) & 0xFF);
		str = (int)(( LevelUpPoint >> 16 ) & 0xFF);
		tgh = (int)(( LevelUpPoint >> 8 ) & 0xFF);
		dex = (int)(( LevelUpPoint >> 0 ) & 0xFF);

		if( strcmp( CHAR_getChar( petindex, CHAR_OWNERCDKEY), CHAR_getChar( toindex, CHAR_CDKEY) ) ||
			strcmp( CHAR_getChar( petindex, CHAR_OWNERCHARANAME), CHAR_getChar( toindex, CHAR_NAME) )){
			sprintf(token,"我不认识你呀!快把我还给我主人!");
			//andy 1/11 reEdit
			vital -= RAND(2,10);  if (vital<0) vital=0;
			str -= RAND(2,10);    if (str<0) str=0;
			tgh -= RAND(2,10);    if (tgh<0) tgh=0;
			dex -= RAND(2,10);    if (dex<0) dex=0;
			LevelUpPoint = (vital<<24)+(str<<16)+(tgh<<8)+(dex<<0);

			CHAR_setInt( petindex, CHAR_ALLOCPOINT , LevelUpPoint);
			CHAR_talkToCli( toindex, petindex, token, CHAR_COLORWHITE);

			LogPetPointChange(
					CHAR_getChar( toindex, CHAR_NAME ),
					CHAR_getChar( toindex, CHAR_CDKEY ),
					CHAR_getChar( petindex, CHAR_NAME),
					petindex, 2,
					CHAR_getInt( petindex, CHAR_LV),
					"No_master(玛蕾不对主人)",
					CHAR_getInt( toindex,CHAR_FLOOR),
					CHAR_getInt( toindex,CHAR_X ),
					CHAR_getInt( toindex,CHAR_Y )
					);
		}

		if( ( level % 20 ) == 0 )	{
			for( j=0; j < 3; j++)	{
				k = RAND( 0, 3);
				if( k == 0 )
					vital--;
				if( k == 1 )
					str--;
				if( k == 2 )
					tgh--;
				if( k == 3 )
					dex--;
			}
			if( vital < 0 ) vital =0;
			if( str < 0 ) str =0;
			if( tgh < 0 ) tgh =0;
			if( dex < 0 ) dex =0;
			LevelUpPoint = (vital<<24)+(str<<16)+(tgh<<8)+(dex<<0);
			CHAR_setInt( petindex, CHAR_ALLOCPOINT , LevelUpPoint);
			//print("\n << ( level % 20 ) == 0 >> ");
			LogPetPointChange(
					CHAR_getChar( toindex, CHAR_NAME ),
					CHAR_getChar( toindex, CHAR_CDKEY ),
					CHAR_getChar( petindex, CHAR_NAME),
					petindex,3,
					CHAR_getInt( petindex, CHAR_LV),
					"level%20",
					CHAR_getInt( toindex,CHAR_FLOOR),
					CHAR_getInt( toindex,CHAR_X ),
					CHAR_getInt( toindex,CHAR_Y )
					);
		}
	}
}
#endif
int CHAR_PetTakeDrop( int petindex, int floor, int ox, int oy)	//强制丢弃宠物升级
{
	int x, y, objindex;

	x = rand()%10;
	y = rand()%10;

	//丢下宠物	CHAR_endCharOneArray
	objindex = PET_dropPetAbsolute( petindex,floor,x,y, FALSE );
	if( objindex == -1 )	{
		return -1;
	}
	CHAR_setWorkInt( petindex,CHAR_WORKOBJINDEX,objindex );
	CHAR_setInt( petindex, CHAR_FLOOR, floor);
	CHAR_setInt( petindex, CHAR_X, x);
	CHAR_setInt( petindex, CHAR_Y, y);
	CHAR_sendCToArroundCharacter( objindex);

	return floor;
}

int CHAR_PetTakeLevelUp( int petindex, int lv)//强制宠物升级
{
	int k;
	for( k = 1; k < lv; k ++ ){
		CHAR_PetLevelUp( petindex );
		CHAR_PetAddVariableAi( petindex, AI_FIX_PETLEVELUP );
		CHAR_setInt( petindex, CHAR_LV, CHAR_getInt( petindex, CHAR_LV) +1 );
	}

	CHAR_complianceParameter( petindex );
	return k;
}

#ifdef _NEW_MANOR_LAW
extern  struct  FM_POINTLIST fmpointlist;
#endif

int CHAR_PetLevelUp( int petindex )
{
	struct _RankRandTbl{
		int min;
		int max;
	}RankRandTbl[] = {
		{ 450, 500 },
		{ 470, 520 },
		{ 490, 540 },
		{ 510, 560 },
		{ 530, 580 },
		{ 550, 600 },
	};
	
	float Param[4] = { 0.0, 0.0, 0.0, 0.0 };
	int LevelUpPoint, petrank;
	float str, vital, dex, tgh, fRand, i;
#ifdef _TEACHER_SYSTEM
	int iGetFame = 0;
#endif	
	// 娄醒民尼永弁
	if( CHAR_CHECKINDEX( petindex ) == FALSE )	return -1;
	if( CHAR_getInt( petindex, CHAR_WHICHTYPE ) != CHAR_TYPEPET )return -1;
	
	LevelUpPoint = CHAR_getInt( petindex, CHAR_ALLOCPOINT );
	
	// 矢永玄及仿件弁
	petrank = CHAR_getInt( petindex, CHAR_PETRANK );
	if( petrank < 0 || petrank > 5 ) petrank = 0;
	
	// 潸  
	vital = (float)(( LevelUpPoint >> 24 ) & 0xFF);
	str = (float)(( LevelUpPoint >> 16 ) & 0xFF);
	tgh = (float)(( LevelUpPoint >> 8 ) & 0xFF);
	dex = (float)(( LevelUpPoint >> 0 ) & 0xFF);
	
	// ㄠㄟ荚ㄣ    扔奶戊夫毛蕊匀化备嫩  卞ㄠ箫允
	for( i = 0; i < 10; i ++ ){
		Param[RAND( 0, 3 )] += 1.0;
	}
	
	// 仿件弁卞方月  区及仿件母丞
	fRand = (float)RAND( RankRandTbl[petrank].min, RankRandTbl[petrank].max )
		* 0.01;
	
	// 喃曰蕊曰禾奶件玄方曰煌遥
	vital = (float)vital * fRand + Param[0] * fRand;
	str = (float)str   * fRand + Param[1] * fRand;
	tgh = (float)tgh   * fRand + Param[2] * fRand;
	dex = (float)dex   * fRand + Param[3] * fRand;
	
	// 煌遥
	CHAR_setInt( petindex, CHAR_VITAL,
		CHAR_getInt( petindex, CHAR_VITAL ) + (int)vital );
	CHAR_setInt( petindex, CHAR_STR,
		CHAR_getInt( petindex, CHAR_STR ) + (int)str );
	CHAR_setInt( petindex, CHAR_TOUGH,
		CHAR_getInt( petindex, CHAR_TOUGH ) + (int)tgh );
	CHAR_setInt( petindex, CHAR_DEX,
		CHAR_getInt( petindex, CHAR_DEX ) + (int)dex );
		
	// CoolFish: 饲育家族声望更新
	{
		int level = CHAR_getInt(petindex, CHAR_LV);
		int exp1 = 0, exp2 = 0, feedpoint = 0;
		if (level > 30){
			char	tmpbuf[128];
#ifdef _NEW_MANOR_LAW
			char	tmpbuf1[16];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -