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

📄 family.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
		// shan begin	else if (strcmp(token, "D2") ==0 ) {		char sendbuf[2048], tmpbuf[1024], leadernamebuf[64];		int h, i = 0;		int meindex = CONNECT_getCharaindex(fd);		int  fmindex_wk = CHAR_getWorkInt( meindex, CHAR_WORKFMINDEXI);		if( fmindex_wk < 0 || fmindex_wk >= FAMILY_MAXNUM) return;				for( h=0; h<FAMILY_MAXNUM; h++)			if( fmdptop.fmtopid[h] == fmindex_wk )				break;			strcpy(tmpbuf, "");			for (i = 0 + 1; i < FAMILY_MAXHOME + 1; i++)			{				int fmpks_pos = i * MAX_SCHEDULE, index;				sprintf(fmname, "%s", CHAR_getChar(meindex, CHAR_FMNAME));				index = CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI);				if (fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_BATTLEBEGIN					|| fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_PREPARE					|| fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_OTHERPLANET)				{					if ((fmpks[fmpks_pos + 1].host_index == index          		&& strcmp(fmname, fmpks[fmpks_pos + 1].host_name) == 0)          	   || (fmpks[fmpks_pos + 1].guest_index == index          	   	&& strcmp(fmname, fmpks[fmpks_pos + 1].guest_name) == 0))					{          		struct tm tm1;							memcpy(&tm1, localtime((time_t *)&fmpks[fmpks_pos + 1].dueltime), sizeof(tm1));							sprintf(tmpbuf, "%d/%d %d:%d【%s】 %s vs %s",								tm1.tm_mon + 1, tm1.tm_mday, tm1.tm_hour, tm1.tm_min,								fmpks[fmpks_pos + 2].host_name,								fmpks[fmpks_pos + 1].guest_name,								fmpks[fmpks_pos + 1].host_name);					}				}			}			if (strcmp(tmpbuf, "") == 0)				sprintf(tmpbuf, "无挑战排程");            getStringFromIndexWithDelim(memberlist[fmindex_wk].numberlistarray[0],				"|",2,leadernamebuf,sizeof(leadernamebuf));      // sendbuf -> 家族名称|人数|族长名称|家族排行|家族声望|个人声望|个人职位|家族精灵|PK#ifdef _NEW_MANOR_LAW			sprintf( sendbuf, "%s|%d|%s|%d|%d|%d|%d|%d|%s|%d|%d", #else				sprintf( sendbuf, "%s|%d|%s|%d|%d|%d|%d|%d|%s", #endif				CHAR_getChar(meindex, CHAR_FMNAME),				memberlist[fmindex_wk].fmjoinnum,				leadernamebuf,				h+1,#ifdef _FMVER21				fmdptop.fmtopdp[h],#else                				(CHAR_getWorkInt( meindex, CHAR_WORKFMDP)/100),#endif                #ifdef _PERSONAL_FAME				(CHAR_getInt( meindex, CHAR_FAME)/100),#else				(CHAR_getWorkInt( meindex, CHAR_WORKFMDP)/100),#endif				CHAR_getInt( meindex, CHAR_FMLEADERFLAG),				CHAR_getInt( meindex, CHAR_FMSPRITE ),				tmpbuf#ifdef _NEW_MANOR_LAW				,fmdptop.fmMomentum[h]/100	// 家族气势				,CHAR_getInt(meindex,CHAR_MOMENTUM)/100 // 个人气势#endif				);						lssproto_WN_send( fd, WINDOW_MESSAGETYPE_FAMILYDETAIL,				WINDOW_BUTTONTYPE_OK,				-1,				-1,				makeEscapeString( sendbuf, buf, sizeof(buf)));	}	// shan end}void ACFMDetail(int ret, char *data, int clifd){	char sendbuf[1024];		//print(" Detail:%s ", data);		if( ret != 1 )	{		print(" ACFMDetailError!:%d ", clifd );		return;	}	//print(" ACFMDetail:%d:%s ", clifd, data );		/*		len = strlen(data);	strcpy( buf, data );		for( i=0 ; i<len ; i++ )	{		if( data[i] == '|' )	buf[i] = ' ';		else 		if( data[i] == ' ' )    buf[i] = '|';	}	*/	//if (getStringFromIndexWithDelim(message, "|", 10, fmname,   	//	sizeof(fmname)) == FALSE)	return;		//makeStringFromEscaped( buf );	//buf2 = lssproto_demkstr_string( buf );		sprintf(sendbuf, "S|D|%s", data); 	lssproto_FM_send( clifd, sendbuf );	//print(" Detail:%s ", sendbuf);	/*	lssproto_WN_send( clifd, WINDOW_MESSAGETYPE_FAMILYDETAIL,		WINDOW_BUTTONTYPE_OK,		-1, -1,		sendbuf );	*/		// from saac data	/*		sprintf(data, "%d|%d|%s|%s|%d|%s|%s|%d|%d|%s|%d", index, family[index].fmindex,           family[index].fmname, family[index].fmleadername,           family[index].fmleadergrano, family[index].petname, family[index].petattr,           family[index].fmjoinnum, family[index].fmacceptflag,           family[index].fmrule, family[index].fmsprite );        */                           	}void FAMILY_CheckMember(int fd, int meindex, char *message){   int result, charindex, i, index = 0;   char token[128], charname[128], fmname[128], buf[1024];   if (!CHAR_CHECKINDEX(meindex)){   	return;   }   if (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)   {         return;   }   index = CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI);   sprintf(fmname, "%s", CHAR_getChar(meindex, CHAR_FMNAME));   if ((index == -1) || (strcmp(fmname, "") == 0)#ifdef _FMVER21//      || ((CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_LEADER)//          && (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_ELDER)//          && (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_VICELEADER)))      || ((CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_LEADER)          && (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_ELDER)))#else      || (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != 1))#endif         {//   	print("leaderflag:%d\n", CHAR_getInt(meindex, CHAR_FMLEADERFLAG));	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,		WINDOW_BUTTONTYPE_OK,		-1, -1,		makeEscapeString( "\n你不是族长,所以没有修改的权力唷!", buf, sizeof(buf)));      	return;   }      if (getStringFromIndexWithDelim(message, "|", 2, token,   	sizeof(token)) == FALSE)	return;   sprintf(charname, "%s", token);   if (getStringFromIndexWithDelim(message, "|", 3, token,   	sizeof(token)) == FALSE)	return;   charindex = atoi(token);   if (getStringFromIndexWithDelim(message, "|", 4, token,   	sizeof(token)) == FALSE)	return;   result = atoi(token);//   print("MemberCheck charname:%s charindex:%d mename:%s meworki:%d\n",//   	charname, charindex, CHAR_getChar(meindex, CHAR_NAME),//   	CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI));   if ((strcmp(charname, CHAR_getChar(meindex, CHAR_NAME)) == 0)   	&& (charindex == CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI)))   		return;//   print("MemberCheck message:%s\n", message);   if (result == FMMEMBER_MEMBER)#ifdef _FMVER21   {	// shan begin    char sbuf[1024];	sprintf( sbuf, "族长代号:%d -> 人物名称:%s 人物索引 (设该人物为族员):%d\n", CHAR_getInt(meindex, CHAR_FMLEADERFLAG), charname, charindex);	LogFamily(		CHAR_getChar(meindex, CHAR_FMNAME),		CHAR_getInt(meindex, CHAR_FMINDEX),		CHAR_getChar(meindex, CHAR_NAME),		CHAR_getChar(meindex, CHAR_CDKEY),		"CheckMember",		sbuf		);	// shan end   	saacproto_ACMemberJoinFM_send(acfd,   		CHAR_getChar(meindex, CHAR_FMNAME),   		CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex,   		CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), result,   		CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX),   		CONNECT_getFdid(fd));	   }#else   {   	saacproto_ACMemberJoinFM_send(acfd,   		CHAR_getChar(meindex, CHAR_FMNAME),   		CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex,   		CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), result,   		CONNECT_getFdid(fd));   }#endif#ifdef _FMVER21   else if (result == FMMEMBER_NONE)#else   else if (result == 4)#endif   {      for (i = 0 + 1; i < FAMILY_MAXHOME + 1; i++)      {      	 int fmpks_pos = i * MAX_SCHEDULE;      	 if ((fmpks[fmpks_pos].host_index == index      	 	&& strcmp(fmname, fmpks[fmpks_pos].host_name) == 0)      	    || (fmpks[fmpks_pos].guest_index == index      	    	&& strcmp(fmname, fmpks[fmpks_pos].guest_name) == 0))      	 {      	 	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,      	 		WINDOW_BUTTONTYPE_OK,      	 		-1, -1,      	 		makeEscapeString( "\n家族目前正在战斗中,所以无法审核成员。", buf, sizeof(buf)));//      	 	print("fmpks_pos:%d index:%d host:%d guest:%d\n", fmpks_pos,//      	 		index, fmpks[fmpks_pos].host_index, fmpks[fmpks_pos].guest_index);      	 	return;      	 }      }#ifdef _FMVER21	  {	  	  // shan begin      char sbuf[1024];	  	  sprintf( sbuf, "族长代号:%d -> 人物名称:%s 人物索引:%d (将该人物退出家族)\n", CHAR_getInt(meindex, CHAR_FMLEADERFLAG), charname, charindex);	  LogFamily(		  CHAR_getChar(meindex, CHAR_FMNAME),		  CHAR_getInt(meindex, CHAR_FMINDEX),		  CHAR_getChar(meindex, CHAR_NAME),		  CHAR_getChar(meindex, CHAR_CDKEY),		  "CheckMember",		  sbuf		  );	  // shan end      	  saacproto_ACMemberLeaveFM_send(acfd,      		CHAR_getChar(meindex, CHAR_FMNAME),      	 	CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex,   		CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI),   		CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX),   		CONNECT_getFdid(fd));	  }#else	  {      saacproto_ACMemberLeaveFM_send(acfd,      		CHAR_getChar(meindex, CHAR_FMNAME),      	 	CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex,   		CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI),   		CONNECT_getFdid(fd));	  }#endif   }#ifdef _FMVER21// else if (result == FMMEMBER_ELDER || result == FMMEMBER_INVITE//   	|| result == FMMEMBER_BAILEE || result == FMMEMBER_VICELEADER )   else if (result == FMMEMBER_ELDER )   {      if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_LEADER)      		return;#ifdef _FMVER21	  {	  // shan begin      char sbuf[1024];	  sprintf( sbuf, "族长代号:%d -> 人物名称:%s 人物索引:%d (设该人物为长老)\n", CHAR_getInt(meindex, CHAR_FMLEADERFLAG), charname, charindex);	  LogFamily(		  CHAR_getChar(meindex, CHAR_FMNAME),		  CHAR_getInt(meindex, CHAR_FMINDEX),		  CHAR_getChar(meindex, CHAR_NAME),		  CHAR_getChar(meindex, CHAR_CDKEY),		  "CheckMember",		  sbuf		  );	  // shan end         	saacproto_ACMemberJoinFM_send(acfd,   		CHAR_getChar(meindex, CHAR_FMNAME),   		CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex,   		CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), result,   		CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX),   		CONNECT_getFdid(fd));	  }#else	  {      saacproto_ACMemberJoinFM_send(acfd,      		CHAR_getChar(meindex, CHAR_FMNAME),      	 	CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex,   		CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), result,   		CONNECT_getFdid(fd));	  }#endif   }#endif   // 要求最新家族列表   saacproto_ACShowFMList_send( acfd );}void FAMILY_Channel(int fd, int meindex, char *message){	char token[128], token2[128];	char buf[4096], subbuf[4096], sendbuf[4096];	int i, tempindex, fmindexi, channel, nowchannel, num;		fmindexi = CHAR_getWorkInt( meindex, CHAR_WORKFMINDEXI);	nowchannel = CHAR_getWorkInt( meindex, CHAR_WORKFMCHANNEL );		//   print(" channelFM:%d ", fmindexi);	if( fmindexi < 0 ) {		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			WINDOW_BUTTONTYPE_OK,			-1, -1,			makeEscapeString( "\n你还没有加入任何家族!", buf, sizeof(buf)));		return;	}		if (getStringFromIndexWithDelim(message, "|", 2, token,		sizeof(token)) == FALSE)	return;	 	if (getStringFromIndexWithDelim(message, "|", 3, token2,		sizeof(token2)) == FALSE)        return;	 	channel = atoi( token2 );	 	if( strcmp( token, "J") == 0) {		if( channel < -1 || channel > FAMILY_MAXCHANNEL )return;		if( nowchannel >= 0 && nowchannel < FAMILY_MAXCHANNEL ) {			i = 0;			while( i < FAMILY_MAXMEMBER ) {				if( channelMember[fmindexi][nowchannel][i] == meindex ) {					channelMember[fmindexi][nowchannel][i] = -1;					break;				}				i++;			}		}				if( channel > 0 && channel < FAMILY_MAXCHANNEL ) {			i = 0;			while( i < FAMILY_MAXCHANNELMEMBER ) {				if( channelMember[fmindexi][channel][i] < 0 ) {					channelMember[fmindexi][channel][i] = meindex;					break;				}				i++;			}			if( i >= FAMILY_MAXCHANNELMEMBER ) {				CHAR_talkToCli( meindex, -1, "此频道人数已满。", CHAR_COLORWHITE);				return;			}			sprintf( buf, "加入家族频道 [%d]。", channel );			CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE);						if( nowchannel >=0 && nowchannel < FAMILY_MAXCHANNEL ) {				sprintf( buf, "%s 退出频道。", CHAR_getChar( meindex, CHAR_NAME) );				for( i=0; i < FAMILY_MAXCHANNELMEMBER; i++ ) {					if( CHAR_CHECKINDEX(channelMember[fmindexi][nowchannel][i])						&& channelMember[fmindexi][nowchannel][i] != meindex ) {						CHAR_talkToCli( channelMember[fmindexi][nowchannel][i], -1, buf, CHAR_COLORWHITE);					}				}			}			sprintf( buf, "%s 加入频道。", CHAR_getChar( meindex, CHAR_NAME) );			for( i=0; i < FAMILY_MAXCHANNELMEMBER; i++ ) {				if( CHAR_CHECKINDEX(channelMember[fmindexi][channel][i])					&& channelMember[fmindexi][channel][i] != meindex ) {					CHAR_talkToCli( channelMember[fmindexi][channel][i], -1, buf, CHAR_COLORWHITE);				}			}					}		else if( channel == 0 ) {			i = 0;			while( i < FAMILY_MAXMEMBER ) {				if( channelMember[fmindexi][0][i] < 0 ) {					channelMember[fmindexi][0][i] = meindex;					break;				}				i++;			}			if( i >= FAMILY_MAXMEMBER ) {#ifndef _CHANNEL_MODIFY				CHAR_talkToCli( meindex, -1, "此频道人数已满。", CHAR_COLORWHITE);#endif				return;			}#ifndef _CHANNEL_MODIFY			sprintf( buf, "加入家族频道 [全]。");			CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE);			if( nowchannel >=0 && nowchannel < FAMILY_MAXCHANNEL ) {				sprintf( buf, "%s 退出频道。", CHAR_getChar( meindex, CHAR_NAME) );				for( i=0; i < FAMILY_MAXCHANNELMEMBER; i++ ) {					if( CHAR_CHECKINDEX(channelMember[fmindexi][nowchannel][i])						&& channelMember[fmindexi][nowchannel][i] != meindex ) {						CHAR_talkToCli( channelMember[fmindexi][nowchannel][i], -1, buf, CHAR_COLORWHITE);					}				}			}			sprintf( buf, "%s 加入频道。", CHAR_getChar( meindex, CHAR_NAME) );			for( i=0; i < FAMILY_MAXCHANNELMEMBER; i++ ) {				if( CHAR_CHECKINDEX(channelMember[fmindexi][channel][i])					&& channelMember[fmindexi][channel][i] != meindex ) {					CHAR_talkToCli( channelMember[fmindexi][channel][i], -1, buf, CHAR_COLORWHITE);				}			}#endif		}#ifdef _FMVER21		else if( channel == FAMILY_MAXCHANNEL && CHAR_getInt( meindex, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER )#else		else if( channel == FAMILY_MAXCHANNEL && CHAR_getInt( meindex, CHAR_FMLEADERFLAG ) == 1 )#endif		{			CHAR_talkToCli( meindex, -1, "启动族长广播。", CHAR_COLORWHITE);		}

⌨️ 快捷键说明

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