📄 temperor.cpp
字号:
/* [ EMPEROR.C ]
* EMPEROR.C FOR INSTINCE MODULE .
* Chbi Fight emperor interface module.
* Programmed By Y.Tian. No#Eye. WayAhead. Co. 1997.
* Data 3/18/1997.
*/
#include "stdafx.h"
#include "temperor.h"
#include "tgeneral.h"
#include "tai.h"
#include "cbrdelay.h"
#include "interfac.h"
#include "cbeyes.h"
#include <stdio.h>
#include <assert.h>
#include <time.h>
#include "Assert.h"
#define SAFEAREA_X 20
#define SAFEAREA_Y 43
WORD SAFEPOS=0;
WORD IPos[5]={0,0,0,0,0};
WORD X[5]={0,0,0,0,0};
WORD Y[5]={0,0,0,0,0};
WORD X1[5]={0,0,0,0,0};
WORD Y1[5]={0,0,0,0,0};
WORD pos[5]={0,0,0,0,0};
WORD AttackEnemyPos[5]={0,0,0,0,0};
WORD EnemyID[5]={CBNULL,CBNULL,CBNULL,CBNULL,CBNULL};
WORD Timer[5]={0,0,0,0,0};
WORD ShipEnemyPos[5]={0,0,0,0,0};
WORD Waitship[5]={0,0,0,0,0};
WORD Wait[5]={0,0,0,0,0};
WORD Pos[5]={0,0,0,0,0};
WORD DelayTime[5]={0,0,0,0,0};
WORD SGeneral[5]={0,0,0,0,0};
WORD Timer1[5]={0,0,0,0,0};
WORD num[5]={1,1,1,1,1};
WORD num1[5]={0,0,0,0,0};
WORD num2[5]={0,0,0,0,0};
WORD numT[5]={0,0,0,0,0};
WORD TimeG[5]={0,0,0,0,0};
WORD RDelay[5]={0,0,0,0,0};
WORD AIPlayer=0;
WORD SCANTIME[5]={70,70,70,70,70};
WORD SHIPX=0;
WORD SHIPY=0;
//#define TY_TEST
// 系统当前调色版
//extern LPDIRECTDRAWPALETTE lpDDPal=NULL; // current palette that primary surface is using
WORD Delay=0;
EMMPERORPRO Pro[5][4];
TSOURCE Tsource[5];
WORD SaveArr[70000];
ACCEDE AccedeForIron[5];
ACCEDE AccedeForLumber[5];
ACCEDE AccedeForFood[5];
ACCEDE AccedeForRepaire[5];
WORKERPRO Ironworker[5];
WORKERPRO Lumberworker[5];
WORKERPRO Foodworker[5];
WORKERPRO Repaireworker[5];
//路战队
WORKERPRO Attacksoldier[5][4];
WORKERPRO Defancesoldier[5][4];
//auto attack team
WORD AutoAttack[20];
//海战队
WORKERPRO Shipsoldier[5][4];
BUILD_BUILDING BuildBuilding[5][3];
TGUARD Tguard[5];
BUILDP BuildPoint[5][15];
struct CTRL_TASK_STRUCT RepaireTask;
//工人
WORD MAINBATTALION_MAN=30;
//工兵
WORD BOW_MAN=45;
//步兵
WORD DOGFACE_MAN=38;
//骑兵
WORD QIBING_MAN=37;
//车兵
WORD CHEBING_MAN=34;
//运输船
WORD YUNSHUSHIP=47;
//快船
WORD SHENGJISHIP=46;
//升级战船
//WORD SHENGJIFSHIP=;
//技术等级
WORD TechLevel[40];
//0: 路战
//1:海战
//地图的类型
WORD MapPos[40];
//clock_t times,timee;
//--- define function .
void EmAIRepairePosClear(WORD Player);
WORD ScanLumberAlife(WORD X,WORD Y);
WORD ScanLevelAttrib(WORD levelatt);
void IronComponentTeam(WORD Player);
void IronTeamWork(WORD Player);
void IronworkerProcess(WORD Player);
void DevelopWorkerTeam(WORD Player,WORD DuringPos,WORD LevelPos);
void TY_IDProcess(WORD Id,WORD IdPos,WORD Which);
void IronTeamInit(WORD Player);
void IronAccedeToTeam(WORD Player);
void LumberworkerProcess(WORD Player,WORD LevelPos);
void FoodworkerProcess(WORD Player,WORD LevelPos);
void BuildWarTeam(WORD Player,WORD DuringPos);
void WarTeamWork(WORD Player,WORD DuringPos);
void EmAIAttackSoldierClear(WORD Player,WORD j);
void EmAIIronPosClear(WORD Player);
void EmAILumberPosClear(WORD Player);
void EmAIFoodPosClear(WORD Player);
void GuardTowerProcess(UNIT_STRUCT * Pobject);
void GetLumberId(WORD NL,WORD NR,WORD Player,WORD TX,WORD TY);
void GetFoodId(WORD NL,WORD NR,WORD Player);
void EmAIDefanceSoldierClear(WORD Player,WORD j);
void EmAIShipSoldierClear(WORD Player,WORD j);
//--- Another process .
//--- start.
//查找自己的建筑。
void EYE_ScanBuildAlife(WORD Player)
{ WORD i;
WORD num=0;
WORD num1=0;
for (i=0;i<PLAYER_UNIT_MAX;i++)
{
if (i > GAME.Players[Player].wUnitCounter )
break;
#ifdef TY_TEST
if (GAME.Players[Player].Unit[i].nType == MAP_UNIT_TYPE_BUILDING
&&Player == 3)
{
WriteErrorFile("error\\build.ty",GAME.Players[Player].Unit[i].Draw.nFile);
}
#endif
if ((GAME.Players[Player].Unit[i].nType == MAP_UNIT_TYPE_BUILDING
&&GAME.Players[Player].Unit[i].Task.nTaskID != JIANZAOZHONG
&&GAME.Players[Player].Unit[i].Task.nTaskID != SHANCHU)
||(GAME.Players[Player].Unit[i].nType == MAP_UNIT_TYPE_SHIPYARD))
{
switch (GAME.Players[Player].Unit[i].Draw.nFile)
{
//帅帐
case 0:
case 1:
switch (GAME.nID)
{
case 11:
if (Player == 3)
{
if (GAME.Players[Player].Unit[i].Draw.nX == 78)
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
}
else
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
break;
case 12:
if (Player == 3)
{
if (GAME.Players[Player].Unit[i].Draw.nX<MAP_Lib.szNum.cx/2)
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
}
else
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
break;
case 13:
if (Player == 3)
{
if (GAME.Players[Player].Unit[i].Draw.nX == 98)
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
}
else
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
break;
case 16:
if (Player == 1)
{
if (GAME.Players[Player].Unit[i].Draw.nX == 20)
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
}
else
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
break;
case 27:
if (Player == 1)
{
if (GAME.Players[Player].Unit[i].Draw.nX == 37)
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
}
else
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
break;
case 28:
if (Player == 1)
{
if (GAME.Players[Player].Unit[i].Draw.nX == 32)
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
}
else
{
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
}
break;
default:
if (BuildPoint[Player][MAINBATTALION].hPos == CBTRUE)
continue;
BuildPoint[Player][MAINBATTALION].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MAINBATTALION].hPos=CBTRUE;
//if (Player != GAME.nMe)
Pro[Player][0].HomeID=BuildPoint[Player][MAINBATTALION].BPoint->nID;
break;
}
break;
//武器库
case 2:
case 3:
if (BuildPoint[Player][WUQICHANG].hPos == CBTRUE)
continue;
BuildPoint[Player][WUQICHANG].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][WUQICHANG].hPos=CBTRUE;
break;
//木材厂
case 4:
case 5:
if (BuildPoint[Player][MUCAICHANG].hPos == CBTRUE)
continue;
BuildPoint[Player][MUCAICHANG].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][MUCAICHANG].hPos=CBTRUE;
break;
//骑兵所
case 6:
case 7:
switch (GAME.nID)
{
case 12:
if (Player == 3)
{
if (GAME.Players[Player].Unit[i].Draw.nX<MAP_Lib.szNum.cx/2)
{
if (BuildPoint[Player][QIBINGSUO].hPos == CBTRUE)
continue;
BuildPoint[Player][QIBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][QIBINGSUO].hPos=CBTRUE;
}
}
else
{
if (BuildPoint[Player][QIBINGSUO].hPos == CBTRUE)
continue;
BuildPoint[Player][QIBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][QIBINGSUO].hPos=CBTRUE;
}
break;
default:
if (BuildPoint[Player][QIBINGSUO].hPos == CBTRUE)
continue;
BuildPoint[Player][QIBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][QIBINGSUO].hPos=CBTRUE;
break;
}
break;
//车兵所
case 8:
case 9:
switch (GAME.nID)
{
case 12:
if (Player == 3)
{
if (GAME.Players[Player].Unit[i].Draw.nX<MAP_Lib.szNum.cx/2)
{
if (BuildPoint[Player][CHEBINGSUO].hPos == CBTRUE)
continue;
BuildPoint[Player][CHEBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][CHEBINGSUO].hPos=CBTRUE;
}
}
else
{
if (BuildPoint[Player][CHEBINGSUO].hPos == CBTRUE)
continue;
BuildPoint[Player][CHEBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][CHEBINGSUO].hPos=CBTRUE;
}
break;
default:
if (BuildPoint[Player][CHEBINGSUO].hPos == CBTRUE)
continue;
BuildPoint[Player][CHEBINGSUO].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][CHEBINGSUO].hPos=CBTRUE;
break;
}
break;
//粮仓
case 10:
case 11:
if (BuildPoint[Player][LIANGCANG].hPos == CBTRUE)
continue;
BuildPoint[Player][LIANGCANG].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][LIANGCANG].hPos=CBTRUE;
break;
//步兵所
case 12:
case 13:
if (BuildPoint[Player][DOGFACE].hPos == CBTRUE)
continue;
BuildPoint[Player][DOGFACE].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][DOGFACE].hPos=CBTRUE;
break;
//工兵所
case 14:
case 15:
if (BuildPoint[Player][BOW].hPos == CBTRUE)
continue;
BuildPoint[Player][BOW].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][BOW].hPos=CBTRUE;
break;
//船坞
case 20:
if (BuildPoint[Player][CHUANWU].hPos == CBTRUE)
continue;
BuildPoint[Player][CHUANWU].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][CHUANWU].hPos=CBTRUE;
break;
//钱庄
case 23:
if (BuildPoint[Player][QIANZHUANG].hPos == CBTRUE)
continue;
BuildPoint[Player][QIANZHUANG].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][QIANZHUANG].hPos=CBTRUE;
break;
//箭楼
case 18:
case 19:
if (BuildPoint[Player][JIANLOU].hPos == CBTRUE)
continue;
BuildPoint[Player][JIANLOU].BPoint=&GAME.Players[Player].Unit[i];
BuildPoint[Player][JIANLOU].hPos=CBTRUE;
break;
}
}
}
}
WORD HaveGeneral(WORD nPlayer)
{
WORD i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -