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

📄 npc_transmigration.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 4 页
字号:
	num = CHAR_getInt(toindex, CHAR_TRANSMIGRATION); // 前面已加1,故0转1时为1	tmp = (float)para / 100;#ifdef _TRANS_6	if (num == 6) tmp = 620; // 六转生时旧点数不计#endif	ans =(float)tmp/12 + (float)(quest / 4) +( (float)(level- num * 85) /4);	return (int)ans;}//*******************************************************//*******************************************************float Rounding(float work,int num){	float p;		if(num  <0 ) return work;	num--;	p = (float)pow(10,num);		return ( (work * p + 0.5) /p);}//*******************************************************//////*******************************************************BOOL NPC_TransmigrationStatus(int meindex, int toindex,int work[10]){	int vital, str, tgh, dex;	int quest , level ,equ;	int t_quest, t_level;	int total,ans;	float tmp,lvup;		vital = CHAR_getInt(toindex,CHAR_VITAL);	str = CHAR_getInt(toindex,CHAR_STR);	tgh = CHAR_getInt(toindex,CHAR_TOUGH);	dex = CHAR_getInt(toindex,CHAR_DEX);	//弁巨旦玄白仿弘毛民尼永弁	quest = NPC_TransmigrationQuestCheck( toindex);	//伊矛伙	level = CHAR_getInt(toindex,CHAR_LV);		work[0] = level;	work[1] = quest;		equ = CHAR_getInt(toindex, CHAR_TRANSEQUATION);	t_quest = (float)(( equ >> 16 ) & 0xFFFF);	t_level = (float)(( equ >> 0 ) & 0xFFFF);		if( level > 130 ) level = 130;	t_quest = t_quest + quest;	t_level = t_level + level;	CHAR_setInt(toindex, CHAR_TRANSEQUATION,   		( t_quest << 16 )+( t_level << 0 )   	);	total = vital + str + tgh + dex;	ans = NPC_TransCalculation(toindex, total);	work[2] = vital;	tmp = (float)vital/total * ans;	work[3] = Rounding(tmp,1) * 100;	work[4] = str;	tmp = (float)str/total * ans;	work[5] = Rounding(tmp,1) * 100;	work[6] = tgh;	tmp = (float)tgh/total * ans;	work[7] = Rounding(tmp,1) * 100;		work[8] = dex;	tmp = (float)dex/total * ans;	work[9] = Rounding(tmp,1) * 100;	//vital本永玄	if(work[3] < 0) work[3] = 0;	CHAR_setInt(toindex, CHAR_VITAL, work[3]);	//str本永玄	if(work[5] < 0) work[5] = 0;	CHAR_setInt(toindex, CHAR_STR, work[5]);	//tghr本永玄	if(work[7] < 0) work[7] = 0;	CHAR_setInt(toindex, CHAR_TOUGH, work[7]);		//dex本永玄	if(work[9] < 0) work[9] = 0;	CHAR_setInt(toindex, CHAR_DEX, work[9]);				lvup = CHAR_getInt(toindex, CHAR_SKILLUPPOINT );/*#ifdef _TRANS_6	if( CHAR_getInt(toindex, CHAR_TRANSMIGRATION) == 6)		lvup = 620;#endif*/	lvup = lvup / 12;	lvup =  Rounding(lvup, 1);	if(lvup < 0) lvup = 0;	CHAR_setInt(toindex, CHAR_SKILLUPPOINT, (int)lvup);		/*  旦平伙失永皿匹五凶日仇木毛霜月  */	if( CHAR_getInt( toindex,CHAR_SKILLUPPOINT ) >=1 )		CHAR_Skillupsend(toindex);		return TRUE;}/*---------------------------- *  矢永玄毛馨笛允月 ------------------------------*/BOOL NPC_TransmigrationAddPet(int meindex, int talker, int petid){	int	ret;	char msgbuf[64];	int	enemynum;	int	i,j;	int petindex;	int petindex2;	for( i = 0 ;i < CHAR_MAXPETHAVE ; i++) {		petindex = CHAR_getCharPet( talker, i);		if( petindex == -1  )  break;	}	if(i == CHAR_MAXPETHAVE) return FALSE;	enemynum = ENEMY_getEnemyNum();	for( i = 0; i < enemynum; i ++ ) {		if( ENEMY_getInt( i, ENEMY_ID) == petid) {			break;		}	}	if( i == enemynum ) return FALSE;	ret = ENEMY_createPetFromEnemyIndex( talker, i);	for( i = 0; i < CHAR_MAXPETHAVE; i ++ ){		if( CHAR_getCharPet( talker, i ) == ret )break;	}	if( i == CHAR_MAXPETHAVE ) i = 0;	if( CHAR_CHECKINDEX( ret ) == TRUE ){		CHAR_setMaxExpFromLevel( ret, CHAR_getInt( ret, CHAR_LV ));	}	petindex2 = CHAR_getCharPet(talker, i);    if( !CHAR_CHECKINDEX( petindex2) )	return FALSE;	snprintf( msgbuf,sizeof( msgbuf), "拿到%s。",								CHAR_getChar(petindex2,CHAR_NAME));	CHAR_talkToCli( talker, -1, msgbuf,  CHAR_COLORWHITE);	for(j = 0; j < CHAR_MAXPETHAVE; j++){		petindex = CHAR_getCharPet(talker, j);	    if( !CHAR_CHECKINDEX( petindex) ) continue;		CHAR_complianceParameter( petindex );		snprintf( msgbuf, sizeof( msgbuf ), "K%d", j );		CHAR_sendStatusString( talker, msgbuf );		snprintf( msgbuf, sizeof( msgbuf ), "W%d", j );		CHAR_sendStatusString( talker, msgbuf );	}	LogPet(		CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿   */		CHAR_getChar( talker, CHAR_CDKEY ),		CHAR_getChar( petindex2, CHAR_NAME),		CHAR_getInt( petindex2, CHAR_LV),		"TenseiGet",		CHAR_getInt( talker,CHAR_FLOOR),		CHAR_getInt( talker,CHAR_X ),		CHAR_getInt( talker,CHAR_Y ),		CHAR_getChar( petindex2, CHAR_UNIQUECODE)   // shan 2001/12/14	);	return TRUE;}int NPC_TransmigrationFlg_CLS(int meindex, int toindex){#ifdef _PET_TRANS	int endevflg[]={69,70,71,72,109,118,122,131,127,158,159,-1};	int nowevflg[]={69,70,71,72,-1};#endif#ifdef _TRANS_6	int flg[6] = {48,49,50,51,52,179};#else	int flg[5] = {48,49,50,51,52};#endif	int num= CHAR_getInt(toindex ,CHAR_TRANSMIGRATION);	int i;#ifdef _PET_TRANS	i=0;	while(endevflg[i] != -1 )	{		if( NPC_EventCheckFlg( toindex, endevflg[i] ) == FALSE )	{			endevflg[i] = 0;		}		i++;	}	i=0;	while( nowevflg[i] != -1 )	{		if( NPC_NowEventCheckFlg( toindex, nowevflg[i] ) == FALSE )	{			nowevflg[i] = 0;		}		i++;	}#endif	CHAR_setInt(toindex,CHAR_ENDEVENT,0);	CHAR_setInt(toindex,CHAR_ENDEVENT2,0);	CHAR_setInt(toindex,CHAR_ENDEVENT3,0);#ifdef _NEWEVENT	CHAR_setInt(toindex,CHAR_ENDEVENT4,0);	CHAR_setInt(toindex,CHAR_ENDEVENT5,0);	CHAR_setInt(toindex,CHAR_ENDEVENT6,0);#endif	CHAR_setInt(toindex,CHAR_NOWEVENT,0);	CHAR_setInt(toindex,CHAR_NOWEVENT2,0);	CHAR_setInt(toindex,CHAR_NOWEVENT3,0);#ifdef _NEWEVENT	CHAR_setInt(toindex,CHAR_NOWEVENT4,0);	CHAR_setInt(toindex,CHAR_NOWEVENT5,0);	CHAR_setInt(toindex,CHAR_NOWEVENT6,0);#endif#ifdef _PET_TRANS	i=0;	while( endevflg[i] != -1 )	{		if( endevflg[i] > 0 )	{			// shan Begin			//NPC_EventSetFlg( toindex, endevflg[i]);						s_eventsetend(toindex, endevflg[i]);			// End		}		i++;	}	i=0;	while( nowevflg[i] != -1 )	{		if( nowevflg[i] > 0 )	{			NPC_NowEventSetFlg( toindex, nowevflg[i]);		}		i++;	}#endif	for(i = 0 ;i < num ;i++)	{		NPC_EventSetFlg(toindex, flg[i]);		// CoolFish: Family Adv 2001/8/4		AddFMAdv(toindex, flg[i]);	}#ifdef _TRANS_6	if( num == 6 ){		NPC_EventSetFlg(toindex, 63); //不给玩家解英雄的祝福		NPC_EventSetFlg(toindex, 136);//不给玩家解泪之石		NPC_EventSetFlg(toindex, 175);//雷尔任务		NPC_EventSetFlg(toindex, 176);//雷尔任务	}#endif	return 1;}//******************************************************************//矢永玄毛壅允//******************************************************************BOOL NPC_TransmigrationDelPetDel(int meindex,int talker,int petsel){	int petindex;	int fd = getfdFromCharaIndex( talker );	char msgbuf[64];	char szPet[128];	int defpet;		petindex = CHAR_getCharPet( talker, petsel);    if( !CHAR_CHECKINDEX(petindex) ) return FALSE;		if( CHAR_getWorkInt( CONNECT_getCharaindex( fd),   	                     CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return FALSE;	/*--公及矢永玄互田玄伙井升丹井及民尼永弁--*/	defpet = CHAR_getInt( talker, CHAR_DEFAULTPET);	if(defpet == petsel){		CHAR_setInt( talker, CHAR_DEFAULTPET, -1);		lssproto_KS_send( fd, -1, TRUE);	}	snprintf( msgbuf,sizeof( msgbuf), "交出%s。",									CHAR_getChar( petindex, CHAR_NAME));	CHAR_talkToCli( talker, -1, msgbuf,  CHAR_COLORWHITE);	LogPet(		CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿抩 */		CHAR_getChar( talker, CHAR_CDKEY ),		CHAR_getChar( petindex, CHAR_NAME),		CHAR_getInt( petindex, CHAR_LV),		"TenseiDel",		CHAR_getInt( talker,CHAR_FLOOR),		CHAR_getInt( talker,CHAR_X ),		CHAR_getInt( talker,CHAR_Y ),		CHAR_getChar( petindex, CHAR_UNIQUECODE)   // shan 2001/12/14	);	CHAR_setCharPet( talker, petsel, -1);	CHAR_endCharOneArray( petindex );	snprintf( szPet, sizeof( szPet ), "K%d", petsel);	CHAR_sendStatusString( talker, szPet );	return TRUE;}//***********************************************************//***********************************************************BOOL NPC_TransmigrationDelPet(int meindex, int talker){	int petsel;	int petindex;	int num;	int j, k;//	int petid[4] = {1, 2, 3, 4}; //矢永玄及    毛隙烂	int petid[4] = {693, 694, 695, 696}; //矢永玄及    毛隙烂//	int petidfinal[4] = {11, 12, 13, 14}; //矢永玄及    毛隙烂	int petidfinal[4] = {693, 694, 695, 696}; //矢永玄及    毛隙烂	int petwork[4] ={ -1, -1, -1, -1};		num = CHAR_getInt(talker, CHAR_TRANSMIGRATION);	num--;	if(num  < 4 ){		//隙烂矢永玄毛手匀化中月井矢永玄民尼永弁		for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){			petindex = CHAR_getCharPet( talker, petsel);			if( petindex == -1  )  continue;						if(CHAR_getInt( petindex, CHAR_PETID) != petid[num]) continue;			break;		}			if(petsel  == CHAR_MAXPETHAVE) return FALSE;		if(NPC_TransmigrationDelPetDel(meindex, talker, petsel) == FALSE) return FALSE;		}#ifdef _TRANS_6	else if( num == 4 )#else	else#endif	{		for(j = 0; j < 4; j++){			//隙烂矢永玄毛手匀化中月井矢永玄民尼永弁			for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){				petindex = CHAR_getCharPet( talker, petsel);				if( petindex == -1  )  continue;								if(CHAR_getInt( petindex, CHAR_PETID) != petidfinal[j]) continue;								petwork[j] = petsel;				break;			}		}		for(k=0; k < 4 ;k++)		{			if(petwork[k] == -1) return FALSE;		}		for(k = 0 ; k < 4 ;k++){			if(NPC_TransmigrationDelPetDel(meindex, talker, petwork[k]) == FALSE) return FALSE;		}	}#ifdef _TRANS_6	else{		/*int lasttalkelder = 2;//乌力		if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 1 )//玛丽娜丝			lasttalkelder = 112;//凯比		else if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 2 )//加加			lasttalkelder = 102;//克克尔		else if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 3 )//卡鲁它那			lasttalkelder = 34;//威伯			*/		//隙烂矢永玄毛手匀化中月井矢永玄民尼永弁		for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){			int petid;			petindex = CHAR_getCharPet( talker, petsel);			if( petindex == -1  )  continue;						if(CHAR_getInt( petindex, CHAR_TRANSMIGRATION) != 2) continue;			petid=CHAR_getInt( petindex, CHAR_PETID );			if (petid == 2) break;			if (petid == 112) break;			if (petid == 102) break;			if (petid == 34) break;		}		if(petsel  == CHAR_MAXPETHAVE) return FALSE;		if(NPC_TransmigrationDelPetDel(meindex, talker, petsel) == FALSE) return FALSE;	}#endif	return TRUE;}#ifdef _PET_TRANSvoid NPC_PetTransMan_selectWindow(int meindex,int toindex,int num,int select){ 	char token[1024],buf[1024],buf1[256];

⌨️ 快捷键说明

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