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

📄 temperor.cpp

📁 网页游戏赤壁
💻 CPP
📖 第 1 页 / 共 5 页
字号:

  for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
  {
	  if (DATA_Lib.Gen[i].bOnBattle == FALSE
	   &&DATA_Lib.Gen[i].nID != 0
	   &&DATA_Lib.Gen[i].nJunZhu == nPlayer)
	  {
		  return (CBTRUE);
	  }
  }
  return (CBNULL);
}

WORD GetXieZaiId()
{
	WORD j;

	for (j=0;j<PLAYER_UNIT_MAX;j++)
    {
		if (GAME.Players[GAME.nMe].Unit[j].nType == MAP_UNIT_TYPE_BUILDING)
		{  
	          if (GAME.Players[GAME.nMe].Unit[j].Draw.nFile == 10
				  ||GAME.Players[GAME.nMe].Unit[j].Draw.nFile == 11)
			  {
				  return (GAME.Players[GAME.nMe].Unit[j].nID);
			  }
        }
    }

	for (j=0;j<PLAYER_UNIT_MAX;j++)
    {
		if (GAME.Players[GAME.nMe].Unit[j].nType == MAP_UNIT_TYPE_BUILDING)
		{  
	          return (GAME.Players[GAME.nMe].Unit[j].nID);
        }
    }

	return (CBNULL);

}

//得到一个将领的ID值
WORD GetGeneral(WORD nPlayer,WORD Type)
{  WORD i,j=0;
   //UNIT_STRUCT * Pobject;

   switch(Type)
   {  case IRON:
	  case FOOD:
	  case LUMBER:
	  case REPAIRE:
		  for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
		  {
			  if (DATA_Lib.Gen[i].nJunZhu == nPlayer)
				  //&&DATA_Lib.Gen[i].bOnBattle == 0)
 				  j++;
		  }

		  for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
		  {
			  if (DATA_Lib.Gen[i].bOnBattle == FALSE
		       &&DATA_Lib.Gen[i].nID != 0
			   &&DATA_Lib.Gen[i].nJunZhu == nPlayer
			   &&DATA_Lib.Gen[i].nType == 3)
			  {
				  DATA_Lib.Gen[i].bOnBattle=TRUE;
				  return (DATA_Lib.Gen[i].nID);
			  }

		  }
		  for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
		  {
			  if (DATA_Lib.Gen[i].bOnBattle == FALSE
		       &&DATA_Lib.Gen[i].nID != 0
			   &&DATA_Lib.Gen[i].nJunZhu == nPlayer)
			  {
				  DATA_Lib.Gen[i].bOnBattle=TRUE;
				  return (DATA_Lib.Gen[i].nID);
			  }

		  }
		  break;

	  case DEFANCE:
      case ATTACK:
	  case SHIP:
		  for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
	      {  if (DATA_Lib.Gen[i].bOnBattle == FALSE
		       &&DATA_Lib.Gen[i].nID != 0
			   &&DATA_Lib.Gen[i].nJunZhu == nPlayer
			   &&DATA_Lib.Gen[i].nType != 3)
			 {
			  DATA_Lib.Gen[i].bOnBattle=TRUE;
			  return (DATA_Lib.Gen[i].nID);
			 }
	      }
		  for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
		  {
			  if (DATA_Lib.Gen[i].bOnBattle == FALSE
		       &&DATA_Lib.Gen[i].nID != 0
			   &&DATA_Lib.Gen[i].nJunZhu == nPlayer)
			  {
				  DATA_Lib.Gen[i].bOnBattle=TRUE;
				  return (DATA_Lib.Gen[i].nID);
			  }

		  }
	      break;
   }
   //WriteLogFile("nogen.ty","no general\n");
   return (CBNULL);
}

//--- end.

/*
//--- Iron worker process function.
*/

//--- Iron worker process start.

//加入一个工人到将领数组中
void IronAccedeToTeam(WORD Player)
{  UNIT_STRUCT * Pobject;
   struct CTRL_TASK_STRUCT Task;

   Assert(Ironworker[Player].WorkerArrays[0] == CBFALSE);

   Pobject=MAP_GetUnit(Ironworker[Player].GeneralID);

//将领死了

   if (EYE_IfUnitIsDead(Pobject) == TRUE)
   {
	   Ironworker[Player].GeneralID=CBNULL;
	   return;

   }

   if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
	   return;

//如果没钱生产

   if (!RUN_CREATE_IfEnoughMoney(Player,MAINBATTALION_MAN))
   {
	   Ironworker[Player].Env=2;
	   //MessageBox( 0, "You Have No Money !", "Error", MB_OK );
	   OutputDebugString( "No Money To ShengChan A Iron Worker !\n" );
	   return;

   }


//生产一个工人

   //need add ShengChanFinish
   if (BuildPoint[Player][MAINBATTALION].BPoint->Status.nTaskID == QUXIAO
     &&Pro[Player][0].ShengChanPos0 == CBTRUE)
   {  //Pro.ShengChanPos0=0;
	  Assert (Ironworker[Player].WorkerNum <= WORKER_BASE);
      CTRL_TASK_Clear( &Task );
      Task.nID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
      Task.nTaskID=SHENGCHAN;
      Task.nTaskIDEx=MAINBATTALION_MAN;
      Task.bDone=1;
      //Task.nParam2=11;
	  Task.nParam2=JRONEIRON;
      CTRL_TASK_DeployByComputer(Player,&Task);
      //Ironworker.WorkerNum++;
   }

//加入

   else
   {  Ironworker[Player].WorkerArrays[0]=CBFALSE;
      if (AccedeForIron[Player].WorkerID != CBNULL
	    &&Ironworker[Player].WorkerArrays[0] == CBFALSE
		&&Ironworker[Player].JRPos ==CBTRUE)
      {  if (Ironworker[Player].WorkerNum >= WORKER_BASE-13)
		 {  Ironworker[Player].WorkerArrays[0]=CBTRUE;
		 }
	     Pro[Player][0].ShengChanPos0=CBTRUE;
	     Ironworker[Player].JRPos=0;
		 CTRL_TASK_Clear( &Task );
		 Task.nID=AccedeForIron[Player].WorkerID;
		 Task.nTaskID=JIARU;
		 Task.nParam1=AccedeForIron[Player].ID;
		 Task.bDone=1;
		 AccedeForIron[Player].WorkerID=CBNULL;
		 AccedeForIron[Player].ID=CBNULL;
		 CTRL_TASK_DeployByComputer(Player,&Task);
		 Ironworker[Player].Env=2;
     }
  }
}

//采集铁矿的操作

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

