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

📄 mclient.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 2 页
字号:
	if (uid == NULL ) return ;	fd_charaindex=CONNECT_getCharaindex(clifd);	if (!CHAR_CHECKINDEX(fd_charaindex)) return;	CHAR_warpToSpecificPoint(fd_charaindex, floor, x, y);}#endif#ifdef _RECAL_ASK_PLAYER			// WON 要求人物资料void mproto_RECALL_ASK_PLAYER_Recv(int fd, char *uid, int userfdid, int GmCliId, char *id, int char_num, int date, int backup_flag){	extern int acfd;	saacproto_Recal_Player_send(acfd, uid, userfdid, GmCliId, id, char_num, date, backup_flag);}void mproto_RECALL_BACKUP_PLAYER_Recv(int fd, char *uid, int userfdid, int GmCliId, char *id, int char_num, int date, char *char_data, int backup_flag){	extern int acfd;	saacproto_Recal_Backup_send(acfd, uid, userfdid, GmCliId, id, char_num, date, char_data, backup_flag);}#endif//GM JAILvoid mproto_Jail_Recv(int fd,char* uid,int userfdid){	int fd_charaindex;	int clifd=getfdFromFdid(userfdid);	if (clifd == -1) return;	if (uid == NULL ) return;	fd_charaindex = CONNECT_getCharaindex(clifd);	if (!CHAR_CHECKINDEX(fd_charaindex))		return;	CHAR_talkToCli( fd_charaindex, -1, "由於捣乱,被GM关入监牢", CHAR_COLORYELLOW);	CHAR_CHAT_DEBUG_jail( -1, CHAR_getChar( fd_charaindex, CHAR_CDKEY));}//GM踢人void mproto_WaeiKick_Recv(int fd,char* uid,int userfdid){	int fd_charaindex;	int clifd=getfdFromFdid(userfdid);	if (clifd == -1) return;	if (uid == NULL ) return;	fd_charaindex = CONNECT_getCharaindex(clifd);	if (!CHAR_CHECKINDEX(fd_charaindex))		return;	CHAR_talkToCli( fd_charaindex, -1, "由於捣乱,被GM踢除", CHAR_COLORYELLOW);	CHAR_CHAT_DEBUG_gmkick( -1, CHAR_getChar( fd_charaindex, CHAR_CDKEY));}//GM广播void mproto_GMTalk_Recv(int fd,char* uid,int ntime,char* data){    char    message[65530];    int     i;    int     playernum = CHAR_getPlayerMaxNum();    if (uid == NULL || data == NULL ) return ;    strcpy(message,"");    sprintf(message,"GM[%s]:%s",uid,data);	    for( i = 0 ; i < playernum ; i++) {        if( CHAR_getCharUse(i) != FALSE ) {			CHAR_talkToCli( i, -1, message, CHAR_COLORWHITE);        }    }	}void mproto_Que_Send( int fd, int uid, int index, char* question){	char buffer[65500], wheres[256];	int checksum=0, floor, x, y;	char *cdkey = CHAR_getChar( index, CHAR_CDKEY);	char *charname = CHAR_getChar( index, CHAR_NAME);	if( strlen( question) <= 0 ){		CHAR_talkToCli( index, -1, "字串长度不足!", CHAR_COLORYELLOW);		return;	}	memset( wheres, 0, sizeof( wheres));	floor = CHAR_getInt( index, CHAR_FLOOR);	x = CHAR_getInt( index, CHAR_X);	y = CHAR_getInt( index, CHAR_Y);	sprintf( wheres, "%d,%d,%d", floor, x, y);	memset( buffer, 0, sizeof( buffer));	strcpy(PersonalKey, MSPERSIONALKEY);	checksum += util_mkint(buffer, uid);	checksum += util_mkstring(buffer, cdkey);	checksum += util_mkstring(buffer, charname);	checksum += util_mkstring(buffer, question);	checksum += util_mkstring(buffer, wheres);	util_mkint(buffer, checksum);	util_SendMesg(fd, MPROTO_QUE_SEND, buffer);}#ifdef _RECAL_ASK_PLAYER			// WON 要求人物资料// 线上人物资料void saacproto_ACRecalPlayer_recv(char *uid, int userfdid, int GmCliId, char *id, int char_num, int date, char *char_data){	char buffer[65500];	int checksum=0;	strcpy(buffer, "");	strcpy(PersonalKey, MSPERSIONALKEY);	checksum += util_mkstring(buffer, uid);	checksum += util_mkint(buffer, userfdid);	checksum += util_mkint(buffer, GmCliId);	checksum += util_mkstring(buffer, id);	checksum += util_mkint(buffer, char_num);	checksum += util_mkint(buffer, date);	checksum += util_mkstring(buffer, char_data);	util_mkint(buffer, checksum);	util_SendMesg(mfd, MPROTO_RECALL_PLAYER_SEND, buffer);}// 备份人物资料void saacproto_ACRecalBackupPlayer_recv(char *uid, int userfdid, int GmCliId, char *id, int char_num, int date, char *char_data){	char buffer[65500];	int checksum=0;	strcpy(buffer, "");	strcpy(PersonalKey, MSPERSIONALKEY);	checksum += util_mkstring(buffer, uid);	checksum += util_mkint(buffer, userfdid);	checksum += util_mkint(buffer, GmCliId);	checksum += util_mkstring(buffer, id);	checksum += util_mkint(buffer, char_num);	checksum += util_mkint(buffer, date);	checksum += util_mkstring(buffer, char_data);	util_mkint(buffer, checksum);	util_SendMesg(mfd, MPROTO_RECALL_BACKUP_SEND, buffer);}// 回溯okvoid saacproto_ACRecalAllBackupOK_recv(char *uid, int userfdid, int GmCliId, char *id, int char_num, int date, char *char_data){	char buffer[65500];	int checksum=0;	strcpy(buffer, "");	strcpy(PersonalKey, MSPERSIONALKEY);	checksum += util_mkstring(buffer, uid);	checksum += util_mkint(buffer, userfdid);	checksum += util_mkint(buffer, GmCliId);	checksum += util_mkstring(buffer, id);	checksum += util_mkint(buffer, char_num);	checksum += util_mkint(buffer, date);	checksum += util_mkstring(buffer, char_data);	util_mkint(buffer, checksum);	util_SendMesg(mfd, MPROTO_RECALL_BACKUP_OK_SEND, buffer);}// 取得备份日期void saacproto_ACRecalBackupDate_recv(char *uid, int userfdid, int GmCliId, char *id, int char_num, int date, char *char_data){	char buffer[65500];	int checksum=0;	strcpy(buffer, "");	strcpy(PersonalKey, MSPERSIONALKEY);	checksum += util_mkstring(buffer, uid);	checksum += util_mkint(buffer, userfdid);	checksum += util_mkint(buffer, GmCliId);	checksum += util_mkstring(buffer, id);	checksum += util_mkint(buffer, char_num);	checksum += util_mkint(buffer, date);	checksum += util_mkstring(buffer, char_data);	util_mkint(buffer, checksum);	util_SendMesg(mfd, MPROTO_RECALL_BACKUP_DATE_SEND, buffer);}#endifvoid mproto_Type_Send( int fd, int playernum, int itemuse){	char buffer[65500];	int checksum=0;	memset( buffer, 0, sizeof( buffer));	strcpy(PersonalKey, MSPERSIONALKEY);	checksum += util_mkint(buffer, playernum);	checksum += util_mkint(buffer, itemuse);	util_mkint(buffer, checksum);	util_SendMesg(fd, MPROTO_TYPE_SEND, buffer);}int connectmServer(char* hostname,unsigned short port){    struct sockaddr_in sock;    struct hostent* hoste;    int     fd,lr;    fd_set  fdset,fde;    struct timeval tmv;    memset( &sock ,  0 , sizeof( struct sockaddr_in ) );    sock.sin_family = AF_INET;    sock.sin_port = htons( port );    sock.sin_addr.s_addr = inet_addr( hostname );    if( sock.sin_addr.s_addr == -1 ){        hoste = gethostbyname( hostname );        if( hoste == NULL ){            print( "获取主机名: %s\n", hostname);            return -1;        }        memcpy((void*)&sock.sin_addr.s_addr ,               hoste->h_addr , sizeof(struct in_addr) );    }    fd = socket( AF_INET, SOCK_STREAM , 0 );    if( fd == -1 ){        print("Cannot Create Socket( errno:%d)\n",errno );        return -1;    }    //set the no block    if ( fcntl(fd,F_SETFL,O_NONBLOCK) == -1 ){            print("set noblock error!\n");            return -1;    }   lr = connect(fd,(struct sockaddr*)&sock,sizeof(struct sockaddr_in));    if( lr != 0 ){        if ( errno != EINPROGRESS ){            print("Cannot connect. (errno:%d)\n",errno );            close(fd);            return -1;        }    }    FD_ZERO(&fdset);    FD_SET(fd,&fdset);    FD_SET(fd,&fde);    tmv.tv_sec =3;    tmv.tv_usec = 0;    lr=select(fd+1,NULL,&fdset,&fde,&tmv);    if (FD_ISSET(fd,&fde)){            print("connectGmsv fde\n");            close(fd);   //add more            return -1;    }    if ( lr > 0 && FD_ISSET(fd,&fdset)){            int errorcode;            int errorcodelen;            errorcode=1;            errorcodelen=sizeof(errorcode);            getsockopt(fd,SOL_SOCKET,SO_ERROR,&errorcode,&errorcodelen);            if (errorcode == 0 ){                    fcntl(fd,F_SETFL,0);                    print("connectGmsv return fd=%d\n",fd);                    return fd;            }else{                    print("connectGmsv errorcode error\n");                                            close(fd);                    return -1;            }    }else{            close(fd);            return -1;    }}#endif#ifdef _RECAL_SEND_COUNT		// WON 传送GS资讯 void recal_get_count(){	FILE *fp;	int i, j;	char temp[3][15], c;	char buffer[256], msg[64];	int checksum=0;		if(mfd == -1) return;	if( !(fp=fopen("recal_count.txt", "r")) ){		print("\n open recal_count.txt err !!");	}	memset(temp, 0, sizeof(temp));	i=0; j=0; 	do{       c = fgetc(fp);	   if(c==' '){			i=0; j++;			continue;	   }       temp[j][i]=c;       i++;    }while(c != EOF);		temp[2][i-2]=0;		sprintf(msg,"%5s%4d%12s", temp[0], atoi(temp[1]), temp[2]);		strcpy(buffer, "");	strcpy(PersonalKey, MSPERSIONALKEY);	checksum += util_mkstring(buffer, msg);	util_mkint(buffer, checksum);	util_SendMesg(mfd, MPROTO_RECALL_COUNT_SEND, buffer);	fclose(fp);}#endif#ifdef _GSERVER_RUNTIME //传送GSERVER执行多少时间给MSERVERvoid gserver_runtime(){	int checksum=0;	char buffer[1024];    time_t starttime1;	if(mfd == -1) return;    if( gserver_runtime_starttime0_flag ){	    gserver_runtime_starttime0_flag = FALSE;		gserver_runtime_starttime0 = time(NULL);	}	print("\nChange->传送时间给mserver\n");	strcpy(buffer, "");	strcpy(PersonalKey, MSPERSIONALKEY);    starttime1 = time(NULL);   	checksum += util_mkint(buffer, (int)difftime(starttime1,gserver_runtime_starttime0));//传送的单位为秒	util_mkint(buffer, checksum);	util_SendMesg(mfd, MPROTO_RECALL_GSERVER_RUNTIME, buffer);}#endif

⌨️ 快捷键说明

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