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

📄 char.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 3 页
字号:
	nmwork[strlen( nm)]=0;		strncpy( optwork , opt , sizeof( optwork ));	optwork[strlen(opt)]=0;		strncpy( infowork , info , sizeof( infowork ));	infowork[strlen(info)]=0;		/* 巨旦弗□皿仄 */	/*    if ( esc ) {	nmwork_p = makeEscapeString1( nm , nmwork ,sizeof( nmwork ));	optwork_p = makeEscapeString1( opt , optwork , sizeof( optwork ));	infowork_p = makeEscapeString1( info , infowork , sizeof( infowork ));} else {*/	nmwork_p = makeEscapeString( nm , nmwork ,sizeof( nmwork ));	optwork_p = makeEscapeString( opt , optwork , sizeof( optwork ));	infowork_p = makeEscapeString( info , infowork , sizeof( infowork ));#ifdef _SASQL	{		FILE *f;		f=fopen("nmkill.txt","w");		if( f )		{			fprintf(f,"%s",nmwork_p);			fclose( f );		}		f=fopen("optkill.txt","w");		if( f )		{			fprintf(f,"%s",optwork_p);			fclose( f );		}		f=fopen("infokill.txt","w");		if( f )		{			fprintf(f,"%s",infowork_p);			fclose( f );		}	}#endif	//    }	/* 勾卅仆月[赞中互巨仿□腹请及凶户卞域荚伐□弁卞中木月[ */	snprintf( outwork ,sizeof( outwork ) ,		"%s" SPACESTRING "%s" SPACESTRING "%s" ,		nmwork_p , optwork_p , infowork_p );		l = strlen( outwork );	if( l >= (outlen-1)){		return -1;	}		/* NULL   侬互    卞丐月井日0毛中木氏午中井氏及分[ */	memcpy( out , outwork , l + 1);		return 0;}int getCharIndexByName( char *id , char *charname ){	int i;	for(i=0;i<MAXCHAR_PER_USER;i++){		char output[CHARDATASIZE];		if( loadCharOne( id , i , output , sizeof( output )) < 0 ){			/* 丐中化中月″ */			continue;		} else {			/* 平乓仿互绣箕仄凶 */			char cn[CHARDATASIZE];			getCharNameFromString( output , cn );						/* Escape毛荸仁 */			if( strcmp( charname , makeStringFromEscaped(cn) ) == 0 ){				return i;			}else{			}		}	}	return -1;}/*  平乓仿及丐中化中月旦夫永玄毛腹绸允月			  卅日丐中化中卅中[0动晓卅日丐五旦夫永玄及index.									签卞夫□玉匹五卅井匀凶日公木毛井尹允分仃[				手匀午切扎氏午匹五月支欠仃升手[				*/static int findBlankCharIndex( char *id  ){	int i;	char output[CHARDATASIZE];	for(i=0;i<MAXCHAR_PER_USER;i++){		if( loadCharOne( id , i , output , sizeof( output ) ) < 0 ){			return i;		}	}	return -1;}static int unlinkCharFile( char *id , int num ){	char fname[1024];#ifdef _SLEEP_CHAR //删除人物时旧档也删	makeSleepCharFileName( id, fname, sizeof(fname),num );	unlink( fname );#endif	makeCharFileName( id, fname, sizeof(fname),num );	return unlink( fname );}#ifdef _LOCK_ADD_NAMEint lockUser(  char *gmsvname , char *id , char *name, char *passwd , int lock , 						 char *result, int resultlen,						 char *retdata , int retdatalen , char *process , char *deadline)#elseint lockUser(  char *gmsvname , char *id , char *passwd , int lock , 						 char *result, int resultlen,						 char *retdata , int retdatalen , char *process , char *deadline)#endif{	char fname[1024];		int ret = -1;			if(!id[0]){		snprintf(result , resultlen , FAILED);		snprintf(retdata , retdatalen , "bad id");		return -1;	}		makeDirFilename( fname,sizeof(fname),lockdir , getHash(id), id );	retdata[0] = 0;		if( lock ){		if (isLocked(id)) {			snprintf( result , resultlen, FAILED );			snprintf( retdata , retdatalen, "already locked" );			log( "写入内存信息: 用户:%x/%s 已经同意锁定 !!\n", getHash(id), id);			return -1;		} else {#ifdef _LOCK_ADD_NAME			if( InsertMemLock( getHash(id) & 0xff, id, name, passwd, gmsvname, atoi(process), deadline ) )#else			if( InsertMemLock( getHash(id) & 0xff, id, passwd, gmsvname, atoi(process), deadline ) )#endif				return 0;			else				return -1;		}	} else {		if( !isLocked( id) ) {			log( "删除内存信息: 用户:%x/%s 没有锁定!!\n", getHash(id), id);		}		if( DeleteMemLock( getHash(id) & 0xff, id, &ret) ) {			snprintf( result , resultlen, SUCCESSFUL );			snprintf( retdata , retdatalen, "removed" );			return ret;		} else {			snprintf( result , resultlen, FAILED );			snprintf( retdata , retdatalen, "不能移除锁定" );						log( "不能解锁 %x:%s !\n", getHash(id), id);			return ret;		}	}}int isLocked( char *id ){	if (!id[0]) return 1;	// invalid id: lock it	return isMemLocked(getHash(id) & 0xff, id);}int checkValidCharName( char *a){	int i;	for(i=0;;i++){		if( a[i] == 0 )break;		if( a[i] == SPACE )return -1;	}	return 0;}#ifdef _CHAR_POOLITEMstatic void makeCharPoolItemFileName( char *id,char *output, int outlen){	char poolitem[256];	if ( strlen( id) < 1)return;	snprintf( poolitem , sizeof( poolitem ) , "%s.item" , id);	makeDirFilename(output , outlen, chardir , getHash(id) ,poolitem);}#ifdef _SLEEP_CHAR // 取得非活跃人物仓库档名static void makeSleepCharPoolItemFileName( char *id,char *output, int outlen){	char poolitem[256];	if ( strlen( id) < 1)return;	snprintf( poolitem , sizeof( poolitem ) , "%s.item" , id);	makeDirFilename(output , outlen, sleepchardir , getHash(id) ,poolitem);}#endifint InsertCharPoolItem( char *id , char *input, int sizes){	char fn[256];	FILE *fp;		if( sizes <= 0 ) return sizes;	makeCharPoolItemFileName( id , fn , sizeof(fn));		fp= fopen( fn , "a+" );	if( fp == NULL ) {		fp= fopen( fn , "w" );		if( fp == NULL ) {			log( "save %s error.\n", fn);			return -1;		}	}		fprintf( fp , "%s" , input );	fclose(fp);		log( "add %s charpoolitem file:%s\n", id , fn );	return sizes;}int saveCharPoolItem( char *id , char *input, int sizes){	char fn[256];	FILE *fp;		if( sizes < 0 ) return sizes;	if( input == NULL ) return -1;	makeCharPoolItemFileName( id , fn , sizeof(fn));		fp= fopen( fn , "w" );	if( fp == NULL ) {		log( "save %s error.\n", fn);		return -1;	}		fprintf( fp , "%s" , input );	fclose(fp);		log( "写入 %s 道具档案文件:%s\n", id , fn );	return sizes;}int loadCharPoolItemOne( char *id , char *output , int outlen){	char fn[256];	FILE *fp;  char c_temp,*c_ptr;	int sizes=0;	c_ptr=output;		makeCharPoolItemFileName( id , fn , sizeof(fn));		fp  = fopen( fn , "r" );	if( fp == NULL ){		if( (fp = fopen( fn , "w" )) == NULL)			return -1;		return 0;	}		do{		c_temp = fgetc(fp);		*c_ptr=c_temp;		c_ptr++;	   sizes++;		 if( sizes >= (outlen-1) ) break;	}while(c_temp != EOF);	*c_ptr='\0';	fclose(fp);	return sizes;}int checkCharPoolItem( char *id){	char fn[256];	FILE *fp;		makeCharPoolItemFileName( id , fn , sizeof(fn));	fp = fopen( fn , "r" );	if( fp == NULL ) {		if( saveCharPoolItem( id , "", 0) < 0 ){			log("\n Can't Create char:%s poolitem File!!", id);			return -1;		}	}else{		fclose(fp);	}		return 1;}#endif#ifdef _CHAR_POOLPETstatic void makeCharPoolPetFileName( char *id,char *output, int outlen){	char poolpet[256];	if ( strlen( id) < 1)return;	snprintf( poolpet , sizeof( poolpet ) , "%s.pet" , id);	makeDirFilename(output , outlen, chardir , getHash(id) ,poolpet);}#ifdef _SLEEP_CHAR // 取得非活跃人物仓库档名static void makeSleepCharPoolPetFileName( char *id,char *output, int outlen){	char poolpet[256];	if ( strlen( id) < 1)return;	snprintf( poolpet , sizeof( poolpet ) , "%s.pet" , id);	makeDirFilename(output , outlen, sleepchardir , getHash(id) ,poolpet);}#endifint InsertCharPoolPet( char *id , char *input, int sizes){	char fn[256];	FILE *fp;		if( sizes <= 0 ) return sizes;	makeCharPoolPetFileName( id , fn , sizeof(fn));		fp= fopen( fn , "a+" );	if( fp == NULL ) {		fp= fopen( fn , "w" );		if( fp == NULL ) {			log( "save %s error.\n", fn);			return -1;		}	}		fprintf( fp , "%s" , input );	fclose(fp);		log( "add %s charpoolpet file:%s\n", id , fn );	return sizes;}int saveCharPoolPet( char *id , char *input, int sizes){	char fn[256];	FILE *fp;		if( sizes < 0 ) return sizes;	if( input == NULL ) return -1;	makeCharPoolPetFileName( id , fn , sizeof(fn));		fp= fopen( fn , "w" );	if( fp == NULL ) {		log( "save %s error.\n", fn);		return -1;	}		fprintf( fp , "%s" , input );	fclose(fp);		log( "写入 %s 宠物档案文件:%s\n", id , fn );	return sizes;}int loadCharPoolPetOne( char *id , char *output , int outlen){	char fn[256];	FILE *fp;		char c_temp,*c_ptr;	int sizes=0;	c_ptr=output;		makeCharPoolPetFileName( id , fn , sizeof(fn));		fp  = fopen( fn , "r" );	if( fp == NULL ){		if( (fp = fopen( fn , "w" )) == NULL)			return -1;		return 0;	}		do{		c_temp = fgetc(fp);		*c_ptr=c_temp;		c_ptr++;	   sizes++;		 if( sizes >= (outlen-1) ) break;	}while(c_temp != EOF);	*c_ptr='\0';	fclose(fp);	return sizes;}int checkCharPoolPet( char *id){	char fn[256];	FILE *fp;		makeCharPoolPetFileName( id , fn , sizeof(fn));	fp = fopen( fn , "r" );	if( fp == NULL ) {		if( saveCharPoolPet( id , "", 0) < 0 ){			log("\n Can't Create char:%s poolpet File!!", id);			return -1;		}	}else{		fclose(fp);	}		return 1;}#endifint filecopy( char *oldfilename, char *newfilename){	FILE *oldfile;	FILE *newfile;	char c_temp;		if( (oldfile = fopen( oldfilename, "r") ) == NULL ) {		return -1;	}	if( (newfile = fopen( newfilename, "w") ) == NULL ) {		return -1;	}		while(1) {		c_temp = fgetc( oldfile);		if( c_temp == EOF)			break;		fputc( c_temp, newfile);	};		fclose( oldfile);	fclose( newfile);		return 0;}

⌨️ 快捷键说明

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