📄 title.c
字号:
TITLE_titlecfgnum=0; /* 引内 躲卅垫互窒垫丐月井升丹井譬屯月 */ /*while( fgets( line, sizeof( line ), f ) ){}*/ while( 1 ) { int rc; rc = TITLE_getConfigOneLine( f, line, sizeof(line)); if( rc == 0 ) break; if( rc == -1 ) continue; TITLE_titlecfgnum++; } if( fseek( f, 0, SEEK_SET ) == -1 ){ fprint( "Seek Error\n" ); fclose(f); return FALSE; } TITLE_ConfigTable = allocateMemory( sizeof(struct tagTITLE_configTable) * TITLE_titlecfgnum ); if( TITLE_ConfigTable == NULL ){ fprint( "Can't allocate Memory %d\n" , sizeof(TITLE_ConfigTable)*TITLE_titlecfgnum); fclose( f ); return FALSE; } /* 赓渝祭 */ { int i; for( i = 0; i < TITLE_titlecfgnum; i ++ ) { TITLE_initTitleData( i); } } TITLE_configbuf = allocateMemory( sizeof(TITLE_CONFIGBUF) * TITLE_titlecfgnum ); if( TITLE_configbuf == NULL ){ fprint( "Can't allocate Memory %d\n" , sizeof(TITLE_CONFIGBUF)*TITLE_titlecfgnum); fclose( f ); return FALSE; } /* 引凶 心 允 */ linenum = 0; /*while( fgets( line, sizeof( line ), f ) ){}*/ while( 1) { int rc; rc = TITLE_getConfigOneLine( f, line, sizeof(line)); if( rc == 0 ) break; if( rc == -1 ) continue; linenum ++;{ char token[256]; int ret; int i , j ; int comppos; BOOL errflg =FALSE; for( i = 1; ; i ++ ){ /* 玄□弁件毛苇月 */ ret = getStringFromIndexWithDelim( line,",",i,token, sizeof(token)); if( ret == FALSE ){ break; } /* 侬卞 晶 */ for( j = 0; j < strlen( token); j ++ ) { token[j] = toupper( token[j]); } /* 惫寞隙烂毛譬屯月 */ if( strncmp( "TITLE", token, 5) == 0 ) { char buf[64]; ret = getStringFromIndexWithDelim( token,"=",2,buf, sizeof(buf)); if( ret == FALSE) { fprint("文件语法错误:%s 第%d行\n",filename,linenum); TITLE_initTitleData( titlecfg_readlen); errflg = TRUE; break; } TITLE_ConfigTable[titlecfg_readlen].title = atoi( buf); } else { /* 由仿丢□正隙烂毛 戈 */ for( j = 0; j < arraysizeof( TITLE_param); j ++ ) { if( strncmp( TITLE_param[j].paramname, token, strlen( TITLE_param[j].paramname)) == 0 ) { TITLE_ConfigTable[titlecfg_readlen].paramindex[i-1] = j; /* 隶 奶矛件玄匹惫寞毛民尼永弁允月白仿弘毛 化月[ */ if( j == 0 || j == 1 || j == 2) { TITLE_ConfigTable[titlecfg_readlen].equipcheckflg = TRUE; } break; } } /* 由仿丢□正互 卅及毛隙烂今木凶 */ if( j == arraysizeof( TITLE_param) ) { fprint("文件语法错误:%s 第%d行\n", filename,linenum); TITLE_initTitleData( titlecfg_readlen); errflg = TRUE; break; } /* 羁寞]尕羁寞互绣箕允月井譬屯月 */ comppos = charInclude( token, "<>="); if( comppos == -1 ) { fprint("文件语法错误:%s 第%d行\n",filename,linenum); TITLE_initTitleData( titlecfg_readlen); errflg = TRUE; break;; } /* 羁寞]尕羁寞互ㄡ勾动晓 月午五 */ if( charInclude( &token[comppos+1], "<>=") != -1 ) { /* 升氏卅 胜井毛 戈 */ for( j = 0; j < 3; j ++ ) { if( memcmp( TITLE_compare[j].compare, &token[comppos], 2 ) == 0 ) { break; } } if( j == 3 ) { fprint("文件语法错误:%s 第%d行\n",filename,linenum); TITLE_initTitleData( titlecfg_readlen); errflg = TRUE; break; } else { ret = TITLE_getParamData( titlecfg_readlen,i-1,&token[comppos+2]); if( !ret ) { fprint("文件语法错误:%s 第%d行\n",filename,linenum); TITLE_initTitleData( titlecfg_readlen); errflg = TRUE; break; } /*TITLE_ConfigTable[titlecfg_readlen].param[i-1] = atoi( &token[comppos+2]);*/ TITLE_ConfigTable[titlecfg_readlen].compareflg[i-1] = j; } } else { ret = TITLE_getParamData( titlecfg_readlen,i-1,&token[comppos+1]); if( !ret ) { fprint("文件语法错误:%s 第%d行\n",filename,linenum); TITLE_initTitleData( titlecfg_readlen); errflg = TRUE; break; } /*TITLE_ConfigTable[titlecfg_readlen].param[i-1] = atoi( &token[comppos+1]);*/ /* 升氏卅 胜井毛 戈 */ for( j = 3; j < 6; j ++ ) { if( memcmp( TITLE_compare[j].compare, &token[comppos], 1 ) == 0 ) { TITLE_ConfigTable[titlecfg_readlen].compareflg[i-1] = j; break; } } } } } /* 惫寞 隙烂互 井匀凶 or 卅氏井仄日及巨仿□*/ if( errflg || TITLE_ConfigTable[titlecfg_readlen].title == -1 ) { fprint("文件语法错误:%s 第%d行\n",filename,linenum); TITLE_initTitleData( titlecfg_readlen); } else { titlecfg_readlen ++; }} } fclose(f); TITLE_titlecfgnum = titlecfg_readlen; print( "有效头衔配置数是 %d...", TITLE_titlecfgnum ); return TRUE;}/*------------------------------------------------------------ * 惫寞涩烂卞宁丹井譬屯化惫寞毛芨尹月[ * 娄醒 * charaindex int 平乓仿奶件犯永弁旦 * mode BOOL TRUE:item=及手及及心譬屯月 FALSE:蝈 * 忒曰袄 * TRUE: 惫寞卞 祭 曰[ * FALSE:窒手 井匀凶[ *------------------------------------------------------------*/static BOOL TITLE_TitleCheck_Main( int charaindex, BOOL mode, int *addcnt, int *delcnt){ int i, j,k, ret; /* 赓渝祭 */{ int i; for( i = 0; i < TITLE_titlecfgnum && TITLE_configbuf[i].title != -1; i ++ ) { TITLE_configbuf[i].title = -1; TITLE_configbuf[i].flg = 0; }} *addcnt = 0; *delcnt = 0; for( i = 0; i < TITLE_titlecfgnum; i ++ ) { int rc = TRUE; int title = TITLE_ConfigTable[i].title; if( mode == TRUE ) { if( TITLE_ConfigTable[i].equipcheckflg != TRUE ) { continue; } } for( j = 0; j < arraysizeof( TITLE_ConfigTable[i].param) && TITLE_ConfigTable[i].param[j][0] != -1 ; j ++ ) { int index = TITLE_ConfigTable[i].paramindex[j]; if( TITLE_param[index].checkfunc != NULL ) { rc = TITLE_param[index].checkfunc( charaindex, TITLE_param[index].element, TITLE_ConfigTable[i].param[j], TITLE_ConfigTable[i].compareflg[j] ); if( rc != TRUE ) break; } } /* 醒椭瘀卞 元惫寞互喃曰癫化日木化中月凛及啃卞] * 域绎田永白央卞霪户化公及瑛绊井日add,deltile允月 */ for( k = 0; k < TITLE_titlecfgnum; k ++ ) { if( TITLE_configbuf[k].title == title ) { if( rc ) { TITLE_configbuf[k].flg = 1; } break; } else if( TITLE_configbuf[k].title == -1 ) { TITLE_configbuf[k].title = title; TITLE_configbuf[k].flg = rc ? 1: -1; break; } } } ret = FALSE; for( i = 0; i < TITLE_titlecfgnum && TITLE_configbuf[i].title != -1; i ++ ) { if( TITLE_configbuf[i].flg == -1 ) { *delcnt += TITLE_deltitle( charaindex, TITLE_configbuf[i].title); } else { *addcnt += TITLE_addtitle( charaindex, TITLE_configbuf[i].title) ? 1:0; } } if( *delcnt > 0 || *addcnt > 0) { ret = TRUE; } return ret; }/*------------------------------------------------------------ * 惫寞涩烂卞宁丹井譬屯化惫寞毛芨尹月[ * 娄醒 * charaindex int 平乓仿奶件犯永弁旦 * mode BOOL TRUE:item=及手及及心譬屯月 FALSE:蝈 * 忒曰袄 * TRUE: 惫寞卞 祭 曰[ * FALSE:窒手 井匀凶[ *------------------------------------------------------------*/BOOL TITLE_TitleCheck( int charaindex, BOOL mode){#define TITLE_MSGUNIT1 "TSU"#define TITLE_MSGUNIT2 "KO" int addcnt,delcnt; BOOL rc; char msgbuf[64]; rc = TITLE_TitleCheck_Main( charaindex, mode, &addcnt,&delcnt); if( rc ) { if( delcnt > 0 ) { snprintf( msgbuf, sizeof( msgbuf), "失去%d%s 称号!", delcnt, delcnt < 10 ? TITLE_MSGUNIT1:TITLE_MSGUNIT2); CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW); } if( addcnt > 0 ) { snprintf( msgbuf, sizeof( msgbuf), "获得%d%s 称号!", addcnt, addcnt < 10 ? TITLE_MSGUNIT1:TITLE_MSGUNIT2); CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW); } } return rc;}/*------------------------------------------------------------ * 惫寞涩烂卞宁丹井譬屯化惫寞毛芨尹月[ * 娄醒 * charaindex int 平乓仿奶件犯永弁旦 * mode BOOL TRUE:item=及手及及心譬屯月 FALSE:蝈 * 忒曰袄 * TRUE: 惫寞卞 祭 曰[ * FALSE:窒手 井匀凶[ *------------------------------------------------------------*/BOOL TITLE_TitleCheck_Nomsg( int charaindex, BOOL mode, int *addcnt, int *delcnt){ return( TITLE_TitleCheck_Main( charaindex, mode, addcnt,delcnt));}static int TITLE_IntCheck( int charaindex, int elem, int *data, int flg){ int rc = FALSE; int i; for( i = 0; i < TITLE_PARAMSIZE && *(data+i) != -1; i ++ ) { switch( flg) { case 0: /* "<=" */ if( CHAR_getInt( charaindex, elem) <= *(data+i) ) rc = TRUE; break; case 1: /* ">=" */ if( CHAR_getInt( charaindex, elem) >= *(data+i) ) rc = TRUE; break; case 2: /* "<>" */ if( CHAR_getInt( charaindex, elem) != *(data+i) ) rc = TRUE; break; case 3: /* ">" */ if( CHAR_getInt( charaindex, elem) > *(data+i) ) rc = TRUE; break; case 4: /* "<" */ if( CHAR_getInt( charaindex, elem) < *(data+i) ) rc = TRUE; break; case 5: /* "=" */ if( CHAR_getInt( charaindex, elem) == *(data+i) ) rc = TRUE; break; default: rc= FALSE; break; } if( rc) break; } return rc;}static int TITLE_WorkIntCheck( int charaindex,int elem, int *data, int flg){ int rc = FALSE; int i; for( i = 0; i < TITLE_PARAMSIZE && *(data+i) != -1; i ++ ) { switch( flg) { case 0: /* "<=" */ if( CHAR_getWorkInt( charaindex, elem) <= *(data+i) ) rc = TRUE; break; case 1: /* ">=" */ if( CHAR_getWorkInt( charaindex, elem) >= *(data+i) ) rc = TRUE; break; case 2: /* "<>" */ if( CHAR_getWorkInt( charaindex, elem) != *(data+i) ) rc = TRUE; break; case 3: /* ">" */ if( CHAR_getWorkInt( charaindex, elem) > *(data +i)) rc = TRUE; break; case 4: /* "<" */ if( CHAR_getWorkInt( charaindex, elem) < *(data+i) ) rc = TRUE; break; case 5: /* "=" */ if( CHAR_getWorkInt( charaindex, elem) == *(data+i) ) rc = TRUE; break; default: rc= FALSE; break; } if( rc ) break; } return rc;}/* -------------------------------------- * 隙烂今木凶data午 匀化中月失奶 丞毛 胜允月[ * -------------------------------------*/static int TITLE_ItemCheckMain( int charaindex, int itemhaveindex, int *data, int flg){ int i,j; int rc = FALSE; if( flg == 2 ) rc = TRUE; for( j = 0; j < TITLE_PARAMSIZE && *(data+j) != -1; j ++ ) { for( i =0; i < itemhaveindex; i ++ ) { int itemindex = CHAR_getItemIndex(charaindex,i); if( ITEM_CHECKINDEX(itemindex) ) { switch( flg) { case 0: /* "<=" */ if( ITEM_getInt( itemindex, ITEM_ID) <= *(data+j) ) rc = TRUE; break; case 1: /* ">=" */ if( ITEM_getInt( itemindex, ITEM_ID) >= *(data+j) ) rc = TRUE; break; case 3: /* ">" */ if( ITEM_getInt( itemindex, ITEM_ID) > *(data +j)) rc = TRUE; break; case 4: /* "<" */ if( ITEM_getInt( itemindex, ITEM_ID) < *(data +j)) rc = TRUE; break; case 5: /* "=" */ if( ITEM_getInt( itemindex, ITEM_ID) == *(data +j)) rc = TRUE; break; /* 仇木分仃 健中[ * 失奶 丞蝈 毛苇化公木毛 匀化中卅井匀凶日蕞午允月[ * 仇仇匹反 匀化中月仪毛絮午仄化民尼永弁 */ case 2: /* "<>" */ if( ITEM_getInt( itemindex, ITEM_ID) == *(data +j)) rc = FALSE; break; default: rc= FALSE; break; } if( rc && flg != 2) break; } } if( rc) break; } return rc;}static int TITLE_ItemCheck( int charaindex,int elem, int *data, int flg){ return( TITLE_ItemCheckMain( charaindex, CHAR_MAXITEMHAVE,data,flg));}static int TITLE_ItemEquipCheck( int charaindex,int elem, int *data, int flg){ return( TITLE_ItemCheckMain( charaindex, CHAR_EQUIPPLACENUM,data,flg));}static int TITLE_SkillCheck( int charaindex,int elem, int *data, int flg){ int i; int rc = FALSE; CHAR_HaveSkill* hskill; for( i = 0 ; i < CHAR_SKILLMAXHAVE ; i ++ ){ hskill = CHAR_getCharHaveSkill( charaindex, i ); if( hskill != NULL && hskill->use == TRUE ) { if( *(data + 1) != -2 ) { if( SKILL_getInt( &hskill->skill, SKILL_IDENTITY) == *data) { rc = TRUE; break; } } else { if( SKILL_getInt( &hskill->skill, SKILL_IDENTITY) == *data) { rc = FALSE; break; } else { rc = TRUE; } } } } if( rc ) { if( *(data+1) != -1 && *(data+1) != -2) { rc = FALSE; switch( flg) { case 0: /* "<=" */ if( SKILL_getInt( &hskill->skill, SKILL_LEVEL) <= *(data+1) ) rc = TRUE; break; case 1: /* ">=" */ if( SKILL_getInt( &hskill->skill, SKILL_LEVEL) >= *(data+1) ) rc = TRUE; break; case 2: /* "<>" */ if( SKILL_getInt( &hskill->skill, SKILL_LEVEL) != *(data+1) ) rc = TRUE; break; case 3: /* ">" */ if( SKILL_getInt( &hskill->skill, SKILL_LEVEL) > *(data +1)) rc = TRUE; break; case 4: /* "<" */ if( SKILL_getInt( &hskill->skill, SKILL_LEVEL) < *(data+1) ) rc = TRUE; break; case 5: /* "=" */ if( SKILL_getInt( &hskill->skill, SKILL_LEVEL) == *(data+1) ) rc = TRUE; break; default: rc= FALSE; break; } } } return rc;}/* -------------------------------------- * 裆平乓仿井辉平乓仿井民尼永弁允月[ * -------------------------------------*/static int TITLE_SexCheck( int charaindex,int elem, int *data, int flg){ int i,j; struct { int sex[25]; }s_sex[] = { { { 30008,30009,30010,30011,30012,30013,30014,30015, 30020,30021,30022,30023,30024,30025,30026,30027, 30028,30029,30030,30031,30032,30033,30034,30035,-1} }, { {30000,30001,30002,30003,30004,30005,30006,30007, 30016,30017,30018,30019,30036,30037,30038,30039, -1, -1, -1, -1, -1, -1, -1, -1, -1} } }; for( i = 0; i < 2; i ++ ) { for( j = 0; s_sex[i].sex[j] != -1 ; j ++ ) { if( CHAR_getInt( charaindex, CHAR_BASEBASEIMAGENUMBER ) == s_sex[i].sex[j] ) { if( i == *data ) return TRUE; else return FALSE; } } } return FALSE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -