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

📄 npc_npcenemy.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 3 页
字号:
				int fd = getfdFromCharaIndex( charaindex);				char	buf2[256];				/* askbattlemsg? 互丐木壬  醒垫卞允月  "\n"戊□玉毛  木月)*/				for( i = 2; i < 7; i ++ ) {					snprintf( config, sizeof( config), "askbattlemsg%d", i);					if( NPC_Util_GetStrFromStrWithDelim( argstr, config, buf2, sizeof( buf2))!= NULL )					{						strcpysafe( &buf[len], sizeof( buf)-len, "\n" );						len++;						strcpysafe( &buf[len], sizeof( buf)-len, buf2 );						len += strlen( buf2);						if( len >= sizeof( buf) ) {							print( "buffer over\n");							return FALSE;						}					}					else {						strcpysafe( &buf[len], sizeof( buf)-len, "\n" );						len++;						if( len >= sizeof( buf) ) {							print( "buffer over\n");							return FALSE;						}					}				}				if( fd != -1 ) {					lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,									WINDOW_BUTTONTYPE_YESNO,									CHAR_WINDOWTYPE_NPCENEMY_START,									CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),									makeEscapeString( buf, escapebuf,sizeof(escapebuf)));				}				/* 仇仇分仃    卞伉正□件 */				return FALSE;			}else {				/* 爵  卞  日六月 */				flg = NPC_NPCEnemy_BattleIn( meindex, charaindex);			}		}	}	if( !flg) {		if( NPC_Util_GetStrFromStrWithDelim( argstr, "deniedmsg", buf, sizeof( buf))!= NULL )		{			CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW );		}	}	return flg;}int NPC_NPCEnemy_Dying( int battleindex, int meindex ){	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE];	char	buf[64];	int	i,toindex=-1;	int tmp=-1;	if( !CHAR_CHECKINDEX( meindex)) {		return FALSE;	}	NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));#ifdef _NEW_WARPMAN	if( strstr( argstr, "NEWNPCENEMY") )    {	}else	{#endif	/* 蝇    及陲太 */	if( NPC_Util_GetStrFromStrWithDelim( argstr, "endmsg", buf, sizeof( buf)) != NULL ) {		for( i = 0; i < 5; i ++ ) {			/* 爵  卞辅笛仄化中月蝈够卞丢永本□斥 */			int toindex = BattleArray[battleindex].Side[0].Entry[i].charaindex;			if( CHAR_CHECKINDEX( toindex) )	{				CHAR_talkToCli( toindex, meindex ,buf , CHAR_COLORYELLOW );			}		}	}#ifdef _NEW_WARPMAN	}#endif	if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf)) != NULL ) {		print("\n steal TRUE !!");		if( atoi( buf) == 1 ) {			int charaindex = BattleArray[battleindex].Side[0].Entry[0].charaindex;			NPC_NPCEnemy_StealItem( argstr, meindex, charaindex);		}			}#ifdef _ALLDOMAN // (不可开) Syu ADD 排行榜NPC	if( NPC_Util_GetStrFromStrWithDelim( argstr, "herobattlefield", buf, sizeof( buf)) != NULL ) {			int charaindex = BattleArray[battleindex].Side[0].Entry[0].charaindex;			CHAR_setWorkInt ( charaindex , CHAR_WORKHEROFLOOR , atoi ( buf ) ) ;			// Syu ADD 			if ( atoi ( buf ) > CHAR_getInt ( charaindex , CHAR_HEROFLOOR ) )				CHAR_setInt ( charaindex , CHAR_HEROFLOOR , atoi( buf ) ) ; 	}#endif	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "dieact");	if( tmp != 1 ) 		tmp = 0;	CHAR_setWorkInt( meindex, CHAR_WORK_DIEACT, tmp);	if( CHAR_getWorkInt( meindex, CHAR_WORK_DIEACT) == 0 ) {	    Char 	*ch;		CHAR_setInt( meindex, CHAR_BASEIMAGENUMBER, 0);		print("bbi---->bi10");		CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX));		CHAR_setWorkInt( meindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_ALTERRATIVE);		MAP_sendAroundMapdata( CHAR_getInt( meindex, CHAR_FLOOR),								CHAR_getInt( meindex, CHAR_X),								CHAR_getInt( meindex, CHAR_Y));	    ch  = CHAR_getCharPointer( meindex);	    if( ch != NULL ) {			strcpysafe( ch->charfunctable[CHAR_LOOPFUNC].string,						sizeof( ch->charfunctable[CHAR_LOOPFUNC]),						"NPCEnemyLoop");			CHAR_constructFunctable( meindex);			CHAR_setInt( meindex, CHAR_LOOPINTERVAL, 5000);			CHAR_setWorkInt( meindex, CHAR_WORK_DIETIME, NowTime.tv_sec);		}else {			print( "NPCENEMY:err\n");		}	}else {		for( i = 0; i < 5; i ++ ) {			toindex = BattleArray[battleindex].Side[0].Entry[i].charaindex;			if( CHAR_CHECKINDEX( toindex) ) {#ifdef _NEW_WARPMAN				if( strstr( argstr, "NEWNPCENEMY") )    {					BOOL Party=TRUE;					if( NPC_NPCEnemy_CheckFree( meindex, toindex , &Party) == FALSE )       {						continue;					}					if( Party == TRUE )	{					}else	{						if( CHAR_getWorkInt( toindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_LEADER )	{							if( NPC_WarpAllMsg( meindex, toindex ) == TRUE )	{								return TRUE;							}						}						continue;					}				}				CHAR_DischargeParty( toindex, 0); // 拆队				CHAR_warpToSpecificPoint( toindex,					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR),					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X),					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y)					);#else				CHAR_warpToSpecificPoint( toindex,								CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR),								CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X),								CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y)								);#endif#ifdef _NPC_REPLACEMENT				Check_EnemyWarpMe( meindex, argstr);#endif			}		}	}	return TRUE;}void NPC_NPCEnemyLoop( int meindex ){	if( NowTime.tv_sec > CHAR_getWorkInt( meindex, CHAR_WORK_DIETIME) +						 CHAR_getWorkInt( meindex, CHAR_WORK_REVIVALTIME)){		Char	*ch;		CHAR_setInt( meindex, CHAR_BASEIMAGENUMBER,	CHAR_getWorkInt( meindex, CHAR_WORK_BASEIMGBAK));		print("bbi---->bi11");		CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX));		CHAR_setWorkInt( meindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_ENEMY);		MAP_sendAroundMapdata( CHAR_getInt( meindex, CHAR_FLOOR),								CHAR_getInt( meindex, CHAR_X),								CHAR_getInt( meindex, CHAR_Y));	    ch  = CHAR_getCharPointer( meindex);	    if( ch != NULL ) {			strcpysafe( ch->charfunctable[CHAR_LOOPFUNC].string,						sizeof( ch->charfunctable[CHAR_LOOPFUNC]),	"");			CHAR_constructFunctable( meindex);//			CHAR_setInt( meindex, CHAR_LOOPINTERVAL, 0);		}	}}BOOL NPC_NPCEnemy_BattleIn(  int meindex, int charaindex){	int		gym;	int		ret;	char	buf[256];	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE];	memset( argstr, 0, sizeof( argstr));	NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));	gym = NPC_Util_GetNumFromStrWithDelim( argstr, "gym");	if( gym > 0 ){		ret = BATTLE_CreateVsEnemy( charaindex, 2, meindex);	}else{		ret = BATTLE_CreateVsEnemy( charaindex, 1, meindex);	}	if( ret == 0 ) {		BattleArray[CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX)].WinFunc	= NPC_NPCEnemy_Dying;		if( NPC_Util_GetStrFromStrWithDelim( argstr, "startmsg", buf, sizeof( buf))	!= NULL ){			CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW );		}		if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf))!= NULL ){			if( atoi( buf) == 0 ) {				NPC_NPCEnemy_StealItem( argstr, meindex, charaindex);			}		}	}	return ( ret == 0 ) ?TRUE:FALSE ;}void NPC_NPCEnemyWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data){	if( seqno == CHAR_WINDOWTYPE_NPCENEMY_START) {		if( select == WINDOW_BUTTONTYPE_YES) {			NPC_NPCEnemy_BattleIn( meindex, talkerindex);		}	}}static int NPC_NPCEnemy_StealItem( char *argstr, int meindex, int charaindex){	char	itembuf[1024];	if( NPC_Util_GetStrFromStrWithDelim( argstr, "item", itembuf, sizeof( itembuf))!= NULL )	{		char	data[128];		int		delitemgroup[CHAR_MAXITEMHAVE];		int		found = 0;		int		i;		for( i = 0; i < CHAR_MAXITEMHAVE; i ++ ) {			int		j;			int		itemid;			int ret = getStringFromIndexWithDelim( itembuf,",", i + 1,data, sizeof(data));			if( ret == FALSE) {				break;			}			itemid = atoi( data);			for( j = 0; j < CHAR_MAXITEMHAVE; j ++ ) {				int itemindex = CHAR_getItemIndex( charaindex, j);				if( ITEM_CHECKINDEX( itemindex)){					if( ITEM_getInt( itemindex, ITEM_ID) == itemid ){						CHAR_setItemIndex( charaindex, j, -1);						ITEM_endExistItemsOne( itemindex);						delitemgroup[found] = j;						found ++;						break;					}				}			}			if( !found ) break;		}		CHAR_sendItemData( charaindex, delitemgroup, found);	}	else {		print( "NPCENEMY:奇怪\n");		return FALSE;	}	return TRUE;}#ifdef _NEW_WARPMANstatic BOOL NPC_NPCEnemy_CheckFree( int  meindex, int toindex, BOOL *Party){  char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];  char buf1[1024],buf2[256],buf3[256],buf4[256];  char token[256];  char temp1[16];  int talkNo = 1;  int point=1;  int i=0,type=0;  struct tagWarpPoint {	int floor;	int x;	int y;  }AllWarPoint[]={	{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},	{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},	{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},  };  if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL)	{	print("GetArgStrErr");	return FALSE;  }  if( (strstr( npcarg,"NEWNPCENEMY") == NULL) && (strstr( npcarg,"OVER") == NULL) )	{	return FALSE;  }else	{  }	  while( getStringFromIndexWithDelim( npcarg,"OVER",talkNo,buf1,sizeof( buf1)) != FALSE )	{		talkNo++;	sprintf(temp1,"NEWEVENT");	if( strstr( buf1, temp1) != NULL)	{	  if( NPC_Util_GetStrFromStrWithDelim( buf1, "FREE", buf2, sizeof( buf2) ) == FALSE )	{	  	continue;	  }		if( NPC_ActionPassCheck( meindex, toindex, buf2) == FALSE )	{			continue;		}	  if( NPC_Util_GetStrFromStrWithDelim( buf1, "endmsg", token, sizeof( token)) != NULL ) {		CHAR_talkToCli( toindex, meindex ,token , CHAR_COLORYELLOW );	  }#ifdef _ALLDOMAN // (不可开) Syu ADD 排行榜NPC	  if( NPC_Util_GetStrFromStrWithDelim( buf1, "herobattlefield", token, sizeof( token)) != NULL ) {		  CHAR_setWorkInt ( toindex , CHAR_WORKHEROFLOOR , atoi ( token ) ) ;		  if ( atoi ( token ) > CHAR_getInt ( toindex , CHAR_HEROFLOOR ) )				CHAR_setInt ( toindex , CHAR_HEROFLOOR , atoi( token ) ) ; 	  }#endif	  if( NPC_Util_GetStrFromStrWithDelim( buf1, "WARP", buf2, sizeof( buf2) ) == FALSE ){	  	continue;	  }else	{//RAND	arraysizeof	AllWarPoint		  	while( getStringFromIndexWithDelim( buf2, ";", point, buf3,sizeof( buf3)) != FALSE )	{				point++;				getStringFromIndexWithDelim( buf3, ",", 1, buf4, sizeof( buf4));				AllWarPoint[i].floor = atoi( buf4);				getStringFromIndexWithDelim( buf3, ",", 2, buf4, sizeof( buf4));				AllWarPoint[i].x = atoi( buf4);				getStringFromIndexWithDelim( buf3, ",", 3, buf4, sizeof( buf4));				AllWarPoint[i].y = atoi( buf4);				i++;				if( i >= arraysizeof( AllWarPoint)  )					  break;			}			type = RAND( 0, i-1);			if( AllWarPoint[type].floor <= 0 || type > arraysizeof( AllWarPoint)-1)	{				type = 0;			}		  CHAR_setWorkInt( meindex, CHAR_WORK_WARP_FLOOR, AllWarPoint[type].floor );		  CHAR_setWorkInt( meindex, CHAR_WORK_WARP_X, AllWarPoint[type].x );		  CHAR_setWorkInt( meindex, CHAR_WORK_WARP_Y, AllWarPoint[type].y );		  	  }	  if( NPC_Util_GetStrFromStrWithDelim( buf1, "CHECKPARTY", buf4, sizeof( buf4)) != NULL ) {		  if( strstr( buf4, "FALSE") != NULL )	{				*Party = FALSE;		  }	  }	  if( *Party == TRUE )	{		  Action_RunDoEventAction( meindex, toindex, buf1);	  }	  return TRUE;	}  }  return FALSE;  }BOOL NPCEnemy_CheckFree( int meindex, int talker, char *buf)

⌨️ 快捷键说明

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