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

📄 npc_npcenemy.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 3 页
字号:
{	char buff2[256];	char buff3[128];	int i=1,j=1;	int loop=0;	while( getStringFromIndexWithDelim(buf,",",i,buff2,sizeof(buff2)) !=FALSE )	{			i++;		if(strstr(buff2,"&")!=NULL){			j=1;			loop=0;			while( getStringFromIndexWithDelim(buff2,"&",j,buff3,sizeof(buff3)) !=FALSE )	{				j++;				if(NPCEnemy_BSCheck(meindex,talker,buff3)==FALSE)	{					loop=1;					break;				}			}			if(loop==0) {				CHAR_setWorkInt( talker, CHAR_WORKWARPCHECK, TRUE );				return TRUE;			}		}else{			if( NPCEnemy_BSCheck( meindex, talker, buff2) == TRUE ){				CHAR_setWorkInt( talker, CHAR_WORKWARPCHECK, TRUE );				return TRUE;			}		}	}	CHAR_setWorkInt( talker, CHAR_WORKWARPCHECK, FALSE );	return FALSE;}BOOL NPCEnemy_BSCheck(int meindex,int talker,char* buf){	char buff2[128];	int kosuu,temp=-1,flg=0;	char buff1[128],buff3[128];	if(strstr( buf, "-") != NULL)	{		//buff3为抓宠物ID		getStringFromIndexWithDelim( buf, "-", 2, buff3, sizeof(buff3));		temp = atoi( buff3);		getStringFromIndexWithDelim( buf, "-", 1, buff1, sizeof(buff1));		strcpy( buf, buff1);        }                         	if(strstr( buf, "<") != NULL){		getStringFromIndexWithDelim( buf, "<", 2, buff2, sizeof(buff2));		kosuu = atoi( buff2);		getStringFromIndexWithDelim( buf, "<", 1, buff2, sizeof(buff2));		if(NPCEnemy_FreeIfCheck( meindex, talker, buff2, kosuu, 1, temp)==TRUE){			return TRUE;		}	}else if(strstr( buf, ">") != NULL){		getStringFromIndexWithDelim( buf, ">", 2, buff2, sizeof(buff2));		kosuu = atoi(buff2);		getStringFromIndexWithDelim( buf, ">" ,1, buff2, sizeof(buff2));		if(NPCEnemy_FreeIfCheck( meindex, talker, buff2, kosuu, 2, temp)==TRUE){			return TRUE;		}	}else if(strstr( buf, "!" ) != NULL){		getStringFromIndexWithDelim( buf, "!=", 2, buff2, sizeof(buff2));		kosuu = atoi( buff2);		getStringFromIndexWithDelim( buf, "!=", 1, buff2, sizeof(buff2));		if(NPCEnemy_FreeIfCheck( meindex, talker, buff2, kosuu, 0, temp) == TRUE){			return FALSE;		}else{			return TRUE;		}	}else if(strstr( buf, "=") != NULL){			getStringFromIndexWithDelim( buf, "=", 2, buff2, sizeof(buff2));		kosuu = atoi( buff2);		getStringFromIndexWithDelim( buf, "=", 1, buff2, sizeof(buff2));		if( strstr( buf, "PET"))	{			flg = 3;		}		if(strstr( buf, "*") != NULL){			if( NPCEnemy_WarpManReduce( meindex, talker, buf)==TRUE){				return TRUE;			}		}else if(NPCEnemy_FreeIfCheck( meindex, talker, buff2, kosuu, flg, temp)==TRUE){			return TRUE;		}	}	return FALSE;}BOOL NPCEnemy_FreeIfCheck(int meindex,int talker,char* buf,int kosuu,int flg, int temp){	if(strcmp(buf,"LV")==0){		if(NPCEnemy_LevelCheck(meindex,talker,kosuu,flg)==TRUE){				return TRUE;		}	}		if( strcmp(buf,"TRANS") == 0 )	{		if( NPCEnemy_CheckTrans( meindex, talker, kosuu, flg) == TRUE )			return TRUE;	}	if( strcmp( buf, "PET") == 0 )	{		if( temp > 0 )	{			if( NPCEnemy_CheckMyPet( meindex, talker, kosuu, flg, temp) == TRUE )				return TRUE;		}else			return FALSE;	}		if(strcmp(buf,"ITEM")==0){		if(NPCEnemy_ItemCheck(meindex,talker,kosuu,flg)==TRUE){				return TRUE;		}	}	if(strcmp(buf,"ENDEV")==0){		if(NPC_EventCheckFlg( talker, kosuu)==TRUE){				return TRUE;		}	}	if(strcmp(buf,"NOWEV")==0){		if(NPC_NowEventCheckFlg( talker, kosuu)==TRUE){				return TRUE;		}	}	return FALSE;}BOOL NPCEnemy_WarpManReduce(int meindex,int talker,char *buf){	char buf2[512];	char buf3[256];	int id=0;	int i;	int itemindex;	int itemno;	int kosuu;	int cnt=0;		getStringFromIndexWithDelim(buf,"=",2,buf2,sizeof(buf2));	getStringFromIndexWithDelim(buf2,"*",1,buf3,sizeof(buf3));	itemno = atoi(buf3);	getStringFromIndexWithDelim(buf2,"*",2,buf3,sizeof(buf3));	kosuu = atoi(buf3);		for( i=0 ; i < CHAR_MAXITEMHAVE;i++ ){		itemindex=CHAR_getItemIndex( talker , i );		if( ITEM_CHECKINDEX(itemindex) ){			id=ITEM_getInt(itemindex ,ITEM_ID );			if(itemno==id){				cnt++;				if(cnt==kosuu){					return TRUE;				}			}		}	}	return FALSE;}BOOL NPCEnemy_BigSmallLastCheck(int point1,int mypoint,int flg){	if(flg==0){		if(point1==mypoint) {			return TRUE;		}			}else if(flg==1){		if(mypoint < point1) {			return TRUE;		}			}else if(flg==2){		if(mypoint > point1) {			return TRUE;		}	}	return FALSE;}BOOL NPCEnemy_LevelCheck(int meindex,int talker,int level,int flg){	int mylevel;	mylevel=CHAR_getInt(talker,CHAR_LV);	if(NPCEnemy_BigSmallLastCheck(level,mylevel,flg)==TRUE)	{		return TRUE;	}	return FALSE;}BOOL NPCEnemy_CheckTrans(int meindex,int talker,int trans,int flg){	int myTrans;	myTrans=CHAR_getInt(talker, CHAR_TRANSMIGRATION);	if( NPCEnemy_BigSmallLastCheck( trans, myTrans, flg ) == TRUE )	{             return TRUE;        }                   	return FALSE;}BOOL NPCEnemy_CheckMyPet( int meindex, int talker, int petLv, int flg, int petid){	int petsel,petindex=-1;		for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++)     {		petindex = CHAR_getCharPet( talker, petsel);		if( petindex == -1  )			continue;	        if(CHAR_getInt( petindex, CHAR_PETID) !=  petid )			continue;		break;	}	if( petsel  == CHAR_MAXPETHAVE )	{		return FALSE;	}else	{	//找到条件宠		switch( flg)	{		case 0:			if( CHAR_getInt( petindex, CHAR_LV) != petLv )				return TRUE;		break;		case 1:			if( CHAR_getInt( petindex, CHAR_LV) < petLv )				return TRUE;		break;		case 2:			if( CHAR_getInt( petindex, CHAR_LV) > petLv )				return TRUE;		break;		case 3:			if( CHAR_getInt( petindex, CHAR_LV) == petLv )				return TRUE;		break;		}		return FALSE;	}	return FALSE;                                             }BOOL NPCEnemy_ItemCheck(int meindex,int talker,int itemNo,int flg){	int i;	int itemindex=-1;	int id;	for( i=0;i<CHAR_MAXITEMHAVE;i++ ){		itemindex = CHAR_getItemIndex( talker , i );		if( ITEM_CHECKINDEX( itemindex) )	{			id=ITEM_getInt(itemindex ,ITEM_ID );						if( NPCEnemy_BigSmallLastCheck(itemNo,id,flg) == TRUE )				return TRUE;		}	}	return FALSE;}BOOL NPC_WarpAllMsg(int meindex,int toindex ){	int fl,x,y;	int subindex=-1;	int i;	fl = CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR );	x = CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X );	y = CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y );	if( CHAR_getWorkInt( toindex, CHAR_WORKPARTYMODE ) != 1 )		return FALSE;	for( i = 0; i < CHAR_PARTYMAX; i ++ ){		subindex = CHAR_getWorkInt( toindex, CHAR_WORKPARTYINDEX1+i );		if( CHAR_CHECKINDEX( subindex ) == FALSE )continue;		if( fl==0 && x==0 && y==0 )	{		}else	{			CHAR_warpToSpecificPoint( subindex, fl, x, y );		}	}	return TRUE;}#endifvoid NPC_NPCEnemyWatch( int meobjindex, int objindex, CHAR_ACTION act,                    int x,int y,int dir, int* opt,int optlen ){	int born, dead;	int meindex, index;	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];	if( OBJECT_getType( objindex) != OBJTYPE_CHARA) return;	index = OBJECT_getIndex( objindex);	if( !CHAR_CHECKINDEX( index) ) return;	if( CHAR_getInt( index, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER) return;    meindex = OBJECT_getIndex( meobjindex);	if( !CHAR_CHECKINDEX( meindex) ) return;	if( NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg)) == NULL ){		print("WarpMan:GetArgStrErr");		return;	}	if( !strstr( npcarg,"NEWNPCENEMY") )		return;	if( NPC_getTimeData( meindex, npcarg, &born, &dead, 200) == FALSE )		return;		NPC_TimeDefineDo( meindex, born, dead, NPC_TIME_MODE);	CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX ) );}#ifdef _NPC_REPLACEMENTvoid Check_EnemyWarpMe( int meindex, char *args ){	char buf1[256];	int objindex,index;	int nfl, nx, ny;	OBJECT obj;	memset( buf1, 0, sizeof( buf1));	if( NPC_Util_GetStrFromStrWithDelim( args, "REPLACEMENT", buf1, sizeof( buf1)) == NULL ) {		return;	}	GetRand_WarpPoint( buf1, &nfl, &nx, &ny );	if( MAP_IsValidCoordinate( nfl, nx, ny ) == FALSE ){		char filename[256];		NPC_Util_CheckAssignArgFile( meindex, filename);		print( "NPCENEMY REPLACEMENT: %s .Invalid POINT( %d, %d, %d)\n", filename, nfl, nx, ny );		return;	}	{		int ofl, ox, oy;		ofl = CHAR_getInt( meindex, CHAR_FLOOR );		ox = CHAR_getInt( meindex, CHAR_X );		oy = CHAR_getInt( meindex, CHAR_Y );		for ( obj=MAP_getTopObj( nfl, nx, ny); obj; obj=NEXT_OBJECT( obj) ) {			objindex = GET_OBJINDEX( obj);			if (OBJECT_getType( objindex) != OBJTYPE_CHARA) continue;			index = OBJECT_getIndex( objindex);			if( CHAR_getInt( index, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER &&				CHAR_getWorkInt( index, CHAR_WORKEVENTTYPE) != CHAR_TYPEPET )	{				CHAR_warpToSpecificPoint( index, ofl, ox, oy);				CHAR_sendCToArroundCharacter( objindex);				break;			}		}	}	objindex = CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX);	CHAR_warpToSpecificPoint( meindex, nfl, nx, ny);	CHAR_sendCToArroundCharacter( objindex);}#endif

⌨️ 快捷键说明

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