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

📄 recv.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
	if (r < 0){		saacproto_ACMemberLeaveFM_send(fd, FAILED, charfdid);	}else{		saacproto_ACMemberLeaveFM_send(fd, SUCCESSFUL, charfdid);	}#endif}#ifdef _FM_MODIFYvoid saacproto_ACFMCharLogin_recv(int fd, char *fmname, int fmindex,		char *charname, char *charid, int charlv, int eventflag, int charfdid,int gsnum)#else	#ifdef _FMVER21	void saacproto_ACFMCharLogin_recv(int fd, char *fmname, int fmindex,		char *charname, char *charid, int charlv, int eventflag, int charfdid)	#else	void saacproto_ACFMCharLogin_recv(int fd, char *fmname, int fmindex,		char *charname, char *charid, int charlv, int charfdid)	#endif#endif{#ifdef __FAMILY	int r = 0, floor = 0, fmpopular = 0, joinflag = 0, fmsetupflag = 0;	int flag = 0, charindex = 0;#ifdef _PERSONAL_FAME   // Arminius: 家族个人声望	int charfame = 0;#endif#ifdef _NEW_MANOR_LAW	int momentum = 0;#endif#ifdef _FM_MODIFY	r =  ACFMCharLogin(fd, -1, fmname, fmindex, charname, charid, charlv,			&floor, &fmpopular, &joinflag, &fmsetupflag, &charindex, charfdid,			&charfame, eventflag,gsnum	#ifdef _NEW_MANOR_LAW			,&momentum	#endif			);#else	#ifdef _PERSONAL_FAME   // Arminius: 家族个人声望		r =  ACFMCharLogin(fd, -1, fmname, fmindex, charname, charid, charlv,			&floor, &fmpopular, &joinflag, &fmsetupflag, &charindex, charfdid,			&charfame, eventflag);	#else		r =  ACFMCharLogin(fd, -1, fmname, fmindex, charname, charid, charlv,			&floor, &fmpopular, &joinflag, &fmsetupflag, &charindex, charfdid);	#endif#endif#ifdef _PERSONAL_FAME   // Arminius: 家族个人声望	if (r < 0){		saacproto_ACFMCharLogin_send(fd, FAILED, r, floor, fmpopular,			joinflag, fmsetupflag, flag, charindex, charfame, charfdid	#ifdef _NEW_MANOR_LAW			,momentum	#endif			);	}else{		saacproto_ACFMCharLogin_send(fd, SUCCESSFUL, r, floor, fmpopular,			joinflag, fmsetupflag, flag, charindex, charfame, charfdid	#ifdef _NEW_MANOR_LAW			,momentum	#endif			);	}#else	if (r < 0){		saacproto_ACFMCharLogin_send(fd, FAILED, r, floor, fmpopular,			joinflag, fmsetupflag, flag, charindex, charfdid);	}else{		saacproto_ACFMCharLogin_send(fd, SUCCESSFUL, r, floor, fmpopular,			joinflag, fmsetupflag, flag, charindex, charfdid);	}#endif#endif}void saacproto_ACFMCharLogout_recv(int fd, char *fmname, int fmindex,	char *charname, char *charid, int charlv, int index,int charfdid){#ifdef __FAMILY	int r = 0;	r =  ACFMCharLogout(index, fmname, fmindex, charname, charid, charlv,		charfdid);	if (r < 0){		saacproto_ACFMCharLogout_send(fd, FAILED, charfdid);	}else{		saacproto_ACFMCharLogout_send(fd, SUCCESSFUL, charfdid);	}#endif}void saacproto_ACFMReadMemo_recv(int fd, int index){#ifdef __FAMILY	int r = 0, dataindex;	char data[15000];	r =  ACFMReadMemo(index, &dataindex, data);	if (r < 0){		saacproto_ACFMReadMemo_send(fd, FAILED, index, r, dataindex, "Nothing");	}else{		saacproto_ACFMReadMemo_send(fd, SUCCESSFUL, index, r, dataindex, data);	}#endif}                void saacproto_ACFMWriteMemo_recv(int fd, char *fmname, int fmindex,	char *data, int index){#ifdef __FAMILY	int r = 0;	r =  ACFMWriteMemo(index, fmname, fmindex, data);	if (r < 0){		saacproto_ACFMWriteMemo_send(fd, FAILED, index);	}else{		saacproto_ACFMWriteMemo_send(fd, SUCCESSFUL, index);	}#endif}void saacproto_ACFMPointList_recv(int fd){#ifdef __FAMILY        int r = 0;        char data[15000];        r =  ACFMPointList(data);        if (r < 0)        {        	saacproto_ACFMPointList_send(fd, FAILED, "nothing");        }else{        	saacproto_ACFMPointList_send(fd, SUCCESSFUL, data);        }#endif}#ifdef _CK_ONLINE_PLAYER_COUNT    // WON ADD 计算线上人数void PlayerCount(void){	int i, total_count=0;	char msg[64], out_msg[1024];	FILE *fpcount;     extern gmsv gs[MAXCONNECTION];	strcpy(out_msg, "");	for(i=0; i<MAXCONNECTION; i++){		if( gs[i].use ){			sprintf(msg, "%s:%d  Item ratio-->0%%\n", gs[i].name, online_player[i].playcount );				strcat( out_msg, msg );			total_count += online_player[i].playcount;		}	}	sprintf(msg, "-----------------------\n");	strcat( out_msg, msg );		sprintf(msg, "Total:%d\n", total_count);	strcat( out_msg, msg );    fpcount = fopen("count.txt","w");    if (fpcount!=NULL){        fprintf(fpcount,"%s", out_msg );        fclose(fpcount);    }}void saacproto_GS_ACK_PLAYER_COUNT_recv( int fd, int playcount ){			online_player[fd].playcount = playcount;}#endifvoid saacproto_ACSetFMPoint_recv(int fd, char *fmname, int fmindex, 	int index, int fmpointindex, int fl, int x, int y, int charfdid){#ifdef __FAMILY	int r = 0;	r =  ACSetFMPoint(index, fmname, fmindex, fmpointindex, fl, x, y);	if (r < 0){		saacproto_ACSetFMPoint_send(fd, FAILED, r, charfdid);	}else{		saacproto_ACSetFMPoint_send(fd, SUCCESSFUL, r, charfdid);	}#endif}void saacproto_ACFixFMPoint_recv(int fd, char *winfmname, int winfmindex, int winindex,	char *losefmname, int losefmindex, int loseindex, int village){#ifdef __FAMILY	int r = 0;	r =  ACFixFMPoint(winindex, winfmname, winfmindex,		loseindex, losefmname, losefmindex, village);	if (r < 0){		saacproto_ACFixFMPoint_send(fd, FAILED, r);	}else{		saacproto_ACFixFMPoint_send(fd, SUCCESSFUL, r);	}#endif}void saacproto_ACFMAnnounce_recv(int fd, char *fmname, int fmindex, int index,        char *data, int color){#ifdef __FAMILY	int r = 0, i = 0;	r = ACFMAnnounce(fmname, fmindex, index, data, color);	if (r < 0){		saacproto_ACFMAnnounce_send(fd, FAILED, fmname, fmindex, index,			1, data, color);	}else{		extern gmsv gs[MAXCONNECTION];		for (i = 0; i < MAXCONNECTION; i ++)		{		   if (gs[i].use && gs[i].name[0])		   {		      saacproto_ACFMAnnounce_send(i, SUCCESSFUL, fmname, fmindex,		      	index, 1, data, color);		   }		}	}	#endif}void saacproto_ACShowTopFMList_recv(int fd, int kindflag){#ifdef __FAMILY	int r = 0;	char data[150 * MAX_FAMILY];	strcpy(data, "");	r =  ACShowTopFMList(data, sizeof(data), kindflag);	if (r < 0)	{		saacproto_ACShowTopFMList_send(fd, FAILED, kindflag, r, "Nothing");	}else	{		saacproto_ACShowTopFMList_send(fd, SUCCESSFUL, kindflag, r, data);	}#endif}#ifdef _FAMILYBANKSTONELOGvoid saacproto_ACgetFMBankgold_recv(int fd, char *fmname, int fmindex,									int index, int charindex, int charfdid){	int r = 0;	r =  ACgetFMBankgold(index, fmname, fmindex, charindex);	saacproto_ACgetFMBankgold_send(fd,charfdid,r);}#endifvoid saacproto_ACFixFMData_recv(int fd, char *fmname, int fmindex, int index,	int kindflag, char *data1, char *data2, int charindex, int charfdid){#ifdef __FAMILY	int r = 0;	r =  ACFixFMData(index, fmname, fmindex, kindflag, charindex, data1, data2);	if (r < 0){		saacproto_ACFixFMData_send(fd, FAILED, kindflag, data1, data2, charfdid);	}else{		saacproto_ACFixFMData_send(fd, SUCCESSFUL, kindflag, data1, data2, charfdid);	}#endif}void saacproto_ACFixFMPK_recv(int fd, char *winfmname, int winfmindex, int winindex,	char *losefmname, int losefmindex, int loseindex){#ifdef __FAMILY	int r = 0;	r =  ACFixFMPK(winindex, winfmname, winfmindex,		loseindex, losefmname, losefmindex);	if (r < 0){		saacproto_ACFixFMPK_send(fd, FAILED, r, winindex,			loseindex);	}else{		saacproto_ACFixFMPK_send(fd, SUCCESSFUL, r, winindex,			loseindex);	}#endif}void saacproto_ACGMFixFMData_recv(int fd, int index, char *charid, char *cmd,	char *data, int charfdid){#ifdef __FAMILY	int r = 0;	char fmname[256];	r =  ACGMFixFMData(index, fmname, charid, cmd, data);	if (r < 0){		saacproto_ACGMFixFMData_send(fd, FAILED, fmname, charfdid);	}	else{		saacproto_ACGMFixFMData_send(fd, SUCCESSFUL, fmname, charfdid);	}#endif}void saacproto_ACGetFMData_recv(int fd, char *fmname, int fmindex, int index,	int kindflag, int charfdid){#ifdef __FAMILY	int r = 0, data = 0;	r =  ACGetFMData(index, fmname, fmindex, kindflag, &data);	if (r < 0){		saacproto_ACGetFMData_send(fd, FAILED, kindflag, data, charfdid);	}else{		saacproto_ACGetFMData_send(fd, SUCCESSFUL, kindflag, data, charfdid);	}#endif}void saacproto_ACreLoadFmData_recv(int fd, int type, int data){	int i=0;extern gmsv gs[MAXCONNECTION];	switch( type){	case 1:		log( "reload FM_DATA:%d !\n", data);		readOneFamilyFromTi( data);		break;	case 2:		{			char data[15000];			readFMPoint( fmpointdir);			if( ACFMPointList( data) >= 0 ){				log( "reload FM_POINT !\n" );				for (i=0; i<MAXCONNECTION; i++){					if( gs[i].use && gs[i].name[0] )						saacproto_ACFMPointList_send( i, SUCCESSFUL, data);				}			}		}		break;	case 3:	//fmpk_list		{			int j=0;			log( "reload FMPK_LIST !\n" );			FMPK_InitList();			FMPK_LoadList();			for( j=0; j<FMPKLIST_MAXNUM; j++){ 				for (i=0; i<MAXCONNECTION; i++){					if( gs[i].use && gs[i].name[0] )						saacproto_ACLoadFmPk_send(i, FMPK_GetData( j) );				}			}		}		break;	}}#ifdef _AC_SEND_FM_PK		 // WON ADD 庄园对战列表储存在AC#ifdef _ACFMPK_LISTvoid saacproto_ACLoadFmPk_recv(int fd, int fmpks_pos){	if( fmpks_pos < 0 || fmpks_pos > MAX_FMPOINT) return;	saacproto_ACLoadFmPk_send( fd, FMPK_GetData( fmpks_pos-1) );}void saacproto_ACSendFmPk_recv(int fd, int fmpks_pos, int userindex, int flg, char *data){	extern  gmsv gs[MAXCONNECTION];	char buf[1024];	int i=0;	sprintf( buf, "%d|%s", fmpks_pos, data);	if( ( userindex != -1 && FMPK_GetTypeFlg( fmpks_pos-1) == 1 )||		FMPK_SetData( fmpks_pos-1, flg, buf, strlen( buf)) != 1 ){		if(userindex != -1) saacproto_ACSendFmPk_send( fd, userindex, 0);		log("err ACSendFmPk_send(%d, %d)\n", userindex, 0);		return;	}	FMPK_BackUpList();	for (i=0; i<MAXCONNECTION; i++){		if( gs[i].use && gs[i].name[0] ){			saacproto_ACLoadFmPk_send(i, FMPK_GetData( fmpks_pos-1) );		}	}	//送确认讯息	if(userindex != -1) saacproto_ACSendFmPk_send( fd, userindex, 1);}#elsevoid saacproto_ACLoadFmPk_recv(int fd, int fmpks_pos){	extern char fm_pk_list[9][255];	if(fmpks_pos > MAX_FMPOINT){		log("\n fmpks_pos(%d) too big", fmpks_pos);	}		saacproto_ACLoadFmPk_send(fd, fm_pk_list[fmpks_pos-1]);}void saacproto_ACSendFmPk_recv(int fd, int fmpks_pos, char *data){	extern  gmsv gs[MAXCONNECTION];	int i=0;	if( (fmpks_pos>MAX_FMPOINT) || (fmpks_pos<1) ){		log("\n fmpks_pos(%d) err !!", fmpks_pos);	}			sprintf(fm_pk_list[fmpks_pos-1], "%d|%s", fmpks_pos, data);	for (i=0; i<MAXCONNECTION; i++){		if (gs[i].use && gs[i].name[0] && i!=fd){			saacproto_ACLoadFmPk_send(i, fm_pk_list[fmpks_pos-1]);		}	}	save_fm_pk_list();}#endif#endif#ifdef _RECAL_BACKUP_PLAYER			// WON 回溯功能#define arraysizeof( x ) (sizeof(x)/sizeof(x[0]))void saacproto_ACRecalPlayer_recv(int fd, char *uid, int userfdid, int GmCliId, 								  char *id, int char_num, int date, int backup_flag){	if( strlen(id) < 1 )		  { log("\n id(%s) too shout !!", id);		 return; }	if( char_num<0 || char_num>1) { log("\n char_num(%d) err !!", char_num); return; }	if( date<20000000 )			  { log("\n date(%d) format err!!", date); 	 return; }	if( backup_flag == 1 ){ // 备份日期		// 回传有备份的日期		get_backup_date(fd, uid, userfdid, GmCliId, id, char_num, date);		}else if( backup_flag == 2 ){	// 人物资料		get_online_player_data(fd, uid, userfdid, GmCliId, id, char_num, date);	// 传回线上人物资料		get_backup_player_data(fd, uid, userfdid, GmCliId, id, char_num, date);	// 传回备份人物资料	}}void saacproto_ACRecalBackup_recv(int fd, char *uid, int userfdid, int GmCliId, char *id, 								  int char_num, int date, char *char_data, int backup_flag){	extern struct ITEM_PET_CHANG item_pet_chang;	char temp[64];	int i, count=0;	char filename1[128], filename2[128];	char body[256];		if(backup_flag == 1){		// 回溯人物		// 线上人物		sprintf(filename1, "~/saac/char/0x%x/%s.%d.char", (getHash(id)&0xff), id, char_num );				// 备份人物		sprintf(filename2, "%s/char/0x%x/%s.%d.char", BACKUP_DIR, (getHash(id)&0xff), id, char_num );		// 移动备份人物至线上人物		strcpy(body, "");		sprintf(body, "mv %s %s", filename2, filename1);		system(body);				/* 回溯成功 */		saacproto_ACRecalPlayer_send(fd, uid, userfdid, GmCliId, id, char_num, date, char_data, 4);			}else if(backup_flag == 2 ){		// 部分回溯人物		log("\n won test 44 ==> char_data_chang(%s)", char_data);				// 取出需回溯项目		for(i=0;i<5;i++){			memset(temp, 0, sizeof(temp));			easyGetTokenFromString( char_data , count , temp , sizeof( temp ));			item_pet_chang.equit_item[i] = atoi(temp);		count++;		}		for(i=0;i<15;i++){			memset(temp, 0, sizeof(temp));			easyGetTokenFromString( char_data , count , temp , sizeof( temp ));			item_pet_chang.have_item[i] = atoi(temp);		count++;

⌨️ 快捷键说明

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