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

📄 tgeneral.cpp

📁 赤壁之战(游戏原码)
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					   Task.nParam4=TY_FindNearHome(player,Tsource[player].Lumbersource.X,Tsource[player].Lumbersource.Y,0);
					   if (Task.nParam4 == MAP_DATA_NONE)
					 	 return;
					   Task.bDone=1;
					   CTRL_TASK_DeployByComputer(player,&Task);
				   }
			   }

			   /*
			   else
			   {
				   if (Pobject->Status.nTaskID == DUSE
				   &&Pobject->Task.nTaskID == HUISONG)
				   {
					   CTRL_TASK_Clear( &Task );   
					   Task.bDone=1;
					   Task.nID=Lumberworker[player].WorkerArrays[i];
					   Task.nTaskID=HUISONG;
					   Task.nTaskIDEx=2;
					   Task.nTaskIDEx2=SHULIN;
					   Task.nParam1=TY_FindNearHome(player,Tsource[player].Lumbersource.X,Tsource[player].Lumbersource.Y,0);
					   if (Pro[player][0].HomeID == MAP_DATA_NONE)
					  		 return;
					   Task.nParam2=0; 
 					   Task.nParam3=Tsource[player].Lumbersource.X;
					   Task.nParam4=Tsource[player].Lumbersource.Y;
					   CTRL_TASK_DeployByComputer(player,&Task);	
				   }
			   }
			
*/			   
			   if (EYE_IfUnitIsDead(Pobject) == TRUE)
				   continue;
/*
			   if (Pobject->Status.nTaskID == DUSE)
				{
					Pobject->Task.bDone=1;
					Pobject->Task.nTaskID=QUXIAO;
				}
*/
			   Pobject1=MAP_GetUnit(Lumberworker[player].GeneralID);

			   //以防万一
			   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->Task.nTaskID == YUNSONG)
			   {
				   if (Pobject1->Task.nTaskID == YUNSONG)
				   {
					   if (Pobject->Task.nParam4 != Pobject1->Task.nParam4)
					   {
						     Pobject->Task.nParam4=Pobject1->Task.nParam4;
					   }

				   }
				   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=Lumberworker[player].WorkerArrays[i];
					 Task.nTaskID=HUISONG;
					 Task.nTaskIDEx=2;
                     Task.nTaskIDEx2=SHULIN;
					 Task.nParam1=Pro[player][0].HomeID;
					 if (Pro[player][0].HomeID == CBNULL)
							 return;
                     Task.nParam2=0; 

					 Task.nParam3=Tsource[player].Lumbersource.X;
					 Task.nParam4=Tsource[player].Lumbersource.Y;
					 CTRL_TASK_DeployByComputer(player,&Task);	
			      }
			      else
				  {   if (Tsource[player].Lumbersource.POS != CBTRUE)
				         return;
					  CTRL_TASK_Clear( &Task );
					  Task.bDone=1;
					  Task.nID=Lumberworker[player].WorkerArrays[i];
					  Task.nTaskID=YUNSONG;
					  Task.nTaskIDEx=1;
					  Task.nTaskIDEx2=SHULIN;
					  Task.nParam1=0;
					  Task.nParam2=Tsource[player].Lumbersource.X;
					  Task.nParam3=Tsource[player].Lumbersource.Y;
					  Task.nParam4=Pro[player][0].HomeID;
					  if (Pro[player][0].HomeID == CBNULL)
							 return;
					  CTRL_TASK_DeployByComputer(player,&Task);	
				  }
				  
			   }
			   else
			   {

			   }
			}
		 }
      }
   }

