亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? item.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
?? 第 1 頁 / 共 5 頁
字號:
{	if( ITEM_DATAINTNUM <= index || index < 0 )return FALSE;	return TRUE;}static INLINE int ITEM_CHECKCHARDATAINDEX(int index){	if( ITEM_DATACHARNUM<=index || index<0 )return FALSE;	return TRUE;}BOOL ITEM_initExistItemsArray( int num ){	int     i;	BOOL ITEM_checksetdata( void );	if( ITEM_checksetdata() == FALSE )return FALSE;	ITEM_itemnum = num;	ITEM_item = allocateMemory( sizeof( ITEM_exists ) * num );	if( ITEM_item == NULL ) return FALSE;	for( i = 0 ; i < num ; i ++ ){		memset( &ITEM_item[i], 0 , sizeof( ITEM_exists ));		ITEM_item[i].use = FALSE;	}	return TRUE;}BOOL ITEM_endExistItemsArray( void ){	freeMemory( ITEM_item );	return TRUE;}int _ITEM_initExistItemsOne( char *file, int line, ITEM_Item* itm ){	int i;	int itemID=-1;	static int Sindex=1;	itemID = itm->data[ITEM_ID];	if( ITEM_CHECKITEMTABLE(itm->data[ITEM_ID] ) == FALSE){		print("CHAR itemData err Item_id:%d=%s%d!!\n", itm->data[ITEM_ID], file, line);		return -1;	}	for( i = 0 ; i < ITEM_itemnum ; i ++ ) {		Sindex++;		if( Sindex >= ITEM_itemnum ) Sindex = 1;		if( Sindex < 1 ) Sindex = 1;		if( !ITEM_item[Sindex].use){			int	charaindex;			charaindex = ITEM_item[Sindex].itm.workint[ITEM_WORKCHARAINDEX];			if( CHAR_CHECKINDEX( charaindex) &&				CHAR_getInt( charaindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER ) {				int	j;				for( j = 0; j < CHAR_MAXITEMHAVE; j ++ ) {					if( CHAR_getItemIndex( charaindex, j) == Sindex) {						print( "item.c: error! chara have this item charaindex[%d] "								"itemindex[%d] Name(%s)POS(%d)NAME(%s)\n",								charaindex, Sindex,								CHAR_getUseName( charaindex ), j,								ITEM_item[Sindex].itm.string[ITEM_NAME].string );						print( "from %s:%d\n", file, line);						ITEM_item[Sindex].use = TRUE;						break;					}				}				if( j != CHAR_MAXITEMHAVE ) continue;			}			memcpy( &ITEM_item[Sindex].itm , itm , sizeof( ITEM_Item ) );			ITEM_item[Sindex].use = TRUE;			{				BOOL    (*initfunc)(ITEM_Item*)=NULL;				initfunc = (BOOL(*)(ITEM_Item*)) getFunctionPointerFromName( itm->string[ITEM_INITFUNC].string );				if( initfunc ){					if( initfunc( &ITEM_item[Sindex].itm ) == FALSE ){						ITEM_item[Sindex].use = FALSE;						fprint( "Error:Can't init item\n" );						return -1;					}				}			}			ITEM_UseItemnum++;			ITEM_constructFunctable( Sindex);			return Sindex;		}	}	fprint( "錯誤:物品已滿\n" );	return -1;}void _ITEM_endExistItemsOne( int index , char *file, int line){	int	i,j;	int  hitcnt = 0;	int     playernum = CHAR_getPlayerMaxNum();	if( !ITEM_CHECKINDEX(index)) return;	for( i = 0; i < playernum; i ++ ) {		if( CHAR_CHECKINDEX( i)) {			for( j = 0; j < CHAR_MAXITEMHAVE; j ++ ) {				if( CHAR_getItemIndex( i, j) == index) {					print( "warning !! player have this item:%d call from [%s:%d](%s)(%s)\n",							index, file,line, CHAR_getUseName(i),ITEM_item[index].itm.string[ITEM_NAME].string );					hitcnt ++;					if( hitcnt > 1 ) {						print( "ITEM_INDEX(%d) duplicate!!\n", index);					}				}			}		}	}	if( hitcnt < 1 ){		ITEM_item[index].use = FALSE;		ITEM_item[index].itm.workint[ITEM_WORKCHARAINDEX] = -1;		ITEM_UseItemnum--;	}}INLINE int ITEM_getIntStrict( int index ,ITEM_DATAINT element,int* error){	if(!ITEM_CHECKINDEX(index))return *error=FALSE;	if(!ITEM_CHECKINTDATAINDEX(element))return *error=FALSE;	return ITEM_item[index].itm.data[element];}INLINE int _ITEM_getInt( char *file, int line, int index ,ITEM_DATAINT element){	if(!ITEM_CHECKINDEX(index)){		return -1;	}	if(!ITEM_CHECKINTDATAINDEX(element))	{		return -1;	}	return ITEM_item[index].itm.data[element];}INLINE int ITEM_setIntStrict( int index ,ITEM_DATAINT element,int data,							  int* error){	int buf;	if(!ITEM_CHECKINDEX(index))		return *error=FALSE;	if(!ITEM_CHECKINTDATAINDEX(element))		return *error=FALSE;	buf = ITEM_item[index].itm.data[element];	ITEM_item[index].itm.data[element] = data;	return buf;}INLINE int _ITEM_setInt( char *file, int line, int index ,ITEM_DATAINT element, int data){	int buf;	if( !ITEM_CHECKINDEX( index) ){		return -1;	}	if( !ITEM_CHECKINTDATAINDEX( element) ){		return -1;	}	buf = ITEM_item[ index].itm.data[ element];	ITEM_item[ index].itm.data[ element] = data;	return buf;}INLINE char* ITEM_getChar( int index ,ITEM_DATACHAR element ){	if(!ITEM_CHECKINDEX(index))return NULL;	if(!ITEM_CHECKCHARDATAINDEX(element))return NULL;	return ITEM_item[index].itm.string[element].string;}INLINE BOOL ITEM_setChar( int index ,ITEM_DATACHAR element , char* new){	if(!ITEM_CHECKINDEX(index))return FALSE;	if(!ITEM_CHECKCHARDATAINDEX(element))return FALSE;	strcpysafe( ITEM_item[index].itm.string[element].string,				sizeof( ITEM_item[index].itm.string[element].string ),				new );	return TRUE;}INLINE int ITEM_getWorkInt( int index ,ITEM_WORKDATAINT element){	if( !ITEM_CHECKINDEX(index) ) return -1;	if( element >= ITEM_WORKDATAINTNUM || element < 0 ) return -1;	return ITEM_item[index].itm.workint[element];}INLINE int ITEM_setWorkInt( int index ,ITEM_WORKDATAINT element, int data){	int buf;	if( !ITEM_CHECKINDEX( index) ) return -1;	if( element >= ITEM_WORKDATAINTNUM || element < 0 ) return -1;	buf = ITEM_item[index].itm.workint[element];	ITEM_item[index].itm.workint[element] = data;	return buf;}INLINE int ITEM_getITEM_itemnum( void ){	return ITEM_itemnum;}INLINE int ITEM_getITEM_UseItemnum( void ){	return ITEM_UseItemnum;}INLINE BOOL ITEM_getITEM_use( int index ){	if( !ITEM_CHECKINDEX(index))return FALSE;	return ITEM_item[index].use;}void ITEM_constructFunctable( int itemindex ){	int     i;	if( !ITEM_CHECKINDEX(itemindex))return;	for( i=ITEM_FIRSTFUNCTION; i < ITEM_LASTFUNCTION ; i++ )	{		ITEM_item[itemindex].itm.functable[i-ITEM_FIRSTFUNCTION]			= getFunctionPointerFromName( ITEM_getChar( itemindex,i ) );	}}void* ITEM_getFunctionPointer( int itemindex, int functype ){	if( !ITEM_CHECKINDEX(itemindex) )return NULL;	if( functype < ITEM_FIRSTFUNCTION  || functype >= ITEM_LASTFUNCTION ){		print( "類型錯誤:%d\n", functype);		return NULL;	}	return ITEM_item[itemindex].itm.		functable[functype-ITEM_FIRSTFUNCTION];}int ITEM_getItemMaxIdNum( void){	return ITEM_tblen;}BOOL ITEM_checksetdata( void ){	int i;	char*   strings[ITEM_DATAINTNUM + ITEM_DATACHARNUM + 1];#ifdef _SIMPLIFY_ITEMSTRING	int num=0;	for(i = 0; i < arraysizeof( ITEM_setintdata) ; i ++ )		strings[ num++ ] = ITEM_setintdata[i].dumpchar;	for( i = 0 ; i < arraysizeof( ITEM_setchardata) ; i ++ )		strings[ num++ ] = ITEM_setchardata[i].dumpchar;	strings[ITEM_DATAINTNUM+ITEM_DATACHARNUM] = ITEM_setmemdata.dumpchar;	if( ! checkStringsUnique( strings, num,1 ) ){		fprint( "ITEM_set????data is overlapped.\nIt is not allowed\n");		return FALSE;	}#else	for(i = 0; i < ITEM_DATAINTNUM ; i ++ )		strings[i] = ITEM_setintdata[i].dumpchar;	for( i = 0 ; i < ITEM_DATACHARNUM ; i ++ )		strings[ITEM_DATAINTNUM+i] = ITEM_setchardata[i].dumpchar;		strings[ITEM_DATAINTNUM+ITEM_DATACHARNUM] = ITEM_setmemdata.dumpchar;	if( ! checkStringsUnique( strings, arraysizeof( strings ),1 ) ){		fprint( "ITEM_set????data is overlapped.\nIt is not allowed\n");		return FALSE;	}#endif	return TRUE;}static char    ITEM_dataString[STRINGBUFSIZ];char* ITEM_makeStringFromItemIndex( int index, int mode ){	if( 0 <= index && index < ITEM_itemnum && ITEM_item[index].use == TRUE)		;	else		return NULL;	return ITEM_makeStringFromItemData( &ITEM_item[index].itm, mode );}#ifdef _SIMPLIFY_ITEMSTRING2BOOL CHECK_HaveBeSave( int itemID, int oneNum, int type ){	if( ITEM_ID == type ) return TRUE;	if( ITEMTBL_getInt( itemID, type) == oneNum ) return FALSE;	return TRUE;}#endifchar*   ITEM_makeStringFromItemData( ITEM_Item* one, int mode ){	int     i;	char	delim1 = '\0';	char	delim2 = '\0';	int     strlength=0;#ifdef _SIMPLIFY_ITEMSTRING2	int itemID = one->data[ ITEM_ID];	if( !ITEM_CHECKITEMTABLE( itemID) ) return NULL;#endif	if( mode == 0 ) {		delim1 = '=';	delim2 = '|';	}else {		delim1 = ':';	delim2 = ',';	}#ifdef _SIMPLIFY_ITEMSTRING	for(i = 0; i < arraysizeof( ITEM_setintdata) ; i ++ ){		char    linedata[128];#ifdef _SIMPLIFY_ITEMSTRING2		if( !CHECK_HaveBeSave( itemID, one->data[ ITEM_setintdata[i].table], ITEM_setintdata[i].table) ) continue;#endif		snprintf( linedata , sizeof(linedata),				  "%s%c%d%c", ITEM_setintdata[i].dumpchar, delim1,				  one->data[ ITEM_setintdata[i].table], delim2 );		strcpysafe( &ITEM_dataString[strlength], sizeof( ITEM_dataString ) - strlength, linedata );		strlength += strlen( linedata );	}	for( i = 0 ; i < arraysizeof( ITEM_setchardata) ; i ++ ){		char    linedata[128];		char    escapebuffer[128];		if( strlen( one->string[ ITEM_setchardata[i].table].string) == 0 ) continue;		snprintf( linedata , sizeof(linedata),				"%s%c%s%c", ITEM_setchardata[i].dumpchar,delim1,				makeEscapeString( one->string[ITEM_setchardata[i].table].string, escapebuffer,				sizeof(escapebuffer)), delim2);		strcpysafe( &ITEM_dataString[strlength], sizeof( ITEM_dataString ) - strlength, linedata );		strlength += strlen( linedata );	}#else	for( i = 0 ; i < ITEM_DATAINTNUM ; i ++ ) {		char    linedata[128];		snprintf( linedata , sizeof(linedata),				  "%s%c%d%c", ITEM_setintdata[i].dumpchar, delim1, one->data[i], delim2 );		strcpysafe( &ITEM_dataString[strlength], sizeof( ITEM_dataString ) - strlength, linedata );		strlength += strlen( linedata );	}	for( i = 0 ; i < ITEM_DATACHARNUM ; i ++ ){		char    linedata[128];		char    escapebuffer[128];		if( strlen( one->string[i].string) != 0 ) {			snprintf( linedata , sizeof(linedata),					"%s%c%s%c", ITEM_setchardata[i].dumpchar,delim1,					makeEscapeString(one->string[i].string,escapebuffer,					sizeof(escapebuffer)), delim2);			strcpysafe( &ITEM_dataString[strlength], sizeof( ITEM_dataString ) - strlength, linedata );			strlength += strlen( linedata );		}	}#endif	dchop( ITEM_dataString, (mode == 0 ) ? "|" : ",");	return ITEM_dataString;}BOOL ITEM_makeExistItemsFromStringToArg( char* src , ITEM_Item* item, int mode ){	int     readindex=1;	char	delim1[2];	char	delim2[2];	if( mode == 0 ) {		strcpy( delim1, "=");		strcpy( delim2, "|");	}	else {		strcpy( delim1, ":");		strcpy( delim2, ",");	}#ifdef _SIMPLIFY_ITEMSTRING	{		int itemID=-1;		while( 1 ){			char    linebuf[512];			char firstToken[256];			char secondToken[256];			if( getStringFromIndexWithDelim( src ,delim2 , readindex, linebuf, sizeof( linebuf)) == FALSE ) break;			readindex++;			if( getStringFromIndexWithDelim( linebuf, delim1, 1, firstToken, sizeof( firstToken )) == FALSE )return FALSE;			if( strcmp( firstToken, "id" ) ) continue;			strcpysafe( secondToken , sizeof( secondToken ), linebuf + strlen( firstToken) + strlen( delim1) );			itemID = atoi( secondToken);			if( !ITEM_CHECKITEMTABLE( itemID) ) return FALSE;			ITEM_getDefaultItemData( itemID, item);			break;		}		readindex =1;	}#else	ITEM_getDefaultItemSetting(item);#endif	while( 1 ){		BOOL    ret;		char    linebuf[512];		char firstToken[256];		char secondToken[256];		int     i;		ret = getStringFromIndexWithDelim( src ,delim2 , readindex,linebuf, sizeof(linebuf) );		if( ret == FALSE )			break;		ret = getStringFromIndexWithDelim( linebuf, delim1,  1, firstToken, sizeof( firstToken ) );		if( ret == FALSE )  return FALSE;		strcpysafe( secondToken , sizeof( secondToken ),					linebuf + strlen(firstToken) + strlen(delim1) );#ifdef _SIMPLIFY_ITEMSTRING		for(i = 0; i < arraysizeof( ITEM_setintdata) ; i ++ ){			if( strcmp( firstToken , ITEM_setintdata[i].dumpchar) ) continue;			item->data[ITEM_setintdata[i].table] = atoi( secondToken );			goto NEXT;		}		for(i = 0; i < arraysizeof( ITEM_setchardata) ; i ++ ){			if( strcmp(firstToken ,ITEM_setchardata[i].dumpchar ) ) continue;			strcpysafe( item->string[ ITEM_setchardata[i].table].string,						sizeof(item->string[ITEM_setchardata[i].table].string),						makeStringFromEscaped(secondToken));			goto NEXT;		}#else		for( i = 0 ; i < ITEM_DATAINTNUM ; i ++ ){			if( strcmp(firstToken ,ITEM_setintdata[i].dumpchar) == 0 ){				item->data[i] = atoi( secondToken );				goto NEXT;			}		}		for( i = 0 ; i < ITEM_DATACHARNUM ; i ++ ){			if( strcmp(firstToken ,ITEM_setchardata[i].dumpchar ) == 0 ){				strcpysafe( item->string[i].string,							sizeof(item->string[i].string),							makeStringFromEscaped(secondToken));				goto NEXT;			}		}#endif		fprint( "??? : %s[%s]\n" , src , firstToken );	NEXT:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品2019中文字幕之3| 婷婷综合另类小说色区| 一区二区三区在线影院| 精品一区二区三区免费视频| 成人av小说网| 欧美大片一区二区三区| 国产精品久久久久久久裸模| 日韩激情一区二区| 99在线精品视频| 精品国产乱码久久久久久1区2区| 一区二区三区在线免费播放| 国产一区二区三区不卡在线观看| 欧美老年两性高潮| 亚洲你懂的在线视频| 国产91在线观看| 欧美电影免费观看高清完整版在线 | 国产成人免费在线| 91麻豆精品国产自产在线观看一区| 中文字幕综合网| 国产成人免费在线观看| 精品久久久久久久久久久久久久久 | 另类的小说在线视频另类成人小视频在线 | 精品一区二区三区视频在线观看 | 91老师国产黑色丝袜在线| 精品国产一区二区精华| 天涯成人国产亚洲精品一区av| 91在线观看美女| 欧美激情一二三区| 福利视频网站一区二区三区| 精品成人在线观看| 久久精品噜噜噜成人av农村| 在线播放91灌醉迷j高跟美女| 亚洲图片欧美色图| 91成人网在线| 亚洲午夜久久久久久久久电影网| 一本色道a无线码一区v| 亚洲免费伊人电影| 色欧美乱欧美15图片| 亚洲免费高清视频在线| 日本精品一区二区三区高清| 亚洲老司机在线| 欧美午夜电影在线播放| 天天综合色天天| 日韩欧美区一区二| 国产精品一线二线三线| 国产精品视频一区二区三区不卡| 成+人+亚洲+综合天堂| 亚洲视频资源在线| 欧美最猛黑人xxxxx猛交| 亚洲第一电影网| 在线播放中文一区| 国产一区二区在线视频| 国产精品电影一区二区| 欧美视频一区二区三区四区 | 在线观看网站黄不卡| 亚洲图片自拍偷拍| 日韩视频免费观看高清完整版| 奇米色一区二区| 国产午夜精品一区二区| 91捆绑美女网站| 奇米精品一区二区三区在线观看| 久久久久久免费| 91伊人久久大香线蕉| 亚洲国产精品尤物yw在线观看| 91精品在线麻豆| 国产成人亚洲精品青草天美 | 欧美国产日韩在线观看| 色婷婷精品久久二区二区蜜臀av | 国产精品日产欧美久久久久| 91麻豆高清视频| 秋霞电影一区二区| 国产精品夫妻自拍| 欧美一区国产二区| 成人精品一区二区三区四区| 性久久久久久久久久久久| 久久久99精品免费观看不卡| 欧美亚一区二区| 国产精品538一区二区在线| 一区二区三区欧美视频| 久久久影院官网| 欧美电影在哪看比较好| 99re这里只有精品6| 另类小说图片综合网| 一区二区三区在线免费视频| 国产亚洲综合在线| 777午夜精品视频在线播放| av激情成人网| 国产在线播精品第三| 亚洲va国产天堂va久久en| 国产精品国产三级国产aⅴ无密码| 日韩一级在线观看| 色激情天天射综合网| 国产精品18久久久久| 喷水一区二区三区| 亚洲一区二区美女| 国产精品久久久久四虎| 国产视频一区在线播放| 日韩欧美久久一区| 欧美高清一级片在线| 在线视频国内自拍亚洲视频| 国产麻豆精品视频| 精品一区二区三区蜜桃| 视频在线在亚洲| 一区二区欧美精品| 亚洲欧美日韩一区二区三区在线观看 | 99在线精品观看| 国产成人免费在线观看| 国内精品国产成人国产三级粉色 | 国产在线播放一区二区三区| 无码av中文一区二区三区桃花岛| 亚洲精品乱码久久久久久黑人 | 欧美日韩成人综合天天影院| 色婷婷久久久综合中文字幕| 99天天综合性| 北岛玲一区二区三区四区| 成人免费av网站| 高清久久久久久| 成人手机电影网| 国产成人精品免费一区二区| 国产成人在线视频网址| 福利一区二区在线观看| 成人午夜电影网站| 91亚洲精品久久久蜜桃网站| 91看片淫黄大片一级在线观看| 91香蕉视频在线| 欧洲精品在线观看| 91精品久久久久久蜜臀| 欧美成人bangbros| 久久久久综合网| 国产精品免费视频观看| 亚洲免费观看高清完整| 天堂成人国产精品一区| 久久99在线观看| 国产乱人伦精品一区二区在线观看| 国产一区二区在线电影| a在线播放不卡| 在线观看91精品国产入口| 4hu四虎永久在线影院成人| 日韩欧美一区二区在线视频| 久久天天做天天爱综合色| 中文字幕不卡三区| 亚洲一区二区三区视频在线| 日韩**一区毛片| 成人永久免费视频| 在线一区二区三区四区| 日韩午夜电影av| 国产精品国产精品国产专区不蜜 | 中文字幕在线观看一区| 亚洲国产你懂的| 精品日韩在线观看| 日韩精品一区二区三区视频播放 | 国产精品传媒视频| 亚洲午夜久久久久久久久电影院| 日韩精品一二三区| 国产精品一区二区久激情瑜伽| 97精品电影院| 欧美一区二区女人| 国产精品久久久久aaaa樱花| 香港成人在线视频| 国产精品中文字幕日韩精品 | 欧美三级欧美一级| 久久久精品国产免大香伊| 一区二区欧美视频| 国产成人在线看| 91精品黄色片免费大全| 国产精品免费av| 丝袜美腿成人在线| 91麻豆国产香蕉久久精品| 精品久久久久久久人人人人传媒| 亚洲激情图片一区| 国产成人综合网站| 欧美一区二区三区视频免费| 亚洲同性同志一二三专区| 精品一区二区在线免费观看| 欧美性xxxxxxxx| 国产片一区二区| 蜜臀久久久99精品久久久久久| 色一情一伦一子一伦一区| 26uuuu精品一区二区| 丝袜亚洲另类欧美| 欧美自拍偷拍午夜视频| 国产精品毛片久久久久久久| 久久电影网电视剧免费观看| 欧美日韩精品欧美日韩精品 | 欧美高清激情brazzers| 亚洲欧洲另类国产综合| 国产精品综合一区二区| 日韩丝袜美女视频| 日韩精品每日更新| 欧美三级视频在线观看| 一区二区三区四区中文字幕| 99re视频这里只有精品| 国产欧美一区二区三区沐欲| 国产一区二区三区在线观看免费视频| 欧美一区二区三区四区视频| 偷拍与自拍一区| 欧美精品日韩一区| 日韩电影免费在线| 欧美一区二区三区四区在线观看| 天堂在线亚洲视频|