Files
mir_server/server/LogicServer/config/SceneConfig.h

203 lines
4.7 KiB
C
Raw Permalink Normal View History

2025-01-09 17:45:40 +08:00
#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;