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

📄 npc_eventaction.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 4 页
字号:
				CHAR_setInt( ret, CHAR_LV, CHAR_getInt( ret, CHAR_LV) +1 );			}		}#endif		CHAR_setInt( ret, CHAR_HP, CHAR_getWorkInt( ret, CHAR_WORKMAXHP ));		CHAR_setMaxExpFromLevel( ret, CHAR_getInt( ret, CHAR_LV ));		CHAR_setInt(ret,CHAR_VARIABLEAI,10000);	}		petindex2 = CHAR_getCharPet(talker, i);	if( !CHAR_CHECKINDEX( petindex2) )		return FALSE;	snprintf( msgbuf,sizeof( msgbuf), "拿到%s。", CHAR_getChar(petindex2,CHAR_NAME));	CHAR_talkToCli( talker, -1, msgbuf,  CHAR_COLORYELLOW);	CHAR_setInt( talker, CHAR_AMPOINT, pVipPoint-VipPoints);	snprintf( msgbuf,sizeof( msgbuf), "扣除会员点数%d", VipPoints);	CHAR_talkToCli( talker, -1, msgbuf, CHAR_COLORYELLOW);	for(j = 0; j < CHAR_MAXPETHAVE; j++){		petindex = CHAR_getCharPet(talker, j);		if( !CHAR_CHECKINDEX( petindex) )			continue;		CHAR_complianceParameter( petindex );		snprintf( msgbuf, sizeof( msgbuf ), "K%d", j );		CHAR_sendStatusString( talker, msgbuf );		snprintf( msgbuf, sizeof( msgbuf ), "W%d", j );		CHAR_sendStatusString( talker, msgbuf );	}	return TRUE;}#endif#ifdef _TRANS_7_NPCBOOL NPC_ActionTrans7( int talker, char *buf){	char token[128];	int work[10];	int Trans=CHAR_getInt(talker,CHAR_TRANSMIGRATION)+1;#ifdef _ADD_POOL_ITEM			   // WON ADD 增加可寄放的道具		int tran_pool_item[5] = { 4, 4, 4, 4, 4 };		// 增加的道具寄放数	int tran_pool_pet[5] = { 2, 2, 2, 2, 2};		// 增加的宠物寄放数	int j,item_sum=0, pet_sum=0;		if(Trans>7 || CHAR_getInt(talker,CHAR_LV)<80){		sprintf( token, "由于你已七转或等级小于80级,所以转生失败!", CHAR_getChar( talker, CHAR_NAME));		CHAR_talkToCli( talker, -1, token, CHAR_COLORYELLOW );		return;	}		for(j=0; j<5 ;j++){		item_sum += tran_pool_item[j] ;					pet_sum += tran_pool_pet[j];			}	item_sum += 10;								// 限制最大的寄道具数	pet_sum  += 5;							    // 限制最大的寄宠数#endif	NPC_TransmigrationStatus(talker, talker, work);	NPC_TransmigrationFlg_CLS(talker, talker);	CHAR_setInt(talker ,CHAR_TRANSMIGRATION, Trans);	CHAR_setInt(talker, CHAR_LV ,1);	CHAR_setMaxExp( talker, 0);  CHAR_setInt( talker,CHAR_SKILLUPPOINT,CHAR_getInt( talker, CHAR_TRANSMIGRATION)*10);  CHAR_Skillupsend( talker );  CHAR_setInt( talker,CHAR_RIDEPET, -1 );  CHAR_setInt( talker , CHAR_BASEIMAGENUMBER , CHAR_getInt( talker , CHAR_BASEBASEIMAGENUMBER) );	CHAR_sendStatusString( talker , "P");}#endifBOOL NPC_ActionAddItem( int talker, char *buf){  int itemID,k=0,itemindex=-1;  int spaceNum=5,i;  char buff3[256], msgbuf[64], token[256];  int ret;  k=1;  while( getStringFromIndexWithDelim(buf , "," , k, buff3, sizeof(buff3)) !=FALSE ){	k++;		for( i = spaceNum ; i < CHAR_MAXITEMHAVE ; i++ ){			itemindex=CHAR_getItemIndex( talker , i );			if( itemindex == -1 )	{				spaceNum = i+1;				break;			}		}                                                                                                                                                                                                                                                                                                                                      		if( i == CHAR_MAXITEMHAVE )	{			snprintf( msgbuf,sizeof( msgbuf), "物品栏空间不足!!");			CHAR_talkToCli( talker, -1, msgbuf,  CHAR_COLORYELLOW);			return FALSE;		}  }  k=1;  while( getStringFromIndexWithDelim(buf , "," , k, buff3, sizeof(buff3)) !=FALSE ){	k++;        itemID = atoi( buff3);        if( itemID  )		itemindex = ITEM_makeItemAndRegist( itemID);		if(itemindex == -1)			continue;		ret = CHAR_addItemSpecificItemIndex( talker, itemindex);		if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) {			ITEM_endExistItemsOne( itemindex);			print ("\n ret error!!");			return FALSE;		}		sprintf( token,"拿到%s",ITEM_getChar( itemindex, ITEM_NAME));		CHAR_talkToCli( talker, -1, token, CHAR_COLORYELLOW );		CHAR_sendItemDataOne( talker, ret);  }	return TRUE;	                                                                                                                                                                      }BOOL NPC_ActionSetEend( int talkerindex, char * buf){	int eveno;	int talkNo=1, iflg=0;	char buf1[256];	while( getStringFromIndexWithDelim( buf,",",talkNo,buf1,sizeof( buf1)) != FALSE)	{ 		talkNo++;		eveno = atoi( buf);		NPC_EventSetFlg( talkerindex, eveno);		if( ++iflg > 20 ) break;	}	return TRUE;}BOOL NPC_ActionClearEvent( int toindex, char * buf){	int eveno;	int talkNo=1, iflg=0;	char buf1[256];	while( getStringFromIndexWithDelim( buf,",",talkNo,buf1,sizeof( buf1)) != FALSE)	{ 		talkNo++;		eveno = atoi( buf);		NPC_NowEndEventSetFlgCls( toindex, eveno);		if( ++iflg > 20 ) break;	}	return TRUE;}BOOL NPC_ActionSetNow( int toindex, char * buf){	int eveno;	int talkNo=1, iflg=0;	char buf1[256];	while( getStringFromIndexWithDelim( buf,",",talkNo,buf1,sizeof( buf1)) != FALSE)	{ 		talkNo++;		eveno = atoi( buf);		NPC_NowEventSetFlg( toindex, eveno);		if( ++iflg > 20 ) break;	}	return TRUE;}BOOL NPC_ActionPassCheck( int meindex, int talker, char *buf){	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(NPC_ActionBigSmallCheck( meindex, talker, buff3)==FALSE)	{					loop=1;					break;				}			}			if(loop==0) {				CHAR_setWorkInt( talker, CHAR_WORKWARPCHECK, TRUE );				return TRUE;			}		}else{			if( NPC_ActionBigSmallCheck( meindex, talker, buff2) == TRUE){				CHAR_setWorkInt( talker, CHAR_WORKWARPCHECK, TRUE );				return TRUE;			}		}	}	CHAR_setWorkInt( talker, CHAR_WORKWARPCHECK, FALSE );	return FALSE;}BOOL NPC_ActionBigSmallCheck(int meindex,int talker,char* buf){	char buff2[128], buff3[128];	int kosuu,temp=-1,flg=0;#ifdef _NEW_WARPMAN	char buff1[128];	if(strstr( buf, "-") != NULL)	{		getStringFromIndexWithDelim( buf, "-", 2, buff3, sizeof(buff3));		temp = atoi( buff3);		getStringFromIndexWithDelim( buf, "-", 1, buff1, sizeof(buff1));		strcpy( buf, buff1);	}                         #endif	if( strstr( buf, "<") != NULL ){		getStringFromIndexWithDelim( buf, "<", 2, buff3, sizeof(buff2));		kosuu = atoi( buff3);		getStringFromIndexWithDelim( buf, "<", 1, buff2, sizeof(buff2));		if( NPC_ActionFreeIfCheck( meindex, talker, buff2, buff3, kosuu, 1, temp)==TRUE){			return TRUE;		}	}else if(strstr( buf, ">") != NULL){		getStringFromIndexWithDelim( buf, ">", 2, buff3, sizeof(buff2));		kosuu = atoi(buff3);		getStringFromIndexWithDelim( buf, ">" ,1, buff2, sizeof(buff2));		if( NPC_ActionFreeIfCheck( meindex, talker, buff2, buff3, kosuu, 2, temp) == TRUE ){			return TRUE;		}	}else if( strstr( buf, "!" ) != NULL){		getStringFromIndexWithDelim( buf, "!=", 2, buff3, sizeof(buff2));		kosuu = atoi( buff3);		getStringFromIndexWithDelim( buf, "!=", 1, buff2, sizeof(buff2));		if( NPC_ActionFreeIfCheck( meindex, talker, buff2, buff3, kosuu, 0, temp) == TRUE ){			return FALSE;		}else{			return TRUE;		}	}else if( strstr( buf, "=") != NULL){		getStringFromIndexWithDelim( buf, "=", 2, buff3, sizeof(buff2));		kosuu = atoi( buff3);		getStringFromIndexWithDelim( buf, "=", 1, buff2, sizeof(buff2));		flg = 0;		if( strstr( buf, "*") != NULL){			if( NPC_ActionWarpManReduce( meindex, talker, buf)==TRUE){				return TRUE;			}		}#ifdef _NPC_ActionFreeCmp		else if( strstr( buf, "^") != NULL){		    if( NPC_ActionWarpManReduce2( meindex, talker, buf)==TRUE){				return TRUE;			}		}#endif		else if( NPC_ActionFreeIfCheck( meindex, talker, buff2, buff3, kosuu, flg, temp) == TRUE )	{			return TRUE;		}	}	return FALSE;}#ifdef _NPC_ActionFreeCmp //其实功能和原本的NPC_ActionWarpManReduce差不多,但为了不影响以前的设定,所以不去修改原本的BOOL NPC_ActionWarpManReduce2(int meindex,int talker,char *buf){	char buf2[512];	char buf3[256];	int i, itemindex, itemno, kosuu;	int id=0;	int nums = 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=CHAR_STARTITEMARRAY ; i < CHAR_MAXITEMHAVE;i++ ){		itemindex=CHAR_getItemIndex( talker , i );		if( ITEM_CHECKINDEX(itemindex) ){			id=ITEM_getInt(itemindex ,ITEM_ID );			if( itemno == id ){				nums += ITEM_getInt( itemindex, ITEM_USEPILENUMS);//数量			}		}	}	if( nums == kosuu ) return TRUE;	return FALSE;}#endifBOOL NPC_ActionFreeIfCheck(int meindex,int talker, char* buf, char *opt, int kosuu,int flg, int temp){#ifdef _VIP_SHOP	if(strcmp(buf,"VIPPOINT")==0){		if(NPC_ActionVipPointCheck(meindex,talker,kosuu,flg)==TRUE)				return TRUE;	}#endif#ifdef _VIP_RIDE	if(strcmp(buf,"VIP")==0){		if(NPC_ActionVipCheck(meindex,talker,kosuu,flg)==TRUE)				return TRUE;	}#endif	if(strcmp(buf,"LV")==0){		if(NPC_ActionLevelCheck(meindex,talker,kosuu,flg)==TRUE)				return TRUE;	}	if(strcmp(buf,"GOLD")==0){		if(NPC_ActionGoldCheck(meindex,talker,kosuu,flg)==TRUE)				return TRUE;	}		if( strcmp(buf,"TRANS") == 0 )	{		if( NPC_ActionCheckTrans( meindex, talker, kosuu, flg) == TRUE )			return TRUE;	}	if( !strcmp( buf, "GTIME") ){		if( NPC_CheckTimeDefine( opt) == TRUE )			return TRUE;	}	if(strcmp( buf, "TIME") == 0) {		if(NPC_TiemCheck( meindex, talker, kosuu, flg) == TRUE)			return TRUE;	}	if( strcmp( buf, "PET") == 0 )	{		if( temp > 0 )	{			if( ActionCheckMyPet( meindex, talker, kosuu, flg, temp) == TRUE )				return TRUE;		}else			return FALSE;	}	if(strcmp(buf,"ITEM")==0){		if(NPC_ActionItemCheck(meindex,talker,kosuu, flg)==TRUE)				return TRUE;	}	if(strcmp(buf,"EQUIT")==0){		if(NPC_ActioneEquitCheck(meindex,talker,kosuu, flg)==TRUE)				return TRUE;	}	if( !strcmp(buf,"ENDEV") || !strcmp(buf,"EVEND") ){		if(NPC_EventCheckFlg( talker, kosuu)==TRUE)				return TRUE;	}	if( !strcmp(buf,"NOWEV") || !strcmp(buf,"EVNOW") ){		if(NPC_NowEventCheckFlg( talker, kosuu)==TRUE)				return TRUE;	}	if(strcmp(buf,"PARTY")==0){		if(NPC_ActionPartyCheck( talker, kosuu, flg)==TRUE)				return TRUE;	}	if(strcmp(buf,"reITEM")==0){		if( NPC_ActionReItemCheck( talker, kosuu, flg)==TRUE)				return TRUE;	}	if(strcmp(buf,"rePET")==0){		if( NPC_ActionRePetCheck( talker, kosuu, flg)==TRUE)				return TRUE;	}#ifdef _NPCCHANGE_PLAYERIMG	if(strcmp( buf, "BBI")==0)	{		if( NPC_CheckPlayerBBI( meindex, talker, kosuu, flg)== TRUE)	{			return TRUE;		}	}#endif	if( strcmp( buf, "FM") == 0 ){		if( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) > 0 && 			CHAR_getInt( talker, CHAR_FMLEADERFLAG ) != FMMEMBER_APPLY)		if( CHAR_getWorkInt( talker, CHAR_WORKFMFLOOR) == kosuu ){			return TRUE;		}	}	if(strcmp(buf,"DR")==0){		if(NPC_ActionDuelRankCheck(meindex,talker,kosuu,flg)==TRUE){				return TRUE;		}	}	if(strcmp(buf,"DP")==0){		if(NPC_ActionDuelPointCheck(meindex,talker,kosuu,flg)==TRUE){				return TRUE;		}	}#ifdef _TREASURE_BOX	if( strcmp( buf, "BOX") == 0 ){		if( NPC_ActionTreasureTypeCheck( meindex, kosuu,			//NPC_TIME_EVENTMODE = CHAR_NPCWORKINT6,// 1			CHAR_getWorkInt( meindex, CHAR_NPCWORKINT6) ,flg)==TRUE)				return TRUE;	}#endif#ifdef _NPC_ADDWARPMAN1    if( strcmp( buf, "PARTYCOUNT") == 0){	    if(NPC_ActionPartyCountCheck( talker, kosuu, flg)==TRUE)			return TRUE;	}	if( strcmp( buf, "MANCOUNT" ) == 0 ){        if(NPC_ActionManCountCheck( talker, kosuu, flg ) == TRUE )			return TRUE;	}	if( strcmp( buf, "WOMANCOUNT" ) == 0 ){        if(NPC_ActionWomanCountCheck( talker, kosuu, flg ) == TRUE )			return TRUE;	}#endif	return FALSE;}BOOL NPC_ActioneEquitCheck(int meindex,int talker,int itemNo, int flg){	int i;	int itemindex=-1;	int id;	for( i=0;i<CHAR_STARTITEMARRAY;i++ ){		itemindex = CHAR_getItemIndex( talker , i );		if( ITEM_CHECKINDEX( itemindex) )	{			id=ITEM_getInt(itemindex ,ITEM_ID );			if( NPC_ActionBigSmallLastCheck(itemNo,id,flg) == TRUE )				return TRUE;		}	}	return FALSE;}BOOL NPC_ActionItemCheck(int meindex,int talker,int itemNo, int flg){	int i;	int itemindex=-1;	int id;	for( i=CHAR_STARTITEMARRAY;i<CHAR_MAXITEMHAVE;i++ ){		itemindex = CHAR_getItemIndex( talker , i );		if( ITEM_CHECKINDEX( itemindex) )	{			id=ITEM_getInt(itemindex ,ITEM_ID );			if( NPC_ActionBigSmallLastCheck(itemNo,id,flg) == TRUE )				return TRUE;		}	}	return FALSE;}BOOL NPC_ActionBigSmallLastCheck(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 ActionCheckMyPet( int meindex, int talker, int petLv, int flg, int petid){	int petsel,petindex=-1;		int lv=-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	{	//找到条件宠		lv = CHAR_getInt( petindex, CHAR_LV);		if( NPC_ActionBigSmallLastCheck( petLv, lv, flg) == TRUE)	{			return TRUE;		}else	{			return FALSE;		}	}	return FALSE;                                             }BOOL NPC_ActionCheckTrans(int meindex,int talker,int trans,int flg){	int myTrans;	myTrans=CHAR_getInt(talker, CHAR_TRANSMIGRATION);	if( NPC_ActionBigSmallLastCheck( trans, myTrans, flg ) == TRUE )	{             return TRUE;        }                   	return FALSE;}#ifdef _VIP_SHOPBOOL NPC_ActionVipPointCheck(int meindex,int talker,int point,int flg){	int mypoint;	mypoint=CHAR_getInt(talker,CHAR_AMPOINT);	if(NPC_ActionBigSmallLastCheck( point, mypoint, flg) == TRUE){		return TRUE;	}	return FALSE;}#endif#ifdef _VIP_RIDEBOOL NPC_ActionVipCheck(int meindex,int talker,int vip,int flg){	if(NPC_ActionBigSmallLastCheck( CHAR_getInt(talker,CHAR_VIPRIDE), vip, flg) == TRUE){		return TRUE;	}	return FALSE;}#endifBOOL NPC_ActionLevelCheck(int meindex,int talker,int level,int flg){	int mylevel;	mylevel=CHAR_getInt(talker,CHAR_LV);	if(NPC_ActionBigSmallLastCheck( level, mylevel, flg) == TRUE){		return TRUE;	}

⌨️ 快捷键说明

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