//General avoid.

}
void FoodGeneralProcess(WORD  player,WORD Level)
{  WORD i,ExCode;
   UNIT_STRUCT * Pobject;
   UNIT_STRUCT * Pobject1;
   struct CTRL_TASK_STRUCT Task;

   if (Foodworker[player].GeneralID == CBNULL )
     return;

   if (Tsource[player].Foodsource.X != CBNULL
	   &&Tsource[player].Foodsource.X != CBNULL)
   {
	   ExCode=EYE_GetGResType(0,Tsource[player].Foodsource.X,Tsource[player].Foodsource.Y);

	   if (ExCode == QXZIYUAN)
	   {
		   switch (Level)
		   {
		   case 5:
			   GetFoodId(50,130,player);
			   break;
		   case 7:
			   GetFoodId(50,130,player);
			   break;
		   case 11:
			   if (player == 3)
			   {
				   GetFoodId(80,30,player);
			   }
			   else
			   {
				   GetFoodId(80,80,player);
			   }
			   break;
		   case 32:
			   if (player == 2)
			   {
				   GetFoodId(20,230,player);
			   }
			   else
			   {
				   if (player == 1)
				   {
					   GetFoodId(120,30,player);
				   }
				   else
				   {
					   GetFoodId(80,80,player);
				   }
			   }
			   break;

		   default:
			   GetFoodId(80,80,player);
			   break;
		   }
	   }
   }
   else
   {
	   switch (Level)
	   {
	   case 5:
		   GetFoodId(50,130,player);
		   break;
	   case 7:
		   GetFoodId(50,130,player);
		   break;
	   case 11:
		   if (player == 3)
		   {
			   GetFoodId(180,30,player);
		   }
		   else
		   {
			   GetFoodId(80,80,player);
		   }
		   break;
	   case 32:
		   if (player == 2)
		   {
			   GetFoodId(20,130,player);
		   }
		   else
		   {
			   if (player == 1)
			   {
				   GetFoodId(120,30,player);
			   }
			   else
			   {
				   GetFoodId(80,80,player);
			   }
		   }
		   break;
	   default:
		   GetFoodId(80,80,player);
		   break;
	   }
   }

   if (ObeyP[player][0].AttackPos2 == CBNULL)
   {  Pobject=MAP_GetUnit(Foodworker[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)
      {  
         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();
			 Task.bDone=1;
			 Task.nID=Foodworker[player].GeneralID;
			 Task.nTaskID=YIDONG;
			 Task.nTaskIDEx=1;
			 Task.nParam1=0;
			 //?
			 Task.nParam2=Pobject->Draw.nX-20;
			 Task.nParam3=Pobject->Draw.nY-20;
			 if (Pobject->Draw.nX <20)
			   Task.nParam2=2;
			 if (Pobject->Draw.nY<20)
			   Task.nParam3=2;
			 ObeyP[player][0].AttackPos=CBTRUE;
			 CTRL_TASK_DeployByComputer(player,&Task);
			 for (i=1;i<Foodworker[player].WorkerNum;i++)
			 {  CTRL_TASK_Clear( &Task );
				if (Foodworker[player].WorkerArrays[i] != CBNULL)
				{  Pobject=MAP_GetUnit(Foodworker[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;

				   Task.bDone=1;
				   Task.nID=Foodworker[player].WorkerArrays[i];
				   Task.nTaskID=YIDONG;
				   Task.nTaskIDEx=1;
				   Task.nParam1=0;
				   //?need scan max x max y.
				   Task.nParam2=Pobject->Draw.nX-20;
				   Task.nParam3=Pobject->Draw.nY-20;
				   if (Pobject->Draw.nX <20)
					 Task.nParam2=2;
				   if (Pobject->Draw.nY <20)
					 Task.nParam3=2;
				   ObeyP[player][0].AttackPos2=CBTRUE;
				   CTRL_TASK_DeployByComputer(player,&Task);
				}
			 }
		 }
		 
      }
      else   //Send obey.
      {  for (i=1;i<Foodworker[player].WorkerNum+1;i++)
		 {  //CTRL_TASK_Clear( &Task );
			if (Foodworker[player].WorkerArrays[i] != CBNULL)
			{  Pobject=MAP_GetUnit(Foodworker[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;

 			   Pobject1=MAP_GetUnit(Foodworker[player].GeneralID);

			   //以防万一
			   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)
			   {  
				  Foodworker[player].WorkerNum--;
				  if (Foodworker[player].WorkerNum <= WORKER_BASE)
				  {  Foodworker[player].WorkerArrays[0]=CBFALSE;
					 Foodworker[player].WorkerArrays[i]=CBNULL;
					 if (BuildPoint[player][MAINBATTALION].hPos != CBTRUE)
			         continue;
					 AccedeForFood[player].ID=Foodworker[player].GeneralID;
					 Foodworker[player].Env=1;
					 continue;
				  }
			   }

			   Assert (Pobject->nType == 10);
			   if (EYE_IfUnitIsDead(Pobject) == TRUE)
				   continue;

			   if (Pobject->Task.nTaskID == YUNSONG)
			   {

				   ExCode=EYE_GetGResType(0,Pobject->Task.nParam2,Pobject->Task.nParam3);
                   if (ExCode != 1) 
				   {
					   //GetFoodId(180,33,player);
					   switch (GAME.nID)
					   {
					   case 5:
						   GetFoodId(50,130,player);
						   break;
					   case 7:
						   GetFoodId(50,130,player);
						   break;
					   case 11:
						   if (player == 3)
						   {
							   GetFoodId(80,30,player);
						   }
						   else
						   {
							   GetFoodId(80,80,player);
						   }
						   break;
					   case 32:
						   if (player == 2)
						   {
							   GetFoodId(20,230,player);
						   }
						   else
						   {
							   if (player == 1)
							   {
								   GetFoodId(120,30,player);
							   }
							   else
							   {
								   GetFoodId(80,80,player);
							   }
						   }
						   break;

					   default:
						   GetFoodId(80,80,player);
						   break;
					   }
					   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;
					   Task.bDone=1;
					   CTRL_TASK_DeployByComputer(player,&Task);
				   }
			   }
			   /*
			   else
			   {
				   if (Pobject->Status.nTaskID == DUSE
				   &&Pobject->Task.nTaskID == HUISONG)
				   {
					   CTRL_TASK_Clear( &Task );   
					   Task.bDone=1;
					   Task.nID=Foodworker[player].WorkerArrays[i];
					   Task.nTaskID=HUISONG;
					   Task.nTaskIDEx=2;
					   Task.nTaskIDEx2=SHULIN;
					   Task.nParam1=TY_FindNearHome(player,Tsource[player].Foodsource.X,Tsource[player].Foodsource.Y,1);
					   if (Pro[player][0].HomeID == MAP_DATA_NONE)
					  		 return;
					   Task.nParam2=0; 
 					   Task.nParam3=Tsource[player].Foodsource.X;
					   Task.nParam4=Tsource[player].Foodsource.Y;
					   CTRL_TASK_DeployByComputer(player,&Task);	
				   }
			   }

			   if (Pobject->Status.nTaskID == DUSE)
				{
					Pobject->Task.bDone=1;
					Pobject->Task.nTaskID=QUXIAO;
				}
			   if (Pobject->Task.nTaskID == YUNSONG)
			   {
				   if (Pobject1->Task.nTaskID == YUNSONG)
				   {
					   if (Pobject->Task.nParam4 != Pobject1->Task.nParam4)
					   {
						     Pobject->Task.nParam4=Pobject1->Task.nParam4;
					   }

⌨️ 快捷键说明

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