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

📄 temperor.cpp

📁 网页游戏赤壁
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   }
		   break;
	   case 26:
		   if (Player == 1)
		   {
			   GetLumberId(750,25,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   }
		   else
		   {
			   GetLumberId(100,300,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   }
		   break;
	   case 29:
		   if (Player == 1)
		   {
			   GetLumberId(550,35,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   }
		   else
		   {
			   GetLumberId(100,300,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   }
		   break;
	   case 31:
		   if (Player == 2)
		   {
			   GetLumberId(300,100,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   }
		   else
		   {
			   GetLumberId(100,300,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   }
		   break;
	   case 32:
		   if (Player == 1)
		   {
			   GetLumberId(300,60,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   }
		   else
		   {
			   if (Player == 2)
			   {
				   GetLumberId(25,200,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   }
			   else
			   {
				   GetLumberId(100,300,Player,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
				   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   }
		   }
		   break;

	   default:
		   GetLumberId(500,300,Player,
			   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
			   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
		   break;
	   }
	   if (Tsource[Player].Lumbersource.POS == CBFALSE)
	   {
		   //MessageBox(0,"No Lumber Source !","Error",MB_OK );
		   OutputDebugString( "No Lumber Source !\n" );
		   return;
	   }

   }
	   
   Task.nParam1=0;
   Task.nParam2=Tsource[Player].Lumbersource.X;
   Task.nParam3=Tsource[Player].Lumbersource.Y;
   //Task.nParam4=BuildPoint[Player][MAINBATTALION].BPoint->nID;
   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);
   Lumberworker[Player].Env=2;
}

//加入一个工人

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

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

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

//将领死了

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

   }

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

   //如果没钱生产

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

   }

   if (BuildPoint[Player][MAINBATTALION].BPoint->Status.nTaskID == QUXIAO
     &&Pro[Player][0].ShengChanPos1 == CBTRUE)
   {  //Pro.ShengChanPos1=0;
	  Assert (Lumberworker[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=JRONELUMBER;
      CTRL_TASK_DeployByComputer(Player,&Task);
   }
   else
   {  Lumberworker[Player].WorkerArrays[0]=CBFALSE;
      if (AccedeForLumber[Player].WorkerID != CBNULL
	    &&Lumberworker[Player].WorkerArrays[0] == CBFALSE
		&&Lumberworker[Player].JRPos ==CBTRUE)
      {  if (Lumberworker[Player].WorkerNum >= WORKER_BASE-13)
		 {  Lumberworker[Player].WorkerArrays[0]=CBTRUE;
		 }
	     Pro[Player][0].ShengChanPos1=CBTRUE;
	     Lumberworker[Player].JRPos=0;
		 CTRL_TASK_Clear( &Task );
		 Task.nID=AccedeForLumber[Player].WorkerID;
		 Task.nTaskID=JIARU;
		 Task.nParam1=AccedeForLumber[Player].ID;
		 Task.bDone=1;
		 AccedeForLumber[Player].WorkerID=CBNULL;
		 CTRL_TASK_DeployByComputer(Player,&Task);
		 Lumberworker[Player].Env=2;
     }
  }
}

//扫描当前地点的树是否被采光

WORD ScanLumberAlife(WORD X,WORD Y)
{
	int ExCode;

	if (X == CBNULL
	  ||Y == CBNULL)
	{
		return 0;
	}

	ExCode=EYE_GetGResType(0,X,Y);
	if (ExCode == QXZIYUAN)
	{
		return 1;
    }	   	   
	else
		return 0;
}

void LumberTeamWork(WORD Player,WORD LevelPos)
{  WORD i;
   UNIT_STRUCT * Pobject;
   struct CTRL_TASK_STRUCT Task;

   //Scan ironsource alife.
   //? pause.
  if (Tsource[Player].Lumbersource.X != CBNULL
	  &&Tsource[Player].Lumbersource.Y!= CBNULL)
  {
	  //X=Tsource[Player].Lumbersource.X;
	  //Y=Tsource[Player].Lumbersource.Y;
	  X[Player]+=30;
	  Y[Player]+=30;
  }
  else
  {
	  X[Player]+=60;
	  Y[Player]+=60;
  }

  if (ScanLumberAlife(Tsource[Player].Lumbersource.X,
					  Tsource[Player].Lumbersource.Y))
  {   
	  switch (LevelPos)
	  {
	  case 5:
		  if (Player == 3)
		  {
			  X[Player]+=30;
			  Y[Player]=20;
			  if (X[Player]>500)
				X[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  else
		  {
			  X[Player]+=30;
			  Y[Player]+=30;
			  if (X[Player]>500)
				  X[Player]=5;
			  if (Y[Player]>500)
				  Y[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  break;

	  case 9:
		  if (Player == 3)
		  {
			  X[Player]+=30;
			  Y[Player]=10;
			  if (X[Player]>500)
				X[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  else
		  {
			  X[Player]+=30;
			  Y[Player]+=30;
			  if (X[Player]>500)
				  X[Player]=5;
			  if (Y[Player]>500)
				  Y[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  break;

	  case 11:
		  if (Player == 3)
		  {
			  X[Player]+=30;
			  Y[Player]+=40;
			  if (X[Player]>500)
				X[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  else
		  {
			  X[Player]+=30;
			  Y[Player]+=30;
			  if (X[Player]>500)
				  X[Player]=5;
			  if (Y[Player]>500)
				  Y[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  break;
	  case 16:
		  if (Player == 1)
		  {
			  X[Player]+=30;
			  Y[Player]=10;
			  if (X[Player]>500)
				X[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  else
		  {
			  X[Player]+=30;
			  Y[Player]+=30;
			  if (X[Player]>500)
				  X[Player]=5;
			  if (Y[Player]>500)
				  Y[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  break;
	  case 22:
		  if (Player != GAME.nMe)
		  {
			  X[Player]+=30;
			  Y[Player]=30;
			  if (X[Player]>900)
				X[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  else
		  {
			  X[Player]+=30;
			  Y[Player]+=30;
			  if (X[Player]>500)
				  X[Player]=5;
			  if (Y[Player]>500)
				  Y[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  break;
	  case 26:
		  if (Player == 1)
		  {
			  X[Player]+=30;
			  Y[Player]=10;
			  if (X[Player]>900)
				X[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  else
		  {
			  X[Player]+=30;
			  Y[Player]+=30;
			  if (X[Player]>500)
				  X[Player]=5;
			  if (Y[Player]>500)
				  Y[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  break;
	  case 29:
		  if (Player == 1)
		  {
			  X[Player]+=30;
			  Y[Player]=22;
			  if (X[Player]>900)
				X[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  else
		  {
			  X[Player]+=30;
			  Y[Player]+=30;
			  if (X[Player]>500)
				  X[Player]=5;
			  if (Y[Player]>500)
				  Y[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  break;
	  case 32:
		  if (Player == 1)
		  {
			  X[Player]+=30;
			  Y[Player]=32;
			  if (X[Player]>900)
				X[Player]=5;
			  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  }
		  else
		  {
			  if (Player == 2)
			  {
				  X[Player]=30;
				  Y[Player]+=30;
				  if (X[Player]>900)
					X[Player]=5;
				  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
			  }
			  else
			  {
				  X[Player]+=30;
				  Y[Player]+=30;
				  if (X[Player]>500)
					  X[Player]=5;
				  if (Y[Player]>500)
					  Y[Player]=5;
				  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
			  }
		  }
		  break;

	  default:
		  X[Player]+=30;
		  Y[Player]+=30;
		  if (X[Player]>500)
			  X[Player]=5;
		  if (Y[Player]>500)
			  Y[Player]=5;
		  GetLumberId(X[Player],Y[Player],Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y);
		  break;
	  }

	  
  }

//scan general, alife if dead GeneralID=NULL.

   if (Lumberworker[Player].GeneralID != CBNULL)
   {  Pobject=MAP_GetUnit(Lumberworker[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)
      {  Lumberworker[Player].GeneralID=CBNULL;

	  //将领死了
/*
	     for (i=1;i<Lumberworker[Player].WorkerNum;i++)
		 {
			 if (Lumberworker[Player].WorkerArrays[i] != CBNULL)
			 {
				 CTRL_TASK_Clear( &Task );
			  	 Task.bDone=1;
				 Task.nID=Lumberworker[Player].WorkerArrays[i];
				 Task.nTaskID=JIESHU;
				 CTRL_TASK_DeployByComputer(Player,&Task);
			 }
		 }
*/
	     //pause.
		 Lumberworker[Player].Env=0;
		 Lumberworker[Player].GeneralID=CBNULL;
		 EmAILumberPosClear(Player);
	     return;
      }

	  //将领没死

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

		 Pobject=MAP_GetUnit(Lumberworker[Player].GeneralID);
		 Assert(Pobject->nType ==MAP_UNIT_TYPE_WGEN ); 

		 if (EYE_GetGResType(0,Pobject->Task.nParam2,Pobject->Task.nParam3) != 0)  
		 {
			   if (Pobject->Task.nTaskID == YIDONG
				 ||Pobject->Task.nTaskID == HUISONG)
				 goto LA;
			   ObeyP[Player][0].AttackPos1=CBNULL; 
			   CTRL_TASK_Clear( &Task );
			   Task.nID=Lumberworker[Player].GeneralID;
			   Task.nTaskID=YUNSONG;
			   Task.nTaskIDEx=1;
			   Task.nTaskIDEx2=SHULIN;
			   Task.nParam1=0;
			   if (Tsource[Player].Lumbersource.POS == CBFALSE)
				   return;
			   Task.nParam2=Tsource[Player].Lumbersource.X;
			   Task.nParam3=Tsource[Player].Lumbersource.Y;
			   //Task.nParam4=BuildPoint[Player][MAINBATTALION].BPoint->nID;;
			   Task.nParam4=TY_FindNearHome(Player,Tsource[Player].Lumbersource.X,Tsource[Player].Lumbersource.Y,0);
			   if (Task.nParam4 == MAP_DATA_NONE)
				   return;

⌨️ 快捷键说明

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