Files
mir_server/server/LogicServer/LogicDef.h

261 lines
6.7 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#pragma once
/*******************************************************/
/*
/* 逻辑服务器常量定义头
/*
/*******************************************************/
//定义游戏逻辑引擎版本号
#define LOGIC_KN_VERSION MAKEFOURCC(15,4,9,1)
class CScene;
class CFuBen;
class EntityHandle : public Counter<EntityHandle>
{
public:
EntityHandle( void ) : m_Handle( 0 ) { }
EntityHandle(Uint64 handle):m_Handle(handle){}
inline void init(unsigned nEntityType,unsigned nIndex)
{
m_EntityType = nEntityType;
m_Index = nIndex;
}
unsigned int GetIndex ( void ) const { return ( m_Index ); }
unsigned int GetType ( void ) const { return ( m_EntityType ); }
Uint64 GetHandle( void ) const { return ( m_Handle ); }
bool IsNull ( void ) const { return ( !m_Handle ); }
inline operator Uint64 ( void ) const { return ( m_Handle ); }
inline EntityHandle& operator = (const Uint64 handleValue) { m_Handle = handleValue; return *this; }
inline EntityHandle& operator = (const EntityHandle handleValue) { m_Handle = handleValue.m_Handle; return *this; }
private:
union
{
struct
{
unsigned int m_Index : 32; //实体的handle
unsigned int m_EntityType : 32; //实体的类型
};
Uint64 m_Handle;
};
};
const static EntityHandle INVALID_ENTITY_HANDLE ; //非法的实体的句柄
typedef struct tagEntityPos
{
// unsigned int nFbHandler; //副本handler
CFuBen* pFb;
CScene* pScene; //scence handler
WORD nSceneId; //场景id
} ENTITYPOS,*PENTITYPOS;
// 场景位置信息
typedef struct tagScenePosInfo
{
WORD nSceneId;
WORD nPosX;
WORD nPosY;
void SetData(const int _nSceneId, const int _nPosX, const int _nPosY)
{
nSceneId = _nSceneId;
nPosX = _nPosX;
nPosY = _nPosY;
}
}ScenePosInfo;
enum tagLogicInternalMessage
{
SSM_GATE_CREATE_ACTOR =1, //create actor
SSM_GATE_USER_LOGOUT, //USER LOGOUT
SSM_DB_RET_DATA, //db返回数据
SSM_FRIEND_LIST, // db返回好友列表
SSM_FRIEND_CHANGED, // 好友发生变化
SSM_FRIEND_INFO_UPDATE_SVR_ADDR, // 好友服务器地址信息 added by caphone 2011.4.11
SSM_SS_RET_DATA, //会话服务器返回数据
SSM_MS_RET_DATA, //后台服务器的相关信息
SSM_SET_SIGN, //设置签名
SSM_LOGIN_FAIL, //玩家登陆失败
SSM_LOGIC_2_COMMONLOGIC_DATA, // 逻辑服务器->公共逻辑服务器
SSM_COMMONLOGIC_2_LOGIC_DATA, // 公共逻辑服务器->逻辑服务器
SSM_SESSION_KICK_USER, //Session服务器发消息来踢下线一个玩家
SSM_RECV_LOGIN_DATA, //收到的登陆的网络数据
SSM_RECV_LOGIN_CMD, //收到的登陆的命令码
SSM_KICK_USER, //踢人下线
SSM_CLOSE_SERVER, //关闭网关程序
SSM_NEWBACKMGR_DATA, //BackStage数据
SSM_ASYNC_WORK_THREAD,//异步工作线程
SSM_LOGIC_2_CROSS_DATA, // 逻辑服务器->跨服逻辑服务器
SSM_CROSS_2_LOGIC_DATA, // 跨服逻辑服务器->逻辑服务器
SSM_CROSS_CEHCK_ACTORDATA, //验证玩家数据
SSM_CROSS_SERVER_DB_DATA, //跨服数据服->跨服逻辑服
};
// 服务器加载玩家数据
enum
{
eMSG_USR_LOGIN_DATA_NULL = 0,
eMSG_USR_LOGIN_DATA_ACTOR_SYSTEM = 1, //玩家数据
eMSG_USR_LOGIN_DATA_ACHIEVE_SYSTEM = 2, //玩家数据
eMSG_USR_LOGIN_DATA_ACTIVITY_SYSTEM = 3, //技能数据
eMSG_USR_LOGIN_DATA_STATICCOUNT_SYSTEM = 4,
eMSG_USR_LOGIN_DATA_STRENGTHEN_SYSTEM = 5,
eMSG_USR_LOGIN_DATA_ACTORVARSUB_SYSTEM = 6,
eMSG_USR_LOGIN_DATA_FRIEND_SYSTEM = 7,
eMSG_USR_LOGIN_DATA_HERO_SYSTEM = 8,
eMSG_USR_LOGIN_DATA_MAIL_SYSTEM = 9,
eMSG_USR_LOGIN_DATA_EQUIP_SYSTEM = 10,
eMSG_USR_LOGIN_DATA_SKILL_SYSTEM = 11,
eMSG_USR_LOGIN_DATA_GHOST_SYSTEM = 12,
eMSG_USR_LOGIN_DATA_NEWTITLE_SYSTEM = 13,
eMSG_USR_LOGIN_DATA_HALLOWS_SYSTEM = 14,
eMSG_USR_LOGIN_DATA_LOOTPET_SYSTEM = 15,
eMSG_USR_LOGIN_DATA_REBATE_SYSTEM = 16,
eMSG_USR_LOGIN_DATA_ACTOR_CUSTOM = 17, //玩家自定义数据
eMSG_USR_LOGIN_DATA_MAX, //同步结束结束
};
// 跨服服务器到逻辑服的消息定义
enum tagCross2LogicMsg
{
C2L_Mail = 1, // 邮件
C2L_ReqLoginData = 2, //发送登录数据
C2L_CloseActor = 3, //踢下线
};
// 跨服服务器到逻辑服的消息定义
enum //tagMsg2CorssServerEnum
{
MSG_CACTOR, //玩家数据
MSG_CSKILL, //技能数据
MSG_CEQUIP, //装备数据
MSG_CGAMESET, //设置数据
MSG_CTITLE, //称号数据
MSG_CFASH, //时装数据
MSG_CHALIDOME, //圣物数据
MSG_CSTRENGTH, //强化数据
MSG_CGHOST, //神魔数据
MSG_CUSEBAG, //背包数据
MSG_CRELIVE, //复活数据
MSG_LOOTPET, //宠GLOBLE物数据
MSG_GLOBAL_DATA,//系统数据
MSG_CLOADGUILD, //加载行会数据数据
MSG_CS_END, //同步结束结束
};
// 逻辑服务器之间的消息定义
enum tagLogic2LogicMsg
{
L2L_ReqTransmit, // 请求传送
L2L_ReqTransmitAck, // 请求传送应答
L2L_StartTransmit, // 开始传送
L2L_EndTransmit, // 传送完毕
};
enum tagLoginErrorCode
{
eNoSessionData=1, //会话找不到会话状态
eSessionStatusIsError=2, //会话状态不正确
eDbStatusError=3, //数据服务器的状态错误
eIsLogin =4, //已经登陆了游戏
};
#define TYPE_PHYSICAL_ATTACK 1 //物理攻击类型
#define TYPE_MAGIC_ATTACK 2 //魔法攻击类型
#define TYPE_WIZARD_ATTACK 3 //道术法攻击类型
#define TYPE_TOXIC_ATTACK 4 //毒物攻击也就是debuf
#define TYPE_HOLY_ATTACK 5 //神圣攻击
#define INVALID_CAMP_ID 0
//玩家领取奖励的统一配置
typedef struct tagActorAward
{
BYTE btType;
WORD wId;
int wCount;
// BYTE btQuality;
// BYTE btStrong;//不使用
// WORD wStar;
// BYTE btStarLost;
// BYTE btBind;
// BYTE btInscriptLevel;
// int nAreaId;
// BYTE btLuck;
// WORD nQualityDataIndex;//极品属性索引
// int nSmith[5];
// WORD wIdentifyslotnum;
// WORD wIdentifynum;
// int nResourceCount;//资源数量(邮件奖励资源用这个存)
tagActorAward()
{
memset(this, 0, sizeof(*this));
}
}ACTORAWARD, *PACTORAWARD;
enum enLogicWayId
{
lwiInitActorFail = 1,
lwiCloseAllUser,
lwiCloseTransmitAllUser,
lwiUseQuickTool,
lwiRecvTransmit,
lwiAcupointDbFail,
lwiAlmirahDbFail,
lwiGmTickActor,
lwiCheckSpeedSystemTick,
lwiCheckSpeedConfirmSpeed, //10
lwiLoadDiamondTypeFail,
lwiLoadDiamondPosFail,
lwiLoadDiamondDbRetFail,
lwiMagicDbFail,
lwiFcmExitTick,
lwiMoveSysIdle,
lwiEquipDbFail,
lwiBackStageTickActor,
lwiBackStageTickAccount,
lwiBackStageTickAll, //20
lwiGateCreateKeyError,
lwiGateUserLogout,
lwiSessionKickActor,
lwiNetMgrKickByActorName,
lwiNetMgrKickByAccountName,
lwiBackStageTickActorByLevel,
lwiSameActorLogin,
lwiBackStageForbidActor,
lwiSimulatorSameActorLogin,
lwiSimulatorRankDown,
};
//归属boss
typedef struct tagBeLongBoss
{
int nBossId;
int nSceneId;
}BeLongBoss;