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

📄 tgeneral.cpp

📁 赤壁之战(游戏原码)
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		  ||Pobject->nType == MAP_UNIT_TYPE_LADDER)
		   return;

	  if (EYE_IfUnitIsDead(Pobject) != TRUE)
	  {  for (i=1;i<=Defancesoldier[player][0].WorkerNum;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;
				Assert(Pobject1->nType == 3);

				CTRL_TASK_Clear( &Task );
				Task.bDone=1;
				Task.nID=Defancesoldier[player][0].WorkerArrays[i];
				Task.nTaskID=Pobject->Task.nTaskID;
				if (Task.nTaskID == GONGJI)
                  Task.nTaskIDEx=2;
				else
				{
					if (Task.nTaskID == YIDONG)
					{
						Task.nParam2=Pobject->Task.nParam2;
						Task.nParam3=Pobject->Task.nParam3;
						Task.nParam1=0;
						Task.nTaskIDEx=1;
					}
					else
					{
						if (Task.nTaskID == QUXIAO)
						{
							//Task.nTaskID=QUXIAO;
							continue;
						}
						else
							continue;
					}	
				}
				Task.nParam1=Pobject->Task.nParam1;
				CTRL_TASK_DeployByComputer(player,&Task);
			 }
		  }
      }
   }
}

