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

📄 char_data.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 4 页
字号:
        ch->indexOfHaveTitle[0] = CHAR_titleindextbl[elderindex];    for( i=0 ; i<CHAR_SKILLMAXHAVE ; i++ ){        static struct addIteTbl        {            int itemid[2];        }additemtbl[SKILL_NUM] = {            {   {  17, -1}   },            {   {  -1, -1}   },            {   {  -1, -1}   },            {   {  17, -1}   },            {   {  17, -1}   },            {   {  17, -1}   },            {   {  17, -1}   },            {   {  17, -1}   },            {   {  17, -1}   },            {   {  17, -1}   },            {   {  -1, -1}   },             {   {  17, -1}   },            {   { 601, -1}   },            {   { 101, -1}   },            {   { 201, -1}   },            {   { 300, -1}   },            {   { 400, -1}   },            {   { 501, -1}   },            {   {  17, -1}   },        };        if( ch->haveSkill[i].use ){            int     j;            int     skindex=ch->haveSkill[i].skill.data[SKILL_IDENTITY];            for( j=0 ; j<arraysizeof( additemtbl[0].itemid ); j++ )                CHAR_addItemToChar( ch, additemtbl[skindex].itemid[j] );            if( skindex == SKILL_MERCHANT )                ch->data[CHAR_GOLD] = 20;            if( skindex == SKILL_MAGICIAN )                magician = TRUE;            else if( skindex == SKILL_PRIEST )                priest = TRUE;        }    }    if( magician || priest ) CHAR_addItemToChar( ch, 802 );}#if 1static int EnemyExpTbl[]={0,			//  02,			//  14,			//  26,			//  38,			//  410,			//  512,			//  614,			//  716,			//  818,			//  920,			// 1026,			// 1132,			// 1238,			// 1344,			// 1450,			// 1560,			// 1670,			// 1780,			// 1890,			// 19100,		// 20115,		// 21130,		// 22145,		// 23160,		// 24175,		// 25190,		// 26205,		// 27220,		// 28235,		// 29250,		// 30270,		// 31290,		// 32310,		// 33330,		// 34350,		// 35375,		// 36400,		// 37425,		// 38450,		// 39475,		// 40500,		// 41525,		// 42550,		// 43575,		// 44600,		// 45625,		// 46650,		// 47675,		// 48700,		// 49725,		// 50750,		// 51775,		// 52800,		// 53825,		// 54850,		// 55875,		// 56900,		// 57925,		// 58950,		// 59980,		// 601010,		// 611040,		// 621070,		// 631100,		// 641130,		// 651160,		// 661190,		// 671220,		// 681250,		// 691280,		// 701310,		// 711345,		// 721380,		// 731415,		// 741450,		// 751485,		// 761520,		// 771555,		// 781590,		// 791630,		// 801670,		// 811710,		// 821750,		// 831790,		// 841830,		// 851870,		// 861910,		// 871950,		// 881990		// 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];}#endifstatic int NeedLevelUpTbls[200] = {			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};int CHAR_GetLevelExp( int charaindex, int level){#ifdef _USER_EXP_CF	if(level>getMaxLevel()){		if(level>CHAR_getInt(charaindex, CHAR_LIMITLEVEL))			return -1;	}else if(level>getYBLevel()){		if (CHAR_getInt(charaindex, CHAR_WHICHTYPE)==CHAR_TYPEPET ) {			if(getPettrans() != -1 ){				if(CHAR_getInt(charaindex,CHAR_TRANSMIGRATION)>=getPettrans())					return NeedLevelUpTbls[level];			}else{				if(level<=CHAR_getInt(charaindex, CHAR_LIMITLEVEL))					return NeedLevelUpTbls[level];			}			return -1;		}else{			if(CHAR_getInt(charaindex,CHAR_TRANSMIGRATION)<getChartrans())				return -1;		}	}	return NeedLevelUpTbls[level];#else	if( level >= arraysizeof( NeedLevelUpTbls ) ){		return -1;	}	return NeedLevelUpTbls[level];#endif}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);		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 )	{				CHAR_setInt( charaindex, CHAR_EXP , 0);				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						if( level >= CHAR_MAXUPLEVEL ){			}else{				if( CHAR_HandleExp( charaindex) != -1 ){					exp = CHAR_getInt( charaindex, CHAR_EXP );					CHAR_setInt( charaindex, CHAR_LV, level+1 );				}			}		}else{			break;		}	}	return iRet;}#ifdef	_PET_LIMITLEVELvoid 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 )					);		}	}}#endifint 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;

⌨️ 快捷键说明

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