📄 tgeneral.cpp
字号:
}
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=Foodworker[player].WorkerArrays[i];
Task.nTaskID=HUISONG;
Task.nTaskIDEx=2;
Task.nTaskIDEx2=MAITIAN;
Task.nParam1=TY_FindNearHome(player,Tsource[player].Foodsource.X,Tsource[player].Foodsource.Y,1);
if (Task.nParam1 == MAP_DATA_NONE)
return;
Task.nParam2=0;
Task.nParam3=Tsource[player].Foodsource.X;
Task.nParam4=Tsource[player].Foodsource.Y;
CTRL_TASK_DeployByComputer(player,&Task);
}
else
{ 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;
CTRL_TASK_DeployByComputer(player,&Task);
}
}
}
}
}
}
//General avoid.
}
//scan attack .
//scan sucess.
void AttackGeneralProcess(WORD player,WORD Which)
{ WORD i;
WORD Attack0;
UNIT_STRUCT * Pobject;
UNIT_STRUCT * Pobject1;
UNIT_STRUCT * Pobject2;
struct CTRL_TASK_STRUCT Task;
if (Pro[player][Which].AttComFinish != 1 )
return;
if (Attacksoldier[player][Which].GeneralID == 65535
||Attacksoldier[player][Which].GeneralID == CBNULL
||Attacksoldier[player][Which].GeneralID == CBFALSE)
return;
Pobject=MAP_GetUnit(Attacksoldier[player][Which].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_GetGeneral(Pobject1) != NULL)
{
Pobject2=MAP_GetUnit(Pobject1->Gen.nID);
//以防万一
if (Pobject2->nType == MAP_UNIT_TYPE_BUILDING
||Pobject2->nType == MAP_UNIT_TYPE_NONE
||Pobject2->nType == MAP_UNIT_TYPE_RESOURCE
||Pobject2->nType == MAP_UNIT_TYPE_SPECIAL
||Pobject2->nType == MAP_UNIT_TYPE_FLAG
||Pobject2->nType == MAP_UNIT_TYPE_SHIPYARD
||Pobject2->nType == MAP_UNIT_TYPE_LADDER)
return;
if (EYE_IfUnitIsDead(Pobject2) != TRUE)
{
if (Pobject1->nLife < Pobject->nLife)
{
if (getrandom( 0,20 ) > 16
&&EYE_IfFight(Pobject->nLife,
DATA_Lib.Gen[Pobject->Gen.nID].nWuLi,
Pobject1->nLife,
DATA_Lib.Gen[Pobject1->Gen.nID].nWuLi))
{
//单挑
CTRL_TASK_Clear( &Task );
Task.nID=Pobject->nID;
Task.nTaskID=DANTIAO;
Task.nTaskIDEx=2;
Task.nParam1=Pobject1->nID;
Task.bDone=1;
CTRL_TASK_DeployByComputer(player,&Task);
return;
}
}
}
}
if (EYE_IfUnitIsDead(Pobject1) != TRUE)
{
if (Pobject->Status.nTaskID == GONGJI
&&Pobject1->nID == Pobject->Status.nParam1)
return;
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Attacksoldier[player][Which].GeneralID;
Task.nTaskID=GONGJI;
Task.nTaskIDEx=2;
Task.nParam1=Pobject->nIDAttackMe;
Attack0=Pobject->nIDAttackMe;
CTRL_TASK_DeployByComputer(player,&Task);
for (i=1;i<Attacksoldier[player][Which].WorkerNum+1;i++)
{ if (Attacksoldier[player][Which].WorkerArrays[i] != CBNULL)
{ Pobject1=MAP_GetUnit(Attacksoldier[player][Which].WorkerArrays[i]);
//以防万一
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->nType == 0
||Pobject->Task.nTaskID == SHANCHU
||Pobject->nLife <=0)
continue;
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Attacksoldier[player][Which].WorkerArrays[i];
Task.nTaskID=GONGJI;
Task.nTaskIDEx=2;
Task.nParam1=Attack0;
CTRL_TASK_DeployByComputer(player,&Task);
}
}
#ifdef TY_JIMOU
switch(getrandom( 0,3 ))
{
case 0:
GeneralJiMou(Pobject,HUNLUAN);
break;
case 1:
GeneralJiMou(Pobject,JIANSU);
break;
case 2:
GeneralJiMou(Pobject,JIASU);
break;
case 3:
GeneralJiMou(Pobject,JILI);
break;
}
#endif
}
}
else
{ Pobject=MAP_GetUnit(Attacksoldier[player][Which].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->Task.nTaskID != GONGJI)
{
for (i=1;i<Attacksoldier[player][Which].WorkerNum+1;i++)
{ if (Attacksoldier[player][Which].WorkerArrays[i] != CBNULL)
{ Pobject=MAP_GetUnit(Attacksoldier[player][Which].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;
if (Pobject->nType == 0
||Pobject->Task.nTaskID == SHANCHU
||Pobject->nLife <=0)
continue;
Assert(Pobject->nType == 3);
if (Pobject->Task.nTaskID == QUXIAO)
{
Pobject=MAP_GetUnit(Attacksoldier[player][Which].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->nType == 0
||Pobject->Task.nTaskID == SHANCHU
||Pobject->nLife <=0
||Pobject->Task.nTaskID == JIMOU)
continue;
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Attacksoldier[player][Which].WorkerArrays[i];
Task.nTaskID=Pobject->Task.nTaskID;
Task.nTaskIDEx=Pobject->Task.nTaskIDEx;
Task.nParam1=Pobject->Task.nParam1;
CTRL_TASK_DeployByComputer(player,&Task);
}
continue;
}
}
}
else
{
Pobject1=MAP_GetUnit(Pobject->Task.nParam1);
if (EYE_IfUnitIsDead(Pobject1) != TRUE)
{ for (i=1;i<Attacksoldier[player][Which].WorkerNum+1;i++)
{ if (Attacksoldier[player][Which].WorkerArrays[i] != CBNULL)
{ Pobject=MAP_GetUnit(Attacksoldier[player][Which].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;
if (Pobject->nType == 0
||Pobject->Task.nTaskID == SHANCHU
||Pobject->nLife <=0)
continue;
Assert(Pobject->nType == 3);
if (Which == 3)
{
if (Pobject->Task.nTaskID == QUXIAO)
{
Pobject=MAP_GetUnit(Attacksoldier[player][Which].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->nType == 0
||Pobject->Task.nTaskID == SHANCHU
||Pobject->nLife <=0
||Pobject->Task.nTaskID == JIMOU)
continue;
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Attacksoldier[player][Which].WorkerArrays[i];
Task.nTaskID=Pobject->Task.nTaskID;
Task.nTaskIDEx=Pobject->Task.nTaskIDEx;
Task.nParam1=Pobject->Task.nParam1;
CTRL_TASK_DeployByComputer(player,&Task);
}
continue;
}
if (Pobject->Status.nTaskID == QUXIAO
||Pobject->Status.nParam1 == 0)
{ Pobject=MAP_GetUnit(Attacksoldier[player][Which].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->nType == 0
||Pobject->Task.nTaskID == SHANCHU
||Pobject->nLife <=0
||Pobject->Task.nTaskID == JIMOU)
continue;
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Attacksoldier[player][Which].WorkerArrays[i];
Task.nTaskID=GONGJI;
Task.nTaskIDEx=2;
Task.nParam1=Pobject->Task.nParam1;
if (Task.nParam1 == 0)
continue;
CTRL_TASK_DeployByComputer(player,&Task);
}
}
}
}
}
}
}
void DefanceGeneralProcess(WORD player,WORD Which)
{
WORD i;
WORD Defance0;
UNIT_STRUCT * Pobject;
UNIT_STRUCT * Pobject1;
struct CTRL_TASK_STRUCT Task;
if (Pro[player][Which].DefComFinish != 1 )
return;
if (Defancesoldier[player][0].GeneralID == 65535
||Defancesoldier[player][0].GeneralID == CBNULL
||Defancesoldier[player][0].GeneralID == CBFALSE)
return;
Pobject=MAP_GetUnit(Defancesoldier[player][0].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)
{
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Defancesoldier[player][0].GeneralID;
Task.nTaskID=GONGJI;
Task.nTaskIDEx=2;
Task.nParam1=Pobject->nIDAttackMe;
Defance0=Pobject->nIDAttackMe;
CTRL_TASK_DeployByComputer(player,&Task);
for (i=1;i<Defancesoldier[player][0].WorkerNum+1;i++)
{ if (Defancesoldier[player][0].WorkerArrays[i] != CBNULL)
{ Pobject1=MAP_GetUnit(Defancesoldier[player][0].WorkerArrays[i]);
//以防万一
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 (Pobject1->nType == 0
||Pobject1->Task.nTaskID == SHANCHU
||Pobject1->nLife <=0)
continue;
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Defancesoldier[player][0].WorkerArrays[i];
Task.nTaskID=GONGJI;
Task.nTaskIDEx=2;
Task.nParam1=Defance0;
CTRL_TASK_DeployByComputer(player,&Task);
}
}
#ifdef TY_JIMOU
switch(getrandom( 0,1 ))
{
case 0:
GeneralJiMou(Pobject,HUNLUAN);
break;
case 1:
GeneralJiMou(Pobject,JIANSU);
break;
}
#endif
}
}
else
{ Pobject=MAP_GetUnit(Defancesoldier[player][0].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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -