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

📄 family.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
	}	if (getStringFromIndexWithDelim(message, "|", 3, token,   	sizeof(token)) == FALSE)	return;	havepetindex = atoi(token);	petindex = CHAR_getCharPet(meindex, havepetindex);	if (!CHAR_CHECKINDEX(petindex))	{		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			WINDOW_BUTTONTYPE_OK,			-1, -1,			makeEscapeString( "\n请选择一只宠物作为家族守护兽!", buf, sizeof(buf)));   	return;	}	if (getStringFromIndexWithDelim(message, "|", 4, token,   	sizeof(token)) == FALSE)	return;	fmsprite = atoi(token);	if (getStringFromIndexWithDelim(message, "|", 5, token,   	sizeof(token)) == FALSE)	return;	if (strcmp(token, "") == 0)   	sprintf(fmrule, "无");	else   	sprintf(fmrule, "%s", token);	sprintf(charname, "%s", CHAR_getChar(meindex, CHAR_NAME));	sprintf(charid, "%s", CHAR_getChar(meindex, CHAR_CDKEY));	charlv = CHAR_getInt(meindex, CHAR_LV);	chargrano = CHAR_getInt(meindex, CHAR_FACEIMAGENUMBER);	if (strlen(CHAR_getChar(petindex, CHAR_USERPETNAME)) == 0)   	sprintf(petname, "%s", CHAR_getChar(petindex, CHAR_NAME));	else   	sprintf(petname, "%s", CHAR_getChar(petindex, CHAR_USERPETNAME));	sprintf(petattr, "%d %d %d %d",    	CHAR_getInt(petindex, CHAR_BASEIMAGENUMBER),   	CHAR_getWorkInt(petindex, CHAR_WORKATTACKPOWER),   	CHAR_getWorkInt(petindex, CHAR_WORKDEFENCEPOWER),   	CHAR_getWorkInt(petindex, CHAR_WORKQUICK));	CHAR_setInt(petindex, CHAR_PETFAMILY, 1);	CHAR_setChar(meindex, CHAR_FMNAME, fmname);#ifdef _FMVER21	CHAR_setInt(meindex, CHAR_FMLEADERFLAG, FMMEMBER_LEADER);#else	CHAR_setInt(meindex, CHAR_FMLEADERFLAG, 1);#endif   	CHAR_setInt(meindex, CHAR_FMSPRITE, fmsprite);	//   print("%s %s %s %d %s %s %s %d %d\n", fmname, charname, charid, charlv, petname,	//   	petattr, fmrule, fmsprite, chargrano);#ifdef _PERSONAL_FAME	saacproto_ACAddFM_send(acfd, fmname, charname, charid, charlv,   	petname, petattr, fmrule, fmsprite, chargrano,   	CHAR_getInt(meindex, CHAR_FAME), CONNECT_getFdid(fd));	//   print("ACAddFM acfd:%d meindex:%d fmname:%s charname:%s fame:%d Connectfd:%d fd:%d\n",	//   	acfd, meindex, fmname, charname, CHAR_getInt(meindex, CHAR_FAME), CONNECT_getFdid(fd), fd);#else	saacproto_ACAddFM_send(acfd, fmname, charname, charid, charlv,   	petname, petattr, fmrule, fmsprite, chargrano, CONNECT_getFdid(fd));#endif		// 要求最新家族列表	//saacproto_ACShowFMList_send( acfd );	}/*    ┐┌     ┘└┘└  └┐..┌┘─     ┴──┤★~~├   │o o│  │●     ┬──    │ ~~~~~~~~~哞 ▲△▲△▲△▲△▲△▲△▲△▲△ */void ACAddFM(int fd, int result, int fmindex, int index){   int meindex = CONNECT_getCharaindex(fd);   char buf[1024];   //   print("ACAddFM result:%d fmindex:%d meindex:%d\n", result, fmindex, meindex); // test   if (!CHAR_CHECKINDEX(meindex))	return;//   print("ACAddFM_2!\n");      if (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)         return;//   print("ACAddFM_3!\n");  if(result == 1)	{		CHAR_setInt(meindex, CHAR_FMINDEX, fmindex);		CHAR_setWorkInt(meindex, CHAR_WORKFMINDEXI, index);		CHAR_setWorkInt(meindex, CHAR_WORKFMSETUPFLAG, 0);#ifdef _NEW_MANOR_LAW		CHAR_setInt(meindex,CHAR_MOMENTUM,0);		CHAR_talkToCli(meindex,-1,"成立家族个人气势归零",CHAR_COLORYELLOW);#endif		 lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			 WINDOW_BUTTONTYPE_OK,			 -1, -1,			 makeEscapeString( "\n恭喜你成立了新的家族!但请在7天之内召集到10名族人加入,不然会取消家族资格喔。", buf, sizeof(buf)));		 JoinMemberIndex( meindex, index);		 CHAR_charSaveFromConnect(fd, FALSE);		 		 // 要求最新家族资料		 saacproto_ACShowFMList_send( acfd );		 saacproto_ACShowMemberList_send( acfd, index );		 saacproto_ACShowTopFMList_send(acfd, FM_TOP_INTEGRATE);		 		 LogFamily(			 CHAR_getChar( meindex, CHAR_FMNAME),			 CHAR_getInt( meindex, CHAR_FMINDEX),			 CHAR_getChar( meindex, CHAR_NAME),			 CHAR_getChar( meindex, CHAR_CDKEY),			 "ADDFAMILY(成立家族)",			 ""			 );   }   else   {   	int i = 0, petindex = 0;   	char tmpbuf[256];   	int gold = CHAR_getInt(meindex, CHAR_GOLD);   	CHAR_setInt(meindex, CHAR_GOLD, gold + 10000);   	CHAR_send_P_StatusString( meindex , CHAR_P_STRING_GOLD);   	SetFMVarInit(meindex);   	   	for (i = 0; i < CHAR_MAXPETHAVE; i++)   	{   	   petindex = CHAR_getCharPet(meindex, i);   	   if (!CHAR_CHECKINDEX(petindex))	continue;   	   CHAR_setInt(petindex, CHAR_PETFAMILY, -1);   	}   	if (fmindex == -2)   		sprintf(tmpbuf, "\n已经有相同名字的家族成立了!");   	else   		sprintf(tmpbuf, "\n申请成立家族失败!");	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,		WINDOW_BUTTONTYPE_OK,		-1, -1,		makeEscapeString(tmpbuf, buf, sizeof(buf)));   }   CHAR_sendStatusString( meindex, "F");}void FAMILY_Join(int fd, int meindex, char *message){   int fmindex, charlv, index, fmsprite;   char token[128], fmname[128], charname[128], charid[128], buf[1024];   if (!CHAR_CHECKINDEX(meindex))	return;      if ((CHAR_getWorkInt(meindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE)      || (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE))         return;   if (CheckFMMember(meindex) < 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;   index = atoi(token);   if (getStringFromIndexWithDelim(message, "|", 3, token,   	sizeof(token)) == FALSE)	return;   fmindex = atoi(token);   if (getStringFromIndexWithDelim(message, "|", 4, token,   	sizeof(token)) == FALSE)	return;   sprintf(fmname, "%s", token);   if (getStringFromIndexWithDelim(message, "|", 5, token,   	sizeof(token)) == FALSE)	return;   fmsprite = atoi(token);   sprintf(charname, "%s", CHAR_getChar(meindex, CHAR_NAME));   sprintf(charid, "%s", CHAR_getChar(meindex, CHAR_CDKEY));   charlv = CHAR_getInt(meindex, CHAR_LV);   CHAR_setInt(meindex, CHAR_FMINDEX, fmindex);   CHAR_setChar(meindex, CHAR_FMNAME, fmname);#ifdef _FMVER21   CHAR_setInt(meindex, CHAR_FMLEADERFLAG, FMMEMBER_APPLY);#else   CHAR_setInt(meindex, CHAR_FMLEADERFLAG, 0);#endif      CHAR_setInt(meindex, CHAR_FMSPRITE, fmsprite);   CHAR_setWorkInt(meindex, CHAR_WORKFMINDEXI, index);//   print("JoinFM index:%d fmindex:%d fmname:%s charname:%s charid:%s charlv:%d sprite:%d\n",//   	index, fmindex, fmname, charname, charid, charlv, fmsprite);#ifdef _PERSONAL_FAME	// Arminius: 家族个人声望//   print("fame:%d charfdid:%d\n", CHAR_getInt(meindex, CHAR_FAME),//   	CONNECT_getFdid(fd));   saacproto_ACJoinFM_send(acfd, fmname, fmindex, charname, charid, charlv,   	index, CHAR_getInt(meindex, CHAR_FAME), CONNECT_getFdid(fd));#else   //   print("charfdid:%d\n", CONNECT_getFdid(fd));   saacproto_ACJoinFM_send(acfd, fmname, fmindex, charname, charid, charlv,   	index, CONNECT_getFdid(fd));#endif}void ACJoinFM(int fd, int result, int recv){  int meindex = CONNECT_getCharaindex(fd);  char buf[1024];     if(!CHAR_CHECKINDEX(meindex))	return;     if ((CHAR_getWorkInt(meindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE)      || (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE))         return;   if (result == 1) {		 lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			WINDOW_BUTTONTYPE_OK,			-1, -1,			makeEscapeString( "\n谢谢你的加入申请!请先等族长对你的审核通过之後,才算正式加入。", buf, sizeof(buf)));		 		  JoinMemberIndex( meindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI) );#ifdef _NEW_MANOR_LAW			CHAR_setInt(meindex,CHAR_MOMENTUM,0);			CHAR_talkToCli(meindex,-1,"加入家族个人气势归零",CHAR_COLORYELLOW);#endif		 		sprintf(buf,"fame:%d",CHAR_getInt(meindex,CHAR_FAME));		 		 LogFamily(			 CHAR_getChar( meindex, CHAR_FMNAME),			 CHAR_getInt( meindex, CHAR_FMINDEX),			 CHAR_getChar( meindex, CHAR_NAME),			 CHAR_getChar( meindex, CHAR_CDKEY),			 "JOINFAMILY(申请加入家族)",			 buf			 );		    }   else   {	SetFMVarInit(meindex);   	if (recv == -2)   	{		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			WINDOW_BUTTONTYPE_OK,			-1, -1,			makeEscapeString( "\n此家族目前不愿意招收成员!", buf, sizeof(buf)));	}	else if (recv == -3)	{		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			WINDOW_BUTTONTYPE_OK,			-1, -1,			makeEscapeString( "\n此家族目前无法招收成员,家族成员人数已到达上限!", buf, sizeof(buf)));	}	else		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			WINDOW_BUTTONTYPE_OK,			-1, -1,			makeEscapeString( "\n申请加入家族失败!", buf, sizeof(buf)));   }      CHAR_sendStatusString( meindex, "F");   }void FAMILY_Leave(int fd, int meindex, char *message){   int result, fmindex, index;   char token[128], fmname[128], charname[128], charid[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_NONE))#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;   }   {	   int i, fmpks_pos;		for( i=1; i<=MANORNUM; i++){ // CoolFish 4->MANORNUM 2002/2/25		   fmpks_pos = i * MAX_SCHEDULE;#ifdef _FMVER21           if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) == FMMEMBER_LEADER){#else           if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) == 1){#endif         		       if( (fmpks[fmpks_pos+1].host_index+1)  == CHAR_getInt(meindex, CHAR_FMINDEX) ||    			   (fmpks[fmpks_pos+1].guest_index+1) == CHAR_getInt(meindex, CHAR_FMINDEX) ){	    		   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;   result = atoi(token);   if (result == 1)   {      fmindex = CHAR_getInt(meindex, CHAR_FMINDEX);      index = CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI);      sprintf(fmname, "%s", CHAR_getChar(meindex, CHAR_FMNAME));      sprintf(charname, "%s", CHAR_getChar(meindex, CHAR_NAME));      sprintf(charid, "%s", CHAR_getChar(meindex, CHAR_CDKEY));#ifdef _FMVER21      if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) == FMMEMBER_LEADER) {#else      if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) == 1) {#endif      //         print("DelFM index:%d fmindex:%d fmname:%s\n", index, fmindex, fmname);         saacproto_ACDelFM_send(acfd, fmname, fmindex, index, charname, charid,				CONNECT_getFdid(fd));         // 要求最新家族列表         //saacproto_ACShowFMList_send( acfd );      }      else {//         print("LeaveFM index:%d fmindex:%d fmname:%s charname:%s charid:%s\n",//         	index, fmindex, fmname, charname, charid);	 saacproto_ACLeaveFM_send(acfd, fmname, fmindex, charname, charid, index,		 CONNECT_getFdid(fd));      }   }}void ACLeaveFM( int fd, int result, int resultflag){	int meindex = CONNECT_getCharaindex(fd);	char buf[1024];		if (!CHAR_CHECKINDEX(meindex))	return;	if (result == 1){		// won 2002/01/05		LogFamily(					CHAR_getChar( meindex, CHAR_FMNAME),			CHAR_getInt( meindex, CHAR_FMINDEX),			CHAR_getChar( meindex, CHAR_NAME),			CHAR_getChar( meindex, CHAR_CDKEY),	    	"LEAVEFAMILY(离开家族)",				""				);		if(  CHAR_getWorkInt( meindex, CHAR_WORKFMCHANNEL) != -1 )			CHAR_setWorkInt( meindex, CHAR_WORKFMCHANNEL, -1 );		LeaveMemberIndex( meindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI) );		SetFMVarInit(meindex);		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,			WINDOW_BUTTONTYPE_OK, -1, -1,			makeEscapeString( "\n申请退出家族OK!", buf, sizeof(buf)));		CHAR_setWorkInt( meindex, CHAR_WORKFMFLOOR, -1);#ifdef _FM_JOINLIMIT		CHAR_setInt( meindex, CHAR_FMTIMELIMIT, (int)time(NULL)+(7*24)*(60*60) );#endif#ifdef _NEW_MANOR_LAW		CHAR_setInt(meindex,CHAR_MOMENTUM,0);		CHAR_talkToCli(meindex,-1,"退出家族个人气势归零",CHAR_COLORYELLOW);#endif		}else		lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,		WINDOW_BUTTONTYPE_OK, -1, -1,		makeEscapeString( "\n申请退出家族失败!", buf, sizeof(buf)));		CHAR_sendStatusString( meindex, "F" );}void ACDelFM(int fd, int result){   char buf[1024];   int meindex = CONNECT_getCharaindex(fd);   if (!CHAR_CHECKINDEX(meindex))	return;      //if ((CHAR_getWorkInt(meindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE)   //   || (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE))   //      return;            if (result == 1)   {// WON ADD	LogFamily(		CHAR_getChar( meindex, CHAR_FMNAME),		CHAR_getInt( meindex, CHAR_FMINDEX),		CHAR_getChar( meindex, CHAR_NAME),		CHAR_getChar( meindex, CHAR_CDKEY),		"DELFAMILY(家族解散)",		""	);        LeaveMemberIndex( meindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI) );        /*        for( i=0; i<FAMILY_MAXMEMBER; i++)        {      			familyMemberIndex[ CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI) ][i] = -1;        }        */        	SetFMVarInit(meindex);	lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,		WINDOW_BUTTONTYPE_OK,		-1, -1,		makeEscapeString( "\n家族已经解散了!", buf, sizeof(buf)));	// 要求最新家族列表	saacproto_ACShowFMList_send( acfd );// won 移到前面去

⌨️ 快捷键说明

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