/** @file IRCIntf.h @brief 接口定义
*	Copyright (c) 2008,第九城市游戏研发中心
*	All rights reserved.
*
*	当前版本:
*	作    者:张少东
*	完成日期:2008-11-17
*
*	取代版本:
*	作    者:
*	完成日期:
*/ #ifndef IRCINTF_H #define IRCINTF_H #ifdef IRC_DLL_EXPORTS #define IRC_DLL_API __declspec(dllexport) #else #define IRC_DLL_API __declspec(dllimport) #endif enum CHAT_ERROR { TARGET_NOT_EXIST = 0, // NO_WORLD_CHAT_PRIVILEGE = 1, // NO_PRIVATE_CHAT_PRIVILEGE = 2, // NO_TEAM_CHAT_PRIVILEGE = 3, // }; #define MAX_NAME_SIZE 20 #define MAX_CHAT_SIZE 256 #pragma pack(push, 1) struct FriendGroupInfo_I { unsigned long m_GroupID; char m_GroupName[MAX_NAME_SIZE]; FriendGroupInfo_I() { memset(m_GroupName, 0, MAX_NAME_SIZE); } }; struct FriendInfo_I { unsigned long friendID; //好友编号,用于与C--S间通信 unsigned long joinID; //加入序号,按加入的先后顺序编号,用于客户端排序显示; unsigned long groupID; //该好友所属组的组号 char nickName[MAX_NAME_SIZE]; //好友伲称 bool isHateMe; //该好友是否将自己作为仇人,用于客户端显示 char isOnline; //是否在线 unsigned short mapID; //地图号 unsigned short playerLevel; //等级 unsigned short playerClass; //职业 char playerSex; //性别 unsigned short playerRace; //种族 char GuildName[MAX_NAME_SIZE]; char FereName[MAX_NAME_SIZE]; FriendInfo_I() { memset(nickName, 0, MAX_NAME_SIZE); memset(GuildName, 0, MAX_NAME_SIZE); memset(FereName, 0, MAX_NAME_SIZE); } }; struct FoeInfo_I { unsigned long foeID; //仇人编号,用于与C--S间通信 unsigned long joinID; //加入仇人名单的历史序号,用于客户端排序显示 char nickName[MAX_NAME_SIZE]; //好友伲称 bool isHateMe; //该好友是否将自己作为仇人,用于客户端显示 char isOnline; //是否在线 unsigned short mapID; //是否在线 unsigned short playerLevel; //等级 unsigned short playerClass; //职业 char playerSex; //性别 bool isLocked; //是否被锁定(不可被新仇人覆盖) unsigned short playerRace; //种族 char GuildName[MAX_NAME_SIZE]; char FereName[MAX_NAME_SIZE]; FoeInfo_I() { memset(nickName, 0, MAX_NAME_SIZE); memset(GuildName, 0, MAX_NAME_SIZE); memset(FereName, 0, MAX_NAME_SIZE); } }; struct BlackListItemInfo_I { unsigned long itemID; //黑名单中的玩家编号,用于与C--S间通信 unsigned long joinID; //加入黑名单的历史序号,用于客户端排序显示 char nickName[MAX_NAME_SIZE]; //好友伲称 BlackListItemInfo_I() { memset(nickName, 0, MAX_NAME_SIZE); } }; struct UnionPosRight_I { USHORT seq; // USHORT posLen; // CHAR pos[8]; // UINT right; // }; struct Union_I { unsigned int id; // unsigned short nameLen; // char name[MAX_NAME_SIZE]; // unsigned short level; // unsigned short num; // unsigned int ownerUiid; // unsigned short titleLen; // char title[MAX_NAME_SIZE]; // unsigned int active; // unsigned short posListLen; // UnionPosRight_I posList[10]; // }; struct UnionMember_I { unsigned int gateId; // unsigned int playerId; // unsigned int uiid; // unsigned short nameLen; // char name[MAX_NAME_SIZE]; // unsigned short job; // unsigned short posSeq; // unsigned short titleLen; // char title[MAX_NAME_SIZE]; // unsigned short level; // unsigned int lastQuit; // unsigned short forbid; // unsigned short onLine; // }; struct ChatLog { enum CHATDIRECT { LOCAL_SEND = 0, //发出消息 PEER_SEND = 1 //接收消息 }; char PeerName[MAX_NAME_SIZE]; char LocalName[MAX_NAME_SIZE]; CHATDIRECT ChatDirection; unsigned char ClientType; SYSTEMTIME LogTime; char Chat[MAX_CHAT_SIZE]; ChatLog() { memset(PeerName, 0, MAX_NAME_SIZE); memset(LocalName, 0, MAX_NAME_SIZE); memset(Chat, 0, MAX_NAME_SIZE); } }; struct PEERUSRINFO { char playerName[MAX_NAME_SIZE]; unsigned char playerGender; unsigned short mapID; //玩家所在的地图 unsigned short playerLevel; //等级 unsigned short playerClass; //职业 unsigned short playerRace; //种族 char GuildName[MAX_NAME_SIZE]; //公会伲称 char FereName[MAX_NAME_SIZE]; //伴侣伲称 PEERUSRINFO() { memset(playerName, 0, MAX_NAME_SIZE); memset(GuildName, 0, MAX_NAME_SIZE); memset(FereName, 0, MAX_NAME_SIZE); } }; #pragma pack(pop) class CIRCEventSink; //接口定义 class IRC_DLL_API CIRCIntf { public: virtual ~CIRCIntf(){}; public: //设置服务器信息 virtual int SetServerInfo(const char* szAssignSvrIp, unsigned short usAssignSvrPort, const char* szGateSvrIp, unsigned short usGateSvrPort) = 0; //设置玩家信息 virtual int SetPlayerInfo(const char* szAccount, const char* szPwd, const char* szRoleName) = 0; //读取技能信息 virtual int ReadSkillInfo(const char* szSkillFileName) = 0; //读取任务信息 virtual int ReadTaskInfo(const char* szTaskFileName) = 0; //读取道具信息 virtual int ReadItemInfo(const char* szItemFileName) = 0; //读取套装信息 virtual int ReadSuitInfo(const char* szSuitFileName) = 0; //读取附加属性信息 virtual int ReadAdditionAttr(const char* szFileName) = 0; //读取升级属性信息 virtual int ReadItemLevelUpInfo(const char* szFileName) = 0; //获得技能简明信息 virtual void GetSkillInfo(unsigned long ulSkillID, vector& vectSkillProp) = 0; //获得道具信息 virtual int GetItemInfo(unsigned long ulItemID, vector& vectItemInfo) = 0; //获取套装信息 virtual int GetSuitInfo(unsigned long ulSuitID, int& nSuitCount, vector& vectSuitName, vector& vectSuitAttr) = 0; //获取追加属性信息 virtual int GetItemAdditionInfo(unsigned long ulItemAddID, vector& vectItemAdditionAttr) = 0; //获得升级属性信息 virtual int GetItemLevelUpInfo(unsigned long ulLevelUpID, vector& vectLevelUpInfo) = 0; //获得任务信息 virtual int GetTaskInfo(unsigned long ulTaskID, vector& vectTaskInfo) = 0; virtual void ReqUserInfo(const char* szRoleName) = 0; virtual void ClearLog(int nType) = 0; virtual void SetFilter(unsigned short usFilter ) = 0; virtual void ChangeChatLogDir(const char* szDir) = 0; virtual string GetClassByClassID(unsigned long ulClassID) = 0; virtual string GetRaceByRaceID(unsigned long ulRaceID) = 0; virtual string GetGender(unsigned long ulGenderID) = 0; virtual unsigned short GetCurRoleNo() = 0; //启动 virtual int StartUp(CIRCEventSink& ircEvent, char* pDllData) = 0; //停止 virtual int CleanUp() = 0; //打开连接,并且用用户名进行登录 virtual int Open() = 0; //进入游戏 virtual int EnterWorld(unsigned int uiRoleID) = 0; //离开游戏 virtual int Close() = 0; // virtual int QryUnionMember() = 0; //向世界频道发送消息 注:不允许向世界频道发送消息 virtual int SendMsgToWorld(const char* szChat) = 0; //向公会频道发送消息 virtual int SendMsgToGuild(const char* szChat) = 0; //向同城频道发送消息 //向GM频道发送消息 注:不允许向GM频道发送消息 //发送私聊消息 virtual int SendPrivateMsg(const char* szDest, const char* szChat) = 0; //同城搜索 //游戏元素 //读取私聊记录 virtual int ReadPrivateMsg() = 0; //读取世界聊天记录 virtual int ReadWorldMsg() = 0; //读取战盟记录 virtual int ReadGuildMsg() = 0; //读取普通聊天记录 virtual int ReadCommonMsg() = 0; //读取种族聊天记录 //virtual int ReadRaceMsg() = 0; //读取组队聊天记录 virtual int ReadGroupMsg() = 0; //读取聊天群 virtual int ReadChatGroupMsg() = 0; //读取系统聊天群 virtual int ReadSystermMsg() = 0; }; extern "C" IRC_DLL_API CIRCIntf* CreateIRCIntf(); extern "C" IRC_DLL_API void DeleteIRCIntf(CIRCIntf* pIRCIntf); //用户名或密码错误 #define ERR_INVALID_USER 1001 //角色名无效 #define ERR_INVALID_ROLE 1002 //登录超时 #define ERR_LOGIN_TIMEOUT 1003 //玩家已在线 #define ERR_USER_ONLINE 1004 //连接被中断 #define ERR_CONNECTION_BREAKDOWN 2001 //对端用户不在线或者角色名不存在 #define ERR_PEERUSER_OFFLINE 3001 //回调接口定义 class CIRCEventSink { public: //玩家角色列表通知 virtual int OnRoleInfo(unsigned int uiRoleID, const char* szRoleName) = 0; //进入游戏世界成功 virtual int OnLoginGame() = 0; //好友分组信息 virtual int OnFriendsGroup(FriendGroupInfo_I* pFirendGroupInfo, unsigned short usGroupNum) = 0; //好友信息 virtual int OnFriendInfo(FriendInfo_I* pFriendInfo, unsigned short usFriendCount) = 0; //好友信息更新(上线、下线) virtual int OnFriendInfoUpdate(FriendInfo_I* pFriendInfo) = 0; //仇人信息 virtual int OnFoeInfo(FoeInfo_I* pFoeInfo, unsigned short usFoeCount) = 0; //仇人信息更新(上线、下线) virtual int OnFoeUpdate(FoeInfo_I* pFoeInfo) = 0; //黑名单信息 virtual int OnBlackItem(BlackListItemInfo_I* pBlackItemInfo) = 0; //公会消息 virtual int OnGuild(Union_I* pUnion) = 0; //公会解散消息 virtual int OnGuildDismiss() = 0; //删除公会会员通知 virtual int OnGuildDelMember(unsigned short usFlag, unsigned int nMemID) = 0; //增加公会会员通知 virtual int OnGuildAddMem(UnionMember_I* pGuildMem) = 0; //公会会员上下线通知 virtual int OnGuildMemOffOnline(UINT nMemID, bool bIsOnLine) = 0; //公会禁言通知 virtual int OnGuildBanChat(const char* szRoleName) = 0; //公会会员信息 virtual int OnGuildMember(UnionMember_I* pUnionMember) = 0; //公会会员称号改变通知 virtual int OnGuildMemberTitleChange(const char* szMemberName, const char* szTitleName) = 0; //公会职位信息更新通知 virtual int OnGuildPosUpdateNty(int nPosLen, UnionPosRight_I* pUnionPos) = 0; //公会会员职位变化通知 virtual int OnGuildMemPosChange(const char* szMemberName, USHORT nPos) = 0; //世界频道消息 virtual int OnWorldMsg(const char* szSrc, const char* szChat, int nClientType) = 0; virtual int OnPeerInfo(PEERUSRINFO* pPeerUsrInfo) = 0; //公会频道消息 virtual int OnGuildMsg(const char* szSrc, const char* szChat, int nClientType) = 0; //同城频道消息 //GM频道消息 //私聊消息 virtual int OnPrivateMsg(const char* szSrc, const char* szChat, int nClientType) = 0; //同城搜索消息 //聊天错误消息 virtual int OnChatError(const char* szSrc, int nErrorType) = 0; //私聊记录读取结果 virtual int OnReadPrivateMsg(ChatLog* pChatLog) = 0; //世界消息读取结果 virtual int OnReadWorldMsg(ChatLog* pChatLog) = 0; //公会消息读取结果 virtual int OnReadGuildMsg(ChatLog* pChatLog) = 0; //普通消息读取结果 virtual int OnReadCommonMsg(ChatLog* pChatLog) = 0; //系统消息读取结果 virtual int OnReadSystemMsg(ChatLog* pChatLog) = 0; //组队消息读取结果 virtual int OnReadTeamMsg(ChatLog* pChatLog) = 0; //聊天群消息读取结果 virtual int OnReadChatGroupMsg(ChatLog* pChatLog) = 0; //错误信息 virtual int OnIRCError(unsigned short usErrCode) = 0; }; #endif