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

📄 battle_command.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 3 页
字号:
			}						if( CHAR_getWorkInt( charaindex, CHAR_WORKOBLIVION ) > 0 ){				flg |= BC_FLG_OBLIVION;			// 遗忘			}			if( CHAR_getWorkInt( charaindex, CHAR_WORKICEARROW ) > 0 ){				flg |= BC_FLG_ICEARROW;			// 冰箭			}			if( CHAR_getWorkInt( charaindex, CHAR_WORKBLOODWORMS ) > 0 ){				flg |= BC_FLG_BLOODWORMS;		// 嗜血蛊			}			if( CHAR_getWorkInt( charaindex, CHAR_WORKSIGN ) > 0 ){				flg |= BC_FLG_SIGN;				// 一针见血			}					if( CHAR_getWorkInt( charaindex, CHAR_WORKINSTIGATE ) > 0 ){				flg |= BC_FLG_CARY;				// 挑拨			}			if( CHAR_getWorkInt( charaindex, CHAR_WORK_F_ENCLOSE ) > 0 ){				flg |= BC_FLG_F_ENCLOSE;		// 火附体			}			if( CHAR_getWorkInt( charaindex, CHAR_WORK_I_ENCLOSE ) > 0 ){				flg |= BC_FLG_I_ENCLOSE;		// 冰附体			}			if( CHAR_getWorkInt( charaindex, CHAR_WORK_T_ENCLOSE ) > 0 ){				flg |= BC_FLG_T_ENCLOSE;		// 雷附体			}#endif#ifdef _PROFESSION_ADDSKILL			if( CHAR_getWorkInt( charaindex, CHAR_WORKANNEX ) > 0 ){				flg |= BC_FLG_T_ENCLOSE;		// 附身术			}			if( CHAR_getWorkInt( charaindex, CHAR_WORKWATER ) > 0 ){				flg |= BC_FLG_WATER;		// 水附体			}			if( CHAR_getWorkInt( charaindex, CHAR_WORKFEAR ) > 0 ){				flg |= BC_FLG_FEAR;		// 恐惧			}#endif#ifdef _PETSKILL_LER			if(CHAR_getWorkInt(charaindex,CHAR_WORK_RELIFE) > 0){				flg |= BC_FLG_CHANGE;		// 雷尔变身				CHAR_setWorkInt(charaindex,CHAR_WORK_RELIFE,0);			}#endif			makeEscapeString( CHAR_getUseName( charaindex ),				szEscapeName, 				sizeof( szEscapeName ) );			makeEscapeString( BATTLE_CharTitle( charaindex ),				szEscapeTitle, 				sizeof( szEscapeTitle ) ); // Robin 0728 ride Pet			petindex = BATTLE_getRidePet( charaindex );			if( petindex != -1 ){				rideflg = 1;				makeEscapeString( CHAR_getUseName( petindex ),					szEscapePetName, 					sizeof( szEscapePetName ) );				petlevel = CHAR_getInt( petindex, CHAR_LV);				pethp = CHAR_getInt( petindex, CHAR_HP);				petmaxhp = CHAR_getWorkInt( petindex, CHAR_WORKMAXHP);							}else {				if( CHAR_getWorkInt( charaindex, CHAR_WORKPETFALL ) == 1 ){					rideflg = -1;#ifdef _PETSKILL_BECOMEFOX // 若中了媚惑术而落马时将讯息传给 Client					if( CHAR_getWorkInt( charaindex, CHAR_WORKFOXROUND ) != -1 )						rideflg = -2; //client用来判断显示落马的文字 (对应的client变数为p_party[ BattleMyNo ]->onRide)#endif#ifdef _PETSKILL_BECOMEPIG // 若中了乌力化而落马时将讯息传给 Client					if( CHAR_getInt( charaindex, CHAR_BECOMEPIG) > 120 )//变成乌力了						rideflg = -3; //client用来判断显示落马的文字 (对应的client变数为p_party[ BattleMyNo ]->onRide)#endif					 CHAR_setWorkInt( charaindex, CHAR_WORKPETFALL, 0 );				}				else					rideflg = 0;				szEscapePetName[0] = 0;				petlevel = 0;				pethp = 0;				petmaxhp = 0;			}			sprintf( szBuffer, "%X|%s|%s|%X|%X|%X|%X|%X|%X|%s|%X|%X|%X|",				pEntry[i].bid,				szEscapeName,				szEscapeTitle,				CHAR_getInt( charaindex, CHAR_BASEIMAGENUMBER ),				CHAR_getInt( charaindex, CHAR_LV ),				max( CHAR_getInt( charaindex, CHAR_HP ),0),				CHAR_getWorkInt( charaindex, CHAR_WORKMAXHP ),				flg,				rideflg,				szEscapePetName,				petlevel,				pethp,				petmaxhp			);			STRCPY_TAIL( pszTop, pszLast, szBuffer );			if( pszTop >= pszLast )return FALSE;// 译尹凶日撩  		}	}	return TRUE;}void BATTLE_BpSendToWatch(	BATTLE *pBattle, 	// 棋爵田玄伙正旦弁及禾奶件正	char *pszBcString 	// BC  侬  ){	char szBp[256];	int flg = 0, i, charaindex;//	for( ; pBattle ; pBattle = pBattle->pNext ){	if( pBattle == NULL )return;	// 仇及失玉伊旦互恳仄中井民尼永弁	if( BATTLE_CHECKADDRESS( pBattle ) == FALSE ){		fprint( "err:观战battle address错误(%p)\n", pBattle );		return;	}	// 蝈够卞霜耨	for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){		charaindex = pBattle->Side[0].Entry[i].charaindex;		if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue;		if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) 			!= CHAR_TYPEPLAYER ) continue;		if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE )			== BATTLE_CHARMODE_WATCHINIT){			flg |= BP_FLG_JOIN;	// 蕙筋辅笛		}		flg |= BP_FLG_PLAYER_MENU_OFF;	// 皿伊奶乩□丢瓦亘□请今卅中		// 皿伊奶乩□  寞霜月		sprintf( szBp, "BP|%X|%X|%X", 20, flg, 0 );		BATTLE_CommandSend( charaindex, szBp );		// 蝈够隋骚树  霜月		BATTLE_CommandSend( charaindex, pszBcString );	}	// 戊穴件玉谨切尺	pBattle->mode = BATTLE_MODE_WATCHPRE;//	}}void BATTLE_CharSendAll( int battleindex ){	int i, j, charaindex, flg, pet, At_SoubiIndex, pindex;	char szBp[256];	BATTLE	*pBattle;	BATTLE_MakeCharaString(		battleindex,		szAllBattleString,		sizeof(szAllBattleString)	);	for( j = 0; j < 2; j ++ ){		for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){			charaindex = BattleArray[battleindex].Side[j].Entry[i].charaindex;			if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue;			if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER )continue;			flg = 0;			if( BattleArray[battleindex].Side[j].flg & BSIDE_FLG_SURPRISE ){				flg |= BP_FLG_ENEMY_SURPRISAL;			}else				if( BattleArray[battleindex].Side[1-j].flg & BSIDE_FLG_SURPRISE ){					flg |= BP_FLG_PLAYER_SURPRISAL;				}				if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE )					== BATTLE_CHARMODE_RESCUE){					flg |= BP_FLG_JOIN;		// 辅爵				}			At_SoubiIndex = CHAR_getItemIndex( charaindex, CHAR_ARM );			if( ITEM_CHECKINDEX( At_SoubiIndex ) == FALSE ){			}else{				if( ITEM_getInt( At_SoubiIndex, ITEM_TYPE ) == ITEM_BOOMERANG ){					flg |= BP_FLG_BOOMERANG;				}			}			pet = CHAR_getInt( charaindex, CHAR_DEFAULTPET );			if( pet >= 0 ){				snprintf( szBp, sizeof( szBp ), "K%d", pet );				CHAR_sendStatusString( charaindex, szBp );								pindex = CHAR_getCharPet( charaindex, pet );#ifdef _PETSKILL_DAMAGETOHP	{/*		让开,让开~~~~~~~                                    ΘΘ               ⊙  ⊙  我来给你送月饼了*/		char msg[32]={0};		//print("\n宠物id:%d",CHAR_getInt( pindex, CHAR_PETID)); 		//print("\n宠物名:%s",CHAR_getChar( pindex, CHAR_NAME)); 		//if( CHAR_getInt( pindex, CHAR_PETID) == 777 ){//宠物ID 水双头狼		//	  || CHAR_getInt( pindex, CHAR_PETID) == 146 ) //火双头狼		//	&& CHAR_getInt( pindex, CHAR_HP) ){		    sprintf( msg, "o%d", pet );		    CHAR_sendStatusString( charaindex, msg );					//}	} #endif#ifdef _PETSKILL_BECOMEFOX // 限制中了媚惑术的宠物的技能		    //if( CHAR_getInt( pindex, CHAR_BASEIMAGENUMBER) == 101749 ){	        if( CHAR_getWorkInt( pindex, CHAR_WORKFOXROUND ) != -1 ){ //若是变成小狐狸			    char msg[32]={0};				sprintf( msg, "a%d", pet );		        CHAR_sendStatusString( charaindex, msg );							}#endif				if( CHAR_CHECKINDEX( pindex ) == TRUE ){					if( BATTLE_IsCharge( pindex  ) == TRUE){						flg |= BP_FLG_PET_MENU_OFF;					}					if( BATTLE_CanMoveCheck( pindex ) == FALSE ){						flg |= BP_FLG_PET_MENU_OFF;					}					if( CHAR_getFlg( pindex, CHAR_ISDIE ) == TRUE ){						flg |= BP_FLG_PET_MENU_OFF;					}				}			}else{				flg |= BP_FLG_PET_MENU_OFF;			}			if( BATTLE_CanMoveCheck( charaindex ) == FALSE				|| CHAR_getFlg( charaindex, CHAR_ISDIE ) == TRUE			){				flg |= BP_FLG_PLAYER_MENU_OFF;			}			if( BattleArray[battleindex].Side[j].flg & BSIDE_FLG_SURPRISE ){				flg |= BP_FLG_PLAYER_MENU_OFF;				flg |= BP_FLG_PET_MENU_OFF;			}			sprintf( szBp, "BP|%X|%X|%X",				i + SIDE_OFFSET * j,				flg, CHAR_getInt( charaindex, CHAR_MP )			);			BATTLE_CommandSend( charaindex, szBp );			BATTLE_CommandSend( charaindex, szAllBattleString );		}	}	pBattle = BattleArray[battleindex].pNext;	for( ; pBattle ; pBattle = pBattle->pNext ){		// 仇及失玉伊旦互恳仄中井民尼永弁		if( BATTLE_CHECKADDRESS( pBattle ) == FALSE ){			fprint( "err:观战battle address错误(%p)\n", pBattle );			break;		}		BATTLE_BpSendToWatch( pBattle, szAllBattleString );	}}void BattleEncountOut( int charaindex){	if( CHAR_CHECKINDEX( charaindex ) == FALSE )return;	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEINDEX, -1 );	CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_MODE_NONE );    CHAR_sendCToArroundCharacter( CHAR_getWorkInt( charaindex, CHAR_WORKOBJINDEX ) );    CHAR_sendArroundCharaData( charaindex );	if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEWATCH ) == 0 ){		CHAR_sendBattleEffect( charaindex, OFF);	}else{		CHAR_sendBattleWatch( CHAR_getWorkInt( charaindex, CHAR_WORKOBJINDEX ), OFF);		CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEWATCH, 0 );	}   	if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT ){		int pmode/*, battleindex*/;		int pindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1 );		pmode = CHAR_getWorkInt( pindex, CHAR_WORKBATTLEMODE );		if( pmode > 0 && pmode != BATTLE_CHARMODE_FINAL ){				BATTLE_RescueParentTry( charaindex, pindex );				print( "较慢参加战斗(%s)\n", CHAR_getUseName( charaindex ) );		}	}}//**************************************************//// 犯白巧伙玄及戊穴件玉毛  木月矢永玄迕//BOOL	BATTLE_PetDefaultCommand( int petindex )////**************************************************{	if( CHAR_CHECKINDEX( petindex ) == FALSE )return FALSE;	// 锹澎及隙烂	CHAR_setWorkInt( petindex, CHAR_WORKBATTLECOM2, -1 );	// 骚橘  猾及隙烂	CHAR_setWorkInt( petindex, CHAR_WORKBATTLECOM1, BATTLE_COM_ATTACK );	// 戊穴件玉OK及隙烂	CHAR_setWorkInt( petindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK );	return TRUE;}#if 0{	int Sign, Damage, i;	Sign = (LifeUp >= 0)?(1):(0);	Damage = ABS( LifeUp );	for( i = 0; i < ; i ++ ){	// (蕙滇)仇仇匹戊穴件玉毛中木月	snprintf( szCommand, sizeof(szCommand),	"BD|r%X|0|%X|d%X|", ToList[i], Sign, Damage );	BATTLESTR_ADD( szCommand );}#endif// Robin fix 检查石化昏睡不可战斗int checkErrorStatus( int charaindex){	//if( BATTLE_CanMoveCheck( charaindex) == FALSE) {	if( 		CHAR_getWorkInt( charaindex, CHAR_WORKPARALYSIS ) > 0	// 麻痹		|| CHAR_getWorkInt( charaindex, CHAR_WORKSTONE ) > 0	// 石化		|| CHAR_getWorkInt( charaindex, CHAR_WORKSLEEP ) > 0	// 睡眠		//|| CHAR_getWorkInt( charaindex, CHAR_WORKBARRIER ) > 0	// 魔障		|| CHAR_getWorkInt( charaindex, CHAR_WORKDIZZY ) > 0	// 晕眩		|| CHAR_getWorkInt( charaindex, CHAR_WORKDRAGNET ) > 0	// 天罗地网		//|| CHAR_getWorkInt( charaindex, CHAR_WORK_T_ENCLOSE ) > 0 // 雷附体#ifdef _PROFESSION_ADDSKILL//		|| CHAR_getWorkInt( charaindex, CHAR_DOOMTIME ) > 0 //世界末日集气#endif	)	{		char cdkey[128];		if( CHAR_getInt( charaindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER)			strcpy( cdkey, CHAR_getChar( charaindex, CHAR_CDKEY));		else			strcpy( cdkey, CHAR_getChar( charaindex, CHAR_OWNERCDKEY) );			print("\n 改封包!不可战斗的状态!!:%s ", cdkey );		return 1;	}	return 0;}

⌨️ 快捷键说明

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