#ifndef ATTEMPER_ENGINE_SINK_HEAD_FILE #define ATTEMPER_ENGINE_SINK_HEAD_FILE #pragma once #include "Stdafx.h" #include "TableFrame.h" #include "InitParameter.h" #include "ServerListManager.h" #include "DataBasePacket.h" #include "DistributeManager.h" #include "SensitiveWordsFilter.h" #include #include #include "RedisHead.h" ////////////////////////////////////////////////////////////////////////////////// //连接类型 #define CLIENT_KIND_FALSH 1 //网页类型 #define CLIENT_KIND_MOBILE 2 //手机类型 #define CLIENT_KIND_COMPUTER 3 //电脑类型 #define PRIVATE_TABLE_MIN_ID 1000 //私有房间的最小ID //系统消息 struct tagSystemMessage { DWORD dwLastTime; //发送时间 DBR_GR_SystemMessage SystemMessage; //系统消息 }; //数组说明 typedef CWHArray CTableFrameArray; //桌子数组 typedef CWHArray CSystemMessageArray; //系统消息 typedef CWHArray CTaskParameterArray; //任务数组 typedef CMap CKickUserItemMap; //踢人映射 typedef CMap CTaskParameterMap; ////////////////////////////////////////////////////////////////////////////////// //调度钩子 class CAttemperEngineSink : public IAttemperEngineSink, public IMainServiceFrame, public IServerUserItemSink { //友元定义 friend class CServiceUnits; friend class CHttpClient; //状态变量 protected: static DWORD m_DwordThead; time_t m_lastRankListTime; char* m_pRankListData; DWORD m_pRankListDataSize; bool m_bCollectUser; //汇总标志 bool m_bNeekCorrespond; //协调标志 DWORD m_dwCorrespondNum; //协调计数 TagUpData m_Data; //统计数据 int m_Service; //服务状态 1提供服务 0 主动不提供服务 <0 被攻击被动不提供服务 ST_JCDATA m_JC; //监测ID //控制变量 protected: DWORD m_dwIntervalTime; //间隔时间 DWORD m_dwLastDisposeTime; //处理时间 //绑定信息 protected: tagBindParameter * m_pNormalParameter; //绑定信息 CCriticalSection m_CriticalSection; //同步对象 //tagBindParameter * m_pAndroidParameter; //绑定信息 //配置信息 protected: CInitParameter * m_pInitParameter; //配置参数 tagGameParameter * m_pGameParameter; //配置参数 tagGameMatchOption * m_pGameMatchOption; //比赛配置 tagGameServiceAttrib * m_pGameServiceAttrib; //服务属性 tagGameServiceOption * m_pGameServiceOption; //服务配置 BOOL m_BCreate; //允许创建房间 BOOL m_BAddCreate; //允许加入房间 BOOL m_BCreate_Hua; //允许创建花牌房间 WORD m_wShuffleZuan; //洗牌所需钻石 //配置数据 protected: //CMD_GR_ConfigColumn m_DataConfigColumn; //列表配置 //CMD_GR_ConfigProperty m_DataConfigProperty; //道具配置 //会员参数 protected: WORD m_wMemberCount; //会员数目 tagMemberParameter m_MemberParameter[10]; //会员参数 //任务参数 protected: WORD m_wTaskCount; //任务数目 tagTaskParameter m_TaskParameter[TASK_MAX_COUNT]; //任务参数 ///+++场馆列表 protected: std::vector m_vecVenueInfo; //++场馆列表 //bool OnTCPNetworkGetVenueInfoList(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///+++拉取场馆信息列表 //bool OnTCPNetworkGetVenueGameSvr(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///+++拉取金币场服务器 //bool isVenueServer(); ///+++是否为金币场服务器 //tagVenueInfo getVenueInfo(WORD wVenueID); tagCheckinReward m_checkinReward[LEN_WEEK]; //签到奖励 [7天签到奖励的配置信息] //组件变量 protected: std::list m_privateTableIDPool; ///在超时情况下需要清空,牌局打完的情况下也需要清空。 std::unordered_map m_UserID_2_PriTableIDGROUP; //创建者ID 转 私有桌子ID结构组 std::unordered_map m_PrivateRoomAll; //所有服务器私有房间信息 std::unordered_map m_OnLineUserAll; //所有服务器用户信息 std::unordered_map m_PriTableID_2_TableID; //私有桌子id 转换为普通ID std::unordered_map> m_TableFrameArray; //桌子数组 CServerUserManager m_ServerUserManager; //用户管理 //CAndroidUserManager m_AndroidUserManager; //机器管理 //CUserTaskManager m_UserTaskManager; //任务管理 //CGamePropertyManager m_GamePropertyManager; //道具管理 CDistributeManager m_DistributeManage; //分组管理 //CKickUserItemMap m_KickUserItemMap; //踢人管理 CSystemMessageArray m_SystemMessageActive; //系统消息 CSystemMessageArray m_SystemMessageBuffer; //消息缓冲 //CSensitiveWordsFilter m_WordsFilter; //脏字过滤 public: CServerListManager m_ServerListManager; //列表管理 //距离记录 CMap m_MapUserIDJuli; //组件接口 protected: ITimerEngine * m_pITimerEngine; //时间引擎 IAttemperEngine * m_pIAttemperEngine; //调度引擎 ITCPSocketService * m_pITCPSocketService; //网络服务 ITCPNetworkEngine * m_pITCPNetworkEngine; //网络引擎 IGameServiceManager * m_pIGameServiceManager; //服务管理 std::shared_ptr m_RedisClient;//redis //比赛服务 public: //IMatchServiceManager * m_pIMatchServiceManager; //比赛管理 //数据引擎 public: IDataBaseEngine * m_pIRecordDataBaseEngine; //数据引擎 IDataBaseEngine * m_pIKernelDataBaseEngine; //数据引擎 IDBCorrespondManager * m_pIDBCorrespondManager; //数据协调 //函数定义 public: //构造函数 CAttemperEngineSink(); //析构函数 virtual ~CAttemperEngineSink(); //基础接口 public: //释放对象 virtual VOID Release() { return; } //接口查询 virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer); //异步接口 public: //启动事件 virtual bool OnAttemperEngineStart(IUnknownEx * pIUnknownEx); //停止事件 virtual bool OnAttemperEngineConclude(IUnknownEx * pIUnknownEx); //事件接口 public: //控制事件 virtual bool OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize); //自定事件 virtual bool OnEventAttemperData(WORD wRequestID, VOID * pData, WORD wDataSize); //内核事件 public: //时间事件 virtual bool OnEventTimer(DWORD dwTimerID, WPARAM wBindParam); //数据库事件 virtual bool OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize); //连接事件 public: //连接事件 virtual bool OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode); //关闭事件 virtual bool OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason); //读取事件 virtual bool OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize); ///+++场馆命令 //bool OnTCPNetworkMainVenue(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //网络事件 public: //应答事件 virtual bool OnEventTCPNetworkBind(DWORD dwClientAddr, DWORD dwSocketID); //关闭事件 virtual bool OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID); ///测试 std::unordered_map Socket_2_UserID; //Socket关联UserID //读取事件 virtual bool OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID); //消息接口 public: //房间消息 virtual bool SendRoomMessage(LPCTSTR lpszMessage, WORD wType); //游戏消息 virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType); //房间消息 virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType); //游戏消息 virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType); //房间消息 virtual bool SendRoomMessage(DWORD dwSocketID, LPCTSTR lpszMessage, WORD wType, bool bAndroid); //同步事件 virtual bool OnTongBu(int Command, DWORD dwContextID, VOID * pData, WORD wDataSize); //网络接口 public: //发送数据 virtual bool SendData(BYTE cbSendMask, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize); //发送数据 virtual bool SendData(DWORD dwSocketID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize); //发送数据 virtual bool SendData(IServerUserItem * pIServerUserItem, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize); //群发数据 virtual bool SendDataBatchToMobileUser(WORD wCmdTable, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pUserItem = NULL); //功能接口 public: //插入用户 virtual bool InsertDistribute(IServerUserItem * pIServerUserItem); //删除用户 virtual bool DeleteDistribute(IServerUserItem * pIServerUserItem); //敏感词过滤 virtual void SensitiveWordFilter(LPCTSTR pMsg, LPTSTR pszFiltered, int nMaxLen); //删除私有桌子 virtual bool DeletePrivateTable(ITableFrame* pTableFrame); //用户接口 public: //用户积分 virtual bool OnEventUserItemScore(IServerUserItem * pIServerUserItem, BYTE cbReason); //用户状态 virtual bool OnEventUserItemStatus(IServerUserItem * pIServerUserItem, WORD wOldTableID = INVALID_TABLE, WORD wOldChairID = INVALID_CHAIR, bool bSendState = false); //用户权限 virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight, BYTE cbRightKind); //删除用户的桌子列表中的数据 bool DecUserTable(DWORD dwUser, DWORD dwTableID ,int TableCount); //发送我的房间的状态 bool UpdataMyOwnRoom(IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize); //添加桌子局数通知 bool UpdataTableJushu(DWORD PrivateTableID,DWORD CurrentJushu); std::shared_ptr GetTableFrame(DWORD wTableID) { auto iter = m_TableFrameArray.find(wTableID); if (iter == m_TableFrameArray.end()) return nullptr; return iter->second; } std::shared_ptr GetPriTableFrame(std::wstring sPriTableID) { auto iter = m_PriTableID_2_TableID.find(sPriTableID); if (iter == std::end(m_PriTableID_2_TableID)) return nullptr; auto iter2 = m_TableFrameArray.find(iter->second); if (iter2 == m_TableFrameArray.end()) return nullptr; return iter2->second; } //数据事件 protected: bool CheckConfig(tagGameConfig UserSitDown); //检验 bool CheckConfigXueLiu(tagGameConfig UserSitDown); //字牌 bool CheckConfigZiPai(tagGameConfig UserSitDown); //戳瞎子 bool CheckConfigXiaZi(tagGameConfig UserSitDown); //登录成功 bool OnDBLogonSuccessSend(DWORD dwContextID, VOID * pData, WORD wDataSize); //登录成功 bool OnDBLogonSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize); //登录失败 bool OnDBLogonFailure(DWORD dwContextID, VOID * pData, WORD wDataSize); //获取游戏积分记录列表 bool OnDBGetUserGameScoreList(DWORD dwContextID, VOID * pData, WORD wDataSize); //获取游戏积分记录详情 bool OnDBGetUserGameScoreRecordDetail(DWORD dwContextID, VOID * pData, WORD wDataSize); //插入父节点房间的返回 bool OnDBO_GR_GameScoreRecord_RESULT(DWORD dwContextID, VOID * pData, WORD wDataSize); //获取临时积分排行榜 bool OnDBO_GR_GameTmpScoreRankListResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //获取游戏回放数据 bool OnDBGetUserGameScoreReplayRecord(DWORD dwContextID, VOID * pData, WORD wDataSize); //配置信息 bool OnDBGameParameter(DWORD dwContextID, VOID * pData, WORD wDataSize); //列表信息 //bool OnDBGameColumnInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); ////机器信息 //bool OnDBGameAndroidInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); ////机器参数 //bool OnDBGameAndroidParameter(DWORD dwContextID, VOID * pData, WORD wDataSize); //道具信息 //bool OnDBGamePropertyInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); ////会员参数 //bool OnDBGameMemberParameter(DWORD dwContextID, VOID * pData, WORD wDataSize); ////银行信息 //bool OnDBUserInsureInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); ////银行成功 //bool OnDBUserInsureSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize); ////银行失败 //bool OnDBUserInsureFailure(DWORD dwContextID, VOID * pData, WORD wDataSize); ////用户信息 //bool OnDBUserInsureUserInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); ////开通结果 //bool OnDBUserInsureEnableResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //直接扣除元宝 bool OnDBR_GR_USER_ZHIJIE_BEANS_RETURNSEND(DWORD dwContextID, VOID * pData, WORD wDataSize); //直接扣除元宝 bool OnDBR_GR_USER_ZHIJIE_BEANS_RETURN(DWORD dwContextID, VOID * pData, WORD wDataSize); //从冻结中消耗元宝不需要通知客户 bool OnDBR_GR_USER_REDUCE_BEANS_RETURN(DWORD dwContextID, VOID * pData, WORD wDataSize); //消耗元宝不需要通知客户 bool OnDBR_GR_USER_REDUCE_BEANS_RETURNSEND(DWORD dwContextID, VOID * pData, WORD wDataSize); //冻结元宝结果通知客户 bool OnDBR_GR_USER_LOCK_BEANS_RETURNSEND(DWORD dwContextID, VOID * pData, WORD wDataSize); //冻结元宝结果通知客户 bool OnDBR_GR_USER_LOCK_BEANS_RETURN(DWORD dwContextID, VOID * pData, WORD wDataSize); //解冻元宝结果通知客户 bool OnDBR_GR_USER_UNLOCK_BEANS_RETURN(DWORD dwContextID, VOID * pData, WORD wDataSize); //解冻元宝结果通知客户 bool OnDBR_GR_USER_UNLOCK_BEANS_RETURNSEND(DWORD dwContextID, VOID * pData, WORD wDataSize); //获取刷新元宝 bool OnDBO_GR_GetBearn(DWORD dwContextID, VOID * pData, WORD wDataSize); //手机重复绑定查询 bool OnDBO_GR_GetVerifCode(DWORD dwContextID, VOID * pData, WORD wDataSize); //手机绑定查询 bool OnDBO_GR_CheckIphoneQuery(DWORD dwContextID, VOID * pData, WORD wDataSize); //手机绑定 bool OnDBO_GR_CheckIphone(DWORD dwContextID, VOID * pData, WORD wDataSize); //实名认证 bool OnDBO_GR_CheckName(DWORD dwContextID, VOID * pData, WORD wDataSize); //实名认证查询 bool OnDBO_GR_CheckNameQuery(DWORD dwContextID, VOID * pData, WORD wDataSize); //应答修改地址 bool OnDBO_GR_UpdateAddr(DWORD dwContextID, VOID * pData, WORD wDataSize); //获取刷新元宝 bool OnDBO_GR_GetBearnSEND(DWORD dwContextID, VOID * pData, WORD wDataSize); //任务列表 //bool OnDBUserTaskList(DWORD dwContextID, VOID * pData, WORD wDataSize); //任务结束 //bool OnDBUserTaskListEnd(DWORD dwContextID, VOID * pData, WORD wDataSize); //任务信息 //bool OnDBUserTaskInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //任务结果 //bool OnDBUserTaskResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //道具成功 //bool OnDBPropertySuccess(DWORD dwContextID, VOID * pData, WORD wDataSize); //道具失败 //bool OnDBPropertyFailure(DWORD dwContextID, VOID * pData, WORD wDataSize); //购买结果 //bool OnDBPurchaseResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //兑换结果 //bool OnDBExChangeResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //系统消息 //bool OnDBSystemMessage(DWORD dwContextID, VOID * pData, WORD wDataSize); //加载敏感词 //bool OnDBSensitiveWords(DWORD dwContextID, VOID * pData, WORD wDataSize); //加载完成 //bool OnDBSystemMessageFinish(DWORD dwContextID, VOID * pData, WORD wDataSize); //分享奖励钻石结果 bool OnDBShareAwardResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //分享信息 bool OnDBShareInfoResult(DWORD dwContextID, VOID * pData, WORD wDataSize); ///+++拉取胜局榜列表 //BOOL OnDBTopWinList(DWORD dwContextID, VOID * pData, WORD wDataSize); ///+++钻石兑换金币列表 //BOOL OnDBExchangeConfigList(DWORD dwContextID, VOID * pData, WORD wDataSize); ///+++查询破产信息结果 //BOOL OnDBReliefInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); ///+++破产领取信息 //BOOL OnDBGetRelief(DWORD dwContextID, VOID * pData, WORD wDataSize); //签到信息 bool OnDBUserCheckInInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //签到结果 bool OnDBUserCheckInResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //签到奖励的配置 bool OnDBCheckInReward(DWORD dwContextID, VOID * pData, WORD wDataSize); //查询抽奖信息 bool OnDBQueryLotteryInfoResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //查询福利信息应答 BOOL OnDBWelfareInfoResult(DWORD dwContextID, VOID * pData, WORD wDataSize); //俱乐部 //列表 bool OnDBGetClubList(DWORD dwContextID, VOID * pData, WORD wDataSize); //会员 bool OnDBGetClubUser(DWORD dwContextID, VOID * pData, WORD wDataSize); //会员 bool OnDBGetClubUserEx(DWORD dwContextID, VOID * pData, WORD wDataSize); //通知 bool OnDBGetClubMessage(DWORD dwContextID, VOID * pData, WORD wDataSize); //记录 bool OnDBGetClubRecord(DWORD dwContextID, VOID * pData, WORD wDataSize); //记录 bool OnDBGetClubRecordEx(DWORD dwContextID, VOID * pData, WORD wDataSize); //创建 bool OnDBCreateClub(DWORD dwContextID, VOID * pData, WORD wDataSize); //修改 bool OnDBUpdateClub(DWORD dwContextID, VOID * pData, WORD wDataSize); //删除 bool OnDBDeleteClub(DWORD dwContextID, VOID * pData, WORD wDataSize); //查看 bool OnDBGetClub(DWORD dwContextID, VOID * pData, WORD wDataSize); //加入 bool OnDBJoinClub(DWORD dwContextID, VOID * pData, WORD wDataSize); //退出 bool OnDBQuitClub(DWORD dwContextID, VOID * pData, WORD wDataSize); //同意加入 bool OnDBAgreeClub(DWORD dwContextID, VOID * pData, WORD wDataSize); //在线信息 //bool OnDBGetClubOnLine(DWORD dwContextID, VOID * pData, WORD wDataSize); //在线信息 bool OnDBGetClubOnLineEx(DWORD dwContextID, VOID * pData, WORD wDataSize); //通知 bool OnDBNotifyClubUser(DWORD dwContextID, VOID * pData, WORD wDataSize); //特殊成员 bool OnDBGetClubBlackUser(DWORD dwContextID, VOID * pData, WORD wDataSize); //协议 bool OnDBGetClubProtocol(DWORD dwContextID, VOID * pData, WORD wDataSize); //同意协议 bool OnDBAgreeClubProtocol(DWORD dwContextID, VOID * pData, WORD wDataSize); //群主信息 bool OnDBGetClubHostInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //自动创房 bool OnDBAutoCreateTable(DWORD dwContextID, VOID * pData, WORD wDataSize); //公告 bool OnDBGetClubNotice(DWORD dwContextID, VOID * pData, WORD wDataSize); //群主解散俱乐部房间 bool OnDBGetClubDissolveRoom(DWORD dwContextID, VOID * pData, WORD wDataSize); //俱乐部战绩记录 //bool OnDBGetClubCount_Exploits_Ack(DWORD dwContextID, VOID * pData, WORD wDataSize); //俱乐部局数排名 bool OnDBGetClubPlaygames_Ack(DWORD dwContextID, VOID * pData, WORD wDataSize); //俱乐部积分排名 bool OnDBGetClubIntegral_Ack(DWORD dwContextID, VOID * pData, WORD wDataSize); //打样 bool OnDBGetClubSample(DWORD dwContextID, VOID * pData, WORD wDataSize); //连接处理 protected: //注册事件 bool OnTCPSocketMainRegister(WORD wSubCmdID, VOID * pData, WORD wDataSize); //列表事件 bool OnTCPSocketMainServiceInfo(WORD wSubCmdID, VOID * pData, WORD wDataSize); //汇总事件 bool OnTCPSocketMainUserCollect(WORD wSubCmdID, VOID * pData, WORD wDataSize); //管理服务 bool OnTCPSocketMainManagerService(WORD wSubCmdID, VOID * pData, WORD wDataSize); //机器服务 //bool OnTCPSocketMainAndroidService(WORD wSubCmdID, VOID * pData, WORD wDataSize); //中心服务器群发某人的房间的状态 bool OnUpdataBodyOwnRoom(VOID * pData, WORD wDataSize); //更新其他服务器私人房间数据 bool OnUpdataBodyOtherRoom(VOID * pData, WORD wDataSize); //网络事件 protected: //用户处理 bool OnTCPNetworkMainUser(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //登录处理 bool OnTCPNetworkMainLogon(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //游戏处理 bool OnTCPNetworkMainGame(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //框架处理 bool OnTCPNetworkMainFrame(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //银行处理 //bool OnTCPNetworkMainInsure(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //任务处理 //bool OnTCPNetworkMainTask(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //兑换处理 //bool OnTCPNetworkMainExchange(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //管理处理 bool OnTCPNetworkMainManage(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //比赛命令 //bool OnTCPNetworkMainMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //俱乐部命令 bool OnTCPNetworkMainClub(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //网络事件 protected: //I D 登录 bool OnTCPNetworkSubLogonUserID(VOID * pData, WORD wDataSize, DWORD dwSocketID); //手机登录 bool OnTCPNetworkSubLogonMobile(VOID * pData, WORD wDataSize, DWORD dwSocketID); //帐号登录 bool OnTCPNetworkSubLogonAccounts(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户命令 protected: ///---福利领取信息 bool OnTCPNetworkWelfareInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///---查询签到奖品 bool OnTCPNetworkCheckinReward(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///---查询签到 bool OnTCPNetworkCheckinQuery(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///---执行签到 bool OnTCPNetworkCheckinDone(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///---胜局榜 //bool OnTCPNetworkTopWinList(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///---查询破产补助信息 //bool OnTCPNetworkQueryRelief(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///---领取破产补助 //bool OnTCPNetworkGetRelief(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///---拉取好友房服务器 //bool OnTCPNetworkPrivateGameSvr(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户规则 bool OnTCPNetworkSubUserRule(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户旁观 bool OnTCPNetworkSubUserLookon(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户起立 bool OnTCPNetworkSubUserStandUp(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户创建私有房间第一步 bool OnTCPNetworkSubUserCreateRoom(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户创建私有房间第二步 bool OnTCPNetworkSubUserCreateRoomEx(VOID * pData, WORD wDataSize,DWORD dwSocketID); //自动创建房间 bool OnTCPNetworkSubUserCreateRoomEx2(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户坐下请求 bool OnTCPNetworkSubUserDown(VOID * pData, WORD wDataSize, DWORD dwSocketID); //订单编号返回应答 bool OnTCPNetworkSubUserGetDingdanCallBack(GETDUILIE Data, DWORD dwSocketID); //请求订单编号 bool OnTCPNetworkSubUserGetDingdan(VOID * pData, WORD wDataSize, DWORD dwSocketID); //新方式请求订单 bool OnTCPNetworkSubUserGetDingdanNew(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户解绑代理结果回调 bool OnTCPNetworkSubUserUntieAgentCallBack(CString csTest, DWORD dwSocketID); //获取验证码 bool OnTCPNetworkSubUserCheckVerifCode(VOID * pData, WORD wDataSize, DWORD dwSocketID); //获取手机验证码,写个线程去调短信接口 bool OnTCPNetworkSubUserCheckVerifCodeCallBack(CString csIphoneNum, CString VerfCode, DWORD dwSocketID); //绑定手机 bool OnTCPNetworkSubUserCheckIphone(VOID * pData, WORD wDataSize, DWORD dwSocketID); //绑定手机查询,闲聊也通过这个 bool OnTCPNetworkSubUserCheckIphoneQuery(VOID * pData, WORD wDataSize, DWORD dwSocketID); //绑定闲聊 bool OnTCPNetworkSubUserXianLiao(VOID * pData, WORD wDataSize, DWORD dwSocketID); //实名认证 bool OnTCPNetworkSubUserCheckName(VOID * pData, WORD wDataSize, DWORD dwSocketID); //实名认证 bool OnTCPNetworkSubUserCheckNameQuery(VOID * pData, WORD wDataSize, DWORD dwSocketID); //获取购买记录返回应答 bool OnTCPNetworkSubUserGetDingdanListCallBack(CString csTest, DWORD dwSocketID); //获取购买记录 bool OnTCPNetworkSubUserGetDingdanList(VOID * pData, WORD wDataSize, DWORD dwSocketID); //绑定代理 bool OnTCPNetworkSubUseBangDing(VOID * pData, WORD wDataSize, DWORD dwSocketID); //绑定代理信息 bool OnTCPNetworkSubUseGetDaiLiInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); //绑定代理应答 bool OnTCPNetworkSubUserBangDingCallBack(CString csTest, DWORD dwSocketID, DWORD dDaiLi); //房主请求解散 bool OnTCPNetworkFangZhuJieSan(VOID * pData, WORD wDataSize, DWORD dwSocketID); //请求元宝 bool OnTCPNetworkGetBearn(VOID * pData, WORD wDataSize, DWORD dwSocketID); //获取加入房间信息 bool OnTCPNetworkSubUserJoinRoomInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); //获取距离排名 bool GetPaiMing(DWORD dUserID, LONGLONG JuLi, int& iPaiMing, int& iCount); //用户加入私有房间 bool OnTCPNetworkSubUserJoinRoom(VOID * pData, WORD wDataSize, DWORD dwSocketID); //获取游戏积分记录 bool OnTCPSocketGetUserGameScoreRecordList(VOID * pData, WORD wDataSize, DWORD dwSocketID); //获取游戏积分详情 bool OnTCPSocketGetUserGameScoreRecordDetail(VOID * pData, WORD wDataSize, DWORD dwSocketID); //获取游戏回放记录 bool OnTCPSocketGetUserGameReplayRecord(VOID * pData, WORD wDataSize, DWORD dwSocketID); //获取临时积分排行榜 bool OnTCPSocketGetUserGameTempScoreRankList(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户聊天 bool OnTCPNetworkSubUserChat(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户私聊 bool OnTCPNetworkSubWisperChat(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户表情 bool OnTCPNetworkSubUserExpression(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户表情 bool OnTCPNetworkSubWisperExpression(VOID * pData, WORD wDataSize, DWORD dwSocketID); //购买道具 //bool OnTCPNetworkSubPropertyBuy(VOID * pData, WORD wDataSize, DWORD dwSocketID); //使用道具 //bool OnTCPNetwordSubSendTrumpet(VOID * pData, WORD wDataSize, DWORD dwSocketID); //邀请用户 //bool OnTCPNetworkSubUserInviteReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //拒绝厌友 // bool OnTCPNetworkSubUserRepulseSit(VOID * pData, WORD wDataSize, DWORD dwSocketID); //踢出命令 // bool OnTCPNetworkSubMemberKickUser(VOID * pData, WORD wDataSize, DWORD dwSocketID); //请求用户信息 bool OnTCPNetworkSubUserInfoReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //请求更换位置 bool OnTCPNetworkSubUserChairReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //请求椅子用户信息 bool OnTCPNetworkSubChairUserInfoReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //戳瞎子需要多少元宝 USHORT GetNeedPayCxz(WORD wPlayCountRule); //纸牌 USHORT GetNeedPayZhiP(WORD wPlayCountRule); //此局总共需要多少元宝 USHORT GetNeedPay(WORD wPlayCountRule); //此局总共需要多少元宝 USHORT GetNeedPayEx(WORD wPlayCountRule); //分享奖励钻石(仅当天首次分享才有奖励) bool OnTCPNetworkShareAwardBean(VOID * pData, WORD wDataSize, DWORD dwSocketID); bool OnTCPNetworkShareInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); //银行命令 protected: //查询银行 //bool OnTCPNetworkSubQueryInsureInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); //开通银行 //bool OnTCPNetworkSubEnableInsureRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //存款请求 //bool OnTCPNetworkSubSaveScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //取款请求 //bool OnTCPNetworkSubTakeScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //转帐请求 //bool OnTCPNetworkSubTransferScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //查询用户请求 //bool OnTCPNetworkSubQueryUserInfoRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //任务命令 protected: //领取任务 //bool OnTCPNetworkSubTakeTaskRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //领取奖励 //bool OnTCPNetworkSubTaskRewardRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //加载任务 //bool OnTCPNetworkSubLoadTaskInfoRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //兑换命令 protected: //查询参数 //bool OnTCPNetworkSubQueryExchangeInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); //购买会员 //bool OnTCPNetworkSubPurchaseMember(VOID * pData, WORD wDataSize, DWORD dwSocketID); //兑换游戏币 //bool OnTCPNetworkSubExchangeScore(VOID * pData, WORD wDataSize, DWORD dwSocketID); //俱乐部命令 protected: //列表 bool OnTCPNetworkSubGetClubList(VOID * pData, WORD wDataSize, DWORD dwSocketID); //会员 bool OnTCPNetworkSubGetClubUser(VOID * pData, WORD wDataSize, DWORD dwSocketID); //会员 bool OnTCPNetworkSubGetClubUserEx(VOID * pData, WORD wDataSize, DWORD dwSocketID); //通知 bool OnTCPNetworkSubGetClubMessage(VOID * pData, WORD wDataSize, DWORD dwSocketID); //记录 bool OnTCPNetworkSubGetClubRecord(VOID * pData, WORD wDataSize, DWORD dwSocketID); //创建 bool OnTCPNetworkSubCreateClub(VOID * pData, WORD wDataSize, DWORD dwSocketID); //修改 bool OnTCPNetworkSubUpdateClub(VOID * pData, WORD wDataSize, DWORD dwSocketID); //删除 bool OnTCPNetworkSubDeleteClub(VOID * pData, WORD wDataSize, DWORD dwSocketID); //查看 bool OnTCPNetworkSubGetClub(VOID * pData, WORD wDataSize, DWORD dwSocketID); //加入 bool OnTCPNetworkSubJoinClub(VOID * pData, WORD wDataSize, DWORD dwSocketID); //退出 bool OnTCPNetworkSubQuitClub(VOID * pData, WORD wDataSize, DWORD dwSocketID); //同意加入 bool OnTCPNetworkSubAgreeClub(VOID * pData, WORD wDataSize, DWORD dwSocketID); //在线信息 //bool OnTCPNetworkSubGetClubOnLine(VOID * pData, WORD wDataSize, DWORD dwSocketID); //在线信息 bool OnTCPNetworkSubGetClubOnLineEx(VOID * pData, WORD wDataSize, DWORD dwSocketID); //检测协议 bool OnTCPNetworkSubGetClubProtocol(VOID * pData, WORD wDataSize, DWORD dwSocketID); //同意协议 bool OnTCPNetworkSubAgreeClubProtocol(VOID * pData, WORD wDataSize, DWORD dwSocketID); //会员黑名单(管理员) bool OnTCPNetworkSubGetClubBlackUser(VOID * pData, WORD wDataSize, DWORD dwSocketID); //公告 bool OnTCPNetworkSubGetClubNotice(VOID * pData, WORD wDataSize, DWORD dwSocketID); //桌子信息 bool OnTCPNetworkSubGetClubTable(VOID * pData, WORD wDataSize, DWORD dwSocketID); //群主解散俱乐部房间 bool OnTCPNetworkSubDissolveRoom(VOID * pData, WORD wDataSize, DWORD dwSocketID); //俱乐部统计战绩 bool OnTCPNetworkSubGetClubCountExploits(VOID * pData, WORD wDataSize, DWORD dwSocketID); //俱乐部统计对局数排名 bool OnTCPNetworkSubGetClubCountPlaygames(VOID * pData, WORD wDataSize, DWORD dwSocketID); //俱乐部统计积分数排名 bool OnTCPNetworkSubGetClubCountIntegral(VOID * pData, WORD wDataSize, DWORD dwSocketID); //打样 bool OnTCPNetworkSubGetClubSample(VOID * pData, WORD wDataSize, DWORD dwSocketID); //管理命令 protected: //查询设置 bool OnTCPNetworkSubQueryOption(VOID * pData, WORD wDataSize, DWORD dwSocketID); //房间设置 bool OnTCPNetworkSubOptionServer(VOID * pData, WORD wDataSize, DWORD dwSocketID); //踢出用户 //bool OnTCPNetworkSubManagerKickUser(VOID * pData, WORD wDataSize, DWORD dwSocketID); //限制聊天 //bool OnTCPNetworkSubLimitUserChat(VOID * pData, WORD wDataSize, DWORD dwSocketID); //解散所有所有游戏中牌桌 bool OnTCPNetworkSubKickAllUser(); //发布消息 bool OnTCPNetworkSubSendMessage(VOID * pData, WORD wDataSize); //解散游戏 bool OnTCPNetworkSubDismissGame(VOID * pData, WORD wDataSize, DWORD dwSocketID); //申请删除私有房间 bool OnTCPNetworkSubDeletePrivateTableReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //删除私有房间应答 bool OnTCPNetworkSubDeletePrivateTableResp(VOID * pData, WORD wDataSize, DWORD dwSocketID); //警告命令 bool OnTCPNetworkSubWarningUser(VOID * pData, WORD wDataSize, DWORD dwSocketID); //内部事件 protected: //用户登录 VOID OnEventUserLogon(IServerUserItem * pIServerUserItem, bool bAlreadyOnLine); //用户登出 VOID OnEventUserLogout(IServerUserItem * pIServerUserItem, DWORD dwLeaveReason); //执行功能 protected: //分配用户 bool PerformDistribute(); //解锁游戏币 bool PerformUnlockScore(DWORD dwUserID, DWORD dwInoutIndex, DWORD dwLeaveReason); //版本检查 bool PerformCheckVersion(DWORD dwPlazaVersion, DWORD dwFrameVersion, DWORD dwClientVersion, DWORD dwSocketID); //推进任务 bool PerformTaskProgress(IServerUserItem * pIServerUserItem, tagUserTaskEntry * pUserTaskEntry, DWORD dwWinCount, DWORD dwLostCount, DWORD dwDrawCount); //切换连接 bool SwitchUserItemConnect(IServerUserItem * pIServerUserItem, TCHAR szMachineID[LEN_MACHINE_ID], WORD wTargetIndex, BYTE cbDeviceType = DEVICE_TYPE_PC, WORD wBehaviorFlags = 0, WORD wPageTableCount = 0); //玩家自主申请解绑 bool OnTCPNetworkSubUserUntieAgent(VOID * pData, WORD wDataSize, DWORD dwSocketID); BOOL OnDBUserUntieAgent(DWORD dwContextID, VOID * pData, WORD wDataSize); //用户获得代理解绑相关信息 bool OnTCPNetworkSubUserAgentInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); BOOL OnDBUserAgentInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //发送函数 protected: //用户信息 bool SendUserInfoPacket(IServerUserItem * pIServerUserItem, DWORD dwSocketID, bool bSendAndroidFalg = false); //辅助函数 protected: //购前事件 //bool OnEventPropertyBuyPrep(WORD cbRequestArea, WORD wPropertyIndex, IServerUserItem *pISourceUserItem, IServerUserItem *pTargetUserItem); //道具消息 //bool SendPropertyMessage(DWORD dwSourceID, DWORD dwTargerID, WORD wPropertyIndex, WORD wPropertyCount); //道具效应 //bool SendPropertyEffect(IServerUserItem * pIServerUserItem); //辅助函数 protected: //登录失败 bool SendLogonFailure(LPCTSTR pszString, LONG lErrorCode, DWORD dwSocketID); //银行失败 bool SendInsureFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode, BYTE cbActivityGame); //请求失败 bool SendRequestFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode); //道具失败 //bool SendPropertyFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode, WORD wRequestArea); //辅助函数 public: //查找用户 virtual IServerUserItem * SearchUserItem(DWORD dwUserID) { return m_ServerUserManager.SearchUserItem(dwUserID); } //绑定用户 virtual IServerUserItem * GetBindUserItem(WORD wBindIndex); //绑定参数 virtual tagBindParameter * GetBindParameter(WORD wBindIndex); //道具类型 WORD GetPropertyType(WORD wPropertyIndex); //设置用户在ServerID中的游戏状态 ,1 牌桌游戏中,0为未游戏。 bool SetUserServerID(IServerUserItem * pIServerUserItem, BYTE cbFlag, WORD ServerID); //向中心服务器群发某人的房间的状态 bool UpdataBodyOwnRoomToServer(VOID * pData, WORD wDataSize); //发送某人的房间的状态 bool UpdataBodyOwnRoom(IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize); //更新服务器服务状态 bool UpdataServerStata(VOID * pData, WORD wDataSize); ITCPNetworkEngine * GetTCPNetworkEngine() { return m_pITCPNetworkEngine; } //辅助函数 protected: //配置机器 bool InitAndroidUser(); //配置桌子 bool InitTableFrameArray(); //获取一个可用的私有桌子ID std::wstring GetNextPrivateRoomID(int idLen = 10); //创建私有桌子 std::shared_ptr CreatePrivateTable(DWORD RoomID, WORD wGameType); //配置比赛 //bool InitMatchServiceManager(); //发送请求 bool SendUIControlPacket(WORD wRequestID, VOID * pData, WORD wDataSize); //设置参数 void SetMobileUserParameter(IServerUserItem * pIServerUserItem, BYTE cbDeviceType, WORD wBehaviorFlags, WORD wPageTableCount); //群发用户信息 bool SendUserInfoPacketBatchToMobileUser(IServerUserItem * pIServerUserItem); //发可视用户信息 bool SendViewTableUserInfoPacketToMobileUser(IServerUserItem * pIServerUserItem, DWORD dwUserIDReq); //手机立即登录 bool MobileUserImmediately(IServerUserItem * pIServerUserItem); //购买道具 //int OnPropertyBuy(VOID * pData, WORD wDataSize, DWORD dwSocketID); //发送系统消息 bool SendSystemMessage(CMD_GR_SendMessage * pSendMessage, WORD wDataSize); //辅助函数 protected: //移除消息 void RemoveSystemMessage(); CString dwIP2csIP(DWORD dwIP); public: // 是否监测此用户 virtual BOOL IsJC(DWORD UserID); // 更新通道 int UpDataTongDao(); ///统计该场的总人数 //DWORD SumOnlineCount(WORD wVenueID); ///能否领取救济 //bool CanGetRelief(IServerUserItem* pIServerUserItem, WORD venueID); public: std::vector m_vecRouletteConfig; ///---转盘奖品配置数组 ///+++大转盘命令 bool OnTCPNetworkMainRoulette(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); ///奖品配置 bool OnTCPNetworkMyRouletteConfig(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///转盘抽奖 bool OnTCPNetworkRouletteLottery(VOID * pData, WORD wDataSize, DWORD dwSocketID); /// 转盘抽奖 bool _DoRouletteLottery(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///查询抽奖信息 bool OnTCPNetworkLotteryInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///查询抽奖历史记录 bool OnTCPNetworkLotteryHis(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///手动领奖 bool OnTCPNetworkLotteryAward(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///注册收件信息 bool OnTCPNetworkLotteryAddress(VOID * pData, WORD wDataSize, DWORD dwSocketID); //扫码更新钻石 bool OnSetAddBingIDAndCurrency(VOID * pData, WORD wDataSize, DWORD dwSocketID); bool OnDBUserZuanShi(DWORD dwContextID, VOID * pData, WORD wDataSize); ///+++大转盘奖品列表 BOOL OnDBRouletteConfig(DWORD dwContextID, VOID * pData, WORD wDataSize); ///+++"我"的转盘信息 BOOL OnDBMyRouletteInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); ///+++中奖历史 BOOL OnDBLotteryHis(DWORD dwContextID, VOID * pData, WORD wDataSize); BOOL OnDBLotteryHisEx(DWORD dwContextID, VOID * pData, WORD wDataSize); ///+++轮盘抽奖 BOOL OnDBRouletteLottery(DWORD dwContextID, VOID * pData, WORD wDataSize); //回调抽奖记录入库,更新领取标志 bool OnTCPNetworkSubUserLotteryResultCallBack(WORD wLotteryID, DWORD dwSocketID); //手动领奖 BOOL OnDBRouletteAward(DWORD dwContextID, VOID * pData, WORD wDataSize); //额外玩法 2018-10-31 bool OnTCPNetworkSubUpdateAddClub(VOID * pData, WORD wDataSize, DWORD dwSocketID); bool OnDBUpdateAddClub(DWORD dwContextID, VOID * pData, WORD wDataSize); bool OnDBGetAddClub(DWORD dwContextID, VOID * pData, WORD wDataSize); bool OnAutoCreateRoomToDB(DWORD dwClubID, DWORD dwUserID, WORD wWanFa); //分享战绩到闲聊 bool OnDBFenXiangReCord(DWORD dwContextID, VOID * pData, WORD wDataSize); bool OnWlShuffleGameHandle(VOID * pData, WORD wDataSize, DWORD dwSocketID); bool OnWlShuffleGameHandleACK(DWORD dwContextID, VOID * pData, WORD wDataSize); bool OnWlShuffleGameDeductHandle(VOID * pData, WORD wDataSize); }; ////////////////////////////////////////////////////////////////////////////////// #endif