📄 char.c
字号:
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 + -