//scan general, alife if dead GeneralID=NULL.
   if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
	   return;

   if (Ironworker[Player].GeneralID != CBNULL)
   {  Pobject=MAP_GetUnit(Ironworker[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 (EYE_IfUnitIsDead(Pobject) == TRUE)
      {  Ironworker[Player].GeneralID=CBNULL;
	  /*
	     for (i=1;i<Ironworker[Player].WorkerNum;i++)
		 {
			 if (Ironworker[Player].WorkerArrays[i] != CBNULL)
			 {
				 CTRL_TASK_Clear( &Task );
			  	 Task.bDone=1;
				 Task.nID=Ironworker[Player].WorkerArrays[i];
				 Task.nTaskID=JIESHU;
				 CTRL_TASK_DeployByComputer(Player,&Task);
			 }
		 }
		 */
	     //pause.
		 Ironworker[Player].GeneralID=CBNULL;
		 Ironworker[Player].Env=0;
		 EmAIIronPosClear(Player);
	     return;
      }

//将领没死

      else
      { 
		  if (Pobject->nLife < (Ironworker[Player].GeneralLife/2))
		  {
			 CTRL_TASK_Clear( &Task );
			 Task.nID=Pobject->nID;
			 Task.nTaskID=JIESAN;
			 Task.bDone=1;
			 CTRL_TASK_DeployByComputer(Player,&Task);      

			 for (i=1;i<=Ironworker[Player].WorkerNum;i++)
			 { 
				 if (Ironworker[Player].WorkerArrays[i] != CBNULL)
				 {   Pobject=MAP_GetUnit(Ironworker[Player].WorkerArrays[i]);
					 if (EYE_IfUnitIsDead(Pobject) == TRUE)
						 continue;
					 
					 CTRL_TASK_Clear( &Task );
					 Task.nID=Ironworker[Player].WorkerArrays[i];
					 Task.nTaskID=JIESAN;
					 Task.bDone=1;
					 CTRL_TASK_DeployByComputer(Player,&Task);      
				 }
			 }
			 Ironworker[Player].GeneralID=CBFALSE;
			 return;
		  }


		 for (i=1;i<WORKER_MAX;i++)
		 {  //assert(Ironworker.WorkerNum <= WORKER_MAX);
			if (Ironworker[Player].WorkerArrays[i] != CBNULL)
			{  Pobject=MAP_GetUnit(Ironworker[Player].WorkerArrays[i]);
//工人死了
			   if (EYE_IfUnitIsDead(Pobject) == TRUE)
			   {  Ironworker[Player].WorkerNum--;
				  if (Ironworker[Player].WorkerNum <= (WORKER_BASE-10))
				  {  Ironworker[Player].WorkerArrays[0]=CBFALSE;
					 Ironworker[Player].WorkerArrays[i]=CBNULL;
					 if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
			             continue;
					 AccedeForIron[Player].ID=Ironworker[Player].GeneralID;
					 Ironworker[Player].Env=1;
					 continue;
				  }
			   }
			}
		 }
	 }

	  Pobject=MAP_GetUnit(Ironworker[Player].GeneralID);

	  if (BuildPoint[Player][WUQICHANG].hPos == CBNULL)
	  {
		  IPos[Player]=0;
	  }

	  if (BuildPoint[Player][WUQICHANG].hPos == CBTRUE
		  &&IPos[Player] ==0)
	  {
		  IPos[Player]=1;
		  CTRL_TASK_Clear( &Task );
		  Task.nID=Ironworker[Player].GeneralID;
		  Task.nTaskID=YUNSONG;
		  Task.nTaskIDEx=2;
		  Task.nTaskIDEx2=TIEKUANG;
		  Task.nParam1=TY_FindNearObject(0,
										 22,
										 BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
										 BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		  if (Task.nParam1 == MAP_DATA_NONE)
			  return;
		  Tsource[Player].Ironsource=Task.nParam1;
		  Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
		  Task.nParam4=TY_FindNearHome(Player,Pobject->Draw.nX,Pobject->Draw.nY,2);
		  if (Task.nParam4 == MAP_DATA_NONE)
			  return;
		   /*
		   if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
		     Task.nParam4=BuildPoint[Player][MAINBATTALION].BPoint->nID;
		   else
		     return;
			 */
		  Task.bDone=1;
		  CTRL_TASK_DeployByComputer(Player,&Task);
	  }

	  if (Pobject->Task.nTaskID == QUXIAO)
	  {
		   CTRL_TASK_Clear( &Task );
		   Task.nID=Ironworker[Player].GeneralID;
		   Task.nTaskID=YUNSONG;
		   Task.nTaskIDEx=2;
		   Task.nTaskIDEx2=TIEKUANG;
		   Task.nParam1=TY_FindNearObject(0,
										  22,
										  BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
										  BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   if (Task.nParam1 == MAP_DATA_NONE)
			   return;
		   Tsource[Player].Ironsource=Task.nParam1;
		   Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
		   Task.nParam4=TY_FindNearHome(Player,Pobject->Draw.nX,Pobject->Draw.nY,2);
		   if (Task.nParam4 == MAP_DATA_NONE)
			   return;
		   /*
		   if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
		     Task.nParam4=BuildPoint[Player][MAINBATTALION].BPoint->nID;
		   else
		     return;
			 */
		   Task.bDone=1;
		   CTRL_TASK_DeployByComputer(Player,&Task);
	  }

//Scan ironsource alife.
//扫描资源的多少
//? pause.

	 Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
	 if (EYE_IfUnitIsDead(Pobject) == TRUE
		 &&TY_FindNearObject(0,
							  22,
							  BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
							  BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY) == MAP_DATA_NONE)
	 {  if (Lumberworker[Player].GeneralID != CBNULL)
	    {  Pobject=MAP_GetUnit(Lumberworker[Player].GeneralID);
	       Assert(Pobject->nType ==MAP_UNIT_TYPE_WGEN ); 
	       if (Pobject->nIDAttackMe == MAP_DATA_NONE)
	       {   CTRL_TASK_Clear( &Task );
			   Task.nID=Ironworker[Player].GeneralID;
			   Task.nTaskID=YUNSONG;
			   Task.nTaskIDEx=1;
			   Task.nTaskIDEx2=SHULIN;
			   //if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
			   //	return;
			   GetLumberId(260,260,Player,Pobject->Draw.nX,Pobject->Draw.nY);
			   if (Tsource[Player].Lumbersource.POS == CBFALSE)
				   return;
			   Task.nParam1=0;
			   Task.nParam2=Tsource[Player].Lumbersource.X;
			   Task.nParam3=Tsource[Player].Lumbersource.Y;
			   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 (Foodworker[Player].GeneralID != CBNULL)
			{
				Pobject=MAP_GetUnit(Foodworker[Player].GeneralID);
				Assert(Pobject->nType ==MAP_UNIT_TYPE_WGEN ); 
				if (Pobject->nIDAttackMe == MAP_DATA_NONE)
			    {

				   CTRL_TASK_Clear( &Task );
				   Task.nID=Ironworker[Player].GeneralID;
				   Task.nTaskID=YUNSONG;
				   Task.nTaskIDEx=1;
				   Task.nTaskIDEx2=MAITIAN;
				   GetFoodId(26,26,Player);
				   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);
			   }

			}
		}
	 }
   }
}

//组建部队

void IronComponentTeam(WORD Player)
{  //WORD i;
   struct CTRL_TASK_STRUCT Task;
   UNIT_STRUCT * Pobject;

   if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
	   return;

   if (Pro[Player][0].Finish == 0)
   {  CTRL_TASK_Clear( &Task );
	  {  Ironworker[Player].ZJFinish=0;
		 Task.nID=Ironworker[Player].WorkerArrays[Pro[Player][0].Ironworkernum];
		 Task.nTaskID=ZUJIAN;
		 Task.nTaskIDEx=MAP_UNIT_TYPE_WGEN;
		 Task.nParam1=Ironworker[Player].GeneralFile;
		 Task.nParam2=ZJOTHERIRON;
		 Task.bDone=1;
		 CTRL_TASK_DeployByComputer(Player,&Task);
	  }
      return;
   }
   if (Ironworker[Player].GeneralID == CBNULL)
      return; 
   CTRL_TASK_Clear( &Task );
   Task.nID=Ironworker[Player].GeneralID;
   Task.nTaskID=YUNSONG;
   Task.nTaskIDEx=2;
   Task.nTaskIDEx2=TIEKUANG;
   Task.nParam1=TY_FindNearObject(0,
								  22,
								  BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
								  BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
if (Task.nParam1 == MAP_DATA_NONE)
		return;
   Tsource[Player].Ironsource=Task.nParam1;
   Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
   Task.nParam4=TY_FindNearHome(Player,Pobject->Draw.nX,Pobject->Draw.nY,2);
   if (Task.nParam4 == MAP_DATA_NONE)
	   return;
   Task.bDone=1;
   CTRL_TASK_DeployByComputer(Player,&Task);
   Ironworker[Player].Env=2;
}

//生产部队成员

void  IronTeamInit(WORD Player)
{  //WORD i;
   //WORD num;
   //UNIT_STRUCT * Pobject;
   struct CTRL_TASK_STRUCT Task;
   CTRL_TASK_Clear( &Task );

   //如果没钱生产

   if (!RUN_CREATE_IfEnoughMoney(Player,MAINBATTALION_MAN))

⌨️ 快捷键说明

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