void RepaireGeneralProcess(WORD Player)
{  WORD i;
   UNIT_STRUCT * Pobject;
   UNIT_STRUCT * Pobject1;
   struct CTRL_TASK_STRUCT Task;

   if (Repaireworker[Player].GeneralID == CBNULL )
     return;
 
   Pobject=MAP_GetUnit(Repaireworker[Player]. 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
	   &&Defancesoldier[Player][0].GeneralID != CBNULL)
   {
	   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)
	 {
#ifdef TY_JIMOU 

			switch(getrandom( 0,1 ))
			{
			case 0:
				 GeneralJiMou(Pobject,HUNLUAN);
				 break;
			case 1:
				 GeneralJiMou(Pobject,JIANSU);
				 break;
			}
#endif

		 CTRL_TASK_Clear( &Task );
		 //? GetFriend();
		 if (Defancesoldier[Player][0].GeneralID == CBNULL)
		 {
			 if (Defancesoldier[Player][0].WorkerNum != 0)
			 {
				 for (i=0;i<Defancesoldier[Player][0].WorkerNum;i++)
				 {
					 if (Defancesoldier[Player][0].WorkerArrays[i] != CBNULL)
					 {
						  Task.bDone=1;
						  Task.nID=Defancesoldier[Player][0].WorkerArrays[i];
						  Task.nTaskID=GONGJI;
						  Task.nTaskIDEx=2;
						  Task.nParam1=Pobject->nIDAttackMe;
						  CTRL_TASK_DeployByComputer(Player,&Task);
					 }
				 }
			 }
			 return ;
		 }
		 else
		 {    Task.bDone=1;
			  Task.nID=Defancesoldier[Player][0].GeneralID;
			  Task.nTaskID=GONGJI;
			  Task.nTaskIDEx=2;
			  Task.nParam1=Pobject->nIDAttackMe;
			  CTRL_TASK_DeployByComputer(Player,&Task);
		 }
	 }
   }
   else
   {
     // Nov.10.1997, Liu Gang
     if (EYE_IfUnitIsDead(Pobject) != TRUE)
		return;

     for (i=1;i<Repaireworker[Player].WorkerNum+1;i++)
	 {  
		if (Repaireworker[Player].WorkerArrays[i] != CBNULL)
		{
			Pobject=MAP_GetUnit(Repaireworker[Player].WorkerArrays[i]);
			Pobject1=MAP_GetUnit(Repaireworker[Player].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 (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(Pobject) == TRUE)
		   {  Repaireworker[Player].WorkerNum--;
			  if (Repaireworker[Player].WorkerNum <= WORKER_BASE)
			  {  Repaireworker[Player].WorkerArrays[0]=CBFALSE;
				 Repaireworker[Player].WorkerArrays[i]=CBNULL;
				 AccedeForRepaire[Player].ID=Repaireworker[Player].GeneralID;
				 Repaireworker[Player].Env=1;
				 continue;
			  }
		   }

			Assert(Pobject->nType == 10);

			if (Pobject->Status.nTaskID == QUXIAO)
			{
				if (Pobject->Soldier.nResource != 0
					&&Pobject->Task.nTaskIDEx == 2)
				{
				   CTRL_TASK_Clear( &Task );
				   Task.nID=Pobject->nID;
				   Task.nTaskID=HUISONG;
				   Task.nTaskIDEx=2;
				   Task.nTaskIDEx2=TIEKUANG;
				   if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
					 continue;
				   Task.nParam4=TY_FindNearObject(0,
												  22,
												  BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
												  BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   if (Task.nParam4 == MAP_DATA_NONE)
					   return;
				   Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
				   Task.nParam1=TY_FindNearHome(Player,Pobject->Draw.nX,Pobject->Draw.nY,2);
				   Pobject=MAP_GetUnit(Task.nParam1);
				   /*
				   if (Pobject->Draw.nPlayer == GAME.nMe
					   ||Pobject->Draw.nPlayer != Player)
					   WriteErrorFile("player.err",Pobject->Draw.nPlayer);
					   */

				   if (Task.nParam1 == MAP_DATA_NONE)
					   return;
				   
				   Task.bDone=1;
				   CTRL_TASK_DeployByComputer(Player,&Task);

				}
				else
				{
					CTRL_TASK_Clear( &Task );   
					Task.bDone=1;
					Task.nID=Repaireworker[Player].WorkerArrays[i];
					Task.nTaskID=Pobject1->Task.nTaskID;
					Task.nTaskIDEx=Pobject1->Task.nTaskIDEx;
					Task.nTaskIDEx2=Pobject1->Task.nTaskIDEx2;
					Task.nParam1=Pobject1->Task.nParam1;
					Task.nParam2=Pobject1->Task.nParam2;
					Task.nParam3=Pobject1->Task.nParam3;
					Task.nParam4=Pobject1->Task.nParam4;
					CTRL_TASK_DeployByComputer(Player,&Task);
				}
			}
			if (RepaireTask.bDone ==1)
			{
				Pobject=MAP_GetUnit(Repaireworker[Player].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->Soldier.nResource != 0
					&&Pobject->Task.nTaskIDEx == 2)
					continue;

				CTRL_TASK_Clear( &Task );   
				Task.bDone=1;
				Task.nID=Repaireworker[Player].WorkerArrays[i];
				Task.nTaskID=RepaireTask.nTaskID;
				Task.nTaskIDEx=RepaireTask.nTaskIDEx;
				Task.nTaskIDEx2=RepaireTask.nTaskIDEx2;
				Task.nParam1=RepaireTask.nParam1;
				Task.nParam2=RepaireTask.nParam2;
				Task.nParam3=RepaireTask.nParam3;
				Task.nParam4=RepaireTask.nParam4;
				CTRL_TASK_DeployByComputer(Player,&Task);
				continue;
			}

			if (Pobject->Task.nTaskID == QUXIAO
				&&Pobject1->Task.nTaskID == JIANZAO)
			{
				CTRL_TASK_Clear( &Task );   
				Task.bDone=1;
				Task.nID=Repaireworker[Player].WorkerArrays[i];
				Task.nTaskID=Pobject1->Task.nTaskID;
				Task.nTaskIDEx=Pobject1->Task.nTaskIDEx;
				Task.nTaskIDEx2=Pobject1->Task.nTaskIDEx2;
				Task.nParam1=Pobject1->Task.nParam1;
				Task.nParam2=Pobject1->Task.nParam2;
				Task.nParam3=Pobject1->Task.nParam3;
				Task.nParam4=Pobject1->Task.nParam4;
				CTRL_TASK_DeployByComputer(Player,&Task);
				continue;
			}
		}
     }
     CTRL_TASK_Clear( &RepaireTask );   
     RepaireTask.bDone=0;
   }

}

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

   if (Pro[player][Which].ShipComFinish != 1 )
      return;
   if (Shipsoldier[player][Which].GeneralID == 65535
	 ||Shipsoldier[player][Which].GeneralID == CBNULL
	 ||Shipsoldier[player][Which].GeneralID == CBFALSE)
       return;
   Pobject=MAP_GetUnit(Shipsoldier[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_IfUnitIsDead(Pobject1) != TRUE) 
	  {
		  CTRL_TASK_Clear( &Task );
		  Task.bDone=1;
		  Task.nID=Shipsoldier[player][Which].GeneralID;
		  Task.nTaskID=GONGJI;
		  Task.nTaskIDEx=2;
		  Task.nParam1=Pobject->nIDAttackMe;
		  Defance0=Pobject->nIDAttackMe;
		  CTRL_TASK_DeployByComputer(player,&Task);

		  for (i=1;i<Shipsoldier[player][Which].WorkerNum+1;i++)
		  {  if (Shipsoldier[player][Which].WorkerArrays[i] != CBNULL)
			 {  Pobject1=MAP_GetUnit(Shipsoldier[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 (Pobject1->nType == 0
					||Pobject1->Task.nTaskID == SHANCHU
					||Pobject1->nLife <=0) 
					continue;
			    CTRL_TASK_Clear( &Task );
				Task.bDone=1;
				Task.nID=Shipsoldier[player][Which].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(Shipsoldier[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 (EYE_IfUnitIsDead(Pobject) != TRUE)
	  {  
		  if (Which == 3)
		  {
			  i=1;
		  }
		  for (i=1;i<=Shipsoldier[player][Which].WorkerNum;i++)
		  {  if (Shipsoldier[player][Which].WorkerArrays[i] != CBNULL)
			 {  
		        Pobject1=MAP_GetUnit(Shipsoldier[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 (Pobject1->nType == 0
					||Pobject1->Task.nTaskID == SHANCHU
					||Pobject1->nLife <=0) 
					continue;
				//assert(Pobject1->nType == 3);

				CTRL_TASK_Clear( &Task );
				Task.bDone=1;
				Task.nID=Shipsoldier[player][Which].WorkerArrays[i];
				Task.nTaskID=Pobject->Task.nTaskID;
				if (Task.nTaskID == GONGJI)
                  Task.nTaskIDEx=2;
				else
				{
					if (Task.nTaskID == YIDONG)
					{
						Task.nParam2=Pobject->Task.nParam2;
						Task.nParam3=Pobject->Task.nParam3;
						Task.nParam1=0;
						Task.nTaskIDEx=1;
					}
					else
					{
						if (Task.nTaskID == QUXIAO)
						{
							//Task.nTaskID=QUXIAO;
							continue;
						}
						else
							continue;

					}	

				}
				Task.nParam1=Pobject->Task.nParam1;
				CTRL_TASK_DeployByComputer(player,&Task);
			 }
		  }
      }
   }

}


void GeneralOfFight(WORD player,WORD Level)
{
//根据关的不同

⌨️ 快捷键说明

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