📄 tgeneral.cpp
字号:
||Pobject->nType == MAP_UNIT_TYPE_LADDER)
return;
if (EYE_IfUnitIsDead(Pobject) != TRUE)
{ for (i=1;i<=Defancesoldier[player][0].WorkerNum;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;
Assert(Pobject1->nType == 3);
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Defancesoldier[player][0].WorkerArrays[i];
Task.nTaskID=Pobject->Task.nTaskID;
if (Task.nTaskID == GONGJI)
Task.nTaskIDEx=2;
else
{
if (Task.nTaskID == YIDONG)
{
Task.nParam2=Pobject->Task.nParam2;
Task.nParam3=Pobject->Task.nParam3;
Task.nParam1=0;
Task.nTaskIDEx=1;
}
else
{
if (Task.nTaskID == QUXIAO)
{
//Task.nTaskID=QUXIAO;
continue;
}
else
continue;
}
}
Task.nParam1=Pobject->Task.nParam1;
CTRL_TASK_DeployByComputer(player,&Task);
}
}
}
}
}
void RepaireGeneralProcess(WORD Player)
{ WORD i;
UNIT_STRUCT * Pobject;
UNIT_STRUCT * Pobject1;
struct CTRL_TASK_STRUCT Task;
if (Repaireworker[Player].GeneralID == CBNULL )
return;
Pobject=MAP_GetUnit(Repaireworker[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
&&Defancesoldier[Player][0].GeneralID != CBNULL)
{
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();
if (Defancesoldier[Player][0].GeneralID == CBNULL)
{
if (Defancesoldier[Player][0].WorkerNum != 0)
{
for (i=0;i<Defancesoldier[Player][0].WorkerNum;i++)
{
if (Defancesoldier[Player][0].WorkerArrays[i] != CBNULL)
{
Task.bDone=1;
Task.nID=Defancesoldier[Player][0].WorkerArrays[i];
Task.nTaskID=GONGJI;
Task.nTaskIDEx=2;
Task.nParam1=Pobject->nIDAttackMe;
CTRL_TASK_DeployByComputer(Player,&Task);
}
}
}
return ;
}
else
{ Task.bDone=1;
Task.nID=Defancesoldier[Player][0].GeneralID;
Task.nTaskID=GONGJI;
Task.nTaskIDEx=2;
Task.nParam1=Pobject->nIDAttackMe;
CTRL_TASK_DeployByComputer(Player,&Task);
}
}
}
else
{
// Nov.10.1997, Liu Gang
if (EYE_IfUnitIsDead(Pobject) != TRUE)
return;
for (i=1;i<Repaireworker[Player].WorkerNum+1;i++)
{
if (Repaireworker[Player].WorkerArrays[i] != CBNULL)
{
Pobject=MAP_GetUnit(Repaireworker[Player].WorkerArrays[i]);
Pobject1=MAP_GetUnit(Repaireworker[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 (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)
{ Repaireworker[Player].WorkerNum--;
if (Repaireworker[Player].WorkerNum <= WORKER_BASE)
{ Repaireworker[Player].WorkerArrays[0]=CBFALSE;
Repaireworker[Player].WorkerArrays[i]=CBNULL;
AccedeForRepaire[Player].ID=Repaireworker[Player].GeneralID;
Repaireworker[Player].Env=1;
continue;
}
}
Assert(Pobject->nType == 10);
if (Pobject->Status.nTaskID == QUXIAO)
{
if (Pobject->Soldier.nResource != 0
&&Pobject->Task.nTaskIDEx == 2)
{
CTRL_TASK_Clear( &Task );
Task.nID=Pobject->nID;
Task.nTaskID=HUISONG;
Task.nTaskIDEx=2;
Task.nTaskIDEx2=TIEKUANG;
if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
continue;
Task.nParam4=TY_FindNearObject(0,
22,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
if (Task.nParam4 == MAP_DATA_NONE)
return;
Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
Task.nParam1=TY_FindNearHome(Player,Pobject->Draw.nX,Pobject->Draw.nY,2);
Pobject=MAP_GetUnit(Task.nParam1);
/*
if (Pobject->Draw.nPlayer == GAME.nMe
||Pobject->Draw.nPlayer != Player)
WriteErrorFile("player.err",Pobject->Draw.nPlayer);
*/
if (Task.nParam1 == MAP_DATA_NONE)
return;
Task.bDone=1;
CTRL_TASK_DeployByComputer(Player,&Task);
}
else
{
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Repaireworker[Player].WorkerArrays[i];
Task.nTaskID=Pobject1->Task.nTaskID;
Task.nTaskIDEx=Pobject1->Task.nTaskIDEx;
Task.nTaskIDEx2=Pobject1->Task.nTaskIDEx2;
Task.nParam1=Pobject1->Task.nParam1;
Task.nParam2=Pobject1->Task.nParam2;
Task.nParam3=Pobject1->Task.nParam3;
Task.nParam4=Pobject1->Task.nParam4;
CTRL_TASK_DeployByComputer(Player,&Task);
}
}
if (RepaireTask.bDone ==1)
{
Pobject=MAP_GetUnit(Repaireworker[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;
if (Pobject->Soldier.nResource != 0
&&Pobject->Task.nTaskIDEx == 2)
continue;
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Repaireworker[Player].WorkerArrays[i];
Task.nTaskID=RepaireTask.nTaskID;
Task.nTaskIDEx=RepaireTask.nTaskIDEx;
Task.nTaskIDEx2=RepaireTask.nTaskIDEx2;
Task.nParam1=RepaireTask.nParam1;
Task.nParam2=RepaireTask.nParam2;
Task.nParam3=RepaireTask.nParam3;
Task.nParam4=RepaireTask.nParam4;
CTRL_TASK_DeployByComputer(Player,&Task);
continue;
}
if (Pobject->Task.nTaskID == QUXIAO
&&Pobject1->Task.nTaskID == JIANZAO)
{
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Repaireworker[Player].WorkerArrays[i];
Task.nTaskID=Pobject1->Task.nTaskID;
Task.nTaskIDEx=Pobject1->Task.nTaskIDEx;
Task.nTaskIDEx2=Pobject1->Task.nTaskIDEx2;
Task.nParam1=Pobject1->Task.nParam1;
Task.nParam2=Pobject1->Task.nParam2;
Task.nParam3=Pobject1->Task.nParam3;
Task.nParam4=Pobject1->Task.nParam4;
CTRL_TASK_DeployByComputer(Player,&Task);
continue;
}
}
}
CTRL_TASK_Clear( &RepaireTask );
RepaireTask.bDone=0;
}
}
void ShipGeneralProcess(WORD player,WORD Which)
{
WORD i;
WORD Defance0;
UNIT_STRUCT * Pobject;
UNIT_STRUCT * Pobject1;
struct CTRL_TASK_STRUCT Task;
if (Pro[player][Which].ShipComFinish != 1 )
return;
if (Shipsoldier[player][Which].GeneralID == 65535
||Shipsoldier[player][Which].GeneralID == CBNULL
||Shipsoldier[player][Which].GeneralID == CBFALSE)
return;
Pobject=MAP_GetUnit(Shipsoldier[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_IfUnitIsDead(Pobject1) != TRUE)
{
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Shipsoldier[player][Which].GeneralID;
Task.nTaskID=GONGJI;
Task.nTaskIDEx=2;
Task.nParam1=Pobject->nIDAttackMe;
Defance0=Pobject->nIDAttackMe;
CTRL_TASK_DeployByComputer(player,&Task);
for (i=1;i<Shipsoldier[player][Which].WorkerNum+1;i++)
{ if (Shipsoldier[player][Which].WorkerArrays[i] != CBNULL)
{ Pobject1=MAP_GetUnit(Shipsoldier[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 (Pobject1->nType == 0
||Pobject1->Task.nTaskID == SHANCHU
||Pobject1->nLife <=0)
continue;
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Shipsoldier[player][Which].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(Shipsoldier[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 (EYE_IfUnitIsDead(Pobject) != TRUE)
{
if (Which == 3)
{
i=1;
}
for (i=1;i<=Shipsoldier[player][Which].WorkerNum;i++)
{ if (Shipsoldier[player][Which].WorkerArrays[i] != CBNULL)
{
Pobject1=MAP_GetUnit(Shipsoldier[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 (Pobject1->nType == 0
||Pobject1->Task.nTaskID == SHANCHU
||Pobject1->nLife <=0)
continue;
//assert(Pobject1->nType == 3);
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Shipsoldier[player][Which].WorkerArrays[i];
Task.nTaskID=Pobject->Task.nTaskID;
if (Task.nTaskID == GONGJI)
Task.nTaskIDEx=2;
else
{
if (Task.nTaskID == YIDONG)
{
Task.nParam2=Pobject->Task.nParam2;
Task.nParam3=Pobject->Task.nParam3;
Task.nParam1=0;
Task.nTaskIDEx=1;
}
else
{
if (Task.nTaskID == QUXIAO)
{
//Task.nTaskID=QUXIAO;
continue;
}
else
continue;
}
}
Task.nParam1=Pobject->Task.nParam1;
CTRL_TASK_DeployByComputer(player,&Task);
}
}
}
}
}
void GeneralOfFight(WORD player,WORD Level)
{
//根据关的不同
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -