📄 temperor.cpp
字号:
for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
{
if (DATA_Lib.Gen[i].bOnBattle == FALSE
&&DATA_Lib.Gen[i].nID != 0
&&DATA_Lib.Gen[i].nJunZhu == nPlayer)
{
return (CBTRUE);
}
}
return (CBNULL);
}
WORD GetXieZaiId()
{
WORD j;
for (j=0;j<PLAYER_UNIT_MAX;j++)
{
if (GAME.Players[GAME.nMe].Unit[j].nType == MAP_UNIT_TYPE_BUILDING)
{
if (GAME.Players[GAME.nMe].Unit[j].Draw.nFile == 10
||GAME.Players[GAME.nMe].Unit[j].Draw.nFile == 11)
{
return (GAME.Players[GAME.nMe].Unit[j].nID);
}
}
}
for (j=0;j<PLAYER_UNIT_MAX;j++)
{
if (GAME.Players[GAME.nMe].Unit[j].nType == MAP_UNIT_TYPE_BUILDING)
{
return (GAME.Players[GAME.nMe].Unit[j].nID);
}
}
return (CBNULL);
}
//得到一个将领的ID值
WORD GetGeneral(WORD nPlayer,WORD Type)
{ WORD i,j=0;
//UNIT_STRUCT * Pobject;
switch(Type)
{ case IRON:
case FOOD:
case LUMBER:
case REPAIRE:
for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
{
if (DATA_Lib.Gen[i].nJunZhu == nPlayer)
//&&DATA_Lib.Gen[i].bOnBattle == 0)
j++;
}
for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
{
if (DATA_Lib.Gen[i].bOnBattle == FALSE
&&DATA_Lib.Gen[i].nID != 0
&&DATA_Lib.Gen[i].nJunZhu == nPlayer
&&DATA_Lib.Gen[i].nType == 3)
{
DATA_Lib.Gen[i].bOnBattle=TRUE;
return (DATA_Lib.Gen[i].nID);
}
}
for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
{
if (DATA_Lib.Gen[i].bOnBattle == FALSE
&&DATA_Lib.Gen[i].nID != 0
&&DATA_Lib.Gen[i].nJunZhu == nPlayer)
{
DATA_Lib.Gen[i].bOnBattle=TRUE;
return (DATA_Lib.Gen[i].nID);
}
}
break;
case DEFANCE:
case ATTACK:
case SHIP:
for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
{ if (DATA_Lib.Gen[i].bOnBattle == FALSE
&&DATA_Lib.Gen[i].nID != 0
&&DATA_Lib.Gen[i].nJunZhu == nPlayer
&&DATA_Lib.Gen[i].nType != 3)
{
DATA_Lib.Gen[i].bOnBattle=TRUE;
return (DATA_Lib.Gen[i].nID);
}
}
for (i=1;i<DATA_UNIT_GENERAL_MAX;i++)
{
if (DATA_Lib.Gen[i].bOnBattle == FALSE
&&DATA_Lib.Gen[i].nID != 0
&&DATA_Lib.Gen[i].nJunZhu == nPlayer)
{
DATA_Lib.Gen[i].bOnBattle=TRUE;
return (DATA_Lib.Gen[i].nID);
}
}
break;
}
//WriteLogFile("nogen.ty","no general\n");
return (CBNULL);
}
//--- end.
/*
//--- Iron worker process function.
*/
//--- Iron worker process start.
//加入一个工人到将领数组中
void IronAccedeToTeam(WORD Player)
{ UNIT_STRUCT * Pobject;
struct CTRL_TASK_STRUCT Task;
Assert(Ironworker[Player].WorkerArrays[0] == CBFALSE);
Pobject=MAP_GetUnit(Ironworker[Player].GeneralID);
//将领死了
if (EYE_IfUnitIsDead(Pobject) == TRUE)
{
Ironworker[Player].GeneralID=CBNULL;
return;
}
if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
return;
//如果没钱生产
if (!RUN_CREATE_IfEnoughMoney(Player,MAINBATTALION_MAN))
{
Ironworker[Player].Env=2;
//MessageBox( 0, "You Have No Money !", "Error", MB_OK );
OutputDebugString( "No Money To ShengChan A Iron Worker !\n" );
return;
}
//生产一个工人
//need add ShengChanFinish
if (BuildPoint[Player][MAINBATTALION].BPoint->Status.nTaskID == QUXIAO
&&Pro[Player][0].ShengChanPos0 == CBTRUE)
{ //Pro.ShengChanPos0=0;
Assert (Ironworker[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=11;
Task.nParam2=JRONEIRON;
CTRL_TASK_DeployByComputer(Player,&Task);
//Ironworker.WorkerNum++;
}
//加入
else
{ Ironworker[Player].WorkerArrays[0]=CBFALSE;
if (AccedeForIron[Player].WorkerID != CBNULL
&&Ironworker[Player].WorkerArrays[0] == CBFALSE
&&Ironworker[Player].JRPos ==CBTRUE)
{ if (Ironworker[Player].WorkerNum >= WORKER_BASE-13)
{ Ironworker[Player].WorkerArrays[0]=CBTRUE;
}
Pro[Player][0].ShengChanPos0=CBTRUE;
Ironworker[Player].JRPos=0;
CTRL_TASK_Clear( &Task );
Task.nID=AccedeForIron[Player].WorkerID;
Task.nTaskID=JIARU;
Task.nParam1=AccedeForIron[Player].ID;
Task.bDone=1;
AccedeForIron[Player].WorkerID=CBNULL;
AccedeForIron[Player].ID=CBNULL;
CTRL_TASK_DeployByComputer(Player,&Task);
Ironworker[Player].Env=2;
}
}
}
//采集铁矿的操作
void IronTeamWork(WORD Player)
{ WORD i;
UNIT_STRUCT * Pobject;
struct CTRL_TASK_STRUCT Task;
//scan general, alife if dead GeneralID=NULL.
if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
return;
if (Ironworker[Player].GeneralID != CBNULL)
{ Pobject=MAP_GetUnit(Ironworker[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)
{ Ironworker[Player].GeneralID=CBNULL;
/*
for (i=1;i<Ironworker[Player].WorkerNum;i++)
{
if (Ironworker[Player].WorkerArrays[i] != CBNULL)
{
CTRL_TASK_Clear( &Task );
Task.bDone=1;
Task.nID=Ironworker[Player].WorkerArrays[i];
Task.nTaskID=JIESHU;
CTRL_TASK_DeployByComputer(Player,&Task);
}
}
*/
//pause.
Ironworker[Player].GeneralID=CBNULL;
Ironworker[Player].Env=0;
EmAIIronPosClear(Player);
return;
}
//将领没死
else
{
if (Pobject->nLife < (Ironworker[Player].GeneralLife/2))
{
CTRL_TASK_Clear( &Task );
Task.nID=Pobject->nID;
Task.nTaskID=JIESAN;
Task.bDone=1;
CTRL_TASK_DeployByComputer(Player,&Task);
for (i=1;i<=Ironworker[Player].WorkerNum;i++)
{
if (Ironworker[Player].WorkerArrays[i] != CBNULL)
{ Pobject=MAP_GetUnit(Ironworker[Player].WorkerArrays[i]);
if (EYE_IfUnitIsDead(Pobject) == TRUE)
continue;
CTRL_TASK_Clear( &Task );
Task.nID=Ironworker[Player].WorkerArrays[i];
Task.nTaskID=JIESAN;
Task.bDone=1;
CTRL_TASK_DeployByComputer(Player,&Task);
}
}
Ironworker[Player].GeneralID=CBFALSE;
return;
}
for (i=1;i<WORKER_MAX;i++)
{ //assert(Ironworker.WorkerNum <= WORKER_MAX);
if (Ironworker[Player].WorkerArrays[i] != CBNULL)
{ Pobject=MAP_GetUnit(Ironworker[Player].WorkerArrays[i]);
//工人死了
if (EYE_IfUnitIsDead(Pobject) == TRUE)
{ Ironworker[Player].WorkerNum--;
if (Ironworker[Player].WorkerNum <= (WORKER_BASE-10))
{ Ironworker[Player].WorkerArrays[0]=CBFALSE;
Ironworker[Player].WorkerArrays[i]=CBNULL;
if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
continue;
AccedeForIron[Player].ID=Ironworker[Player].GeneralID;
Ironworker[Player].Env=1;
continue;
}
}
}
}
}
Pobject=MAP_GetUnit(Ironworker[Player].GeneralID);
if (BuildPoint[Player][WUQICHANG].hPos == CBNULL)
{
IPos[Player]=0;
}
if (BuildPoint[Player][WUQICHANG].hPos == CBTRUE
&&IPos[Player] ==0)
{
IPos[Player]=1;
CTRL_TASK_Clear( &Task );
Task.nID=Ironworker[Player].GeneralID;
Task.nTaskID=YUNSONG;
Task.nTaskIDEx=2;
Task.nTaskIDEx2=TIEKUANG;
Task.nParam1=TY_FindNearObject(0,
22,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
if (Task.nParam1 == MAP_DATA_NONE)
return;
Tsource[Player].Ironsource=Task.nParam1;
Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
Task.nParam4=TY_FindNearHome(Player,Pobject->Draw.nX,Pobject->Draw.nY,2);
if (Task.nParam4 == MAP_DATA_NONE)
return;
/*
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
Task.nParam4=BuildPoint[Player][MAINBATTALION].BPoint->nID;
else
return;
*/
Task.bDone=1;
CTRL_TASK_DeployByComputer(Player,&Task);
}
if (Pobject->Task.nTaskID == QUXIAO)
{
CTRL_TASK_Clear( &Task );
Task.nID=Ironworker[Player].GeneralID;
Task.nTaskID=YUNSONG;
Task.nTaskIDEx=2;
Task.nTaskIDEx2=TIEKUANG;
Task.nParam1=TY_FindNearObject(0,
22,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
if (Task.nParam1 == MAP_DATA_NONE)
return;
Tsource[Player].Ironsource=Task.nParam1;
Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
Task.nParam4=TY_FindNearHome(Player,Pobject->Draw.nX,Pobject->Draw.nY,2);
if (Task.nParam4 == MAP_DATA_NONE)
return;
/*
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
Task.nParam4=BuildPoint[Player][MAINBATTALION].BPoint->nID;
else
return;
*/
Task.bDone=1;
CTRL_TASK_DeployByComputer(Player,&Task);
}
//Scan ironsource alife.
//扫描资源的多少
//? pause.
Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
if (EYE_IfUnitIsDead(Pobject) == TRUE
&&TY_FindNearObject(0,
22,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY) == MAP_DATA_NONE)
{ if (Lumberworker[Player].GeneralID != CBNULL)
{ Pobject=MAP_GetUnit(Lumberworker[Player].GeneralID);
Assert(Pobject->nType ==MAP_UNIT_TYPE_WGEN );
if (Pobject->nIDAttackMe == MAP_DATA_NONE)
{ CTRL_TASK_Clear( &Task );
Task.nID=Ironworker[Player].GeneralID;
Task.nTaskID=YUNSONG;
Task.nTaskIDEx=1;
Task.nTaskIDEx2=SHULIN;
//if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
// return;
GetLumberId(260,260,Player,Pobject->Draw.nX,Pobject->Draw.nY);
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 (Task.nParam4 == MAP_DATA_NONE)
return;
Task.bDone=1;
CTRL_TASK_DeployByComputer(Player,&Task);
}
}
else
{
if (Foodworker[Player].GeneralID != CBNULL)
{
Pobject=MAP_GetUnit(Foodworker[Player].GeneralID);
Assert(Pobject->nType ==MAP_UNIT_TYPE_WGEN );
if (Pobject->nIDAttackMe == MAP_DATA_NONE)
{
CTRL_TASK_Clear( &Task );
Task.nID=Ironworker[Player].GeneralID;
Task.nTaskID=YUNSONG;
Task.nTaskIDEx=1;
Task.nTaskIDEx2=MAITIAN;
GetFoodId(26,26,Player);
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);
}
}
}
}
}
}
//组建部队
void IronComponentTeam(WORD Player)
{ //WORD i;
struct CTRL_TASK_STRUCT Task;
UNIT_STRUCT * Pobject;
if (BuildPoint[Player][MAINBATTALION].hPos != CBTRUE)
return;
if (Pro[Player][0].Finish == 0)
{ CTRL_TASK_Clear( &Task );
{ Ironworker[Player].ZJFinish=0;
Task.nID=Ironworker[Player].WorkerArrays[Pro[Player][0].Ironworkernum];
Task.nTaskID=ZUJIAN;
Task.nTaskIDEx=MAP_UNIT_TYPE_WGEN;
Task.nParam1=Ironworker[Player].GeneralFile;
Task.nParam2=ZJOTHERIRON;
Task.bDone=1;
CTRL_TASK_DeployByComputer(Player,&Task);
}
return;
}
if (Ironworker[Player].GeneralID == CBNULL)
return;
CTRL_TASK_Clear( &Task );
Task.nID=Ironworker[Player].GeneralID;
Task.nTaskID=YUNSONG;
Task.nTaskIDEx=2;
Task.nTaskIDEx2=TIEKUANG;
Task.nParam1=TY_FindNearObject(0,
22,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nX,
BuildPoint[Player][MAINBATTALION].BPoint->Draw.nY);
if (Task.nParam1 == MAP_DATA_NONE)
return;
Tsource[Player].Ironsource=Task.nParam1;
Pobject=MAP_GetUnit(Tsource[Player].Ironsource);
Task.nParam4=TY_FindNearHome(Player,Pobject->Draw.nX,Pobject->Draw.nY,2);
if (Task.nParam4 == MAP_DATA_NONE)
return;
Task.bDone=1;
CTRL_TASK_DeployByComputer(Player,&Task);
Ironworker[Player].Env=2;
}
//生产部队成员
void IronTeamInit(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))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -