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

📄 tgeneral.cpp

📁 赤壁之战(游戏原码)
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				   }
				   if (Pobject1->Task.nTaskID == HUISONG)
				   {
					   if (Pobject->Task.nParam4 != Pobject1->Task.nParam1)
					   {
						     Pobject->Task.nParam4=Pobject1->Task.nParam1;
					   }

				   }

				   
			   }
			   */
			   if ( Pobject->Task.nTaskID != HUISONG
				 && Pobject->Task.nTaskID != YUNSONG
				 && Pobject->nIDAttackMe == MAP_DATA_NONE)
			   {  if (Pobject->Soldier.nResource != 0)
			      {  CTRL_TASK_Clear( &Task );   
				     Task.bDone=1;
					 Task.nID=Foodworker[player].WorkerArrays[i];
					 Task.nTaskID=HUISONG;
					 Task.nTaskIDEx=2;
                     Task.nTaskIDEx2=MAITIAN;
					 Task.nParam1=TY_FindNearHome(player,Tsource[player].Foodsource.X,Tsource[player].Foodsource.Y,1);
					 if (Task.nParam1 == MAP_DATA_NONE)
							 return;
                     Task.nParam2=0; 
					 Task.nParam3=Tsource[player].Foodsource.X;
					 Task.nParam4=Tsource[player].Foodsource.Y;
					 CTRL_TASK_DeployByComputer(player,&Task);	
			      }
			      else
				  {   if (Tsource[player].Foodsource.POS != CBTRUE)
				         return;
					  CTRL_TASK_Clear( &Task );
					  Task.bDone=1;
					  Task.nID=Foodworker[player].WorkerArrays[i];
					  Task.nTaskID=YUNSONG;
					  Task.nTaskIDEx=1;
					  Task.nTaskIDEx2=MAITIAN;
					  Task.nParam1=0;
					  Task.nParam2=Tsource[player].Foodsource.X;
					  Task.nParam3=Tsource[player].Foodsource.Y;
					  Task.nParam4=TY_FindNearHome(player,Tsource[player].Foodsource.X,Tsource[player].Foodsource.Y,1);
					  if (Task.nParam4 == MAP_DATA_NONE)
							 return;
					  CTRL_TASK_DeployByComputer(player,&Task);	
				  }
			   }
			}
		 }
      }
   }

//General avoid.

}


//scan attack .
//scan sucess.

void AttackGeneralProcess(WORD player,WORD Which)
{  WORD i;
   WORD Attack0;
   UNIT_STRUCT * Pobject;
   UNIT_STRUCT * Pobject1;
   UNIT_STRUCT * Pobject2;
   struct CTRL_TASK_STRUCT Task;

   if (Pro[player][Which].AttComFinish != 1 )
      return;
   if (Attacksoldier[player][Which].GeneralID == 65535
	 ||Attacksoldier[player][Which].GeneralID == CBNULL
	 ||Attacksoldier[player][Which].GeneralID == CBFALSE)
       return;
   Pobject=MAP_GetUnit(Attacksoldier[player][Which].GeneralID);

   //以防万一
   if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
	   ||Pobject->nType == MAP_UNIT_TYPE_NONE
		  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
		  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
		  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
		  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD
		  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
	   return;

   if (Pobject->nIDAttackMe != MAP_DATA_NONE)
   {  
	  Pobject1=MAP_GetUnit(Pobject->nIDAttackMe);

	  //以防万一
	   if (Pobject1->nType == MAP_UNIT_TYPE_BUILDING
		   ||Pobject1->nType == MAP_UNIT_TYPE_NONE
		  ||Pobject1->nType == MAP_UNIT_TYPE_RESOURCE
		  ||Pobject1->nType == MAP_UNIT_TYPE_SPECIAL
		  ||Pobject1->nType == MAP_UNIT_TYPE_FLAG
		  ||Pobject1->nType == MAP_UNIT_TYPE_SHIPYARD
		  ||Pobject1->nType == MAP_UNIT_TYPE_LADDER)
		   return;

	  if (EYE_GetGeneral(Pobject1) != NULL)
      {
		  Pobject2=MAP_GetUnit(Pobject1->Gen.nID);

		  //以防万一
		   if (Pobject2->nType == MAP_UNIT_TYPE_BUILDING
			   ||Pobject2->nType == MAP_UNIT_TYPE_NONE
			  ||Pobject2->nType == MAP_UNIT_TYPE_RESOURCE
			  ||Pobject2->nType == MAP_UNIT_TYPE_SPECIAL
			  ||Pobject2->nType == MAP_UNIT_TYPE_FLAG
			  ||Pobject2->nType == MAP_UNIT_TYPE_SHIPYARD
			  ||Pobject2->nType == MAP_UNIT_TYPE_LADDER)
			   return;

		  if (EYE_IfUnitIsDead(Pobject2) != TRUE)
		  {
			  if (Pobject1->nLife < Pobject->nLife)
			  {
				  if (getrandom( 0,20 ) > 16
						&&EYE_IfFight(Pobject->nLife,
						  DATA_Lib.Gen[Pobject->Gen.nID].nWuLi,
						  Pobject1->nLife,
						  DATA_Lib.Gen[Pobject1->Gen.nID].nWuLi))
				  {
					  //单挑
					  CTRL_TASK_Clear( &Task );
					  Task.nID=Pobject->nID;
					  Task.nTaskID=DANTIAO;
					  Task.nTaskIDEx=2;
					  Task.nParam1=Pobject1->nID;
					  Task.bDone=1;
					  CTRL_TASK_DeployByComputer(player,&Task);
					  return;
				  }
			  }
		  }
	  }

	  if (EYE_IfUnitIsDead(Pobject1) != TRUE)
	  {
		  if (Pobject->Status.nTaskID == GONGJI
			  &&Pobject1->nID == Pobject->Status.nParam1)
			  return;

		  CTRL_TASK_Clear( &Task );
		  Task.bDone=1;
		  Task.nID=Attacksoldier[player][Which].GeneralID;
		  Task.nTaskID=GONGJI;
		  Task.nTaskIDEx=2;
		  Task.nParam1=Pobject->nIDAttackMe;
		  Attack0=Pobject->nIDAttackMe;
		  CTRL_TASK_DeployByComputer(player,&Task);


		  for (i=1;i<Attacksoldier[player][Which].WorkerNum+1;i++)
		  {  if (Attacksoldier[player][Which].WorkerArrays[i] != CBNULL)
			 {  Pobject1=MAP_GetUnit(Attacksoldier[player][Which].WorkerArrays[i]);

		         //以防万一
				 if (Pobject1->nType == MAP_UNIT_TYPE_BUILDING
					 ||Pobject1->nType == MAP_UNIT_TYPE_NONE
					  ||Pobject1->nType == MAP_UNIT_TYPE_RESOURCE
					  ||Pobject1->nType == MAP_UNIT_TYPE_SPECIAL
					  ||Pobject1->nType == MAP_UNIT_TYPE_FLAG
					  ||Pobject1->nType == MAP_UNIT_TYPE_SHIPYARD
					  ||Pobject1->nType == MAP_UNIT_TYPE_LADDER)
				    return;

		        if (Pobject->nType == 0
					||Pobject->Task.nTaskID == SHANCHU
					||Pobject->nLife <=0)
					continue;
			    CTRL_TASK_Clear( &Task );
				Task.bDone=1;
				Task.nID=Attacksoldier[player][Which].WorkerArrays[i];
				Task.nTaskID=GONGJI;
				Task.nTaskIDEx=2;
				Task.nParam1=Attack0;
				CTRL_TASK_DeployByComputer(player,&Task);
			 }
		  }
#ifdef TY_JIMOU 

			 switch(getrandom( 0,3 ))
			 {
			 case 0:
				 GeneralJiMou(Pobject,HUNLUAN);
				 break;
			 case 1:
				 GeneralJiMou(Pobject,JIANSU);
				 break;
			 case 2:
				 GeneralJiMou(Pobject,JIASU);
				 break;
			 case 3:
				 GeneralJiMou(Pobject,JILI);
				 break;
			 }
#endif
	  }
   }
   else
   {  Pobject=MAP_GetUnit(Attacksoldier[player][Which].GeneralID);

      //以防万一
	   if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
		   ||Pobject->nType == MAP_UNIT_TYPE_NONE
		  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
		  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
		  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
		  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD
		  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
		   return;

      if (Pobject->Task.nTaskID != GONGJI) 
	  {
		  for (i=1;i<Attacksoldier[player][Which].WorkerNum+1;i++)
		  {  if (Attacksoldier[player][Which].WorkerArrays[i] != CBNULL)
			 {  Pobject=MAP_GetUnit(Attacksoldier[player][Which].WorkerArrays[i]);

		        //以防万一
				if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
					||Pobject->nType == MAP_UNIT_TYPE_NONE
				  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
				  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
				  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
				  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD
				  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
				   return;

	            if (Pobject->nType == 0
					||Pobject->Task.nTaskID == SHANCHU
					||Pobject->nLife <=0)
					continue;
	            Assert(Pobject->nType == 3);
                
				if (Pobject->Task.nTaskID == QUXIAO)
				{
					Pobject=MAP_GetUnit(Attacksoldier[player][Which].GeneralID);

					//以防万一
				   if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
					   ||Pobject->nType == MAP_UNIT_TYPE_NONE
					  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
					  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
					  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
					  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD
					  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
					   return;

					if (Pobject->nType == 0
					||Pobject->Task.nTaskID == SHANCHU
					||Pobject->nLife <=0
					||Pobject->Task.nTaskID == JIMOU)
					continue;
					CTRL_TASK_Clear( &Task );
					Task.bDone=1;
					Task.nID=Attacksoldier[player][Which].WorkerArrays[i];
					Task.nTaskID=Pobject->Task.nTaskID;
					Task.nTaskIDEx=Pobject->Task.nTaskIDEx;
					Task.nParam1=Pobject->Task.nParam1;
					CTRL_TASK_DeployByComputer(player,&Task);
				}
				continue;
			 }
		  }

	  }
	  else
	  {
		  Pobject1=MAP_GetUnit(Pobject->Task.nParam1);

		  if (EYE_IfUnitIsDead(Pobject1) != TRUE)
		  {  for (i=1;i<Attacksoldier[player][Which].WorkerNum+1;i++)
			  {  if (Attacksoldier[player][Which].WorkerArrays[i] != CBNULL)
				 {  Pobject=MAP_GetUnit(Attacksoldier[player][Which].WorkerArrays[i]);

					  //以防万一
					   if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
						   ||Pobject->nType == MAP_UNIT_TYPE_NONE
						  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
						  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
						  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
						  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD
						  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
						   return;

					if (Pobject->nType == 0
						||Pobject->Task.nTaskID == SHANCHU
						||Pobject->nLife <=0)
						continue;
					Assert(Pobject->nType == 3);
					if (Which == 3)
					{
						if (Pobject->Task.nTaskID == QUXIAO)
						{
							Pobject=MAP_GetUnit(Attacksoldier[player][Which].GeneralID);

							//以防万一
						   if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
							   ||Pobject->nType == MAP_UNIT_TYPE_NONE
								  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
								  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
								  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
								  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD
								  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
							   return;

							if (Pobject->nType == 0
							||Pobject->Task.nTaskID == SHANCHU
							||Pobject->nLife <=0
							||Pobject->Task.nTaskID == JIMOU)
							continue;
							CTRL_TASK_Clear( &Task );
							Task.bDone=1;
							Task.nID=Attacksoldier[player][Which].WorkerArrays[i];
							Task.nTaskID=Pobject->Task.nTaskID;
							Task.nTaskIDEx=Pobject->Task.nTaskIDEx;
							Task.nParam1=Pobject->Task.nParam1;
							CTRL_TASK_DeployByComputer(player,&Task);
						}
						continue;
					}

					if (Pobject->Status.nTaskID == QUXIAO
					  ||Pobject->Status.nParam1 == 0)
					{   Pobject=MAP_GetUnit(Attacksoldier[player][Which].GeneralID);

					   //以防万一
					   if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
						   ||Pobject->nType == MAP_UNIT_TYPE_NONE
							  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
							  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
							  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
							  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD
							  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
						   return;

                        if (Pobject->nType == 0
						||Pobject->Task.nTaskID == SHANCHU
						||Pobject->nLife <=0
						||Pobject->Task.nTaskID == JIMOU)
						continue;
						CTRL_TASK_Clear( &Task );
						Task.bDone=1;
						Task.nID=Attacksoldier[player][Which].WorkerArrays[i];
						Task.nTaskID=GONGJI;
						Task.nTaskIDEx=2;
						Task.nParam1=Pobject->Task.nParam1;
						if (Task.nParam1 == 0)
							continue;
						CTRL_TASK_DeployByComputer(player,&Task);
					}
				 }
			  }
		  }
	  }
   }
}

void DefanceGeneralProcess(WORD player,WORD Which)
{
   WORD i;
   WORD Defance0;
   UNIT_STRUCT * Pobject;
   UNIT_STRUCT * Pobject1;
   struct CTRL_TASK_STRUCT Task;

   if (Pro[player][Which].DefComFinish != 1 )
      return;
   if (Defancesoldier[player][0].GeneralID == 65535
	 ||Defancesoldier[player][0].GeneralID == CBNULL
	 ||Defancesoldier[player][0].GeneralID == CBFALSE)

       return;
   Pobject=MAP_GetUnit(Defancesoldier[player][0].GeneralID);

   //以防万一
   if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
	   ||Pobject->nType == MAP_UNIT_TYPE_NONE
		  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
		  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
		  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
		  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD
		  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
	   return;

   if (Pobject->nIDAttackMe != MAP_DATA_NONE)
   {  
      Pobject1=MAP_GetUnit(Pobject->nIDAttackMe);

	  //以防万一
	   if (Pobject1->nType == MAP_UNIT_TYPE_BUILDING
		   ||Pobject1->nType == MAP_UNIT_TYPE_NONE
		  ||Pobject1->nType == MAP_UNIT_TYPE_RESOURCE
		  ||Pobject1->nType == MAP_UNIT_TYPE_SPECIAL
		  ||Pobject1->nType == MAP_UNIT_TYPE_FLAG
		  ||Pobject1->nType == MAP_UNIT_TYPE_SHIPYARD
		  ||Pobject1->nType == MAP_UNIT_TYPE_LADDER)
		   return;

	  if (EYE_IfUnitIsDead(Pobject1) != TRUE) 
	  {
		  CTRL_TASK_Clear( &Task );
		  Task.bDone=1;
		  Task.nID=Defancesoldier[player][0].GeneralID;
		  Task.nTaskID=GONGJI;
		  Task.nTaskIDEx=2;
		  Task.nParam1=Pobject->nIDAttackMe;
		  Defance0=Pobject->nIDAttackMe;
		  CTRL_TASK_DeployByComputer(player,&Task);

		  for (i=1;i<Defancesoldier[player][0].WorkerNum+1;i++)
		  {  if (Defancesoldier[player][0].WorkerArrays[i] != CBNULL)
			 {  Pobject1=MAP_GetUnit(Defancesoldier[player][0].WorkerArrays[i]);

			  //以防万一
			   if (Pobject1->nType == MAP_UNIT_TYPE_BUILDING
				   ||Pobject1->nType == MAP_UNIT_TYPE_NONE
				  ||Pobject1->nType == MAP_UNIT_TYPE_RESOURCE
				  ||Pobject1->nType == MAP_UNIT_TYPE_SPECIAL
				  ||Pobject1->nType == MAP_UNIT_TYPE_FLAG
				  ||Pobject1->nType == MAP_UNIT_TYPE_SHIPYARD
				  ||Pobject1->nType == MAP_UNIT_TYPE_LADDER)
				   return;

		        if (Pobject1->nType == 0
					||Pobject1->Task.nTaskID == SHANCHU
					||Pobject1->nLife <=0) 
					continue;
			    CTRL_TASK_Clear( &Task );
				Task.bDone=1;
				Task.nID=Defancesoldier[player][0].WorkerArrays[i];
				Task.nTaskID=GONGJI;
				Task.nTaskIDEx=2;
				Task.nParam1=Defance0;
				CTRL_TASK_DeployByComputer(player,&Task);
			 }
		  }
#ifdef TY_JIMOU 

			 switch(getrandom( 0,1 ))
			 {
			 case 0:
				 GeneralJiMou(Pobject,HUNLUAN);
				 break;
			 case 1:
				 GeneralJiMou(Pobject,JIANSU);
				 break;
			 }
#endif
	  }
   }
   else
   {  Pobject=MAP_GetUnit(Defancesoldier[player][0].GeneralID);

      //以防万一
	   if (Pobject->nType == MAP_UNIT_TYPE_BUILDING
		   ||Pobject->nType == MAP_UNIT_TYPE_NONE
		  ||Pobject->nType == MAP_UNIT_TYPE_RESOURCE
		  ||Pobject->nType == MAP_UNIT_TYPE_SPECIAL
		  ||Pobject->nType == MAP_UNIT_TYPE_FLAG
		  ||Pobject->nType == MAP_UNIT_TYPE_SHIPYARD

⌨️ 快捷键说明

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