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

📄 acfamily.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
		 // shan 2002/01/04		 log("\nshan-->fmindex:%d fmname:%s newleadername:%s newleaderid->%s\n", 			 fmindex, fmname, family[index].fmmemberindex[charindex].charname,			 family[index].fmmemberindex[charindex].charid );		 strcpy(charname, family[index].fmmemberindex[charindex].charname);		 strcpy(charid, family[index].fmmemberindex[charindex].charid);		 charlv = family[index].fmmemberindex[charindex].charlv;		 onlineflag = family[index].fmmemberindex[charindex].onlineflag;		 charfdid = family[index].fmmemberindex[charindex].charfdid;		 popular = family[index].fmmemberindex[charindex].popular;#ifdef _NEW_MANOR_LAW		 momentum = family[index].fmmemberindex[charindex].momentum;#endif		 // 资料转换		 strcpy(family[index].fmmemberindex[charindex].charname,			 family[index].fmmemberindex[0].charname);		 strcpy(family[index].fmmemberindex[charindex].charid,			 family[index].fmmemberindex[0].charid);		 family[index].fmmemberindex[charindex].charlv = family[index].fmmemberindex[0].charlv;		 family[index].fmmemberindex[charindex].charflag = FMMEMBER_MEMBER;		 family[index].fmmemberindex[charindex].onlineflag = family[index].fmmemberindex[0].onlineflag;		 family[index].fmmemberindex[charindex].charfdid = family[index].fmmemberindex[0].charfdid;		 family[index].fmmemberindex[charindex].popular = family[index].fmmemberindex[0].popular;#ifdef _NEW_MANOR_LAW		 family[index].fmmemberindex[charindex].momentum = family[index].fmmemberindex[0].momentum;#endif		 		 strcpy(family[index].fmmemberindex[0].charname, charname);		 strcpy(family[index].fmmemberindex[0].charid, charid);		 family[index].fmmemberindex[0].charlv = charlv;		 family[index].fmmemberindex[0].charflag = FMMEMBER_LEADER;		 family[index].fmmemberindex[0].onlineflag = onlineflag;		 family[index].fmmemberindex[0].charfdid = charfdid;		 family[index].fmmemberindex[0].popular = popular;#ifdef _NEW_MANOR_LAW		 family[index].fmmemberindex[0].momentum = momentum;#endif		 strcpy(family[index].fmleadername, charname);		 strcpy(family[index].fmleaderid, charid);		 family[index].fmleadergrano = recvdata;		 strcpy(family[index].petname, "");		 strcpy(family[index].petattr, "");		 		 // 更新族长资料		 if (family[index].fmmemberindex[0].onlineflag > 0)		 {#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望			 saacproto_ACFMCharLogin_send(   	   		family[index].fmmemberindex[0].onlineflag,					SUCCESSFUL, index, floor, family[index].fmtotalfame,					family[index].fmmemberindex[0].charflag,					family[index].fmsetupflag, 1, 0,					family[index].fmmemberindex[0].popular,	// Arminius 9.11					family[index].fmmemberindex[0].charfdid#ifdef _NEW_MANOR_LAW					,family[index].fmmemberindex[0].momentum#endif					);#else			 saacproto_ACFMCharLogin_send(   	   		family[index].fmmemberindex[0].onlineflag,					SUCCESSFUL, index, floor, family[index].fmpopular,					family[index].fmmemberindex[0].charflag,					family[index].fmsetupflag, 1, 0,					family[index].fmmemberindex[0].charfdid);#endif		 }		 // 更新成员资料		 if (family[index].fmmemberindex[charindex].onlineflag > 0)		 {#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望			 saacproto_ACFMCharLogin_send(   	   		family[index].fmmemberindex[charindex].onlineflag,					SUCCESSFUL, index, floor, family[index].fmtotalfame,					family[index].fmmemberindex[charindex].charflag,					family[index].fmsetupflag, 1, charindex,					family[index].fmmemberindex[charindex].popular,	// Arminius 9.11					family[index].fmmemberindex[charindex].charfdid#ifdef _NEW_MANOR_LAW					,family[index].fmmemberindex[charindex].momentum#endif					);#else			 saacproto_ACFMCharLogin_send(   	   		family[index].fmmemberindex[charindex].onlineflag,					SUCCESSFUL, index, floor, family[index].fmpopular,					family[index].fmmemberindex[charindex].charflag,					family[index].fmsetupflag, 1, charindex,					family[index].fmmemberindex[charindex].charfdid);#endif		 }   }#endif#ifdef _NEW_MANOR_LAW		else if (kindflag == 12){			family[index].fmmemberindex[charindex].momentum = recvdata;			if(family[index].fmmemberindex[charindex].momentum < 0) family[index].fmmemberindex[charindex].momentum = 0;			if(family[index].fmmemberindex[charindex].momentum > MAXFMPOPNUM)	family[index].fmmemberindex[charindex].momentum = MAXFMPOPNUM;		}		else if(kindflag == 13){		 family[index].fmmemberindex[charindex].popular = recvdata;		}#endif   if ((kindflag == 2) || (kindflag == 7) || (kindflag == 8) || (kindflag == 9)		 || (kindflag == 10)#ifdef _NEW_MANOR_LAW		 || (kindflag == 12) || (kindflag == 13)#endif		 )   {#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望		 // 记录玩家家族声望#ifndef _NEW_MANOR_LAW		 if (charindex >= 0 && charindex < MAX_MEMBERNUM)			 family[index].fmmemberindex[charindex].popular += recvdata;#endif		 // 计算家族声望		 family[index].fmpopular = family[index].fmadv + family[index].fmfeed			 + family[index].fmsynthesize + family[index].fmdealfood			 + family[index].fmpk;		 {			 int j;			 family[index].fmtotalfame=family[index].fmpopular;#ifdef _NEW_MANOR_LAW			 family[index].fmmomentum = 0;#endif			 for (j = 0; j < MAX_MEMBERNUM; j++) {				 if ((family[index].fmmemberindex[j].charflag!=FMMEMBER_NONE) &&					 (family[index].fmmemberindex[j].charflag!=FMMEMBER_APPLY) )				 {					 family[index].fmtotalfame += family[index].fmmemberindex[j].popular;#ifdef _NEW_MANOR_LAW					 // 家族成员个人气势加总					 family[index].fmmomentum += family[index].fmmemberindex[j].momentum;#endif				 }			 }#ifdef _NEW_MANOR_LAW			 // 家族气势 = (家族人数平方) / 10 + 1 + 家族成员个人气势加总			 family[index].fmmomentum += ((family[index].fmjoinnum * family[index].fmjoinnum) / 10 + 1) * 100;			 log("\nACFixFMData total family momentum %d\n",family[index].fmmomentum);#endif		 }		 sortFamily();		 if (family[index].fmpointindex >= 0){			 fmpoint[family[index].fmpointindex].hadfmpopular = family[index].fmtotalfame;			 db_fmpointupdate = 1;		 }#else		 family[index].fmpopular = family[index].fmadv + family[index].fmfeed			 + family[index].fmsynthesize + family[index].fmdealfood			 + family[index].fmpk;		 sortFamily();		 if (family[index].fmpointindex >= 0){			 fmpoint[family[index].fmpointindex].hadfmpopular = family[index].fmpopular;			 db_fmpointupdate = 1;		 }		 // 记录玩家家族声望		 if (charindex >= 0 && charindex < MAX_MEMBERNUM)			 family[index].fmmemberindex[charindex].popular = 			 family[index].fmmemberindex[charindex].popular + recvdata;#endif		 // 更新族长资料		 if (family[index].fmmemberindex[0].onlineflag > 0)		 {			 int	floor =  ACgetFMFloor(fmindex);#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望			 saacproto_ACFMCharLogin_send(   	   		family[index].fmmemberindex[0].onlineflag,					SUCCESSFUL, index, floor, family[index].fmtotalfame,#ifdef _FMVER21					family[index].fmmemberindex[0].charflag, family[index].fmsetupflag, 1, 0,#else   	 					1, family[index].fmsetupflag, 1, 0,#endif					family[index].fmmemberindex[0].popular,	// Arminius 9.11					family[index].fmmemberindex[0].charfdid#ifdef _NEW_MANOR_LAW					,family[index].fmmemberindex[0].momentum#endif					);#else			 saacproto_ACFMCharLogin_send(   	   		family[index].fmmemberindex[0].onlineflag,					SUCCESSFUL, index, floor, family[index].fmpopular,#ifdef _FMVER21					family[index].fmmemberindex[0].charflag, family[index].fmsetupflag, 1, 0,#else   	 					1, family[index].fmsetupflag, 1, 0,#endif					family[index].fmmemberindex[0].charfdid);#endif		 }   }   db_familyupdate[index] = 1;   return kindflag;}// 更改PK後家族PK值int ACFixFMPK(int winindex, char* winfmname, int winfmindex, int loseindex,	char* losefmname, int losefmindex){   int award = 0;   if (CheckFM(&winindex, winfmname, winfmindex) < 0)	return -1;   if (CheckFM(&loseindex, losefmname, losefmindex) < 0)	return -1;      award = (family[loseindex].fmpopular / 10);   if (family[loseindex].fmpopular - award < 0)   	award = family[loseindex].fmpopular;   family[loseindex].fmpk = family[loseindex].fmpk - award;   family[winindex].fmpk = family[winindex].fmpk + award;   if (family[loseindex].fmpk < MINFMPOPNUM)   {#if 1 // Robin 2003/11/27 修正输方家族PK声望到达下限时胜方可洗声望		int overpoint;		overpoint = MINFMPOPNUM - family[loseindex].fmpk;		family[winindex].fmpk = family[winindex].fmpk - overpoint;#endif		family[loseindex].fmpk = MINFMPOPNUM;   }   // CoolFish: 2001/11/28 MINFMPOPNUM -> MAXFMPOPNUM   if (family[winindex].fmpk > MAXFMPOPNUM)		family[winindex].fmpk = MAXFMPOPNUM;   {   	family[winindex].fmpopular = family[winindex].fmadv + family[winindex].fmfeed   		+ family[winindex].fmsynthesize + family[winindex].fmdealfood   		+ family[winindex].fmpk;#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望	{          int j;          family[winindex].fmtotalfame=family[winindex].fmpopular;          for (j = 0; j < MAX_MEMBERNUM; j++) {            if ((family[winindex].fmmemberindex[j].charflag!=FMMEMBER_NONE) &&                (family[winindex].fmmemberindex[j].charflag!=FMMEMBER_APPLY) )              family[winindex].fmtotalfame += family[winindex].fmmemberindex[j].popular;          }	}#endif   	if (family[winindex].fmmemberindex[0].onlineflag > 0)   	{   		int	floor =  ACgetFMFloor(winfmindex);#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望   	 	saacproto_ACFMCharLogin_send(   	   		family[winindex].fmmemberindex[0].onlineflag,   	   		SUCCESSFUL, winindex, floor, family[winindex].fmtotalfame,	#ifdef _FMVER21					family[winindex].fmmemberindex[0].charflag, family[winindex].fmsetupflag, 1, 0,	#else   	    	   		1, family[winindex].fmsetupflag, 1, 0,	#endif					family[winindex].fmmemberindex[0].popular,	// Arminius 9.11   	   		family[winindex].fmmemberindex[0].charfdid	#ifdef _NEW_MANOR_LAW					,family[winindex].fmmemberindex[0].momentum	#endif					);#else   	 	saacproto_ACFMCharLogin_send(   	   		family[winindex].fmmemberindex[0].onlineflag,   	   		SUCCESSFUL, winindex, floor, family[winindex].fmpopular,	#ifdef _FMVER21					family[winindex].fmmemberindex[0].charflag, family[winindex].fmsetupflag, 1, 0,	#else   	    	   		1, family[winindex].fmsetupflag, 1, 0,	#endif   	   		family[winindex].fmmemberindex[0].charfdid);#endif   	}   	family[loseindex].fmpopular = family[loseindex].fmadv + family[loseindex].fmfeed   		+ family[loseindex].fmsynthesize + family[loseindex].fmdealfood   		+ family[loseindex].fmpk;#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望	{          int j;          family[loseindex].fmtotalfame=family[loseindex].fmpopular;          for (j = 0; j < MAX_MEMBERNUM; j++) {            if ((family[loseindex].fmmemberindex[j].charflag!=FMMEMBER_NONE) &&                (family[loseindex].fmmemberindex[j].charflag!=FMMEMBER_APPLY) )              family[loseindex].fmtotalfame += family[loseindex].fmmemberindex[j].popular;          }	}#endif   	if (family[loseindex].fmmemberindex[0].onlineflag > 0)   	{   		int	floor =  ACgetFMFloor(losefmindex);#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望   	 	saacproto_ACFMCharLogin_send(   	   		family[loseindex].fmmemberindex[0].onlineflag,   	   		SUCCESSFUL, loseindex, floor, family[loseindex].fmtotalfame,	#ifdef _FMVER21					family[loseindex].fmmemberindex[0].charflag, family[loseindex].fmsetupflag, 1, 0,	#else   	    	   		1, family[loseindex].fmsetupflag, 1, 0,	#endif					family[loseindex].fmmemberindex[0].popular,	// Arminius 9.11   	   		family[loseindex].fmmemberindex[0].charfdid	#ifdef _NEW_MANOR_LAW					,family[loseindex].fmmemberindex[0].momentum	#endif					);#else   	 	saacproto_ACFMCharLogin_send(   	   		family[loseindex].fmmemberindex[0].onlineflag,   	   		SUCCESSFUL, loseindex, floor, family[loseindex].fmpopular,	#ifdef _FMVER21					family[loseindex].fmmemberindex[0].charflag, family[loseindex].fmsetupflag, 1, 0,	#else   	    	   		1, family[loseindex].fmsetupflag, 1, 0,	#endif   	   		family[loseindex].fmmemberindex[0].charfdid);#endif   	}   }   sortFamily();   if (family[winindex].fmpointindex >= 0)   {#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望   	fmpoint[family[winindex].fmpointindex].hadfmpopular = family[winindex].fmtotalfame;#else   	fmpoint[family[winindex].fmpointindex].hadfmpopular = family[winindex].fmpopular;#endif   	db_fmpointupdate = 1;   }   if (family[loseindex].fmpointindex >= 0)   {#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望   	fmpoint[family[loseindex].fmpointindex].hadfmpopular = family[loseindex].fmtotalfame;#else   	fmpoint[family[loseindex].fmpointindex].hadfmpopular = family[loseindex].fmpopular;#endif   	db_fmpointupdate = 1;   }   return	award;}// 解散家族int ACDelFM(int index, char *fmname, int fmindex){	int i;	if (CheckFM(&index, fmname, fmindex) < 0)	return -1;		log("\nACDelFM index:%d fmname:%s fmindex:%d\n", index, fmname, fmindex);		if (family[index].fmpointindex >= 0)	{   	delfmpointindex(family[index].fmindex);   	family[index].fmpointindex = -1;	}	if (family[index].memonum > 0)	{   	for (i = 0; i < family[index].memonum; i++)			memset(family[index].memolist[i], 0,			sizeof(family[index].memolist[i]));	}	family[index].fmindex = -1;	memset(family[index].fmname, 0, sizeof(family[index].fmname));	memset(family[index].memolist, 0, sizeof(family[index].memolist));	family[index].fmnum = 0;	family[index].fmjoinnum = 0;	family[index].fmsetupflag = -1;	family[index].fmpopular = 0;	family[index].fmadv = 0;	family[index].fmfeed= 0;	family[index].fmsynthesize = 0;	family[index].fmdealfood = 0;	family[index].fmpk = 0;#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望	family[index].fmtotalfame = 0;#endif#ifdef _NEW_MANOR_LAW	family[index].fmmomentum = 0;#endif	for (i = 0; i < family[index].fmmemberindexmaxnum; i++)	{   	// 传送最新状态给家族成员#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望   	if (family[index].fmmemberindex[i].onlineflag > 0)			saacproto_ACFMCharLogin_send(   			family[index].fmmemberindex[i].onlineflag,				FAILED, index, family[index].fmpointindex,				family[index].fmtotalfame, -1, family[index].fmsetupflag, 0,				i, family[index].fmmemberindex[i].popular,	// Arminius 9.11				family[index].fmmemberindex[i].charfdid	#ifdef _NEW_MANOR_LAW				,family[index].fmmemberindex[i].momentum	#endif				);#else   	if (family[index].fmmemberindex[i].onlineflag > 0)			saacproto_ACFMCharLogin_send(   			family[index].fmmemberindex[i].onlineflag,				FAILED, index, family[index].fmpointindex,				family[index].fmpopular, -1, family[index].fmsetupflag, 0,				i, family[index].fmmemberindex[i].charfdid);#endif   	memset(family[index].fmmemberindex[i].charname, 0,			sizeof(family[index].fmmemberindex[i].charname));   	memset(family[index].fmmemberindex[i].charid, 0,			sizeof(family[index].fmmemberindex[i].charid));   	family[index].fmmemberindex[i].charflag = FMMEMBER_NONE;   	family[index].fmmemberindex[i].predeltime = -1;   	family[index].fmmemberindex[i].po

⌨️ 快捷键说明

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