📄 tgeneral.cpp
字号:
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 + -