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

📄 item_event.c.bak

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 BAK
📖 第 1 页 / 共 5 页
字号:
{    char    titlenumstring[256];    int     titleindex;    if( ITEM_CHECKINDEX(itemindex) == FALSE )return;    if( ITEM_getArgument( ITEM_getChar(itemindex,ITEM_ARGUMENT),"addt",                          titlenumstring, sizeof( titlenumstring) ) == FALSE ){        print( "Can't find \"addt\" entry: %s\n",               ITEM_getChar(itemindex,ITEM_ARGUMENT));        return;    }    titleindex = atoi( titlenumstring );    TITLE_addtitle( charaindex, titleindex );    CHAR_sendStatusString( charaindex, "T" );}void ITEM_delTitleDetach( int charaindex, int itemindex ){    char    titlenumstring[256];    int     titleindex;    if( ITEM_CHECKINDEX(itemindex) == FALSE )return;    if( ITEM_getArgument( ITEM_getChar(itemindex,ITEM_ARGUMENT),"delt",                          titlenumstring, sizeof( titlenumstring) ) == FALSE ){        print( "Can't find \"delt\" entry: %s\n",               ITEM_getChar(itemindex,ITEM_ARGUMENT));        return;    }    titleindex = atoi( titlenumstring );    TITLE_deltitle( charaindex, titleindex );    CHAR_sendStatusString( charaindex, "T" );}void ITEM_DeleteByWatched(	int myobjindex, int moveobjindex, CHAR_ACTION act,    int x, int y, int dir, int* opt, int optlen ){	int		itemindex, moveindex;	char szBuffer[256]="";	itemindex = OBJECT_getIndex(myobjindex);    if( !ITEM_CHECKINDEX( itemindex )) return;	if( OBJECT_getType( moveobjindex ) == OBJTYPE_CHARA ){		moveindex = OBJECT_getIndex(moveobjindex);    	if( CHAR_getInt( moveindex , CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER ){    		snprintf( szBuffer, sizeof( szBuffer ), "%s",    							ITEM_getAppropriateName(itemindex) );            CHAR_talkToCli( moveindex	, -1, "%s 消灭了。", CHAR_COLORWHITE );    	}    }	ITEM_endExistItemsOne(itemindex);	CHAR_ObjectDelete(myobjindex);}void ITEM_DeleteTimeWatched(	int objindex, int moveobjindex, CHAR_ACTION act,    int x, int y, int dir, int* opt, int optlen){	int	itemindex;	int itemputtime;	if( !CHECKOBJECTUSE(objindex) ){		return;	}	itemindex = OBJECT_getIndex(objindex);	if(!ITEM_CHECKINDEX(itemindex)){		return;	}	itemputtime=ITEM_getInt(itemindex,ITEM_PUTTIME);	if( !ITEM_CHECKINDEX( itemindex )) return;#ifdef _MARKET_TRADE	if( ITEM_getWorkInt( itemindex, ITEM_WORKTRADETYPE) == TRADETYPE_SELL )	{		return;	}#endif	if( (int)NowTime.tv_sec > (int)( itemputtime + getItemdeletetime() ) ) {		if( ITEM_TimeDelCheck( itemindex ) == FALSE ){			return ;		}		{			LogItem(					"NULL",					"NULL",#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名称					itemindex,#else		       		ITEM_getInt( itemindex, ITEM_ID ),#endif					"TiemDelete",					OBJECT_getFloor( objindex ),					OBJECT_getX( objindex ),					OBJECT_getY( objindex ),					ITEM_getChar( itemindex, ITEM_UNIQUECODE),						ITEM_getChar( itemindex, ITEM_NAME),						ITEM_getInt( itemindex, ITEM_ID)				);		}		ITEM_endExistItemsOne(itemindex);		CHAR_ObjectDelete(objindex);	}}void ITEM_useEffectTohelos( int charaindex, int to_charaindex, int haveitemindex){	char	buf[64];	char	msgbuf[64];	int		ret;	int		itemindex;	int		cutrate, limitcount;    int		per;    int		sendcharaindex = charaindex;    itemindex = CHAR_getItemIndex( charaindex, haveitemindex);    if(!ITEM_CHECKINDEX(itemindex)) return;    CHAR_setItemIndex(charaindex, haveitemindex ,-1);    CHAR_sendItemDataOne( charaindex, haveitemindex);	ret = getStringFromIndexWithDelim( ITEM_getChar(itemindex, ITEM_ARGUMENT) ,										"|", 1, buf, sizeof( buf));	if( ret != TRUE ) {		{			LogItem(				CHAR_getChar( charaindex, CHAR_NAME ),				CHAR_getChar( charaindex, CHAR_CDKEY ),#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名称				itemindex,#else       			ITEM_getInt( itemindex, ITEM_ID ),#endif				"FieldErrorUse",		       	CHAR_getInt( charaindex,CHAR_FLOOR),				CHAR_getInt( charaindex,CHAR_X ),        		CHAR_getInt( charaindex,CHAR_Y ),				ITEM_getChar( itemindex, ITEM_UNIQUECODE),						ITEM_getChar( itemindex, ITEM_NAME),						ITEM_getInt( itemindex, ITEM_ID)			);		}	    ITEM_endExistItemsOne( itemindex);		return;	}	cutrate = atoi( buf);	if( cutrate < 0 ) cutrate = 0;	ret = getStringFromIndexWithDelim( ITEM_getChar(itemindex, ITEM_ARGUMENT) ,										"|", 2, buf, sizeof( buf));	if( ret != TRUE ) {		{			LogItem(				CHAR_getChar( charaindex, CHAR_NAME ),				CHAR_getChar( charaindex, CHAR_CDKEY ),#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名称				itemindex,#else       			ITEM_getInt( itemindex, ITEM_ID ),#endif				"FieldUse",		       	CHAR_getInt( charaindex,CHAR_FLOOR),				CHAR_getInt( charaindex,CHAR_X ),        		CHAR_getInt( charaindex,CHAR_Y ),				ITEM_getChar( itemindex, ITEM_UNIQUECODE),						ITEM_getChar( itemindex, ITEM_NAME),						ITEM_getInt( itemindex, ITEM_ID)			);		}	    ITEM_endExistItemsOne( itemindex);		return;	}	limitcount = atoi( buf);	if( limitcount < 0) limitcount = 0;	if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT) {		sendcharaindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1);	}	CHAR_setWorkInt( sendcharaindex, CHAR_WORK_TOHELOS_CUTRATE, cutrate);	CHAR_setWorkInt( sendcharaindex, CHAR_WORK_TOHELOS_COUNT, limitcount);    snprintf( msgbuf, sizeof(msgbuf),              "抓到了%s 。", ITEM_getChar(itemindex, ITEM_NAME) );    CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORWHITE );    if( sendcharaindex != charaindex ) {	    snprintf( msgbuf, sizeof(msgbuf),	              "%s 抓到了 %s。 ",	              CHAR_getChar( charaindex, CHAR_NAME),	              ITEM_getChar( itemindex, ITEM_NAME) );	    CHAR_talkToCli( sendcharaindex, -1, msgbuf, CHAR_COLORWHITE );	}	{		LogItem(			CHAR_getChar( charaindex, CHAR_NAME ), 			CHAR_getChar( charaindex, CHAR_CDKEY ),#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名称			itemindex,#else       		ITEM_getInt( itemindex, ITEM_ID ),#endif			"FieldUse",	       	CHAR_getInt( charaindex,CHAR_FLOOR),			CHAR_getInt( charaindex,CHAR_X ),        	CHAR_getInt( charaindex,CHAR_Y ),			ITEM_getChar( itemindex, ITEM_UNIQUECODE),						ITEM_getChar( itemindex, ITEM_NAME),						ITEM_getInt( itemindex, ITEM_ID)		);	}	ITEM_endExistItemsOne( itemindex);	per = ENCOUNT_getEncountPercentMin( sendcharaindex,									CHAR_getInt( sendcharaindex, CHAR_FLOOR),									CHAR_getInt( sendcharaindex, CHAR_X),									CHAR_getInt( sendcharaindex, CHAR_Y));	if( per != -1) {		CHAR_setWorkInt( sendcharaindex, CHAR_WORKENCOUNTPROBABILITY_MIN, per);	}	per = ENCOUNT_getEncountPercentMax( sendcharaindex,									CHAR_getInt( sendcharaindex, CHAR_FLOOR),									CHAR_getInt( sendcharaindex, CHAR_X),									CHAR_getInt( sendcharaindex, CHAR_Y));	if( per != -1) {		CHAR_setWorkInt( sendcharaindex, CHAR_WORKENCOUNTPROBABILITY_MAX, per);	}	CHAR_sendStatusString( sendcharaindex, "E" );}void ITEM_dropMic( int charaindex , int itemindex ){    if( !ITEM_CHECKINDEX( itemindex )) return;	CHAR_setWorkInt( charaindex, CHAR_WORKFLG,		CHAR_getWorkInt( charaindex, CHAR_WORKFLG ) & ~WORKFLG_MICMODE );}void ITEM_useMic_Field( int charaindex, int to_charaindex, int haveitemindex ){	if( CHAR_getWorkInt( charaindex, CHAR_WORKFLG ) & WORKFLG_MICMODE ){		CHAR_setWorkInt( charaindex, CHAR_WORKFLG,			CHAR_getWorkInt( charaindex, CHAR_WORKFLG ) & ~WORKFLG_MICMODE );		CHAR_talkToCli( charaindex, -1, "将麦克风设定为OFF。", CHAR_COLORWHITE);	}else{		CHAR_setWorkInt( charaindex, CHAR_WORKFLG,			CHAR_getWorkInt( charaindex, CHAR_WORKFLG ) | WORKFLG_MICMODE );		CHAR_talkToCli( charaindex, -1, "将麦克风设定为ON。", CHAR_COLORWHITE);	}}#if 1char *aszHealStringByOwn[] = {	"%s的耐久力回复%d",	"%s的气力回复%d",	"%s的魅力上升%d",	"%s的忠诚度上升%d",	""};char *aszDownStringByOwn[] = {	"%s的耐久力减低%d",	"%s的气力减低%d",	"%s的魅力下降%d",	"%s的忠诚度下降%d",	""};char *aszHealStringByOther[] = {	"藉由%s%s的耐久力回复%d",	"藉由%s%s的气力回复%d",	"藉由%s%s的魅力上升%d",	"藉由%s%s的忠诚度上升%d",	""};char *aszDownStringByOther[] = {	"藉由%s%s的耐久力减低%d",	"藉由%s%s的气力减低%d",	"藉由%s%s的魅力减低%d",	"藉由%s%s的忠诚度减低%d",	""};char *aszKeyString[] = {"体", "气", "魅", "忠", ""};int  aHealInt[] = { CHAR_HP, CHAR_MP, CHAR_CHARM, CHAR_VARIABLEAI, -1 };int  aHealMaxWork[] = { CHAR_WORKMAXHP, CHAR_WORKMAXMP, -1, -1,  -1 };void ITEM_useRecovery_Field(	int charaindex,	int toindex,	int haveitemindex){	int work, workmax, workmin;	int power[BD_KIND_END] = {0,0,0},		prevhp = 0,		workhp = 0,		recovery[BD_KIND_END] = {0,0,0};	int itemindex, kind = BD_KIND_HP, HealFlg = 0, j;	char *p = NULL, *arg, msgbuf[256];    itemindex = CHAR_getItemIndex( charaindex, haveitemindex);    if( !ITEM_CHECKINDEX(itemindex) ) return;	if( CHAR_CHECKINDEX( toindex ) == FALSE )return ;	arg = ITEM_getChar(itemindex, ITEM_ARGUMENT );	if( arg == NULL ) return;#ifdef _ITEM_UNBECOMEPIG    if( (p = strstr( arg, "解猪" )) != NULL ){        if( CHAR_getInt( toindex, CHAR_BECOMEPIG ) > -1 ){		    CHAR_setInt( toindex, CHAR_BECOMEPIG, -1 );			CHAR_complianceParameter( toindex );		    CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX ));		    CHAR_send_P_StatusString( toindex , CHAR_P_STRING_BASEBASEIMAGENUMBER);		    CHAR_talkToCli( toindex,-1,"乌力化失效了。",CHAR_COLORWHITE);       		CHAR_DelItemMess( charaindex, haveitemindex, 0);		}		return;	}#endif#ifdef _ITEM_LVUPUP	if( (p = strstr( arg, "LVUPUP" ) ) != NULL ){		if (CHAR_getInt(toindex, CHAR_WHICHTYPE)==CHAR_TYPEPET){		    int pidx=0,lvup=0,lv=0;			sprintf( msgbuf, "%s", p+7 );            pidx = atoi( strtok( msgbuf, " " ) );			if( pidx != CHAR_getInt( toindex, CHAR_PETID) || CHAR_getInt(toindex, CHAR_LIMITLEVEL) == 0 ){			    CHAR_talkToCli( charaindex,-1,"无法使用",CHAR_COLORWHITE);				return;			}			lv = CHAR_getInt( toindex, CHAR_LV );			if( lv < 10 || lv >= 140 ){			    CHAR_talkToCli( charaindex,-1,"目前等级无法使用",CHAR_COLORWHITE);				return;			}			if( (p = strstr( arg, "地" )) != NULL )					lvup=2;		    if( (p = strstr( arg, "水" )) != NULL )					lvup=3;            if( (p = strstr( arg, "火" )) != NULL )					lvup=0;			if( (p = strstr( arg, "风" )) != NULL )					lvup=1;		    			if( lv%4 != lvup || CHAR_getInt(toindex, CHAR_LIMITLEVEL)-lv >= 1 ){//			    CHAR_talkToCli( charaindex,-1,"破除封印失败",CHAR_COLORWHITE);			    CHAR_DelItemMess( charaindex, haveitemindex, 0);				return;			}			CHAR_setInt(toindex, CHAR_LIMITLEVEL, CHAR_getInt(toindex, CHAR_LIMITLEVEL)+1);				CHAR_talkToCli( charaindex,-1,"封印魔咒减弱,最高等级提升",CHAR_COLORWHITE);    			if( CHAR_getInt(toindex, CHAR_LIMITLEVEL) == 140 ){				CHAR_setInt(toindex, CHAR_LIMITLEVEL, 0);			    CHAR_talkToCli( charaindex,-1,"封印魔咒解除了",CHAR_COLORWHITE);    				}			CHAR_DelItemMess( charaindex, haveitemindex, 0);			CHAR_complianceParameter( toindex );		    CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX ));		}		return;	}	if( (p = strstr( arg, "UPUPLV" ) ) != NULL ){		if (CHAR_getInt(toindex, CHAR_WHICHTYPE)==CHAR_TYPEPET){		    int pidx=0,lvup=0,lv=0;			sprintf( msgbuf, "%s", p+7 );			pidx = atoi( strtok( msgbuf, " " ) );			if( pidx != CHAR_getInt( toindex, CHAR_PETID) || CHAR_getInt(toindex, CHAR_LIMITLEVEL) == 0 ){			    CHAR_talkToCli( charaindex,-1,"无法使用",CHAR_COLORWHITE);				return;			}			lv = CHAR_getInt( toindex, CHAR_LV );			if( lv < 125 || lv > 140 ){			    CHAR_talkToCli( charaindex,-1,"目前等级无法使用",CHAR_COLORWHITE);				return;			}			CHAR_setInt(toindex, CHAR_LIMITLEVEL, 0);			CHAR_talkToCli( charaindex,-1,"封印魔咒解除了",CHAR_COLORWHITE);    				CHAR_DelItemMess( charaindex, haveitemindex, 0);			CHAR_complianceParameter( toindex );		    CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX ));		}		return;	}#endif#ifdef _ITEM_PROPERTY    if( (p = strstr( arg, "PROPERTY" ) ) != NULL ){		//print("地水火风:%s", arg );		if (CHAR_getInt(toindex, CHAR_WHICHTYPE)!=CHAR_TYPEPLAYER)            return;		if( (p = strstr( arg, "+" ) ) != NULL ){//旋转属性 正转	        if( CHAR_getInt( toindex, CHAR_EARTHAT ) == 100 )                CHAR_setInt( toindex, CHAR_EARTHAT, CHAR_getInt( toindex, CHAR_EARTHAT )-10 ),			    CHAR_setInt( toindex, CHAR_WATERAT, CHAR_getInt( toindex, CHAR_WATERAT )+10 );		    else if( CHAR_getInt( toindex, CHAR_WATERAT ) == 100 )                CHAR_setInt( toindex, CHAR_WATERAT, CHAR_getInt( toindex, CHAR_WATERAT )-10 ),			    CHAR_setInt( toindex, CHAR_FIREAT, CHAR_getInt( toindex, CHAR_FIREAT )+10 );            else if( CHAR_getInt( toindex, CHAR_FIREAT ) == 100 )                CHAR_setInt( toindex, CHAR_FIREAT, CHAR_getInt( toindex, CHAR_FIREAT )-10 ),			    CHAR_setInt( toindex, CHAR_WINDAT, CHAR_getInt( toindex, CHAR_WINDAT )+10 );            else if( CHAR_getInt( toindex, CHAR_WINDAT ) == 100 )                CHAR_setInt( toindex, CHAR_WINDAT, CHAR_getInt( toindex, CHAR_WINDAT )-10 ),			    CHAR_setInt( toindex, CHAR_EARTHAT, CHAR_getInt( toindex, CHAR_EARTHAT )+10 );			else if( CHAR_getInt( toindex, CHAR_EARTHAT ) > 0 && CHAR_getInt( toindex, CHAR_WATERAT ) > 0 )                CHAR_setInt( toindex, CHAR_EARTHAT, CHAR_getInt( toindex, CHAR_EARTHAT )-10 ),			    CHAR_setInt( toindex, CHAR_WATERAT, CHAR_getInt( toindex, CHAR_WATERAT )+10 );            else if( CHAR_getInt( toindex, CHAR_WATERAT ) > 0 && CHAR_getInt( toindex, CHAR_FIREAT ) > 0 )                CHAR_setInt( toindex, CHAR_WATERAT, CHAR_getInt( toindex, CHAR_WATERAT )-10 ),

⌨️ 快捷键说明

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