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

📄 title.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -