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

📄 cbevent.cpp

📁 网页游戏赤壁
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			WORD		Pos1=0;
			UNIT_STRUCT * Pobject2;
			WORD		Pos2=0;
			UNIT_STRUCT * Pobject3;
			WORD		Pos3=0;

			for (i=0;i<PLAYER_GROUP_MAX;i++)
			{
				if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					if ( EYE_IfUnitIsDead( pUnit ) )
						continue;
					if ( pUnit->Gen.nID == 34 )
					{
						//赵云
						Pobject1=pUnit;
						Pos1=1;
					}
					else if ( pUnit->Gen.nID == 35 )
					{
						// 张飞
						Pobject2=pUnit;
						Pos2=1;
					}
					else if ( pUnit->Gen.nID == 36 )
					{
						// 关羽
						Pobject3=pUnit;
						Pos3=1;
					}
				}
			}

			for (i=0;i<PLAYER_GROUP_MAX;i++)
			{
				if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					//曹操
					if ( !EYE_IfUnitIsDead( pUnit ) 
						&& pUnit->Gen.nID == 60 )
					{
						if (Pos1 == 1 && EventPos[Level][0] == 0)
						{
							// 曹操遇到赵云,刘备方士气增加20
							if (pUnit->Draw.nX < Pobject1->Draw.nX+10
							&&pUnit->Draw.nX > Pobject1->Draw.nX-10
							&&pUnit->Draw.nY < Pobject1->Draw.nY+10
							&&pUnit->Draw.nY > Pobject1->Draw.nY-10)
							{
								EventPos[Level][0]=1;
								//FACE_ShowEvent(9);
								// Nov.21.1997
								PostMessage( hwndGame, WM_SHOW_EVENT, 9, 0 );
								TY_BateMorale(GAME.nMe, 20);
								break;
							}
						}
						if (Pos2 == 1 && EventPos[Level][1] == 0)
						{
							// 曹操遇到张飞,刘备方士气增加20
							if (pUnit->Draw.nX < Pobject2->Draw.nX+10
							&&pUnit->Draw.nX > Pobject2->Draw.nX-10
							&&pUnit->Draw.nY < Pobject2->Draw.nY+10
							&&pUnit->Draw.nY > Pobject2->Draw.nY-10)
							{
								EventPos[Level][1]=1;
								//FACE_ShowEvent(10);
								// Nov.21.1997
								PostMessage( hwndGame, WM_SHOW_EVENT, 10, 0 );
								TY_BateMorale(GAME.nMe, 20);
								break;
							}
						}
						if (Pos3 == 1 && EventPos[Level][2] == 0)
						{
							// 曹操遇到关羽,游戏结束
							if (pUnit->Draw.nX < Pobject3->Draw.nX+10
							&&pUnit->Draw.nX > Pobject3->Draw.nX-10
							&&pUnit->Draw.nY < Pobject3->Draw.nY+10
							&&pUnit->Draw.nY > Pobject3->Draw.nY-10)
							{
								EventPos[Level][2]=1;
								//FACE_ShowEvent(11);
								// Nov.21.1997
								//PostMessage( hwndGame, WM_SHOW_EVENT, 11, 0 );
								ret = 2;
								break;
							}
						}

						// 曹操到达界碑,游戏结束
						if (pUnit->Draw.nX > SAFEAREA14_EX-10
							&&pUnit->Draw.nX < SAFEAREA14_EX+10
							&&pUnit->Draw.nY < SAFEAREA14_EY+10
							&&pUnit->Draw.nY > SAFEAREA14_EY-10)
						{
							ret = 2;
						}
					}
					break;
				}
			}
		}	// end of case14
		break;

	case	19:
		// 在任何一支曹操部队到达某一点后,自动放火
		// 注意:EventPos[level][1]的第二个分量必须是1,用于和前面的火攻统一
		if( EventPos[Level][1] == 1 )
			break;
		{
			UNIT_STRUCT * Pobject = NULL;
			for ( i=0; i<PLAYER_GROUP_MAX; i++ )
			{
				if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					if( EYE_IfUnitIsDead( pUnit ) == TRUE )
						continue;
					if (pUnit->Draw.nX > SAFEAREA19_EX-10
						&&pUnit->Draw.nX < SAFEAREA19_EX+10
						&&pUnit->Draw.nY < SAFEAREA19_EY+10
						&&pUnit->Draw.nY > SAFEAREA19_EY-10)
					{	// 曹操有部队到达指定位置
						Pobject	= pUnit;
					}
				}
			}
			if( Pobject == NULL )
				break;

			for ( i=0; i<PLAYER_GROUP_MAX; i++ )
			{
				if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					if( EYE_IfUnitIsDead( pUnit ) == TRUE
						|| pUnit->Status.bIRQ == TRUE )
						continue;
					//使用火计
					EventPos[Level][1] = 1;
					// 人为地增加火攻所必须的谋略值
					DATA_Lib.Gen[pUnit->Gen.nID].nMouLue += RUN_MOULUE_nConsume[HUOGONG];

					struct CTRL_TASK_STRUCT Task;
					CTRL_TASK_Clear( &Task );
					Task.nID = pUnit->nID;
					Task.nTaskID = JIMOU;
					Task.nTaskIDEx2 = HUOGONG;
					Task.nTaskIDEx = 1; // MOUSE_HITRESULT_GROUND
					Task.nParam1 = 0;
					Task.nParam2 = SAFEAREA19_EX;
					Task.nParam3 = SAFEAREA19_EY;
					Task.bDone = TRUE;
					// 下达命令
					CTRL_TASK_DeployByComputer( AIPlayer, &Task );
				}
			}
		}
		break;

	case	20:
		// 在任何一支曹操部队到达某一点后,自动放火
		// 注意:EventPos[level][1]的第二个分量必须是1,用于和前面的火攻统一
		if( EventPos[Level][1] == 1 )
			break;
		{
			UNIT_STRUCT * Pobject = NULL;
			for ( i=0; i<PLAYER_GROUP_MAX; i++ )
			{
				if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					if( EYE_IfUnitIsDead( pUnit ) == TRUE )
						continue;
					if (pUnit->Draw.nX > SAFEAREA20_EX-10
						&&pUnit->Draw.nX < SAFEAREA20_EX+10
						&&pUnit->Draw.nY < SAFEAREA20_EY+10
						&&pUnit->Draw.nY > SAFEAREA20_EY-10)
					{	// 曹操有部队到达指定位置
						Pobject	= pUnit;
					}
				}
			}
			if( Pobject == NULL )
				break;

			for ( i=0; i<PLAYER_GROUP_MAX; i++ )
			{
				if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					if( EYE_IfUnitIsDead( pUnit ) == TRUE
						|| pUnit->Status.bIRQ == TRUE )
						continue;
					//使用火计
					EventPos[Level][1] = 1;
					// 人为地增加火攻所必须的谋略值
					DATA_Lib.Gen[pUnit->Gen.nID].nMouLue += RUN_MOULUE_nConsume[HUOGONG];

					struct CTRL_TASK_STRUCT Task;
					CTRL_TASK_Clear( &Task );
					Task.nID = pUnit->nID;
					Task.nTaskID = JIMOU;
					Task.nTaskIDEx2 = HUOGONG;
					Task.nTaskIDEx = 1; // MOUSE_HITRESULT_GROUND
					Task.nParam1 = 0;
					Task.nParam2 = SAFEAREA20_EX;
					Task.nParam3 = SAFEAREA20_EY;
					Task.bDone = TRUE;
					// 下达命令
					CTRL_TASK_DeployByComputer( AIPlayer, &Task );
				}
			}
		}
		break;
	case	27:

		// 曹操造出连船
		if( EventPos[Level][0] == 1 )
			break;
		for( i=0; i<PLAYER_UNIT_MAX; i++ )
		{
			if( GAME.Players[GAME.nMe].Unit[i].nID == MAP_DATA_NONE )
				continue;
			pUnit = &GAME.Players[GAME.nMe].Unit[i];
			Assert( pUnit );
			if( !EYE_IfUnitIsDead( pUnit )
				&& pUnit->Draw.nFile == 49 )	// 连船
			{
				EventPos[Level][0] = 1;
				//FACE_ShowEvent( 5 );
				// Nov.21.1997
				PostMessage( hwndGame, WM_SHOW_EVENT, 5, 0 );
			}
		}
		break;

	case	29:
		// 在任何一支曹操部队到达某一点后,自动放火
		// 注意:EventPos[level][1]的第二个分量必须是1,用于和前面的火攻统一
		if( EventPos[Level][1] == 1 )
			break;
		{
			UNIT_STRUCT * Pobject = NULL;
			for ( i=0; i<PLAYER_GROUP_MAX; i++ )
			{
				if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					if( EYE_IfUnitIsDead( pUnit ) == TRUE )
						continue;
					if (pUnit->Draw.nX > SAFEAREA29_EX-10
						&&pUnit->Draw.nX < SAFEAREA29_EX+10
						&&pUnit->Draw.nY < SAFEAREA29_EY+10
						&&pUnit->Draw.nY > SAFEAREA29_EY-10)
					{	// 曹操有部队到达指定位置
						Pobject	= pUnit;
					}
				}
			}
			if( Pobject == NULL )
				break;

			for ( i=0; i<PLAYER_GROUP_MAX; i++ )
			{
				if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					if( EYE_IfUnitIsDead( pUnit ) == TRUE
						|| pUnit->Status.bIRQ == TRUE )
						continue;
					//使用火计
					EventPos[Level][1] = 1;
					// 人为地增加火攻所必须的谋略值
					DATA_Lib.Gen[pUnit->Gen.nID].nMouLue += RUN_MOULUE_nConsume[HUOGONG];

					struct CTRL_TASK_STRUCT Task;
					CTRL_TASK_Clear( &Task );
					Task.nID = pUnit->nID;
					Task.nTaskID = JIMOU;
					Task.nTaskIDEx2 = HUOGONG;
					Task.nTaskIDEx = 1; // MOUSE_HITRESULT_GROUND
					Task.nParam1 = 0;
					Task.nParam2 = SAFEAREA29_EX;
					Task.nParam3 = SAFEAREA29_EY;
					Task.bDone = TRUE;
					// 下达命令
					CTRL_TASK_DeployByComputer( AIPlayer, &Task );
				}
			}
		}
		break;

	case 30:
		{
			UNIT_STRUCT * Pobject1;
			WORD		Pos1=0;
			UNIT_STRUCT * Pobject2;
			WORD		Pos2=0;
			UNIT_STRUCT * Pobject3;
			WORD		Pos3=0;

			for (i=0;i<PLAYER_GROUP_MAX;i++)
			{
				if ( GAME.Players[AIPlayer].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[AIPlayer].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );
					if ( EYE_IfUnitIsDead( pUnit ) )
						continue;
					if ( pUnit->Gen.nID == 34 )
					{
						//赵云
						Pobject1=pUnit;
						Pos1=1;
					}
					else if ( pUnit->Gen.nID == 35 )
					{
						// 张飞
						Pobject2=pUnit;
						Pos2=1;
					}
					else if ( pUnit->Gen.nID == 36 )
					{
						// 关羽
						Pobject3=pUnit;
						Pos3=1;
					}
				}
			}

			for (i=0;i<PLAYER_GROUP_MAX;i++)
			{
				if ( GAME.Players[GAME.nMe].wGroup[i] != MAP_DATA_NONE )
				{
					pUnit = MAP_GetUnit( GAME.Players[GAME.nMe].wGroup[i] );
					Assert( pUnit );
					Assert( EYE_IfUnitIsGen( pUnit ) );

					if( !EYE_IfUnitIsDead( pUnit ) )
					{
						// 任何将领到达界碑,游戏结束
						if (pUnit->Draw.nX > SAFEAREA30_EX-10
							&&pUnit->Draw.nX < SAFEAREA30_EX+10
							&&pUnit->Draw.nY < SAFEAREA30_EY+10
							&&pUnit->Draw.nY > SAFEAREA30_EY-10)
						{
							ret = 1;
							break;
						}
					}
					
					//曹操
					if ( !EYE_IfUnitIsDead( pUnit ) 
						&& pUnit->Gen.nID == 60 )
					{
						if (Pos1 == 1 && EventPos[Level][0] == 0)
						{
							// 曹操遇到赵云,曹操方士气减少20
							if (pUnit->Draw.nX < Pobject1->Draw.nX+10
							&&pUnit->Draw.nX > Pobject1->Draw.nX-10
							&&pUnit->Draw.nY < Pobject1->Draw.nY+10
							&&pUnit->Draw.nY > Pobject1->Draw.nY-10)
							{
								EventPos[Level][0]=1;
								//FACE_ShowEvent(9);
								// Nov.21.1997
								PostMessage( hwndGame, WM_SHOW_EVENT, 9, 0 );
								TY_BateMorale(GAME.nMe, -20);
								break;
							}
						}
						if (Pos2 == 1 && EventPos[Level][1] == 0)
						{
							// 曹操遇到张飞,曹操方士气减少20
							if (pUnit->Draw.nX < Pobject2->Draw.nX+10
							&&pUnit->Draw.nX > Pobject2->Draw.nX-10
							&&pUnit->Draw.nY < Pobject2->Draw.nY+10
							&&pUnit->Draw.nY > Pobject2->Draw.nY-10)
							{
								EventPos[Level][1]=1;
								FACE_ShowEvent(10);
								// Nov.21.1997
								PostMessage( hwndGame, WM_SHOW_EVENT, 10, 0 );
								TY_BateMorale(GAME.nMe, -20);
								break;
							}
						}
						if (Pos3 == 1 && EventPos[Level][2] == 0)
						{
							// 曹操遇到关羽,游戏结束
							if (pUnit->Draw.nX < Pobject3->Draw.nX+10
							&&pUnit->Draw.nX > Pobject3->Draw.nX-10
							&&pUnit->Draw.nY < Pobject3->Draw.nY+10
							&&pUnit->Draw.nY > Pobject3->Draw.nY-10)
							{
								EventPos[Level][2]=1;
								//FACE_ShowEvent(11);
								// Nov.21.1997
								//PostMessage( hwndGame, WM_SHOW_EVENT, 11 );
								ret = 1;
								break;
							}
						}
					}
					break;
				}
			}
		}
		break;
	}	// end of Switch
	return ret;
}

inline BOOL EVENT_EndInTime( int nGameID )
{
	switch( nGameID )
	{
		case	21:	// 刘备撤出战场,被消灭
		case	22: // 三天内灭刘备军,曹操分支一
			break;
	}
	return FALSE;
}

inline BOOL EVENT_FightSingle( int nGameID, int nGenID1, int nGenID2 )
{
	//case	8:	// 单挑夏侯恩
	return FALSE;
}

inline BOOL EVENT_Number( int nGameID )
{
	//case	24:	// 十天后,我军人数超过敌人
	return FALSE;
}

⌨️ 快捷键说明

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