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

📄 npc_bus.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
								60,								TRUE);			}			/* 邋中凶凛及丢永本□斥*/			for( i = 1; i < CHAR_PARTYMAX; i ++ ) {				int partyindex = CHAR_getWorkInt( meindex, CHAR_WORKPARTYINDEX1+i);				if( CHAR_CHECKINDEX( partyindex)) {					NPC_BusSendMsg( meindex, partyindex, NPC_BUS_MSG_END);				}			}		    /* 蜇箕及凛棉毛本永玄 */		    CHAR_setWorkInt( meindex, NPC_WORK_CURRENTTIME, NowTime.tv_sec);			return;		}		else {			return;		}	}	/*-------------------------------------------------------*/	/* 汹井六月质   */		/*   轾毛菲户月 */	dir = NPC_Util_getDirFromTwoPoint( &start,&end );	/* 漆中月桦赭及谨    由□  奴汹五匹银丹   */	end.x = CHAR_getInt( meindex, CHAR_X);	end.y = CHAR_getInt( meindex, CHAR_Y);		/* 夫匀井井匀凶凛及啃及质   */	for( i = 0; i < 100; i ++ ) {			if( dir < 0 ) {			dir = RAND( 0,7);		}			dir = NPC_Util_SuberiWalk( meindex, dir);		if( dir >= 0 && dir <= 7) break;	}		if( dir >= 0 && dir <= 7 ) {		/* 汹仁 */		ret = CHAR_walk( meindex, dir, 0);		if( ret == CHAR_WALKSUCCESSED ) {			/* 愤坌互褪卅日醮棉毛汹井六月 */			int	i;			for( i = 1; i < CHAR_PARTYMAX; i ++ ) {				int toindex = CHAR_getWorkInt( meindex, i + CHAR_WORKPARTYINDEX1);				if( CHAR_CHECKINDEX(toindex) ) {					int		parent_dir;					/* 阂及匏  午]褪及汹五蟆及匏  井日  轾毛菲户月 */					/* 汹仁 */					start.x = CHAR_getInt( toindex, CHAR_X);					start.y = CHAR_getInt( toindex, CHAR_Y);					parent_dir = NPC_Util_getDirFromTwoPoint( &start,&end );					/* 弘仿犯奴它旦左皿扑亦件汹五毛  蜇允月啃卞]					 * 戚及阂反蟆及阂及  毛馨丹方丹卞允月					 */					end = start;					if( parent_dir != -1 ) {						CHAR_walk( toindex, parent_dir, 0);					}				}			}	    }	}}/************************************** * 戚及桦赭毛本永玄允月 **************************************/static int NPC_BusSetPoint( int meindex, char *argstr){	char	buf[4096];	char	buf2[256];	char	buf3[256];	int ret;	char routetostring[64];		snprintf( routetostring, sizeof( routetostring), "routeto%d", 				CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE));		if( NPC_Util_GetStrFromStrWithDelim( argstr, routetostring,buf, sizeof(buf))		== NULL ) 	{		print( "npcbus:nothing route \n");		return FALSE;	}	ret = getStringFromIndexWithDelim( buf, ";", 								CHAR_getWorkInt( meindex, NPC_WORK_ROUTEPOINT),								buf2, sizeof(buf2));			if( ret == FALSE ) return FALSE;	ret = getStringFromIndexWithDelim( buf2, ",", 1,								buf3, sizeof(buf3));	if( ret == FALSE) return FALSE;	CHAR_setWorkInt( meindex, NPC_WORK_ROUTETOX, atoi( buf3));		ret = getStringFromIndexWithDelim( buf2, ",", 2,								buf3, sizeof(buf3));	if( ret == FALSE) return FALSE;	CHAR_setWorkInt( meindex, NPC_WORK_ROUTETOY, atoi( buf3));	return TRUE;}/************************************** * route  寞井日]  蟆互丐匀凶日公木毛 * 惫寞及午仇卞本永玄允月[ **************************************/static void NPC_BusSetDestPoint( int meindex, char *argstr){	char 	buf[256];	char	routename[256];	snprintf( routename, sizeof( routename), "routename%d", 				CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE));	if( NPC_Util_GetStrFromStrWithDelim( argstr, routename, buf, sizeof( buf))		!= NULL ) 	{		CHAR_setChar( meindex, CHAR_OWNTITLE, buf);		CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX));	}}/************************************** * 隙烂今木凶失奶  丞毛  匀化中月井民尼永弁允月 *   匀化中凶日分户 **************************************/static BOOL NPC_BusCheckDeniedItem( int meindex, int charaindex, char *argstr){	char	buf[1024];	BOOL	found = TRUE;	if( NPC_Util_GetStrFromStrWithDelim( argstr, "denieditem", buf, sizeof( buf))		!= NULL ) 	{		int	i;		int ret;		for( i = 1; ; i ++) {			int itemid;			char buf2[64];			int j;			ret = getStringFromIndexWithDelim( buf, ",", i, buf2, sizeof(buf2));			if( ret == FALSE ) break;			itemid = atoi( buf2);			for( j = 0; j < CHAR_MAXITEMHAVE; j ++) {				int itemindex = CHAR_getItemIndex( charaindex, j);				if( ITEM_CHECKINDEX( itemindex)) {					if( ITEM_getInt( itemindex, ITEM_ID) == itemid) {						found = FALSE;						break;					}				}			}		}	}	return found;}/************************************** * 隙烂今木凶失奶  丞毛  匀化中月井民尼永弁允月 *   匀化中卅中午分户 **************************************/BOOL NPC_BusCheckAllowItem( int meindex, int charaindex, BOOL pickupmode){	char	buf[1024];	BOOL	found = TRUE;	BOOL	pickup = FALSE;	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];		NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));		if( NPC_Util_GetStrFromStrWithDelim( argstr, "pickupitem", buf, sizeof( buf))!= NULL ){		pickup = TRUE;	}	if( NPC_Util_GetStrFromStrWithDelim( argstr, "allowitem", buf, sizeof( buf))!= NULL ){		int	i;		int ret;		for( i = 1; ; i ++) {			int itemid;			char buf2[64];			int j;			BOOL	getflg;			ret = getStringFromIndexWithDelim( buf, ",", i, buf2, sizeof(buf2));			if( ret == FALSE ) break;			itemid = atoi( buf2);			getflg = FALSE;			for( j = 0; j < CHAR_MAXITEMHAVE; j ++) {				int itemindex = CHAR_getItemIndex( charaindex, j);				if( ITEM_CHECKINDEX( itemindex)) {					if( ITEM_getInt( itemindex, ITEM_ID) == itemid) {						if( pickupmode && pickup && !getflg) {							CHAR_DelItem( charaindex, j);							getflg = TRUE;						}						break;					}				}			}			if( j == CHAR_MAXITEMHAVE) {				found = FALSE;				break;			}		}	}	return found;}/************************************** * 隙烂今木凶伊矛伙动晓井民尼永弁允月 **************************************/static BOOL NPC_BusCheckLevel( int meindex, int charaindex, char *argstr){	int		level;		/* 卅仃木壬中仃卅中娄醒及民尼永弁 */	level = NPC_Util_GetNumFromStrWithDelim( argstr, "needlevel");	if( level == -1 ) {		return TRUE;	}	if( CHAR_getInt( charaindex, CHAR_LV) >= level ) return TRUE;		return FALSE;}/************************************** * 豢嗯毛民尼永弁允月 * -1 蛲   0动晓”    ]井勾  邰Stone **************************************/static int NPC_BusCheckStone( int meindex, int charaindex, char *argstr){	int		gold;		/* 卅仃木壬中仃卅中娄醒及民尼永弁 */	gold = NPC_Util_GetNumFromStrWithDelim( argstr, "needstone");	if( gold == -1 ) {		return 0;	}	if( CHAR_getInt( charaindex, CHAR_GOLD) >= gold ) return gold;		return -1;}/************************************** * 丢永本□斥毛霜月 * 娄醒及丢永本□斥互卅仃木壬犯白巧伙玄丢永本□斥毛霜月 **************************************/static void NPC_BusSendMsg( int meindex, int talkerindex, int tablenum){	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];	char	buf[256];	char	msg[256];	if( tablenum < 0 || tablenum >= arraysizeof( busmsg)) return;		NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));		if( NPC_Util_GetStrFromStrWithDelim( argstr, busmsg[tablenum].option, buf, sizeof( buf))		!= NULL ) 	{		strcpy( msg, buf);	}	else {		snprintf( msg, sizeof(msg),busmsg[tablenum].defaultmsg);	}	CHAR_talkToCli( talkerindex, meindex, msg, CHAR_COLORYELLOW);}/************************************** * 伙□玄  □皮伙及禾奶件玄及醒毛潸  允月 **************************************/static int NPC_BusGetRoutePointNum( int meindex, char *argstr ){	int		i;	char	buf[4096];	char	buf2[256];	int ret;	char routetostring[64];		snprintf( routetostring, sizeof( routetostring), "routeto%d", 				CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE));		if( NPC_Util_GetStrFromStrWithDelim( argstr, routetostring,buf, sizeof(buf))		== NULL ) 	{		print( "npcbus:nothing route \n");		return -1;	}	for( i = 1; ; i ++ ) {		ret = getStringFromIndexWithDelim( buf, ";", i, buf2, sizeof(buf2));		if( ret == FALSE) break;	}	return( i -1);}BOOL NPC_BusCheckJoinParty( int meindex, int charaindex, BOOL msgflg){    //int		fd;	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];	int		ret;	NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));	/* ㄠ弘伉永玉动  及心 */	if( !NPC_Util_charIsInFrontOfChar( charaindex, meindex, 1 )) return FALSE; 	/*     昙乐反蛐  允月 */	if( CHAR_getWorkInt( meindex, NPC_WORK_MODE) != 0 ) {		if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_GETTINGON);		return FALSE;	}	/* 天□化不分匀凶日分户 */	if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) != CHAR_PARTY_NONE) {		if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_NOTPARTY);		return FALSE;	}	/* 由□  奴及谛醒毛民尼永弁允月 */	if( CHAR_getEmptyPartyArray( meindex) == -1 ) {		if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_OVERPARTY);		return FALSE;	}	/* 失奶  丞及民尼永弁毛允月(嗟鞅失奶  丞) */	if( !NPC_BusCheckDeniedItem( meindex, charaindex, argstr)) {		if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_DENIEDITEM);		return FALSE;	}#ifdef _ITEM_CHECKWARES	if( CHAR_CheckInItemForWares( charaindex, 0) == FALSE )	{		CHAR_talkToCli( charaindex, -1, "无法携带货物上车。", CHAR_COLORYELLOW);		return FALSE;	}#endif	/* 失奶  丞及民尼永弁毛允月(  邰失奶  丞) */	if( !NPC_BusCheckAllowItem( meindex, charaindex, FALSE)) {		if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_ALLOWITEM);		return FALSE;	}	/* 伊矛伙及民尼永弁毛允月 */	if( !NPC_BusCheckLevel( meindex, charaindex, argstr)) {		if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_LEVEL);		return FALSE;	}	/* 奶矛件玄  井民尼永弁允月 *///	if( CHAR_getInt( charaindex, CHAR_NOWEVENT) != 0 ||//		CHAR_getInt( charaindex, CHAR_NOWEVENT2) != 0 ||//		CHAR_getInt( charaindex, CHAR_NOWEVENT3) != 0 )//	{//		if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_EVENT);//		return FALSE;//	}	/* 豢嗯及民尼永弁毛允月  云嗯毛潸月及匹]  蔽民尼永弁卞允月仇午″   */	ret = NPC_BusCheckStone( meindex, charaindex, argstr);	if( ret == -1 ) {		if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_GOLD);		return FALSE;	}	if( ret != 0 ) {		char msgbuf[128];		/* 豢嗯毛午月 */		CHAR_setInt( charaindex, CHAR_GOLD, 					CHAR_getInt( charaindex, CHAR_GOLD) - ret);		/* 霜耨 */		CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_GOLD);		snprintf( msgbuf, sizeof( msgbuf), "支付了%d Stone!", ret);		CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW);	}	/* 由□  奴卞  月 */	//CHAR_JoinParty_Main( charaindex, meindex);		//fd = getfdFromCharaIndex( charaindex );		//lssproto_PR_send( fd, 1, 1);			return TRUE;}

⌨️ 快捷键说明

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