203 lines
4.7 KiB
C++
203 lines
4.7 KiB
C++
#pragma once
|
||
|
||
using namespace wylib::container;
|
||
|
||
enum tagSceneType
|
||
{
|
||
enSceneTypeCommon=0, ///< 普通场景
|
||
enSceneTypeActivity=1, ///< 活动
|
||
enSceneTypeFb=2, ///< 副本场景
|
||
enSceneTypePractice=3, ///< 挂机场景(普通挂机)
|
||
|
||
|
||
};
|
||
class CNpc;
|
||
//FuBenConfig.txt 副本相关,主要就是定义副本对应的场景列表
|
||
|
||
typedef struct tagCommonFuBenConfig
|
||
{
|
||
int nFbId;
|
||
char fbName[1024];
|
||
short nFbConfType;
|
||
short nFbEnterType;
|
||
bool bDisableMonsterPropAdjust;
|
||
bool _resv;
|
||
short nRecommandLevel;
|
||
int nDestoryTime;
|
||
int nDefSceneId;
|
||
GOODS_TAG ConsumeList[3];
|
||
}COMMONFUBENCONFIG,*PCOMMONFUBENCONFIG;
|
||
|
||
typedef struct tagRefreshConfig
|
||
{
|
||
int nEntityId;//怪物的id值,根据这个id值读取怪物的属性
|
||
TICKCOUNT nNextRefreshTime; //刷怪的时间间隔
|
||
int nFirstTime; //第一次刷怪的延长时间
|
||
int nCount; //每次刷怪的数量
|
||
int nEntityLevel;
|
||
int nMobX;
|
||
int nMobY;
|
||
int nMobRange;
|
||
int nLiveTime;
|
||
tagRefreshConfig()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
|
||
} REFRESHCONFIG;
|
||
|
||
typedef struct tagRefreshList
|
||
{
|
||
int nCount;
|
||
REFRESHCONFIG* pList;
|
||
}REFRESHLIST;
|
||
|
||
//保存每个刷怪点的数据
|
||
typedef struct
|
||
{
|
||
TICKCOUNT nNextTime; //下次刷怪的时间
|
||
int nCurrCount; //当前剩下的怪物数量
|
||
} REFRESHVALUE;
|
||
|
||
typedef struct tagAreaAttri
|
||
{
|
||
BYTE bType;
|
||
WORD nCount;
|
||
int* pValues; //这个int类型不要修改,是每个区域属性的参数,比如减血的属性,这个参数就是血量
|
||
char* sFunc; //以下两个属性专门用于进入区域触发脚本的功能,这个指执行NPC的函数名,暂不支持带参数
|
||
Uint64 hNpc; //NPC的handle
|
||
}AreaAttri;
|
||
|
||
typedef struct tagSceneArea
|
||
{
|
||
char szName[32];//区域的名称
|
||
WORD nPointCount;
|
||
LPPOINT lpPoints;//点的集合
|
||
WORD Center[2];
|
||
byte NoTips; //是否不提示
|
||
bool boInherit;//是否继承第一个区域的属性,默认是true
|
||
AreaAttri attri[aaAttriCount];
|
||
INT attrBits[aaAttriCount/32+1];//int类型不能改
|
||
}SCENEAREA,*PSCENEAREA;
|
||
|
||
typedef struct tagAreaList
|
||
{
|
||
WORD nCount;
|
||
SCENEAREA* pList;
|
||
}AREALIST;
|
||
|
||
typedef struct tagNpcConfig
|
||
{
|
||
int nId;
|
||
char sName[32];
|
||
char sScript[128];
|
||
int nModelId;
|
||
int nIcon;
|
||
int nIdleInterval; // NPC 空闲执行间隔
|
||
//BYTE bCamp; //NPC的阵营
|
||
//int nAITypeId; // npc ai
|
||
char sTitle[32];
|
||
char sTalk[768];
|
||
bool bCanHideFlag; //在场景内是否可以在程序内被设置为隐藏(默认为false、true是可以被设置,主要在沙巴克活动隐藏npc用)
|
||
//任务列表
|
||
CVector<int> GiveQuest;
|
||
CVector<int> EndQuest;
|
||
CVector<int> TalkQuest; //别的任务找该Npc谈话的
|
||
int nOpenDay;//开服时间
|
||
|
||
}NPCCONFIG,*PNPCCONFIG;
|
||
|
||
typedef struct tagTeleportConfig
|
||
{
|
||
int nPosX;
|
||
int nPosY;
|
||
int nSceneId;
|
||
int nToPosX;
|
||
int nToPosY;
|
||
int nToPosRadius;//目标坐标半径= nToPosRadius 随机传送
|
||
int nModelId;
|
||
int nOpendayLimit; //开服天数限制
|
||
bool bUse; //是否可用
|
||
EntityHandle nHandle; //传送门的句柄
|
||
int nPassId; //能通过的id 1 表示只有占领沙巴克城的行会才能通过 默认为0所有都能通过
|
||
int nDist; //传送门的xy坐标往外nDist距离的点都算传送点
|
||
ACTORNAME szName;//传送门的名称
|
||
}TeleportConfig;
|
||
|
||
typedef struct tagTelportList
|
||
{
|
||
int nCount;
|
||
TeleportConfig* pList;
|
||
}TelportList;
|
||
|
||
|
||
typedef struct tagNpcPos
|
||
{
|
||
int nId;
|
||
int nPosX;
|
||
int nPosY;
|
||
}NPCPOS, *PNPCPOS;
|
||
|
||
typedef struct tagNpcPosList
|
||
{
|
||
int nCount;
|
||
NPCPOS * pPosList;
|
||
}NPCLIST,*PNPCLIST;
|
||
|
||
typedef struct tagHookLisk
|
||
{
|
||
int nCount;
|
||
NPCPOS* pPosList;
|
||
}HookList;
|
||
|
||
/// 场景相关的配置 SceneConfig.txt
|
||
typedef struct tagSceneConfig
|
||
{
|
||
int nScenceId;
|
||
short nDefaultX;
|
||
short nDefaultY;
|
||
char szScenceName[32];
|
||
char szMapFileName[32];
|
||
BYTE bSceneType; //场景类型,0表示普通场景,1表示活动场景,2表示副本场景,3挂机地图
|
||
bool boCanCall; //是否允许召唤
|
||
int nMapGgroup;//地图组
|
||
bool bIsNoPickUp;//禁止宠物拾取及显示
|
||
AREALIST vAreaList;
|
||
REFRESHLIST vRefreshList;
|
||
|
||
NPCLIST NpcList; //npc的列表
|
||
TelportList TeleportList;
|
||
HookList hookList;
|
||
tagSceneConfig()
|
||
{
|
||
memset(this,0,sizeof(*this));
|
||
}
|
||
} SCENECONFIG,*pSCENECONFIG;
|
||
|
||
typedef struct tagSceneConfigList
|
||
{
|
||
int nCount;
|
||
SCENECONFIG** ppList;
|
||
}SceneConfigList;
|
||
|
||
typedef struct tagFuBenConfig
|
||
{
|
||
int nFbId;
|
||
char szName[128];
|
||
int nMinLevel;
|
||
int nRecommandLevel;
|
||
bool bDisableMonsterPropAdjust;
|
||
int nMinCount;
|
||
int nMaxCount;
|
||
int nType;
|
||
int nRestTime;
|
||
int nGroupId;
|
||
int nDestoryTime;
|
||
int nProgress; //进度是否显示(小于0不显示,1只有一个进度)
|
||
char szFbTitle1[32];
|
||
char szFbTitle2[32];
|
||
char szFbTitle3[32];
|
||
byte nFbType;
|
||
char szFbProgressTips[256];
|
||
}FUBENCONFIG,*PFUBENCONFIG;
|