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

📄 item.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
			work = itemEffect[i].accumulation;		}else{			work = CHAR_getWorkInt(index,itemEffect[i].charmodifyparamindex) + itemEffect[i].accumulation;			work = min( itemEffect[i].max, work );			work = max( itemEffect[i].min, work );		}		CHAR_setWorkInt( index, itemEffect[i].charmodifyparamindex, work );	}	for( i = 0; i < 4; i ++ ) {		CHAR_setWorkInt( index, CHAR_WORKFIXEARTHAT + i,						CHAR_getWorkInt( index, CHAR_WORKFIXEARTHAT + i) +						attribaccum[i]);	}	for( i = 0; i < 4; i ++ ) {		int		j;		for( j = 0; j < 4; j ++ ) {			if( i != j ) {				CHAR_setWorkInt( index, CHAR_WORKFIXEARTHAT + j,						CHAR_getWorkInt(index, CHAR_WORKFIXEARTHAT + j) - attribaccum[i]);			}		}	}	for( i = 0; i < 4; i ++ ) {		if( CHAR_getWorkInt( index, CHAR_WORKFIXEARTHAT + i) > CHAR_MAXATTRIB) {			CHAR_setWorkInt( index, CHAR_WORKFIXEARTHAT + i, CHAR_MAXATTRIB);		}	}	{		int work;		work = CHAR_getWorkInt(index,CHAR_WORKFIXSTR)+ itemEffect[0].accumulation;		CHAR_setWorkInt( index, CHAR_WORKFIXSTR, max( 0, work ) );		work = CHAR_getWorkInt(index,CHAR_WORKFIXTOUGH)	+ itemEffect[1].accumulation;		CHAR_setWorkInt( index, CHAR_WORKFIXTOUGH, max( -100, work ) );		work = CHAR_getWorkInt( index, CHAR_WORKFIXDEX)	+ itemEffect[2].accumulation;		CHAR_setWorkInt( index, CHAR_WORKFIXDEX, max( -100, work ) );	}}void Other_DefcharWorkInt( int index){#ifdef _SUIT_ITEM	int mfix,mtgh,mdex,mods,maxhp;	mfix = CHAR_getWorkInt( index, CHAR_WORKFIXSTR);	mtgh = CHAR_getWorkInt( index, CHAR_WORKFIXTOUGH);	mdex = CHAR_getWorkInt( index, CHAR_WORKFIXDEX);	maxhp = CHAR_getWorkInt( index, CHAR_WORKMAXHP);	mods = CHAR_getWorkInt( index, CHAR_WORKSUITMODSTR);	mfix = mfix+((mfix*mods)/100);	CHAR_setWorkInt( index, CHAR_WORKFIXSTR, mfix+CHAR_getWorkInt( index, CHAR_WORKSUITSTR));	CHAR_setWorkInt( index, CHAR_WORKFIXTOUGH, mtgh+CHAR_getWorkInt( index, CHAR_WORKSUITTGH));	CHAR_setWorkInt( index, CHAR_WORKFIXDEX, mdex+CHAR_getWorkInt( index, CHAR_WORKSUITDEX));	CHAR_setWorkInt( index, CHAR_WORKMAXHP, maxhp+ CHAR_getWorkInt( index, CHAR_WORKSUITVIT));#ifdef _SUIT_ADDPART3	if( mfix > 0 )		CHAR_setWorkInt( index, CHAR_WORKFIXSTR, CHAR_getWorkInt( index, CHAR_WORKFIXSTR)+mfix*CHAR_getWorkInt( index, CHAR_WORKSUITSTR_P)/100.0);	if( mtgh > 0 )		CHAR_setWorkInt( index, CHAR_WORKFIXTOUGH, CHAR_getWorkInt( index, CHAR_WORKFIXTOUGH)+mtgh*CHAR_getWorkInt( index, CHAR_WORKSUITTGH_P)/100.0);	if( mdex > 0)		CHAR_setWorkInt( index, CHAR_WORKFIXDEX, CHAR_getWorkInt( index, CHAR_WORKFIXDEX)+mdex*CHAR_getWorkInt( index, CHAR_WORKSUITDEX_P)/100.0);#endif#endif//_SUIT_ITEM#ifdef _MAGIC_RESIST_EQUIT			// WON ADD 职业抗性装备	/*{		int f_res = -1, i_res = -1, t_res = -1;		f_res = CHAR_getWorkInt( index, CHAR_WORK_F_RESIST );		i_res = CHAR_getWorkInt( index, CHAR_WORK_I_RESIST );				t_res = CHAR_getWorkInt( index, CHAR_WORK_T_RESIST );		CHAR_setWorkInt( index, CHAR_WORK_F_RESIST, f_res+CHAR_getWorkInt( index, CHAR_WORK_F_SUIT ) );		CHAR_setWorkInt( index, CHAR_WORK_I_RESIST, i_res+CHAR_getWorkInt( index, CHAR_WORK_I_SUIT ) );		CHAR_setWorkInt( index, CHAR_WORK_T_RESIST, t_res+CHAR_getWorkInt( index, CHAR_WORK_T_SUIT ) );	}*/#endif#ifdef _PETSKILL_SETDUCK	//profession fix	//使用回避招式时,会将防值减去30%然後设定成回避值,奇怪的设定,也造成原本设定的回避值跟没设一样,因此我(Change)先把整段拿掉	/*if( CHAR_getWorkInt( index, CHAR_MYSKILLDUCK) > 0 ){		int mtgh = CHAR_getWorkInt( index, CHAR_WORKFIXTOUGH);		mtgh -= (mtgh*30)/100;		if( mtgh < 0 ) mtgh=0;		CHAR_setWorkInt( index, CHAR_MYSKILLDUCKPOWER, mtgh);	}*/#endif#ifdef _MAGICPET_SKILL	if( CHAR_getWorkInt( index, CHAR_MYSKILLSTR) > 0 ){		int mpower, mdef;		mpower = CHAR_getWorkInt( index, CHAR_WORKFIXSTR);		mdef = CHAR_getWorkInt( index, CHAR_MYSKILLSTRPOWER);		mpower += (mtgh*mdef)/100;		if( mtgh < 0 ) mtgh=0;		CHAR_setWorkInt( index, CHAR_WORKFIXSTR, mpower);	}	if( CHAR_getWorkInt( index, CHAR_MYSKILLTGH) > 0 ){		int mpower, mdef;		mpower = CHAR_getWorkInt( index, CHAR_WORKFIXTOUGH);		mdef = CHAR_getWorkInt( index, CHAR_MYSKILLTGHPOWER);		mpower += (mtgh*mdef)/100;		if( mtgh < 0 ) mtgh=0;		CHAR_setWorkInt( index, CHAR_WORKFIXTOUGH, mpower);	}	if( CHAR_getWorkInt( index, CHAR_MYSKILLDEX) > 0 ){		int mpower, mdef;		mpower = CHAR_getWorkInt( index, CHAR_WORKFIXDEX);		mdef = CHAR_getWorkInt( index, CHAR_MYSKILLDEXPOWER);		mpower += (mtgh*mdef)/100;		if( mtgh < 0 ) mtgh=0;		CHAR_setWorkInt( index, CHAR_WORKFIXDEX, mpower);	}#endif#ifdef _PROFESSION_SKILL			// WON ADD 人物职业技能	if( CHAR_getWorkInt( index, CHAR_MYSKILLHIT) > 0 ){		int mpower, mdef;		mpower = CHAR_getWorkInt( index, CHAR_MYSKILLHIT);		mdef = CHAR_getWorkInt( index, CHAR_WORKHITRIGHT);		mpower += (mtgh*mdef)/100;		if( mtgh < 0 ) mtgh=0;		CHAR_setWorkInt( index, CHAR_MYSKILLHIT, mpower);	}	if( CHAR_getWorkInt( index, CHAR_WORK_WEAPON) > 0 ){	// 武器专精		int mpower, mdef;		mpower = CHAR_getWorkInt( index, CHAR_WORKFIXSTR);		mdef = CHAR_getWorkInt( index, CHAR_WORKMOD_WEAPON);		mpower = mpower * ( 100 + mdef ) /100;		if( mtgh < 0 ) mtgh=0;		CHAR_setWorkInt( index, CHAR_WORKFIXSTR, mpower);	}#endif#ifdef _VARY_WOLF			if(CHAR_getInt( index, CHAR_BASEIMAGENUMBER)==101428){		int Rands=0, power;		Rands = CHAR_getWorkInt( index, CHAR_SKILLSTRPOWER);		power = CHAR_getWorkInt( index, CHAR_WORKFIXSTR);		power = power + (power*Rands)/100;		CHAR_setWorkInt( index, CHAR_WORKFIXSTR, power);		Rands = CHAR_getWorkInt( index, CHAR_SKILLDEXPOWER);		power = CHAR_getWorkInt( index, CHAR_WORKFIXDEX);		power = power + (power*Rands)/100;		CHAR_setWorkInt( index, CHAR_WORKFIXDEX, power);	}#endif#ifdef _PROFESSION_ADDSKILL	if( CHAR_getWorkInt( index, CHAR_WORKFEAR ) > 0 ){		CHAR_setWorkInt( index, CHAR_WORKFIXSTR, CHAR_getWorkInt( index, CHAR_WORKFIXSTR ) - mfix*0.1 );		CHAR_setWorkInt( index, CHAR_WORKFIXTOUGH, CHAR_getWorkInt( index, CHAR_WORKFIXTOUGH ) - mtgh*0.1 );		CHAR_setWorkInt( index, CHAR_WORKFIXDEX, CHAR_getWorkInt( index, CHAR_WORKFIXDEX ) - mdex*0.2 );	}#endif#ifdef _MAGIC_WEAKEN	if(CHAR_getWorkInt(index,CHAR_WORKWEAKEN)>0){			CHAR_setWorkInt( index, CHAR_WORKFIXSTR, CHAR_getWorkInt( index, CHAR_WORKFIXSTR)*0.8);			CHAR_setWorkInt( index, CHAR_WORKFIXTOUGH, CHAR_getWorkInt( index, CHAR_WORKFIXTOUGH)*0.8);			CHAR_setWorkInt( index, CHAR_WORKFIXDEX, CHAR_getWorkInt( index, CHAR_WORKFIXDEX)*0.8);            CHAR_setWorkInt( index, CHAR_WORKWEAKEN, CHAR_getWorkInt( index, CHAR_WORKWEAKEN)-1);	}#endif#ifdef _MAGIC_BARRIER// vincent  精灵:魔障	if( CHAR_getWorkInt( index, CHAR_WORKBARRIER) > 0){            CHAR_setWorkInt( index, CHAR_WORKBARRIER, CHAR_getWorkInt( index, CHAR_WORKBARRIER) - 1);	}#endif	CHAR_setWorkInt(index, CHAR_WORKATTACKPOWER,	CHAR_getWorkInt( index, CHAR_WORKFIXSTR ) );	CHAR_setWorkInt(index, CHAR_WORKDEFENCEPOWER,	CHAR_getWorkInt( index, CHAR_WORKFIXTOUGH ) );	CHAR_setWorkInt(index, CHAR_WORKQUICK,			CHAR_getWorkInt( index, CHAR_WORKFIXDEX ) );}char* ITEM_getAppropriateName(int itemindex){	int nameindex;	if( !ITEM_CHECKINDEX(itemindex ) )return NULL;	if( ITEM_getInt(itemindex,ITEM_LEAKLEVEL) <= 0 )		nameindex = ITEM_NAME;	else		nameindex = ITEM_SECRETNAME;	return ITEM_getChar(itemindex,nameindex);}char* ITEM_getEffectString( int itemindex ){	if( !ITEM_CHECKINDEX(itemindex))return NULL;	return ITEM_item[itemindex].itm.string[ITEM_EFFECTSTRING].string;}char *ITEM_getItemInfoFromNumber( int itemid ){	return ITEMTBL_getChar( itemid, ITEM_EFFECTSTRING);}INLINE char* _ITEM_getNameFromNumber( char *file, int line, int itemid ){	if( ITEM_CHECKITEMTABLE(itemid) == FALSE ){		print("Can't Get ItemTable for:%d! - %s:%d\n",itemid, file, line);		return NULL;	}	return ITEMTBL_getChar( itemid, ITEM_NAME);}int ITEM_getcostFromITEMtabl( int itemid ){	return ITEMTBL_getInt( itemid, ITEM_COST);}int ITEM_getlevelFromITEMtabl( int itemid ){	return ITEMTBL_getInt( itemid, ITEM_LEVEL);}int ITEM_getgraNoFromITEMtabl( int itemid ){	return ITEMTBL_getInt( itemid, ITEM_BASEIMAGENUMBER);}int ITEM_getcanpetmailFromITEMtabl( int itemid ){	return ITEMTBL_getInt( itemid, ITEM_CANPETMAIL);}int ITEM_getvanishatdropFromITEMtabl( int itemid ){	return ITEMTBL_getInt( itemid, ITEM_VANISHATDROP);}int ITEM_getdropatlogoutFromITEMtabl( int itemid ){	return ITEMTBL_getInt( itemid, ITEM_DROPATLOGOUT);}int ITEM_getmergeItemFromFromITEMtabl( int itemid ){	return ITEMTBL_getInt( itemid, ITEM_CANMERGEFROM);}BOOL ITEM_canuseMagic( int itemindex){	if( !ITEM_CHECKINDEX(itemindex))return FALSE;	if( MAGIC_getMagicArray( ITEM_item[itemindex].itm.data[ITEM_MAGICID]) != -1 ) {		return TRUE;	}	return FALSE;}INLINE ITEM_Item *ITEM_getItemPointer( int index ){	if(!ITEM_CHECKINDEX(index))return NULL;	return &ITEM_item[index].itm;}int ITEM_isTargetValid( int charaindex, int itemindex, int toindex){	int itemtarget;	int Myside;	itemtarget = ITEM_getInt( itemindex, ITEM_TARGET );	Myside = CHAR_getWorkInt( charaindex, CHAR_WORKBATTLESIDE );	if ((toindex >= 0x0) && (toindex <= 0x13)) return 0;	if (toindex == 0x14) {//20 右下全 0		if (itemtarget == ITEM_TARGET_ALLMYSIDE){			if( Myside == 0 )return 0;		}else if(itemtarget == ITEM_TARGET_ALLOTHERSIDE ){			if( Myside == 1 )return 0;		}	}else if (toindex == 0x15) {//21 左上全 1		if (itemtarget == ITEM_TARGET_ALLMYSIDE){			if( Myside == 1 )return 0;		}else if( itemtarget == ITEM_TARGET_ALLOTHERSIDE ){			if( Myside == 0 )return 0;		}	}else if (toindex == 0x16) {		if (itemtarget == ITEM_TARGET_ALL)			return 0;	}	return -1;}// Nuke end#ifdef _ITEM_CHECKWARESBOOL CHAR_CheckInItemForWares( int charaindex, int flg){	int itemindex, i;	char token[256];		for( i=0; i<24; i++)	{		itemindex = CHAR_getItemIndex( charaindex, i);		if( !ITEM_CHECKINDEX( itemindex) ) continue;		if( ITEM_getInt( itemindex, ITEM_TYPE) == ITEM_WARES ) {			if( flg == 0 ){				return FALSE;			}			sprintf(token,"交出%s",ITEM_getChar( itemindex, ITEM_NAME));			CHAR_talkToCli( charaindex, -1, token, CHAR_COLORYELLOW);			CHAR_setItemIndex( charaindex, i ,-1);			ITEM_endExistItemsOne( itemindex);			CHAR_sendItemDataOne( charaindex, i);		}	}	return TRUE;}#endif#ifdef _IMPOROVE_ITEMTABLEBOOL ITEMTBL_CHECKINDEX( int ItemID){	if( ItemID < 0 || ItemID >= defitemtbls )		return FALSE;	return ITEM_TransformList[ ItemID].use;}int ITEM_getSIndexFromTransList( int ItemID){	if( !ITEMTBL_CHECKINDEX( ItemID) )		return -1;	return ITEM_TransformList[ ItemID].Si;}int ITEM_getTotalitemtblsFromTransList(){	return totalitemtbls;}int ITEM_getMaxitemtblsFromTransList(){	return defitemtbls;}#endifint ITEMTBL_getInt( int ItemID, ITEM_DATAINT datatype){#ifdef _IMPOROVE_ITEMTABLE	int itemsi=0;	if( !ITEM_CHECKITEMTABLE( ItemID) ) return -1;	itemsi = ITEM_getSIndexFromTransList( ItemID);	if( datatype >= ITEM_DATAINTNUM || datatype < 0 ) return -1;	return ITEM_tbl[itemsi].itm.data[datatype]; //new#else	if( datatype >= ITEM_DATAINTNUM || datatype < 0 ) return -1;	if( ITEM_CHECKITEMTABLE(ItemID) == FALSE )return -1;		return ITEM_tbl[ItemID].itm.data[datatype]; //new#endif}char *ITEMTBL_getChar( int ItemID, ITEM_DATACHAR datatype){#ifdef _IMPOROVE_ITEMTABLE	int itemsi=0;	if( !ITEM_CHECKITEMTABLE( ItemID) ) return NULL;	itemsi = ITEM_getSIndexFromTransList( ItemID);	if( datatype >= ITEM_DATACHARNUM || datatype < 0 ) return NULL;	return ITEM_tbl[itemsi].itm.string[datatype].string; //new#else	if( datatype >= ITEM_DATACHARNUM || datatype < 0 ) return NULL;	if( ITEM_CHECKITEMTABLE(ItemID) == FALSE )return NULL;	return ITEM_tbl[ItemID].itm.string[datatype].string; //new#endif}INLINE BOOL ITEM_CHECKITEMTABLE( int number ){#ifdef _IMPOROVE_ITEMTABLE	int itemsi=0;	if( !ITEMTBL_CHECKINDEX( number) ) return FALSE;	itemsi = ITEM_getSIndexFromTransList( number);	if( itemsi < 0 || itemsi >= ITEM_tblen  )		return FALSE;	return ITEM_tbl[itemsi].use; //new#else	if( number < 0 || number >= ITEM_tblen  ){		//andy_log		print("ITEM_CHECKITEMTABLE() number:%d ITEM_tblen:%d !!\n", number, ITEM_tblen );		return FALSE;	}	return ITEM_tbl[number].use; //new#endif}int ITEM_getItemDamageCrusheED( int itemindex){	int crushe	= ITEM_getInt( itemindex, ITEM_DAMAGECRUSHE);	int maxcrushe = ITEM_getInt( itemindex, ITEM_MAXDAMAGECRUSHE);	if(maxcrushe < 1)return -1;	if( maxcrushe > 1000000) maxcrushe = 1000000;	if( crushe > 1000000) crushe = 1000000;	return ((int) (crushe*100)/maxcrushe);}void ITEM_RsetEquit( int charaindex){	int i, itemindex, ti=-1;	for( i=0; i<CHAR_STARTITEMARRAY; i++){		itemindex = CHAR_getItemIndex( charaindex , i );		if( !ITEM_CHECKINDEX( itemindex)) continue;		if( i == ITEM_getEquipPlace( charaindex, itemindex ) ) continue;		if( (ti = CHAR_findEmptyItemBox( charaindex )) == -1 ) return;		CHAR_setItemIndex( charaindex , i, -1);		CHAR_setItemIndex( charaindex , ti, itemindex);	}}void ITEM_reChangeItemToPile( int itemindex){	int itemID;	if( !ITEM_CHECKINDEX(itemindex) ) return;		if( ITEM_getInt( itemindex, ITEM_USEPILENUMS) <= 0 )		ITEM_setInt( itemindex, ITEM_USEPILENUMS, 1);	itemID = ITEM_getInt( itemindex, ITEM_ID);	if( !ITEM_CHECKITEMTABLE( itemID) ) return;	if( itemID == 20284 ) return;//铁枪叁另外处理	if( ITEM_getInt( itemindex, ITEM_CANBEPILE) != ITEMTBL_getInt( itemID, ITEM_CANBEPILE) )		ITEM_setInt( itemindex, ITEM_CANBEPILE, ITEMTBL_getInt( itemID, ITEM_CANBEPILE) );}void ITEM_reChangeItemName( int itemindex){//ITEM_NAME/*	int itemID;	char *IDNAME;	char *NAME;	if( !ITEM_CHECKINDEX(itemindex) ) return;	itemID = ITEM_getInt( itemindex, ITEM_ID);	if( !ITEM_CHECKITEMTABLE( itemID) ) return;	IDNAME = ITEMTBL_getChar( itemID, ITEM_NAME);	NAME = ITEM_getChar( itemindex, ITEM_NAME);	if( IDNAME==NULL || NAME==NULL ) return;	if( !strcmp( IDNAME, NAME) ) return;	ITEM_setChar( itemindex, ITEM_NAME, IDNAME);*/}#ifdef _CHECK_ITEM_MODIFYvoid ITEM_che

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -