Files
mir_server/server/LogicServer/LogicDef.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

261 lines
6.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;