📄 npccreate.c
字号:
char secondToken[256]; int ret; ret = getStringFromIndexWithDelim( line, "=", 1, firstToken, sizeof( firstToken ) ); if( ret == FALSE ){ print( "Find error at %s in line %d. Ignore\n", filename , linenum); break; } ret = getStringFromIndexWithDelim( line, "=", 2, secondToken, sizeof( secondToken ) ); if( ret == FALSE ){ print( "Find error at %s in line %d. Ignore\n", filename , linenum); break; } if( strcasecmp("floorid",firstToken) == 0 ){ cr.intdata[NPC_CREATEFLOORID] = atoi(secondToken); }else if( strcasecmp("borncenter", firstToken) == 0 ){ getFourIntsFromString(secondToken,¢er[0].x, ¢er[0].y,&wh[0].w,&wh[0].h ); defborn = TRUE; }else if( strcasecmp("borncorner", firstToken) == 0 ){ getFourIntsFromString(secondToken,&lu[0].x,&lu[0].y, &rd[0].x,&rd[0].y ); defborn = TRUE; deflurd[0]=TRUE; }else if( strcasecmp("movecenter", firstToken) == 0 ){ getFourIntsFromString(secondToken,¢er[1].x, ¢er[1].y,&wh[1].w,&wh[1].h ); defmove = TRUE; }else if( strcasecmp("movecorner", firstToken) == 0 ){ getFourIntsFromString(secondToken,&lu[1].x,&lu[1].y, &rd[1].x,&rd[1].y ); defmove = TRUE; deflurd[1]=TRUE; }else if( strcasecmp("dir",firstToken) == 0 ){ cr.intdata[NPC_CREATEDIR] = atoi( secondToken ); }else if( strcasecmp("graphicname",firstToken) == 0 ){ cr.intdata[NPC_CREATEBASEIMAGENUMBER] = CHAR_seekGraphicNumberFromString(secondToken); }else if( strcasecmp("name",firstToken) == 0 ){ strcpysafe( cr.chardata[NPC_CREATENAME].string, sizeof(cr.chardata[NPC_CREATENAME].string), secondToken ); }else if( strcasecmp("time",firstToken) == 0 ){ cr.intdata[NPC_CREATETIME] = atoi( secondToken ); }else if( strcasecmp("date",firstToken) == 0 ){ cr.intdata[NPC_CREATEDATE] = atoi( secondToken ); }else if( strcasecmp("createnum",firstToken) == 0 ){ cr.intdata[NPC_CREATEBORNNUM] = atoi( secondToken ); }else if( strcasecmp( "boundary", firstToken) == 0 ){ cr.intdata[NPC_CREATEBOUNDARY] = atoi( secondToken ); }else if( strcasecmp( "ignoreinvincible", firstToken) == 0 ){ cr.intdata[NPC_CREATEIGNOREINVINCIBLE] = atoi( secondToken ); //jeffrey 1231#ifdef _ADD_ACTION }else if( strcasecmp( "action", firstToken) == 0 ){ cr.intdata[NPC_CREATEACTION] = atoi( secondToken );#endif // Robin 0731 }else if( strcasecmp( "family", firstToken) == 0 ){ cr.intdata[NPC_CREATEFAMILY] = atoi( secondToken ); }else if( strcasecmp("enemy", firstToken) == 0 ){ int templateindex; char enemyname[64]; /* 雁钗瞬民尼永弁 */ if( enemyreadindex <= arraysizeof(cr.templateindex) ) /* OK */ ; else break; getStringFromIndexWithDelim(secondToken,"|",1,enemyname, sizeof(enemyname) ); templateindex= NPC_templateGetTemplateIndex(enemyname); if( templateindex != -1 ){ cr.templateindex[enemyreadindex] = templateindex; { char tmp[2]; int ret; ret = getStringFromIndexWithDelim( secondToken, "|",2,tmp, sizeof(tmp) ); if( ret == FALSE ) cr.arg[enemyreadindex].string[0] = '\0'; else strcpysafe( cr.arg[enemyreadindex].string, sizeof( cr.arg[enemyreadindex]. string ), secondToken+strlen(enemyname)+1 ); } enemyreadindex++; }else fprint( "没有这种模块:\n[%s(%d)%s] enemy:%s\n", filename ,linenum,secondToken, enemyname); }else{ fprint( "没有这种登陆 %s %s:%d\n",firstToken,filename, linenum ); } } } } fclose(f); return TRUE;FCLOSERETURNFALSE: fclose(f); return FALSE;}BOOL NPC_readNPCCreateFiles( char* topdirectory ,int createsize){ STRING64 *filenames; int filenum; int i; filenames = (STRING64 *)allocateMemory( sizeof( STRING64 ) * (int)getFilesearchnum( ) ); if( filenames == NULL ){ print( "读取NPC创建文件... 内存错误\n" ); return FALSE; } filenum = rgetFileName( topdirectory ,filenames ,getFilesearchnum( ) ); if( filenum == -1 ){ freeMemory( filenames ); return FALSE; } if( filenum >= getFilesearchnum( ) ){ print( "文件搜索数目失败 %d\n", getFilesearchnum( ) ); while( 1 ); } if( !NPC_initCreateArray( createsize ) ){ fprint( "开启创建数组错误\n" ); freeMemory( filenames ); return FALSE; } print( "读取NPC创建文件..." ); for( i = 0 ; i < filenum ; i ++ ) if( NPC_IsNPCCreateFile( filenames[i].string )) if( NPC_readCreateFile( filenames[i].string ) == -1 ) break; print( "正确创建NPC %d ..." , NPC_create_readindex ); NPC_createnum=NPC_create_readindex;#ifdef DEBUG /* 99/4/8 By Kawata csv溥挚卞仄化支月 */ print( "Npc_Create's\n"); for( i = 0 ; i < NPC_createnum ; i ++ ){ int j; /*print( "NPC_create[%d]:\n", i);*/ print( "%d,", i); for( j = 0 ; j < NPC_CREATECHARNUM ; j ++ ) print("%s," , NPC_create[i].chardata[j].string ); /*print( "\tIntdata\t" );*/ for( j = 0 ; j < NPC_CREATEINTNUM ; j ++ ) print("%d," , NPC_create[i].intdata[j] ); /***print("\n" ); print( "\tChardata\t" );***/ for( j = 0 ; j < NPC_create[i].intdata[NPC_CREATEENEMYNUM]; j ++ ) print("%d" , NPC_create[i].templateindex[j] ); /*print("\n" );*/ print("\n" ); }#endif /*DEBUG*/ freeMemory( filenames ); return TRUE;}/*------------------------------------------------------------ * createindex 井日 boundary 互涩烂今木化中月井升丹井毛苇月 * 娄醒 * createindex int create及奶件犯永弁旦 * 忒曰袄 * 涩烂今木化中月 TRUE(1) * 涩烂今木化中卅中 FALSE(0) ------------------------------------------------------------*/BOOL NPC_isBoundarySet( int createindex ){ if( NPC_CHECKCREATEINDEX(createindex) == FALSE )return FALSE; return NPC_create[createindex].intdata[NPC_CREATEBOUNDARY];}/*------------------------------------------------------------ * 娄醒 * r RECT* 袄毛熬仃午月RECT 及禾奶件正 * 忒曰袄 ------------------------------------------------------------*/BOOL NPC_createGetRECT( int createindex,RECT* r ){ if( NPC_CHECKCREATEINDEX(createindex) == FALSE )return FALSE; r->x = NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPX]; r->y = NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPY]; r->width = NPC_create[createindex].intdata[NPC_CREATEMOVERIGHTDOWNX] - NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPX]; r->height = NPC_create[createindex].intdata[NPC_CREATEMOVERIGHTDOWNY] - NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPY]; return TRUE;}/*------------------------------------------------------------ * 娄醒 * cindex int 奶件犯永弁旦 * 忒曰袄 * BOOL 综匀化中中桦宁 TRUE(1) * BOOL 综匀化中仃卅中桦宁 FALSE(0) ------------------------------------------------------------*/BOOL NPC_createCheckGenerateFromTime( int cindex ){ struct timeval old; if( !NPC_CHECKCREATEINDEX(cindex) ) return FALSE; if( NPC_create[cindex].workdata[NPC_CREATEWORKNEVERMAKE] ) return FALSE; if( NPC_create[cindex].intdata[NPC_CREATEBORNNUM] <= NPC_create[cindex].workdata[NPC_CREATEWORKENEMYNUM] ) return FALSE; if( NPC_create[cindex].intdata[NPC_CREATETIME] < 0 )return FALSE; old.tv_sec = NPC_create[cindex].workdata[NPC_CREATEWORKMAKESTARTSEC]; old.tv_usec= NPC_create[cindex].workdata[NPC_CREATEWORKMAKESTARTUSEC]; if( time_diff_us( NowTime , old ) <= NPC_create[cindex].intdata[NPC_CREATETIME]*1000 ) return FALSE; return TRUE;}/*------------------------------------------------------------ * 娄醒 * tindex int 奶件犯永弁旦 * 忒曰袄 * 卅仄 ------------------------------------------------------------*/void NPC_createInitTime( int index ){ /* 综月仪卞卅匀凶井日袄毛涩烂 */ NPC_create[index].workdata[NPC_CREATEWORKMAKESTARTSEC] = NowTime.tv_sec; NPC_create[index].workdata[NPC_CREATEWORKMAKESTARTUSEC] = NowTime.tv_usec;}/*------------------------------------------------------------ * 娄醒 * index int 奶件犯永弁旦 * 忒曰袄 * 卅仄 ------------------------------------------------------------*/void NPC_createIncreaseEnemynum( int index ){ if( !NPC_CHECKCREATEINDEX(index) )return; NPC_create[index].workdata[NPC_CREATEWORKENEMYNUM] ++;}/*------------------------------------------------------------ * 衬互韶氏匹市它件玄醒毛蛹日允楮醒 * 娄醒 * index int 奶件犯永弁旦 * 忒曰袄 * 卅仄 ------------------------------------------------------------*/void NPC_createDecreaseEnemynum( int index ){ if( !NPC_CHECKCREATEINDEX(index) )return; NPC_create[index].workdata[NPC_CREATEWORKENEMYNUM] --;}/*------------------------------------------------------------ * 娄醒 * index int 奶件犯永弁旦 * 忒曰袄 * TRUE:MAX FALSE:啜丹 ------------------------------------------------------------*/BOOL NPC_createCheckMaxEnemynum( int index ){ if( NPC_create[index].intdata[NPC_CREATEBORNNUM] <= NPC_create[index].workdata[NPC_CREATEWORKENEMYNUM] ) return TRUE; else return FALSE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -