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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? item_gen.c

?? 石器時(shí)代8.0服務(wù)端完整源代碼。可以直接編譯
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
/*********************************************** * 失奶  丞寧岳″ **********************************************/#include "version.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <errno.h>#include <ctype.h>#include <math.h>#include "configfile.h"#include "util.h"#include "buf.h"#include "char.h"#include "item.h"#include "item_gen.h"#include "enemy.h"#include "log.h"#include "saacproto_cli.h"#include "family.h"#include "magic_base.h"#define		DEBUGPRINT 0#define		DEBUGPRINT_DETAIL	0// shan begin#define	        FOOD_HP_RATE            200#define         FOOD_MP_RATE            200#define         FOOD_SUCCESS_RATE       150#define         FOOD_TURN_ADDPOINT      1// shan endstatic int ITEM_getTableNum( int num);/* 豳箋及襖及MAX襖 */#define		ITEM_ATOMIND_MAX	1000// shan add#define         ITEM_ATOMIND_FM_MAX     4000#define		ITEM_RANDRANGEDOM		1000#ifdef _MERGE_NEW_8	// 1st#define		ITEM_RANDRANGEDOM_BASE	600#else#define		ITEM_RANDRANGEDOM_BASE	0#endif// shan add#define         ITEM_FM_RANDRANGEDOM            4000/*********************************************** * (ITEM_GEN_RAND_MIN/1000) * ITEN_GEN_SEARCH_MIN  *  - (ITEM_GEN_RAND_MAX/1000) * ITEN_GEN_SEARCH_MAX * 仇木分仃及汔及豳箋及  區(qū)毛潸曰丹月儀卞卅月[ **********************************************//* 豳箋及襖    及仿件母丞汔及  劑午      ㄠㄟㄟㄟ坌     */#define		ITEM_GEN_RAND_MIN		700#define		ITEM_GEN_RAND_MAX		1200/* 失奶  丞毛腹綢允月豳箋及襖及汔及  劑午    及    (double) */#define		ITEN_GEN_SEARCH_MIN		(0.7)#define		ITEN_GEN_SEARCH_MAX		(1.10)static struct tagItemSearchRangeTable {	double	searchmin;	double	searchmax;}ItemSearchTable[2] = {//	{ 0.7, 1.1},// shan add//	{ 0.7, 1.3},//	{ 0.5, 1.5}	{ 0.8, 1.2},	{ 0.7, 1.3}	};static struct tagItemRandRangeTable {	int	randmin;	int	randmax;}ItemRandTable[2] = {//	{ 700, 1200},	{ 700, 1300},	{ 900, 1100}};#define		ITEM_GEN_RATE	0.7static struct _tagItemRandRangeTableForItem {	int	num;			/* 豳箋及備仿件弁及湘  襖 */	int	minnum;			/* 仿件弁  潸曰丹月襖及Min */	int	maxnum;			/* 仿件弁  潸曰丹月襖及MAX  num +戚及仿件弁及犒*ITEM_GEN_RATE) */	double rate;		/*      maxnum / num*/}ItemRandTableForItem[] = {	{   10, 0,0,0 },	{   30, 0,0,0 },	{   65, 0,0,0 },	{  125, 0,0,0 },	{  205, 0,0,0 },	{  305, 0,0,0 },	{  425, 0,0,0 },	{  565, 0,0,0 },	{  725, 0,0,0 },	{  905, 0,0,0 },	{ 1125, 0,0,0 },    // shan add	{ 1354, 0,0,0 },	     	{ 1594, 0,0,0 },		{ 1825, 0,0,0 },		{ 2105, 0,0,0 },		{ 2405, 0,0,0 },		{ 2725, 0,0,0 },		{ 3065, 0,0,0 },		{ 3425, 0,0,0 },		{ 3805, 0,0,0 }};#define ATOM_LEVEL_MAX 16struct item_atom{	char name[32];	unsigned int name_hash;	int	 magicflg;};struct item_atom *item_atoms;int item_atoms_size;#define MAX_ITEM_ATOMS_SIZE 256struct item_ingindtable {	double data[MAX_ITEM_ATOMS_SIZE];	int	index;	int	num;};static int ITEM_getAtomIndexByName( char *nm ) // 從素材名稱取得素材index{	int i;	unsigned int h = hashpjw( nm );	for( i = 0; i < item_atoms_size; i ++ ){		if( item_atoms[i].name_hash == h &&			strcmp( item_atoms[i].name, nm) == 0 ){			return i;		}	}	return -1;}#ifdef _ITEMTBL_STAICextern ITEM_table ITEM_tbl[28000];#elseextern ITEM_table *ITEM_tbl;#endifstruct ingcache{	int use;#define MAXING_ONE 5	int inguse;	int	canmergefrom;	int	canmergeto;	int	hitnum;	int ingind[MAXING_ONE];	int ingval[MAXING_ONE];};int ITEM_initRandTable( void){	int i;	for( i = 0; i < arraysizeof( ItemRandTableForItem); i ++) {		if( i == 0 ) ItemRandTableForItem[i].minnum = 0;		else {			ItemRandTableForItem[i].minnum = ItemRandTableForItem[i-1].maxnum+1;		}		if( i + 1 != arraysizeof( ItemRandTableForItem)) {			ItemRandTableForItem[i].maxnum = 					ItemRandTableForItem[i].num +					(ItemRandTableForItem[i+1].num - ItemRandTableForItem[i].num)					*ITEM_GEN_RATE;					}		else {		        // shan add			ItemRandTableForItem[i].maxnum = 4000;  			//ItemRandTableForItem[i].maxnum = 1000;		}		ItemRandTableForItem[i].rate = ItemRandTableForItem[i].maxnum									/ (double)ItemRandTableForItem[i].num;	}	/*for( i = 0; i < arraysizeof( ItemRandTableForItem); i ++) {		print( "\ntable num:[%d] min:[%d] max:[%d] rate:[%3.3f] ",						ItemRandTableForItem[i].num,													ItemRandTableForItem[i].minnum,						ItemRandTableForItem[i].maxnum,						ItemRandTableForItem[i].rate);	}*/	return TRUE;}static struct ingcache *icache;int icache_num;#ifdef _IMPOROVE_ITEMTABLEint ADD_ICACHE_INGRED( int ItemID){	char *itemarg;	int i, nk=0;	for( i=0; i<5; i++){		itemarg = ITEMTBL_getChar( ItemID, ITEM_INGNAME0+i);//成分名		if( itemarg == NULL ) continue;		if( itemarg[0] ){			icache[ItemID].ingind[nk] = ITEM_getAtomIndexByName( itemarg);			if( icache[ItemID].ingind[nk] < 0 ){				print( "fuck ing[%s][%d] for %d %s\n",					itemarg,					ITEMTBL_getInt( ItemID, ITEM_INGVALUE0+i),					ITEMTBL_getInt( ItemID, ITEM_ID),					ITEMTBL_getChar( ItemID, ITEM_NAME) );			}else {				icache[ItemID].ingval[nk] = ITEMTBL_getInt( ItemID, ITEM_INGVALUE0+i);				nk++;			}		}	}	return nk;}int ITEM_initItemIngCache( void ){	int i;	print ( "初始化物品緩沖: 最大ID數(shù):%d\n", ITEM_getItemMaxIdNum( ) );	icache_num = ITEM_getMaxitemtblsFromTransList( );	icache = allocateMemory( sizeof( struct ingcache ) * icache_num );	if( icache == NULL ){		print( "初始化物品緩沖: 沒有物品\n" );		return FALSE;	}	print( "初始化物品緩沖: 讀取物品數(shù)=%d\n", icache_num);	remove( "icache.txt");	memset( icache, 0, icache_num * sizeof( struct ingcache) );	for( i=0; i<icache_num; i++){		if( ITEM_CHECKITEMTABLE( i) ){			icache[i].inguse = ADD_ICACHE_INGRED( i);			if( icache[i].inguse == 0 ){				if( ITEMTBL_getInt( i, ITEM_CANMERGEFROM ) == TRUE ||					ITEMTBL_getInt( i, ITEM_CANMERGETO ) == TRUE ){					print( "道具 沒設(shè)定成份:%d %d %s\n",						i,						ITEMTBL_getInt( i, ITEM_ID),						ITEMTBL_getChar( i, ITEM_NAME) );				}			}else{				FILE *fp;				icache[i].use = 1;				icache[i].canmergefrom = ITEMTBL_getInt( i, ITEM_CANMERGEFROM );				icache[i].canmergeto   = ITEMTBL_getInt( i, ITEM_CANMERGETO );				if( (fp = fopen( "icache.txt", "a+")) != NULL ){					fprintf( fp, "icache %4d %4d [%s] \t- %s %s %s %s %s\n",						i,						ITEMTBL_getInt( i, ITEM_ID),						ITEMTBL_getChar( i, ITEM_NAME),						ITEMTBL_getChar( i, ITEM_INGNAME0),						ITEMTBL_getChar( i, ITEM_INGNAME1),						ITEMTBL_getChar( i, ITEM_INGNAME2),						ITEMTBL_getChar( i, ITEM_INGNAME3),						ITEMTBL_getChar( i, ITEM_INGNAME4)						);					fclose( fp);				}else {					print("Can't a+ %s!!\n", "icache.txt");				}			}		}	}	return TRUE;}#elseint ITEM_initItemIngCache( void ){	int i;	print ( "\n初始化物品緩沖: 物品最大數(shù):%d ", ITEM_getItemMaxIdNum() );	icache_num = ITEM_getItemMaxIdNum( );	print(" 緩沖數(shù):%d ", icache_num);	icache = allocateMemory( sizeof( struct ingcache ) * icache_num );	if( icache == NULL ){		print( "初始化物品緩沖: 沒有物品\n" );		return FALSE;	}	remove( "old_icache.txt");	memset( icache, 0, icache_num * sizeof( struct ingcache) );	for( i=0; i<icache_num; i++){		if( ITEM_tbl[i].use ){ //new			int k=0;#define ADD_ICACHE_INGRED( nm, vl )	if( ITEM_tbl[i].itm.string[nm].string[0] ){icache[i].ingind[k] = ITEM_getAtomIndexByName(ITEM_tbl[i].itm.string[nm].string );if( icache[i].ingind[k] < 0 ){print( "fuck ing[%s][%d] for %d %s\n", ITEM_tbl[i].itm.string[nm].string,ITEM_tbl[i].itm.data[vl], ITEM_tbl[i].itm.data[ITEM_ID], ITEM_tbl[i].itm.string[ITEM_NAME].string );}else {icache[i].ingval[k] = ITEM_tbl[i].itm.data[vl];k++;}}			ADD_ICACHE_INGRED( ITEM_INGNAME0, ITEM_INGVALUE0 );			ADD_ICACHE_INGRED( ITEM_INGNAME1, ITEM_INGVALUE1 );			ADD_ICACHE_INGRED( ITEM_INGNAME2, ITEM_INGVALUE2 );			ADD_ICACHE_INGRED( ITEM_INGNAME3, ITEM_INGVALUE3 );			ADD_ICACHE_INGRED( ITEM_INGNAME4, ITEM_INGVALUE4 );			icache[i].inguse = k;			if( k == 0 ){				if( ITEM_tbl[i].itm.data[ITEM_CANMERGEFROM] == TRUE || //new					ITEM_tbl[i].itm.data[ITEM_CANMERGETO] == TRUE){//new					print( "ID%d (%s)尚未設(shè)定成分\n",						   ITEM_tbl[i].itm.data[ITEM_ID], //new						   ITEM_tbl[i].itm.string[ITEM_NAME].string ); //new				}			}else{				FILE *fp;				icache[i].use = 1;				icache[i].canmergefrom = ITEM_tbl[i].itm.data[ITEM_CANMERGEFROM]; //new				icache[i].canmergeto   = ITEM_tbl[i].itm.data[ITEM_CANMERGETO]; //new				if( (fp = fopen( "old_icache.txt", "a+")) != NULL ){					fprintf( fp, "icache %4d %4d [%s] \t- %s %s %s %s %s\n",						i,						ITEMTBL_getInt( i, ITEM_ID),						ITEMTBL_getChar( i, ITEM_NAME),						ITEMTBL_getChar( i, ITEM_INGNAME0),						ITEMTBL_getChar( i, ITEM_INGNAME1),						ITEMTBL_getChar( i, ITEM_INGNAME2),						ITEMTBL_getChar( i, ITEM_INGNAME3),						ITEMTBL_getChar( i, ITEM_INGNAME4)	);					fclose( fp);				}			}		}	}	return TRUE;}#endifint ITEM_initItemAtom( char *fn ){	FILE *fp;	int count=0;		fp = fopen( fn , "r" );	if( fp == NULL ){		print( "打開文件失敗 %s\n", fn );		return FALSE;	}	fseek( fp, 0, SEEK_SET );	while(1){		char line[16384];		if( fgets( line, sizeof( line ), fp ) == NULL )break;		if( line[0] != '#' && line[0] != '\n' )count++;	}	print( "初始化物品成份: 總數(shù) %d \n", count );	if( count == 0 ){		print( "初始化物品成份: 無法正確設(shè)置物品成份. 異常中斷.\n" );		return FALSE;	}		/* malloc. */	item_atoms = ( struct item_atom * ) allocateMemory( count *												sizeof( struct item_atom ));	if( item_atoms == NULL ){		print( "分配內(nèi)存失敗\n" );		return FALSE;	}	memset( item_atoms, 0 , count * sizeof( struct item_atom));		fseek( fp , 0 , SEEK_SET );	count = 0;	while(1){		char line[16384], tk[1024];		if( fgets( line, sizeof( line ) , fp ) == NULL )break;		/* chop */		line[strlen(line)-1]=0;		/* 爾羹卞煙讓及  蟆互    賄匹反中勻化中化}		 公木分仃互  邰 */		getStringFromIndexWithDelim( line, "," , 1 , tk, sizeof( tk ));		snprintf( item_atoms[count].name,				  sizeof( item_atoms[count].name ),				  "%s", tk );		item_atoms[count].name_hash = hashpjw( tk );		getStringFromIndexWithDelim( line, "," , 2 , tk, sizeof( tk ));		item_atoms[count].magicflg = isstring1or0( tk);				// CoolFish: 2001/6/28		// print( "atom [%s][%d] %d\n", item_atoms[count].name,		//								item_atoms[count].magicflg, count );		count++;	}	fclose(fp);	if( count >= MAX_ITEM_ATOMS_SIZE ){		print( "初始化物品成份: 物品成份太多了\n" );		return FALSE;	}			   	item_atoms_size = count;	print( "初始化物品成份: 讀取 %d 物品成份...", count );	return TRUE;}/*    剄醒及伊□玄  base 互 100 匹 min 互 0.7 匹 max 互 1.3 分勻兇日}  70 ~ 130 卞剽域卞坌  允月[午曰丐尹內(nèi)剽域[  剽域元扎卅仁仄兇曰允月井手仄木卅中及匹}  失奶  丞毀迕伙□民件午仄化仇仇卞爛聒允月 by ringo 1999Oct1   1000坌及min_rate,max_rate匹健丹[  double 支float 反]支支仇仄中及匹銀歹卅中[ */static intITEM_randRange( int base, int min_rate , int max_rate ){	int minnum;	int maxnum;	int range;#ifdef _MERGE_LOG	print("\n物品隊(duì)列(基本:%d, 最小價(jià)格%d, 最大價(jià)格:%d) ", base, min_rate, max_rate);#endif	if( min_rate > max_rate) {		int tmp;		tmp = min_rate;		min_rate = max_rate;		max_rate = tmp;	}	minnum = rint((double)base / ITEM_RANDRANGEDOM * min_rate);	maxnum = rint((double)base / ITEM_RANDRANGEDOM * max_rate);	range  = ( maxnum - minnum );		if( min_rate == max_rate && min_rate == 0 ) return 0;	if( range == 0 ) return base;	if( range < 0 ) return 0;#ifdef _MERGE_LOG	print("\n最後下限:%d 最後上限:%d ", minnum, minnum+range);#endif	return minnum + RAND( 0, range);}typedef int (*FUNC)( const void *, const void * );static int cmprutine( double *p1, double *p2){	if( *p1 < *p2 ) return -1;	if( *p1 > *p2 ) return 1;	return 0;}/* * 嫖中及卞丐歹六月 * 忒曰襖反    互中仁勾卞卅勻兇井[ * 寧歹六月蟆卞]末□玄仄化岈屯化] * table卞梯勻兇    坌]簫仄化中仁[ */static void ITEM_simplify_atoms( struct item_ingindtable *inds, int num,								int *retinds, int *retvals, int petindex, int alchemist){	//int newinds[MAX_ITEM_ATOMS_SIZE];

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合网色综合| 欧美精品一区二区三区久久久| 日韩黄色一级片| 国产精品久久久爽爽爽麻豆色哟哟| 欧美高清一级片在线| av资源网一区| 精品一区免费av| 亚洲午夜影视影院在线观看| 国产色产综合产在线视频| 欧美日韩国产综合视频在线观看| 国产精品系列在线观看| 美女一区二区久久| 亚洲一区二区三区四区不卡| 国产精品美女久久久久高潮| 欧美xxxx在线观看| 欧美精品777| 欧美色区777第一页| 91在线观看下载| 粉嫩av一区二区三区在线播放| 美女视频黄频大全不卡视频在线播放| 亚洲综合色丁香婷婷六月图片| 国产精品电影一区二区三区| 日本一区二区免费在线 | 97久久精品人人做人人爽50路| 另类小说一区二区三区| 视频一区中文字幕国产| 亚洲乱码中文字幕| 国产精品久久二区二区| 国产日韩高清在线| 久久精品夜色噜噜亚洲a∨| 欧美成人bangbros| 日韩欧美亚洲一区二区| 91精品国产综合久久精品app | 日韩精品一区二区三区在线播放 | 麻豆国产欧美日韩综合精品二区| 亚洲国产日韩在线一区模特| 亚洲视频资源在线| 中文字幕亚洲精品在线观看| 最新日韩av在线| 亚洲女同一区二区| 亚洲日本在线a| 亚洲一区在线播放| 亚洲成人一区二区在线观看| 午夜欧美视频在线观看| 性欧美疯狂xxxxbbbb| 日韩国产欧美在线视频| 欧美性生活大片视频| 亚洲精品一线二线三线无人区| 粉嫩嫩av羞羞动漫久久久| 国产高清一区日本| 成人a区在线观看| 99久久精品免费精品国产| 91在线视频播放地址| 欧洲一区在线电影| 欧美美女一区二区| 欧美成人在线直播| 国产午夜一区二区三区| 国产精品系列在线| 亚洲免费观看高清完整版在线观看 | aa级大片欧美| 色噜噜久久综合| 欧美精品一卡二卡| 日韩欧美国产综合一区| 国产农村妇女毛片精品久久麻豆| 最新日韩av在线| 喷水一区二区三区| 国产 日韩 欧美大片| 色综合久久综合网| 日韩一级大片在线观看| 欧美韩日一区二区三区四区| 亚洲综合在线观看视频| 精品一区二区三区蜜桃| 成人免费视频一区| 欧美色爱综合网| 久久精品夜色噜噜亚洲aⅴ| 成人欧美一区二区三区| 日韩高清一区在线| 国产电影一区二区三区| 在线观看免费成人| 精品国产sm最大网站| 亚洲天堂网中文字| 蜜桃91丨九色丨蝌蚪91桃色| 99久久精品一区| 日韩精品一区二区三区四区| 亚洲欧美视频在线观看视频| 人人精品人人爱| 91视频国产资源| 精品日韩在线一区| 亚洲精选在线视频| 国产乱人伦偷精品视频不卡| 欧美三级中文字幕| 国产精品三级视频| 奇米888四色在线精品| 色综合久久久久久久| 久久奇米777| 亚洲电影你懂得| 成人午夜免费视频| 日韩精品专区在线影院观看| 亚洲精品videosex极品| 国产白丝精品91爽爽久久| 69p69国产精品| 一区二区三区精品视频| 成熟亚洲日本毛茸茸凸凹| 91精品国产一区二区三区| 亚洲老妇xxxxxx| 国产精品综合二区| 日韩一区二区在线看| 亚洲精品美国一| 亚洲色图视频网站| 国产.精品.日韩.另类.中文.在线.播放| 欧美日韩电影在线| 综合久久一区二区三区| 国产河南妇女毛片精品久久久| 欧美一区二区在线观看| 午夜精品久久久久久| 欧美在线视频日韩| 亚洲青青青在线视频| 在线观看www91| 国产精品午夜在线观看| 国产成人在线网站| 久久免费看少妇高潮| 狠狠色丁香婷婷综合| 欧美一区二区三区视频免费 | 日韩精品专区在线影院观看| 天堂在线亚洲视频| 欧美色大人视频| 午夜欧美视频在线观看| 欧美色综合久久| 亚洲狠狠爱一区二区三区| 在线视频一区二区三| 亚洲日本在线视频观看| 91视频免费播放| 亚洲精品菠萝久久久久久久| 一本大道综合伊人精品热热 | 国产精品1区2区3区| 久久久久久久久久久电影| 国产做a爰片久久毛片| 日韩手机在线导航| 免费欧美高清视频| 2024国产精品视频| 国产精品白丝jk白祙喷水网站 | 中文字幕亚洲一区二区va在线| 成人av在线观| 亚洲同性同志一二三专区| 91老师片黄在线观看| 一区二区三区电影在线播| 欧美午夜精品理论片a级按摩| 亚洲成人动漫在线观看| 91精品国产综合久久香蕉麻豆 | 中文字幕在线观看不卡| 91亚洲精品一区二区乱码| 亚洲一区二区三区四区五区中文 | 欧美一区日韩一区| 狠狠色丁香九九婷婷综合五月| 亚洲精品在线观| 成人av综合一区| 亚洲尤物视频在线| 欧美一区二区三区日韩| 国产精品综合av一区二区国产馆| 国产精品青草综合久久久久99| 91福利区一区二区三区| 午夜视频在线观看一区| 精品福利av导航| av在线播放不卡| 亚洲超碰精品一区二区| 日韩欧美成人一区| 春色校园综合激情亚洲| 亚洲va欧美va国产va天堂影院| 日韩欧美在线一区二区三区| 成人禁用看黄a在线| 亚洲va欧美va国产va天堂影院| 26uuu色噜噜精品一区二区| 91在线观看免费视频| 五月天亚洲婷婷| 久久久久青草大香线综合精品| 91免费精品国自产拍在线不卡| 日韩高清在线观看| 国产精品乱人伦| 欧美精品 日韩| 99久久夜色精品国产网站| 日韩经典一区二区| 国产精品久久久久影院色老大| 7777精品伊人久久久大香线蕉的| 大陆成人av片| 日韩主播视频在线| 国产精品网站在线观看| 欧美一区二区三区在线看| 成人理论电影网| 日本不卡免费在线视频| 亚洲手机成人高清视频| 精品福利一二区| 欧美日韩国产高清一区二区 | 懂色av一区二区在线播放| 天堂影院一区二区| 综合激情成人伊人| 久久亚洲精品国产精品紫薇| 欧美日韩国产区一| 91小视频在线| 国产东北露脸精品视频| 欧美bbbbb|