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

📄 temperor.cpp

📁 网页游戏赤壁
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			   Task.bDone=1;
			   CTRL_TASK_DeployByComputer(Player,&Task);
		 }

		 LA:
		 Assert(Pobject->nType ==MAP_UNIT_TYPE_WGEN ); 
		   if (Pobject->Status.nTaskID == QUXIAO)
		   {
			   ObeyP[Player][0].AttackPos1=CBNULL; 
			   CTRL_TASK_Clear( &Task );
			   Task.nID=Lumberworker[Player].GeneralID;
			   Task.nTaskID=YUNSONG;
			   Task.nTaskIDEx=1;
			   Task.nTaskIDEx2=SHULIN;

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

			   switch (LevelPos)
			   {
			   case 5:
				   if (Player != GAME.nMe)
				   {
					   GetLumberId(90,20,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   }
				   break;
			   case 7:
				   if (Player != GAME.nMe)
				   {
					   GetLumberId(20,90,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   }
				   break;

			   case 11:
				   if (Player != GAME.nMe)
				   {
					   GetLumberId(50,60,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   }
				   break;
			   case 16:
				   if (Player == 1)
				   {
					   GetLumberId(150,10,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   }
				   break;
			   case 22:
				   if (Player != GAME.nMe)
				   {
					   GetLumberId(150,30,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);

				   }
				   break;
			   case 26:
				   if (Player == 1)
				   {
					   GetLumberId(250,10,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   }
				   break;
			   case 29:
				   if (Player == 1)
				   {
					   GetLumberId(250,30,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   }
				   break;
			   case 32:
				   if (Player == 1)
				   {
					   GetLumberId(250,50,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   }
				   else
				   {
					   if (Player == 2)
					   {
						   GetLumberId(50,250,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
					   }
				   }
				   break;
			   default:
				   GetLumberId(10,60,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   break;
			   }
			   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;
			   Task.bDone=1;
			   CTRL_TASK_DeployByComputer(Player,&Task);

		   }
	 }

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

	  if (Pobject->Task.nTaskID == QUXIAO)
	  {
		   CTRL_TASK_Clear( &Task );
		   Task.nID=Lumberworker[Player].GeneralID;
		   Task.nTaskID=YUNSONG;
		   Task.nTaskIDEx=1;
		   Task.nTaskIDEx2=SHULIN;

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

		   switch (LevelPos)
		   {
		   case 5:
			   if (Player == 3)
			   {
				   GetLumberId(60,30,Player,
					       BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   }
			   break;

		   case 11:
			   if (Player == 3)
			   {
				   GetLumberId(60,60,Player,
					       BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   }
			   break;
		   case 16:
			   if (Player == 1)
			   {
				   GetLumberId(260,10,Player,
					       BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   }
			   break;
		   case 22:
			   if (Player != GAME.nMe)
			   {
				   GetLumberId(150,30,Player,
					   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
					   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);

			   }
			   break;
		   case 26:
			   if (Player == 1)
			   {
				   GetLumberId(360,10,Player,
					       BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   }
			   break;
		   case 29:
			   if (Player == 1)
			   {
				   GetLumberId(360,30,Player,
					       BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   }
			   break;
		   case 32:
			   if (Player == 1)
			   {
				   GetLumberId(360,30,Player,
					       BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   }
			   else
			   {
				   if (Player == 2)
				   {
					   GetLumberId(30,250,Player,
					       BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
				   }
			   }
			   break;
		   default:
			   GetLumberId(16,60,Player,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
						   BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
			   break;
		   }
		   
		   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 (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
		     Task.nParam4=BuildPoint[Player][MAINBATTALION].BPoint->nID;
		   else
			   return;
			   */
		   if (Task.nParam4 == MAP_DATA_NONE)
				   return;
		   Task.bDone=1;
		   CTRL_TASK_DeployByComputer(Player,&Task);
	  }
   }
}

void LumberworkerProcess(WORD Player,WORD LevelPos)
{
   switch(Lumberworker[Player].Env)
   {  case 0:
   //
		     LumberTeamInit(Player);
		     break;
   //加入
      case 1:
		     LumberAccedeToTeam(Player);
		     break;
   //处理
      case 2:
			LumberTeamWork(Player,LevelPos);
			break;
   //组建
      case 3:
			LumberComponentTeam(Player,LevelPos);
			break;

      default:
			break;
   }
}


//--- Lumber worker process end.

//--- food worker process start.

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

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

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

void GetFoodId(WORD NL,WORD NR,WORD Player)
{  WORD i,j;
   signed short MainLX,MainRX;
   signed short MainLY,MainRY;
   int ExCode;
   WORD POS=0;

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

   MainLX=BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX-NL;
   MainRX=BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX+NL;
   MainLY=BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY-NR;
   MainRY=BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY+NR;

   if (MainLX<0)
	   MainLX=15;
   if (MainRX>MAP_Lib.szNum.cx)
	   MainRX=(WORD)MAP_Lib.szNum.cx;
   if (MainLY<0)
	   MainLY=15;
   if (MainRY>MAP_Lib.szNum.cy)
	   MainRY=(WORD)MAP_Lib.szNum.cy;


   //for (j=MainLX;j<MainRX;j+=5)
   for (i=MainLY;i<MainRY;i+=5)
   {
	   if (POS == 1)
		   return;

	   //for (i=MainLY;i<MainRY;i+=5)
	   for (j=MainLX;j<MainRX;j+=5)
	   {
		   ExCode=EYE_GetGResType(0,j,i);
		   if (ExCode == 1)
		   {
			   Tsource[Player].Foodsource.X=j;
			   Tsource[Player].Foodsource.Y=i;
			   Tsource[Player].Foodsource.POS=CBTRUE;
			   POS=1;
			   break;

		   }

	   }
   }
}

void FoodTeamInit(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))
   {
	   //MessageBox( 0, "You Have No Money !", "Error", MB_OK );
	   OutputDebugString( "No Money To Sheng Chan A Food Worker !\n" );
	   return;

   }

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

   Task.nParam1=HaveGeneral(Player);
   if (Task.nParam1 == CBNULL)
 	   return;

//Scan is join or build ?

   if (Foodworker[Player].WorkerNum <= WORKER_BASE-14)
   {  
	  //if (Pro.ShengChanFinish == CBTRUE)
	  if (Foodworker[Player].ShengChanFinish == CBTRUE
		&&Pro[Player][0].Busy == 0)
      {  Pro[Player][0].Busy=1; 
		 Task.nID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
		 Task.nTaskID=SHENGCHAN;
		 Task.nTaskIDEx=MAINBATTALION_MAN;
		 Task.bDone=1;
		 Task.nParam2=SCFOOD;
		 CTRL_TASK_DeployByComputer(Player,&Task);
		 Foodworker[Player].ShengChanFinish=0;
		 Foodworker[Player].WorkerArrays[0]=CBFALSE;
      }
      else
    	 return ;
   }
   if (Foodworker[Player].WorkerNum >= WORKER_BASE-13)
   {  Foodworker[Player].WorkerArrays[0]=CBTRUE;
      CTRL_TASK_Clear( &Task );
      Task.nID=Foodworker[Player].WorkerArrays[1];
      Task.nTaskID=ZUJIAN;
      Task.nTaskIDEx=MAP_UNIT_TYPE_WGEN;
      Task.nParam1=GetGeneral(Player,FOOD);
	  if (Task.nParam1 == CBNULL)
		  return;
	  Task.nParam2=ZJONEFOOD;
      Task.bDone=1;
      Foodworker[Player].GeneralFile=Task.nParam1;
      CTRL_TASK_DeployByComputer(Player,&Task);
	  Foodworker[Player].Env=3;
   }
}

//组建部队

void FoodComponentTeam(WORD Player,WORD LevelPos)
{  //WORD i;
   struct CTRL_TASK_STRUCT Task;

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

   //if (Ironworker.ZJFinish == CBTRUE)
   if (Pro[Player][0].FoodFinish == 0)
   {  CTRL_TASK_Clear( &Task );
      //if (Ironworker.ZJFinish == CBTRUE)
	  {  Foodworker[Player].ZJFinish=0;
		 Task.nID=Foodworker[Player].WorkerArrays[Pro[Player][0].Foodworkernum];
		 Task.nTaskID=ZUJIAN;
		 Task.nTaskIDEx=MAP_UNIT_TYPE_WGEN;
		 Task.nParam1=Foodworker[Player].GeneralFile;
		 Task.nParam2=ZJOTHERFOOD;
		 Task.bDone=1;
		 CTRL_TASK_DeployByComputer(Player,&Task);
	  }
      return;
   }
   if (Foodworker[Player].GeneralID == CBNULL)
      return; 
   CTRL_TASK_Clear( &Task );
   Task.nID=Foodworker[Player].GeneralID;
   Task.nTaskID=YUNSONG;
   Task.nTaskIDEx=1;
   Task.nTaskIDEx2=MAITIAN;
   switch (LevelPos)
   {
   case 5:
	   GetFoodId(30,130,Player);
	   if (Tsource[Player].Foodsource.POS == CBFALSE)
	   {
		   GetFoodId(30,180,Player);
		   if (Tsource[Player].Foodsource.POS == CBFALSE)
		   {
			   GetFoodId(30,280,Player);
			   //MessageBox(0,"No Food Source !","Error",MB_OK );
			   OutputDebugString( "No Food Source !\n" );
			   return;
		   }
	   }
	   break;

   case 7:
	   GetFoodId(50,130,Player);
	   if (Tsource[Player].Foodsource.POS == CBFALSE)
	   {
		   GetFoodId(30,180,Player);
		   if (Tsource[Player].Foodsource.POS == CBFALSE)
		   {
			   GetFoodId(130,80,Player);
			   //MessageBox(0,"No Food Source !","Error",MB_OK );
			   OutputDebugString( "No Food Source !\n" );
			   return;
		   }
	   }
	   break;
   case 9:
	   GetFoodId(150,30,Player);
	   if (Tsource[Player].Foodsource.POS == CBFALSE)
	   {
		   GetFoodId(180,10,Player);
		   if (Tsource[Player].Foodsource.POS == CBFALSE)
		   {
			   GetFoodId(380,380,Player);
			   //MessageBox(0,"No Food Source !","Error",MB_OK );
			   OutputDebugString( "No Food Source !\n" );
			   return;
		   }
	   }
	   break;
   case 16:
	   GetFoodId(150,20,Player);
	   if (Tsource[Player].Foodsource.POS == CBFALSE)
	   {
		   GetFoodId(230,20,Player);
		   if (Tsource[Player].Foodsource.POS == CBFALSE)
		   {
			   GetFoodId(330,23,Player);
			   //MessageBox(0,"No Food Source !","Error",MB_OK );
			   OutputDebugString( "No Food Source !\n" );
			   return;
		   }
	   }
	   break;
   case 32:
	   if (Player == 1)
	   {
		   GetFoodId(150,40,Player);
		   if (Tsource[Player].Foodsource.POS == CBFALSE)
		   {
			   GetFoodId(230,40,Player);
			   if (Tsource[Player].Foodsource.POS == CBFALSE)
			   {
				   GetFoodId(330,53,Player);
				   //MessageBox(0,"No Food Source !","

⌨️ 快捷键说明

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