bool NFCPVPMatchRedisModule::GetPlayerRoomIDList(const std::vector<NFGUID>& xPlayerList, std::vector<NFGUID>& vecRoomIDList) { NF_SHARE_PTR<NFINoSqlDriver> pNoSqlDriver = m_pNoSqlModule->GetDriverBySuitConsistent(); if (pNoSqlDriver) { std::vector<std::string> vFields; std::vector<std::string> vValues; std::string strKey = MakePlayerRoomKey(); std::string strData; for (int i = 0; i < xPlayerList.size(); ++i) { vFields.push_back(xPlayerList[i].ToString()); } if (pNoSqlDriver->HMGet(strKey, vFields, vValues)) { for (int i = 0; i < vValues.size(); ++i) { NFGUID xIdent; xIdent.FromString(vValues[i]); vecRoomIDList.push_back(xIdent); } return true; } } return false; }
bool NFCTeamModule::BroadcastMsgToTeam(const NFGUID& self, const NFGUID& xTeam, const uint16_t nMsgID, google::protobuf::Message& xData) { std::vector<std::string> xPlayerList; std::vector<int> xGameIDList; std::vector<NFGUID> xPlayerIDList; if (!GetMemberList(self, xTeam, xPlayerIDList)) { return false; } for (int i = 0; i < xPlayerIDList.size(); i++) { xPlayerList.push_back(xPlayerIDList[i].ToString()); } for (int i = 0; i < xGameIDList.size() && i < xPlayerList.size(); i++) { int nGameID = xGameIDList[i]; NFGUID xPlayer; xPlayer.FromString(xPlayerList[i]); m_pWorldNet_ServerModule->SendMsgToGame(nGameID, (NFMsg::EGameMsgID)nMsgID, xData, xPlayer); } return true; }
bool NFCPVPMatchRedisModule::GetStatusRoomID(const int nPVPMode, const int nGrade, const int nStatus, std::vector<NFGUID>& xRoomIDList) { NF_SHARE_PTR<NFINoSqlDriver> pNoSqlDriver = m_pNoSqlModule->GetDriverBySuitConsistent(); if (pNoSqlDriver) { std::string strKey = MakeStatusRoomIDRedisKey(nPVPMode, nGrade, nStatus); std::string strData; std::vector<std::string> valueVec; if (pNoSqlDriver->HValues(strKey, valueVec)) { for (int i = 0; i < valueVec.size(); i++) { NFGUID xIdent; xIdent.FromString(valueVec[i]); if (!xIdent.IsNull()) { xRoomIDList.push_back(xIdent); } } return true; } } return false; }
bool NFCPVPMatchRedisModule::PopSinglePlayer(NFGUID& self, const int nPVPMode, const int nGrade) { NF_SHARE_PTR<NFINoSqlDriver> pNoSqlDriver = m_pNoSqlModule->GetDriverBySuitConsistent(); if (pNoSqlDriver) { std::string strKey = MakeSingleWaitRedisKey(nPVPMode, nGrade); std::string strData; if (pNoSqlDriver->ListPop(strKey, strData)) { return self.FromString(strData); } } return false; }
bool NFCPVPMatchRedisModule::GetPlayerRoomID(const NFGUID& self, NFGUID& xRoomID) { NF_SHARE_PTR<NFINoSqlDriver> pNoSqlDriver = m_pNoSqlModule->GetDriverBySuitConsistent(); if (pNoSqlDriver) { std::string strKey = MakePlayerRoomKey(); std::string strData; if (pNoSqlDriver->HGet(strKey, self.ToString(), strData)) { if (xRoomID.FromString(strData)) { return true; } } } return false; }
bool NFCProperty::FromString(const std::string& strData) { const TDATA_TYPE eType = GetType(); bool bRet = false; switch (eType) { case TDATA_INT: { NFINT64 nValue = 0; bRet = NF_StrTo(strData, nValue); SetInt(nValue); } break; case TDATA_FLOAT: { double dValue = 0; bRet = NF_StrTo(strData, dValue); SetFloat(dValue); } break; case TDATA_STRING: { SetString(strData); bRet = true; } break; case TDATA_OBJECT: { NFGUID xID; bRet = xID.FromString(strData); SetObject(xID); } break; default: break; } return bRet; }
bool NFCPVPMatchModule::BroadcastMsgToRoom(const NFGUID& self, const NFGUID& xRoomID, const uint16_t nMsgID, google::protobuf::Message& xData) { std::vector<std::string> xPlayerList; std::vector<int64_t> xGameIDList; std::vector<NFGUID> xPlayerIDList; NFMsg::PVPRoomInfo xRoomInfo; if (!m_pPVPMatchRedisModule->GetRoomInfo(xRoomID, xRoomInfo)) { return false; } for (int i = 0; i < xRoomInfo.xblueplayer_size(); i++) { xPlayerIDList.push_back(NFINetModule::PBToNF(xRoomInfo.xblueplayer(i))); } for (int i = 0; i < xRoomInfo.xredplayer_size(); i++) { xPlayerIDList.push_back(NFINetModule::PBToNF(xRoomInfo.xredplayer(i))); } for (int i = 0; i < xPlayerIDList.size(); i++) { xPlayerList.push_back(xPlayerIDList[i].ToString()); } if (!m_pPlayerRedisModule->GetPlayerCacheGameID(xPlayerList, xGameIDList)) { return false; } for (int i = 0; i < xGameIDList.size() && i < xPlayerList.size(); i++) { int nGameID = xGameIDList[i]; NFGUID xPlayer; xPlayer.FromString(xPlayerList[i]); m_pWorldNet_ServerModule->SendMsgToGame(nGameID, (NFMsg::EGameMsgID)nMsgID, xData, xPlayer); } return true; }
bool NFCPVPMatchRedisModule::PopSinglePlayerList(const int nPVPMode, const int nGrade, const int nCount, std::vector<NFGUID>& xPlayerList) { NF_SHARE_PTR<NFINoSqlDriver> pNoSqlDriver = m_pNoSqlModule->GetDriverBySuitConsistent(); if (pNoSqlDriver) { std::string strKey = MakeSingleWaitRedisKey(nPVPMode, nGrade); std::string strData; for (int i = 0; i < nCount; i++) { if (pNoSqlDriver->ListPop(strKey, strData)) { NFGUID xIdent; xIdent.FromString(strData); xPlayerList.push_back(xIdent); } } } return false; }
bool NFCAccountRedisModule::GetRoleInfo(const std::string & strAccount, std::string & strRoleName, NFGUID & id) { std::string strAccountKey = m_pCommonRedisModule->GetAccountCacheKey(strAccount); NF_SHARE_PTR<NFINoSqlDriver> xNoSqlDriver = m_pNoSqlModule->GetDriverBySuit(strAccount); if (xNoSqlDriver) { if (xNoSqlDriver->Exists(strAccountKey)) { std::string strID; bool bRoleNameRet = xNoSqlDriver->HGet(strAccountKey, NFrame::Player::Name(), strRoleName); bool bRoleIDRet = xNoSqlDriver->HGet(strAccountKey, NFrame::Player::ID(), strID); if (bRoleNameRet && bRoleIDRet && !strRoleName .empty() && !strID.empty()) { return id.FromString(strID); } return false; } } return false; }