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

📄 family.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
		else {			channel = -1;#ifndef _CHANNEL_MODIFY			CHAR_talkToCli( meindex, -1, "退出家族频道。", CHAR_COLORWHITE);#else			CHAR_talkToCli( meindex, -1, "关闭族长广播。", CHAR_COLORWHITE);			channel = 0;			i = 0;			while(i < FAMILY_MAXMEMBER){				if( channelMember[fmindexi][0][i] < 0 ) {					channelMember[fmindexi][0][i] = meindex;					break;				}				i++;			}#endif						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);				}			}		}				CHAR_setWorkInt( meindex, CHAR_WORKFMCHANNEL, channel);		if( channel != -1 ) CHAR_setWorkInt( meindex, CHAR_WORKFMCHANNELQUICK, channel);				sprintf( sendbuf, "C|J|%d", channel);		lssproto_FM_send( fd, sendbuf);			}	else if( strcmp( token, "L") == 0) {				int j, membernum, bFind = 0;		if( channel < 0 || channel >= FAMILY_MAXCHANNEL ) return;				subbuf[0] = '\0';		num = 0;		if( channel != 0 )			membernum = FAMILY_MAXCHANNELMEMBER;		else			membernum = FAMILY_MAXMEMBER;				for( j = 0 ; j < FAMILY_MAXMEMBER ; j++ ) {			bFind = 0;			tempindex = familyMemberIndex[fmindexi][j];			//if( tempindex >= 0 ) {			if( CHAR_CHECKINDEX(tempindex) ) {				for( i=0; i< membernum ; i++) {					if( tempindex == channelMember[fmindexi][channel][i] ) {						//if( CHAR_getChar( tempindex, CHAR_NAME ) == NULL ) {						//	familyMemberIndex[fmindexi][j] = -1;						//	channelMember[fmindexi][channel][i] = -1;						//	continue;						//}						bFind = 1;						break;					}				}				if( bFind )					strcat( subbuf, "|1|" );				else					strcat( subbuf, "|0|" );				makeEscapeString( CHAR_getChar( tempindex, CHAR_NAME ), buf, sizeof(buf));				strcat( subbuf, buf );				num++;			}		}		sprintf( sendbuf, "C|L|%d|%d%s", channel, num, subbuf);		lssproto_FM_send( fd, sendbuf);		//print(" CList:%s ", sendbuf);	}}void FAMILY_Bank(int fd, int meindex, char *message){	char token[128], token2[128], buf[1024];	int fmindex, cash, bank, toBank;	int MaxGold;	MaxGold = CHAR_getMaxHaveGold( meindex);	fmindex = CHAR_getInt( meindex, CHAR_FMINDEX);	// add shan	if( fmindex <= 0 && CHAR_getInt( meindex, CHAR_BANKGOLD) < 1) {		CHAR_talkToCli( meindex, -1, "你必须先加入家族。", CHAR_COLORWHITE);		return;	}		if (getStringFromIndexWithDelim(message, "|", 2, token, sizeof(token)) == FALSE)	   return;		if( strcmp(token, "G" )==0 )	{		if (getStringFromIndexWithDelim(message, "|", 3, token2, sizeof(token)) == FALSE)			return;				toBank = atoi( token2 );		cash = CHAR_getInt( meindex, CHAR_GOLD);		bank = CHAR_getInt( meindex, CHAR_BANKGOLD);		if( ((cash - toBank) >= 0) && ((cash - toBank) <= MaxGold )			&&((bank + toBank) >= 0)&&((bank + toBank) <= CHAR_MAXBANKGOLDHAVE) ) {    			// shan add       			if( toBank > 0 && CHAR_getInt( meindex, CHAR_FMINDEX ) < 1 ) {				sprintf(buf, "抱歉!你没有加入任何家族,所以仅能领取存款");				CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE);				return;			}						CHAR_setInt( meindex, CHAR_GOLD, cash - toBank);			CHAR_setInt( meindex, CHAR_BANKGOLD, bank + toBank);			CHAR_send_P_StatusString( meindex , CHAR_P_STRING_GOLD);						if( toBank >= 0 ) {				sprintf(buf, "存入%d到家族银行个人帐户。", toBank);				CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE);				// Syu ADD 新增家族个人银行存取Log (不含家族银行)				LogFamilyBankStone(					CHAR_getChar( meindex, CHAR_NAME ), 					CHAR_getChar( meindex, CHAR_CDKEY ),					toBank,                            					CHAR_getInt( meindex, CHAR_GOLD ),					"myBank(存款)(家族个人银行)",					CHAR_getInt( meindex,CHAR_FLOOR),					CHAR_getInt( meindex,CHAR_X ),					CHAR_getInt( meindex,CHAR_Y ),					CHAR_getInt( meindex,CHAR_BANKGOLD)					);							}			else {				sprintf(buf, "从家族银行个人帐户取出%d。", -toBank);				CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE);				// Syu ADD 新增家族个人银行存取Log (不含家族银行)				LogFamilyBankStone(					CHAR_getChar( meindex, CHAR_NAME ), 					CHAR_getChar( meindex, CHAR_CDKEY ),					toBank,                            					CHAR_getInt( meindex, CHAR_GOLD ),					"myBank(提款)(家族个人银行)",					CHAR_getInt( meindex,CHAR_FLOOR),					CHAR_getInt( meindex,CHAR_X ),					CHAR_getInt( meindex,CHAR_Y ),					CHAR_getInt( meindex,CHAR_BANKGOLD)					);							}			// Syu ADD 新增家族个人银行存取Log (不含家族银行)			LogStone(				-1,				CHAR_getChar( meindex, CHAR_NAME ), /* 平乓仿   */				CHAR_getChar( meindex, CHAR_CDKEY ), /* 交□扒□ID */				-toBank,                                 /* 嗯喊 */				CHAR_getInt( meindex, CHAR_GOLD ),				"myBank(家族个人银行)",				CHAR_getInt( meindex,CHAR_FLOOR),				CHAR_getInt( meindex,CHAR_X ),				CHAR_getInt( meindex,CHAR_Y )				);					}		else			print(" bank_error ");			}	if( strcmp(token, "I" )==0 ) {			}	if( strcmp(token, "T" )==0 ) {		int toTax;		int mygold;		int FMindex;				if (getStringFromIndexWithDelim(message, "|", 3, token2, sizeof(token)) == FALSE)			return;		toTax = atoi( token2 );		#ifdef _FMVER21		if( CHAR_getInt( meindex, CHAR_FMLEADERFLAG ) != FMMEMBER_LEADER &&			CHAR_getInt( meindex, CHAR_FMLEADERFLAG ) != FMMEMBER_ELDER && toTax < 0 )			return;#endif						FMindex = CHAR_getWorkInt( meindex, CHAR_WORKFMINDEXI );		mygold = CHAR_getInt( meindex, CHAR_GOLD);		if( mygold < 0 || mygold > MaxGold || toTax == 0 )	return;		if( toTax > 0 )	{//+存款			if( ((mygold-toTax) < 0) || (familyTax[ FMindex] + toTax) > CHAR_MAXFMBANKGOLDHAVE )	{				return;			}		}else if( toTax < 0 ){ //-取款			if( ((mygold-toTax)>MaxGold) || (familyTax[ FMindex] + toTax) < 0 )	{				return;			}		}						if( toTax>0 ) {	//存款预先扣款			CHAR_setInt( meindex, CHAR_GOLD, CHAR_getInt( meindex, CHAR_GOLD)-toTax );		}		sprintf( buf, "家族银行%s处理中....", (toTax>0)?"存款":"取款");		CHAR_talkToCli( meindex , -1, buf, CHAR_COLORYELLOW);				CHAR_send_P_StatusString( meindex , CHAR_P_STRING_GOLD);		sprintf( buf, "%d", toTax );				saacproto_ACFixFMData_send(acfd,			CHAR_getChar(meindex, CHAR_FMNAME),			CHAR_getInt(meindex, CHAR_FMINDEX),			CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), FM_FIX_FMGOLD, buf,			"", CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX), CONNECT_getFdid(fd));#ifdef _FAMILYBANKSTONELOG		saacproto_ACgetFMBankgold_send(acfd,			CHAR_getChar(meindex, CHAR_FMNAME),			CHAR_getInt(meindex, CHAR_FMINDEX),			CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), 			CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX), CONNECT_getFdid(fd));#endif	   			//print(" getTax:%s=%d ", CHAR_getChar(meindex, CHAR_FMNAME), toTax );	}}void ACFMPointList(int ret, char *data){}#ifdef _CK_ONLINE_PLAYER_COUNT    // WON ADD 计算线上人数void GS_SEND_PLAYER_COUNT(void){	int i, count = 0;	int playernum = CHAR_getPlayerMaxNum();    for( i = 0 ; i < playernum ; i++) {        if( CHAR_getCharUse(i) != FALSE ) count++;	}	saacproto_GS_PLAYER_COUNT_SEND(acfd, count);}#endifvoid FAMILY_SetPoint(int fd, int meindex, char *message){   int i, fmpointindex, fl, x, y, fmdp, fmlevel = 0;   char token[128], buf[1024];      if (!CHAR_CHECKINDEX(meindex))	return;      if (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)         return;      if ((CHAR_getInt(meindex, CHAR_FMINDEX) == -1)      || (strcmp(CHAR_getChar(meindex, CHAR_FMNAME), "") == 0)#ifdef _FMVER21            || (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_LEADER))#else      || (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != 1))#endif   {	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,		WINDOW_BUTTONTYPE_OK,		-1, -1,		makeEscapeString( "\n你不是族长,所以没有修改的权力唷!", buf, sizeof(buf)));      	return;   }   fmdp = CHAR_getWorkInt(meindex, CHAR_WORKFMDP);   for (i = 0; i < arraysizeof(fmdplevelexp); i++){   	if (fmdp < fmdplevelexp[i + 1] && fmdp >= fmdplevelexp[i]){   		fmlevel = i;   	}   }#ifndef _ACFMPK_NOFREE   if (fmlevel < MINFMLEVLEFORPOINT){// or 人数小於30人	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,		WINDOW_BUTTONTYPE_OK,		-1, -1,		makeEscapeString( "\n家族等级尚未到达申请家族据点的条件!", buf, sizeof(buf)));      	return;   }#endif   for (i = 1; i <= MANORNUM; i++) {   	if (((strcmp(fmpks[i * MAX_SCHEDULE + 1].guest_name,   		CHAR_getChar(meindex, CHAR_FMNAME)) == 0))   	   && ((fmpks[i * MAX_SCHEDULE + 1].flag = FMPKS_FLAG_MANOR_BATTLEBEGIN)   	   	|| (fmpks[i * MAX_SCHEDULE + 1].flag == FMPKS_FLAG_MANOR_PREPARE))){   		char	tmpbuf[256];   		sprintf(tmpbuf, "\n你跟%s已经有预约庄园争夺赛了~\n无法再申请庄园了喔!",   			fmpks[i * MAX_SCHEDULE + 1].host_name);   		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,   			WINDOW_BUTTONTYPE_OK,   			-1, -1,   			makeEscapeString(tmpbuf, buf, sizeof(buf)));   	   	return;   	}   }   if (getStringFromIndexWithDelim(message, "|", 2, token,   	sizeof(token)) == FALSE)	return;   fmpointindex = atoi(token);   if (getStringFromIndexWithDelim(message, "|", 3, token,   	sizeof(token)) == FALSE)	return;   fl = atoi(token);   if (getStringFromIndexWithDelim(message, "|", 4, token,   	sizeof(token)) == FALSE)	return;   x = atoi(token);   if (getStringFromIndexWithDelim(message, "|", 5, token,   	sizeof(token)) == FALSE)	return;   y = atoi(token);/*   print("SetFMPoint charname:%s fmindex:%d index:%d pointindex:%d fl:%d x:%d y:%d\n",   	CHAR_getChar(meindex, CHAR_FMNAME),   	CHAR_getInt(meindex, CHAR_FMINDEX),   	CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI),   	fmpointindex, fl, x, y);*/   saacproto_ACSetFMPoint_send(acfd,   	CHAR_getChar(meindex, CHAR_FMNAME),   	CHAR_getInt(meindex, CHAR_FMINDEX),   	CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI),   	fmpointindex, fl, x, y, CONNECT_getFdid(fd));}void ACSetFMPoint(int ret, int r, int clifd){   int meindex = CONNECT_getCharaindex(clifd);   char message[256], buf[512];      if (!CHAR_CHECKINDEX(meindex))	return;      if ((CHAR_getWorkInt(meindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE)      || (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE))         return;   if (ret == 0){   		if (r == -1)   			sprintf(message, "申请家族失败!");   		else if (r == -2)   			sprintf(message, "你已经有家族据点了~不得重复申请!");   		else if (r == -3)   			sprintf(message, "尚未到达申请家族据点的资格!");   		else if (r == -4)   			sprintf(message, "家族据点已经有家族在使用中罗!");   		else if (r == -5)   			sprintf(message, "您的家族人数未达申请标准唷!");   }   else if (ret == 1)	sprintf(message, "申请家族据点OK!");      lssproto_WN_send( clifd, WINDOW_MESSAGETYPE_MESSAGE,   	WINDOW_BUTTONTYPE_OK,   	-1, -1,   	makeEscapeString(message, buf, sizeof(buf)));}void ACFMAnnounce(int ret, char *fmname, int fmindex, int index,	int kindflag, char *data, int color){   // kindflag 1:族长广播 2:系统公告家族被删除 3:系统通知讯息   int i, chindex;   if( ret != 1 )	return;//   print("fmname:%s fmindex:%d index:%d kindflag:%d data:%s color:%d\n",//   	fmname, fmindex, index, kindflag, data, color);   for( i=0; i < FAMILY_MAXMEMBER; i++)   {      chindex = familyMemberIndex[index][i];      if( chindex >= 0 ) {         if( CHAR_getCharUse(chindex) )         {            if (kindflag == 1)            {#ifdef _FMVER21                            // shan 2001/12/13				//if( CHAR_getInt( chindex, CHAR_FMLEADERFLAG ) == FMMEMBER_MEMBER )                if( CHAR_getInt( chindex, CHAR_FMLEADERFLAG ) == FMMEMBER_MEMBER ||					CHAR_getInt( chindex, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER )#else               if( CHAR_getInt( chindex, CHAR_FMLEADERFLAG ) == 2 )#endif                                 CHAR_talkToCli( chindex, -1, data, color );            }            else if (kindflag == 2)            {               int fd = getfdFromCharaIndex( chindex );               if (fd == -1)	return;               SetFMVarInit( chindex );               CHAR_talkToCli( chindex , -1, "由於您的家族在七天之内没有召收到10名家族成员,所以被迫解散了!",               		CHAR_COLORRED);            }         }         else            familyMemberIndex[index][i] = -1;      }   }   if (kindflag == 3)   {      int meindex = 0;      int clifd = getfdFromFdid(color);      if (CONNECT_checkfd(clifd) == FALSE)	return;      meindex = CONNECT_getCharaindex(clifd);      if (!CHAR_CHECKINDEX(meindex))	return;      CHAR_talkToCli(meindex, -1, data, CHAR_COLORRED);   }   if (kindflag == 4)   {      int meindex = 0;      char buf[1024];      int clifd = getfdFromFdid(color);//      print("Here1\n");      if (CONNECT_checkfd(clifd) == FALSE)	return;      meindex = CONNECT_getCharaindex(clifd);      if (!CHAR_CHECKINDEX(meindex))	return;//      print("Here2\n");      lssproto_WN_send(clifd, WINDOW_MESSAGETYPE_MESSAGE,      		WINDOW_BUTTONTYPE_OK,      		-1, -1,      		makeEscapeString(data, buf, sizeof(buf)));   }}void FAMILY_SetAcceptFlag(int 

⌨️ 快捷键说明

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