📄 mapgroup.h
字号:
virtual bool SendSocketUserInfo (PROCESS_ID idProcess, SOCKET_ID idSocket, UserInfoStruct* pInfo);
virtual bool SendObjInfo (PROCESS_ID idProcess, OBJID idUser, INFO_ID nInfoMsgID, void* pInfo, int nSize);
virtual bool SetNpcProcessID (OBJID idNpc, bool bAddNew);
virtual bool ChangeMapGroup (PROCESS_ID idProcess, OBJID idUser, OBJID idMap, int nPosX, int nPosY);
virtual bool PrintText (LPCTSTR szText);
virtual bool CloseSocket (SOCKET_ID idSocket) { return m_pSocket->CloseSocket(idSocket); }
virtual bool CloseMapGroup (SOCKET_ID idGmSocket); // 关闭所有socket(除GM),禁止登录
virtual bool ChangeTeam (int nAction, OBJID idTeam, OBJID idUser, int nData); // 组队相关
virtual void RemoteCall (REMOTE_CALL0* pInfo,bool bSendToLocal=false);
virtual void LevelUp (OBJID idUser, int nLevel);
virtual void QueryFee (OBJID idAccount);
virtual void ModifyNpc (OBJID idNpc, LPCTSTR szField, LPCTSTR szData);
virtual void DelTransNpc (OBJID idMaster, bool bBroadcast=true);
virtual void ChangeCode (SOCKET_ID idSocket, DWORD dwCode);
virtual void SendRpc (const CEventPack& pPack);
protected:
PROCESS_ID m_idProcess;
ISocket* m_pSocket;
IDatabase* m_pDb;
IMessagePort* m_pMsgPort;
IRoleManager* m_pRoleManager;
IUserManager* m_pUserManager;
IMapManager* m_pMapManager;
INpcManager* m_pNpcManager;
CSynManager* m_pSynManager;
CLeaveWord* m_pLeaveWord;
CGameAction* m_pGameAction;
CMercenaryTask* m_pMercenaryTask;
CAnnounce* m_pAnnounce;
// CAutoPtr<CGameAction> m_ptrGameAction;
protected: // GameDataDefault
IRecordset* GetMagicData() { ASSERT(m_pMagicDataDefault); return m_pMagicDataDefault; }
IRecordset* GetUserWeaponSkill() { ASSERT(m_pUserWeaponSkillDefault); return m_pUserWeaponSkillDefault; }
IRecordset* GetGameItemData() { ASSERT(m_pGameItemDataDefault); return m_pGameItemDataDefault; }
IRecordset* GetUserData() { ASSERT(m_pUserDataDefault); return m_pUserDataDefault; }
IRecordset* GetGameMapData() { ASSERT(m_pGameMapDataDefault); return m_pGameMapDataDefault; }
IRecordset* GetSynData() { ASSERT(m_pSynDataDefault); return m_pSynDataDefault; }
IRecordset* GetSynAttrData() { ASSERT(m_pSynAttrDataDefault); return m_pSynAttrDataDefault; }
IRecordset* GetPetData() { ASSERT(m_pPetDataDefault); return m_pPetDataDefault; }
IRecordset* GetDynaNpc() { ASSERT(m_pDynaNpcDataDefault); return m_pDynaNpcDataDefault; }
IRecordset* GetDynaMap() { ASSERT(m_pDynaMapDataDefault); return m_pDynaMapDataDefault; }
IRecordset* GetEudemonData() { ASSERT(m_pEudemonDataDefault); return m_pEudemonDataDefault; }
protected:
IRecordset* m_pMagicDataDefault;
IRecordset* m_pUserWeaponSkillDefault;
IRecordset* m_pGameItemDataDefault;
IRecordset* m_pUserDataDefault;
IRecordset* m_pGameMapDataDefault;
IRecordset* m_pSynDataDefault;
IRecordset* m_pSynAttrDataDefault;
IRecordset* m_pPetDataDefault;
IRecordset* m_pDynaNpcDataDefault;
IRecordset* m_pDynaMapDataDefault;
IRecordset* m_pEudemonDataDefault;
protected: // Syndicate
virtual bool CreateSyndicate (const CreateSyndicateInfo* pInfo);
virtual bool DestroySyndicate (OBJID idSyn, OBJID idTarget = ID_NONE);
virtual bool CombineSyndicate (OBJID idSyn, OBJID idTarget);
virtual bool ChangeSyndicate (const SynFuncInfo0* pFuncInfo);
virtual void SetMapSynID (OBJID idMap, OBJID idSyn);
public: // static
static void AddMapGroup(PROCESS_ID idProcess)
{ if(idProcess>=m_setMapGroup.size())m_setMapGroup.resize(idProcess+1); }
static int IsValidMapGroupProcessID(PROCESS_ID idProcess)
{ return idProcess >= MSGPORT_MAPGROUP_FIRST && idProcess < m_setMapGroup.size(); }
static BOOL CheckTime(const DWORD dwType, const char* pszParam);
private: // static
typedef vector<CMapGroup> MAPGROUP_SET;
static MAPGROUP_SET m_setMapGroup;
friend CMapGroup* MapGroup(PROCESS_ID idProcess); // 可存取以上静态对象
public:
// MYHEAP_DECLARATION(s_heap)
};
//////////////////////////////////////////////////////////////////////
#define PID m_idProcess
extern CMapGroup* MapGroup(PROCESS_ID idProcess);
inline CMapGroup* MapGroup(PROCESS_ID idProcess){ CHECKF(CMapGroup::IsValidMapGroupProcessID(idProcess)); return &CMapGroup::m_setMapGroup[idProcess]; }
// 用法:MapGroup(PID)->UserManager()->GetUser(idUser);
//////////////////////////////////////////////////////////////////////
#define Database() (::MapGroup(PID)->GetDatabase())
#define RoleManager() (::MapGroup(PID)->GetRoleManager())
#define UserManager() (::MapGroup(PID)->GetUserManager())
#define MapManager() (::MapGroup(PID)->GetMapManager())
#define NpcManager() (::MapGroup(PID)->GetNpcManager())
#define GameDataDefault() (::MapGroup(PID)->QueryDataDefault())
#define SynManager() (::MapGroup(PID)->GetSynManager())
#define LeaveWord() (::MapGroup(PID)->GetLeaveWord())
#define GameAction() (::MapGroup(PID)->GetGameAction())
#define MercenaryTask() (::MapGroup(PID)->GetMercenaryTask())
#define Announce() (::MapGroup(PID)->GetAnnounce())
//////////////////////////////////////////////////////////////////////
inline IDatabase* _Database(PROCESS_ID PID) { return ::MapGroup(PID)->GetDatabase(); }
inline IRoleManager* _RoleManager(PROCESS_ID PID) { return ::MapGroup(PID)->GetRoleManager(); }
inline IUserManager* _UserManager(PROCESS_ID PID) { return ::MapGroup(PID)->GetUserManager(); }
inline IMapManager* _MapManager(PROCESS_ID PID) { return ::MapGroup(PID)->GetMapManager(); }
inline INpcManager* _NpcManager(PROCESS_ID PID) { return ::MapGroup(PID)->GetNpcManager(); }
inline IDataDefault* _GameDataDefault(PROCESS_ID PID) { return ::MapGroup(PID)->QueryDataDefault(); }
inline CSynManager* _SynManager(PROCESS_ID PID) { return ::MapGroup(PID)->GetSynManager(); }
inline CLeaveWord* _LeaveWord(PROCESS_ID PID) { return ::MapGroup(PID)->GetLeaveWord(); }
inline CAnnounce* _Announce(PROCESS_ID PID) { return ::MapGroup(PID)->GetAnnounce();}
inline CGameAction* _GameAction(PROCESS_ID PID) { return ::MapGroup(PID)->GetGameAction(); }
inline CMercenaryTask* _MercenaryTask(PROCESS_ID PID) { return ::MapGroup(PID)->GetMercenaryTask(); }
//////////////////////////////////////////////////////////////////////
inline OBJID GetServerID() { extern DWORD g_dwServerID; return g_dwServerID; }
inline CItemType* ItemType() { extern CItemType* g_pItemType; CHECKF(g_pItemType); return g_pItemType; }
// add by zlong 2003-11-15
inline CDropRuleMap* DropRuleMap() { extern CDropRuleMap* g_pDropRuleMap; CHECKF(g_pDropRuleMap); return g_pDropRuleMap; }
inline ITaskSet* TaskSet() { extern ITaskSet* g_setTask; CHECKF(g_setTask); return g_setTask; }
inline IActionSet* ActionSet() { extern IActionSet* g_setAction; CHECKF(g_setAction); return g_setAction; }
inline ILevupexpSet* LevupexpSet() { extern ILevupexpSet* g_setLevupexp; CHECKF(g_setLevupexp); return g_setLevupexp; }
inline IAddPointSet* AddPointSet() { extern IAddPointSet* g_setAddPoint; CHECKF(g_setAddPoint); return g_setAddPoint; }
inline IMagicTypeSet* MagicTypeSet() { extern IMagicTypeSet* g_setMagicType; CHECKF(g_setMagicType); return g_setMagicType; }
inline IMagicTypeSet* AutoMagicTypeSet() { extern IMagicTypeSet* g_setAutoMagicType; CHECKF(g_setAutoMagicType); return g_setAutoMagicType; }
inline IMagicTrackSet* MagicTrackSet() { extern IMagicTrackSet* g_setMagicTrack; CHECKF(g_setMagicTrack); return g_setMagicTrack; }
inline ITrapTypeSet* TrapTypeSet() { extern ITrapTypeSet* g_setTrapType; CHECKF(g_setTrapType); return g_setTrapType; }
inline IMonsterTypeSet* MonsterType() { extern IMonsterTypeSet* g_setMonsterType; CHECKF(g_setMonsterType); return g_setMonsterType; }
inline IRebirthSet* RebirthSet() { extern IRebirthSet* g_setRebirth; CHECKF(g_setRebirth); return g_setRebirth; }
inline CItemAddition* ItemAddition() { extern CItemAddition* g_pItemAddition; CHECKF(g_pItemAddition); return g_pItemAddition; }
//////////////////////////////////////////////////////////////////////
#define g_db (*Database()) // 兼容于旧代码
#define g_UserManager (*UserManager()) // 兼容于旧代码
#endif // !defined(AFX_MAPGROUP_H__70A5EB1D_66D5_4DF0_BE98_F7E3498FFC72__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -