int NFCEquipModule::GetEquipElementLevel(const NFGUID & self, const NFGUID & id, NFrame::Player::BagEquipList eIndex) { if (id.IsNull() || self.IsNull()) { return -1; } if (eIndex > NFrame::Player::BagEquipList_ElementLevel5_POISON || eIndex < NFrame::Player::BagEquipList_ElementLevel1_FIRE) { return -1; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject(self); if (NULL == pObject) { return -1; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement(NFrame::Player::R_BagEquipList()); if (!pRecord) { return -1; } NFCDataList xDataList; pRecord->FindObject(NFrame::Player::BagEquipList_GUID, id, xDataList); if (xDataList.GetCount() != 1) { return -1; } const int nRow = xDataList.Int(0); return pRecord->GetInt(nRow, eIndex); }
int NFCEquipModule::GetEquipHoleCount(const NFGUID & self, const NFGUID & id) { if (id.IsNull() || self.IsNull()) { return false; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject(self); if (NULL == pObject) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement(NFrame::Player::R_BagEquipList()); if (!pRecord) { return false; } NFCDataList xDataList; pRecord->FindObject(NFrame::Player::BagEquipList_GUID, id, xDataList); if (xDataList.GetCount() != 1) { return false; } const int nRow = xDataList.Int(0); return pRecord->GetInt(nRow, NFrame::Player::BagEquipList_SlotCount); }
bool NFCEquipModule::DressEquipForHero(const NFGUID& self, const NFGUID& hero, const NFGUID& id) { if (id.IsNull() || self.IsNull() || hero.IsNull()) { return false; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject(self); if (NULL == pObject) { return false; } NF_SHARE_PTR<NFIRecord> pBagRecord = pObject->GetRecordManager()->GetElement(NFrame::Player::R_BagEquipList()); if (!pBagRecord) { return false; } NF_SHARE_PTR<NFIRecord> pHeroRecord = pObject->GetRecordManager()->GetElement(NFrame::Player::R_PlayerHero()); if (!pHeroRecord) { return false; } NFCDataList xEquipDataList; pBagRecord->FindObject(NFrame::Player::BagEquipList_GUID, id, xEquipDataList); if (xEquipDataList.GetCount() != 1) { return false; } NFCDataList xHeroDataList; pHeroRecord->FindObject(NFrame::Player::PlayerHero_GUID, hero, xHeroDataList); if (xHeroDataList.GetCount() != 1) { return false; } const int nEquipRow = xEquipDataList.Int(0); const int nHeroRow = xHeroDataList.Int(0); const std::string& strEquipID = pBagRecord->GetString(nEquipRow, NFrame::Player::BagEquipList_ConfigID); const int nEquipPos = m_pElementModule->GetPropertyInt(strEquipID, NFrame::Equip::ItemSubType()); if (nEquipRow < 0 || nHeroRow < 0 || strEquipID.empty() || nEquipPos < 0 || nEquipPos > (NFrame::Player::PlayerHero_Equip6 - NFrame::Player::PlayerHero_Equip1)) { return false; } //so there have any bind? //hero, position pHeroRecord->SetObject(nHeroRow, nEquipPos + NFrame::Player::PlayerHero_Equip1, id); pBagRecord->SetObject(nEquipRow, NFrame::Player::BagEquipList_WearGUID, hero); return false; }
bool NFCEquipModule::AddEquipIntensifyLevel(const NFGUID& self, const NFGUID& id) { if (id.IsNull() || self.IsNull()) { return false; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject(self); if (NULL == pObject) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement(NFrame::Player::R_BagEquipList()); if (!pRecord) { return false; } NFCDataList xDataList; pRecord->FindObject(NFrame::Player::BagEquipList_GUID, id, xDataList); if (xDataList.GetCount() != 1) { return false; } const int nRow = xDataList.Int(0); const int nLevel = pRecord->GetInt(nRow, NFrame::Player::BagEquipList_IntensifyLevel); pRecord->SetInt(nRow, NFrame::Player::BagEquipList_IntensifyLevel, nLevel + 1); return true; }
bool NFCPatrolState::Execute(const NFGUID& self) { if (!NFIState::Execute(self)) { NFIStateMachine* pStateMachine = m_pAIModule->GetStateMachine(self); if (pStateMachine) { NFGUID ident = m_pHateModule->QueryMaxHateObject(self); NFAI_MOVE_TYPE eMoveType = (NFAI_MOVE_TYPE)(m_pKernelModule->GetPropertyInt(self, "MoveType")); //如果是定点的,则不走,继续idle switch (eMoveType) { case NFAI_MOVE_TYPE::MOVE_BY_POINT_LIST: { //查找是否有可以攻击的对象 if (!ident.IsNull()) { pStateMachine->ChangeState(FightState); } else { //下一个节点 //object记录当前的路径ID和index,以记录寻路的位置 } } break; case NFAI_MOVE_TYPE::MOVE_BY_RANDOM: { //查找是否有可以攻击的对象 if (!ident.IsNull()) { pStateMachine->ChangeState(FightState); } else { RandomPatrol(self); } } break; default: break; } } } return true; }
bool NFCEquipModule::SetEquipInlayStoneID(const NFGUID& self, const NFGUID& id, NFrame::Player::BagEquipList eIndex, const std::string& strStoneID) { if (id.IsNull() || self.IsNull() || strStoneID.empty()) { return false; } if (eIndex > NFrame::Player::BagEquipList_InlayStone10 || eIndex < NFrame::Player::BagEquipList_InlayStone1) { return false; } if (!m_pElementModule->ExistElement(strStoneID)) { return false; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject(self); if (NULL == pObject) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement(NFrame::Player::R_BagEquipList()); if (!pRecord) { return false; } NFCDataList xDataList; pRecord->FindObject(NFrame::Player::BagEquipList_GUID, id, xDataList); if (xDataList.GetCount() != 1) { return false; } const int nRow = xDataList.Int(0); const int nSoltCount = pRecord->GetInt(nRow, NFrame::Player::BagEquipList_SlotCount); if ((eIndex - NFrame::Player::BagEquipList_InlayStone1) <= nSoltCount) { return false; } pRecord->SetString(nRow, eIndex, strStoneID); return true; }
bool NFCHeroModule::SetFightHero(const NFGUID& self, const NFGUID& xHeroID, const int nPos) { NF_SHARE_PTR<NFIRecord> pHeroRecord = m_pKernelModule->FindRecord(self, NFrame::Player::PlayerHero::ThisName()); if (nullptr == pHeroRecord) { return false; } if (xHeroID.IsNull()) { return false; } int nRow = pHeroRecord->FindObject(NFrame::Player::PlayerHero::GUID, xHeroID); if (nRow < 0) { return false; } int nActivite = pHeroRecord->GetInt32(nRow, NFrame::Player::PlayerHero::Activated); if (nActivite <= 0) { return false; } AddToFightList(self, xHeroID, nPos); return false; }
void NFCGuildModule::OnCreateGuildProcess(const int nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { CLIENT_MSG_PROCESS_NO_OBJECT(nSockIndex, nMsgID, msg, nLen, NFMsg::ReqAckCreateGuild); std::string strRoleName ; int nLevel = 0; int nJob = 0; int nDonation= 0; int nVIP= 0; m_pGuildDataModule->GetPlayerInfo(nPlayerID, strRoleName, nLevel, nJob, nDonation, nVIP); NFGUID xGuild = CreateGuild(nPlayerID, xMsg.guild_name(), strRoleName, nLevel, nJob, nDonation, nVIP); if (!xGuild.IsNull()) { NFMsg::ReqAckCreateGuild xAck; *xAck.mutable_guild_id() = NFINetModule::NFToPB(xGuild); xAck.set_guild_name(xMsg.guild_name()); m_pNetModule->SendMsgPB(NFMsg::EGMI_ACK_CREATE_GUILD, xAck, nSockIndex, nPlayerID); } else { NFMsg::ReqAckCreateGuild xAck; *xAck.mutable_guild_id() = NFINetModule::NFToPB(xGuild); xAck.set_guild_name(""); m_pNetModule->SendMsgPB(NFMsg::EGMI_ACK_CREATE_GUILD, xAck, nSockIndex, nPlayerID); } }
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 NFCHeroModule::HeroSkillUp(const NFGUID& self, const NFGUID& xHeroID, const int nIndex) { if (xHeroID.IsNull()) { return false; } if (nIndex > NFrame::Player::PlayerHero::Skill5 && nIndex < NFrame::Player::PlayerHero::Skill1) { return false; } NF_SHARE_PTR<NFIRecord> pHeroRecord = m_pKernelModule->FindRecord(self, NFrame::Player::PlayerHero::ThisName()); if (nullptr == pHeroRecord) { return false; } int nRow = pHeroRecord->FindObject(NFrame::Player::PlayerHero::GUID, xHeroID); if (nRow < 0) { return false; } const std::string& strSkillID = pHeroRecord->GetString(nRow, nIndex); const std::string& strNextSkillID = m_pElementModule->GetPropertyString(strSkillID, NFrame::Skill::NextID()); if (strNextSkillID.empty()) { //no next talent id, this skill is the best talent return false; } pHeroRecord->SetString(nRow, nIndex, strNextSkillID); return true; }
bool NFCHeroModule::HeroStarUp(const NFGUID& self, const NFGUID& xHeroID) { NF_SHARE_PTR<NFIRecord> pHeroRecord = m_pKernelModule->FindRecord(self, NFrame::Player::PlayerHero::ThisName()); if (nullptr == pHeroRecord.get()) { return false; } if (xHeroID.IsNull()) { return false; } int nRow = pHeroRecord->FindObject(NFrame::Player::PlayerHero::GUID, xHeroID); if (nRow < 0) { return false; } const int nBeforeStar = pHeroRecord->GetInt32(nRow, NFrame::Player::PlayerHero::Star); int nAfterStar = nBeforeStar + 1; if (nAfterStar > ECONSTDEFINE_HERO_MAXSTAR) { nAfterStar = ECONSTDEFINE_HERO_MAXSTAR; } pHeroRecord->SetInt(nRow, NFrame::Player::PlayerHero::Star, nAfterStar); return true; }
bool NFCProperty::SetObject(const NFGUID& value) { if (eType != TDATA_OBJECT) { return false; } if (!mxData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (value.IsNull()) { return false; } mxData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData(TDATA_OBJECT)); mxData->SetObject(NFGUID()); } if (value == mxData->GetObject()) { return false; } NFCDataList::TData oldValue; oldValue = *mxData; mxData->SetObject(value); OnEventHandler(oldValue, *mxData); return true; }
NFGUID NFCPVPMatchModule::CreateRoom(const NFGUID& self, const int nPVPMode, const int nGrade) { NFGUID xRoomID = m_pKernelModule->CreateGUID(); if (xRoomID.IsNull()) { return NFGUID(); } NFMsg::PVPRoomInfo xRoomInfo; xRoomInfo.set_ncellstatus(0); *xRoomInfo.mutable_roomid() = NFINetModule::NFToPB(xRoomID); xRoomInfo.set_npvpmode(nPVPMode); xRoomInfo.set_npvpgrade(nGrade); int nPVPModeMaxMember = GetMemberCount(nPVPMode); if (nPVPModeMaxMember < 0) { return NFGUID(); } xRoomInfo.set_maxpalyer(nPVPModeMaxMember); if (!m_pPVPMatchRedisModule->SetRoomInfo(xRoomID, xRoomInfo)) { return NFGUID(); } return xRoomID; }
void NFCTeamModule::OnCreateTeamProcess(const NFSOCK nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { CLIENT_MSG_PROCESS( nMsgID, msg, nLen, NFMsg::ReqAckCreateTeam); std::string strRoleName ; int nLevel = 0; int nJob = 0; int nDonation= 0; int nVIP= 0; NFGUID xTeam = CreateTeam(nPlayerID, NFINetModule::PBToNF(xMsg.team_id()), strRoleName, strRoleName, nLevel, nJob, nDonation, nVIP); if (!xTeam.IsNull()) { NFMsg::ReqAckCreateTeam xAck; *xAck.mutable_team_id() = NFINetModule::NFToPB(xTeam); NFMsg::TeamInfo xTeamInfo; if (!GetTeamInfo(nPlayerID, xTeam, xTeamInfo)) { xAck.mutable_xteaminfo()->CopyFrom(xTeamInfo); m_pNetModule->SendMsgPB(NFMsg::EGMI_ACK_CREATE_TEAM, xAck, nSockIndex, nPlayerID); return; } } NFMsg::ReqAckCreateTeam xAck; *xAck.mutable_team_id() = NFINetModule::NFToPB(xTeam); m_pNetModule->SendMsgPB(NFMsg::EGMI_ACK_CREATE_TEAM, xAck, nSockIndex, nPlayerID); }
bool NFCPackModule::DeleteEquip( const NFGUID& self, const NFGUID& id ) { if (id.IsNull()) { return false; } //删除3个地方,背包,英雄穿戴,玩家穿戴 NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject( self ); if (nullptr == pObject) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement( NFrame::Player::R_BagEquipList() ); if (nullptr == pRecord) { return false; } NFCDataList varFindResult; int nFindRowCount = pRecord->FindObject(NFrame::Player::BagItemList_ConfigID, id, varFindResult); if (nFindRowCount > 0) { int nTotalCount = 0; for (int i = 0; i < varFindResult.GetCount(); ++i) { int nFindRow = varFindResult.Int(i); pRecord->Remove(nFindRow); } } return true; }
bool NFPatrolState::Execute(const NFGUID& self, NFIStateMachine* pStateMachine) { if (!NFIState::Execute(self, pStateMachine)) { NFGUID ident = m_pHateModule->QueryMaxHateObject(self); NFAI_NPC_TYPE eMoveType = (NFAI_NPC_TYPE)(m_pKernelModule->GetPropertyInt(self, NFrame::NPC::NPCType())); //如果是定点的,则不走,继续idle switch (eMoveType) { case NFAI_NPC_TYPE::MASTER_TYPE: { //查找是否有可以攻击的对象 if (!ident.IsNull()) { pStateMachine->ChangeState(FightState); } else { //下一个节点 //object记录当前的路径ID和index,以记录寻路的位置 } } break; case NFAI_NPC_TYPE::HERO_TYPE: { //查找是否有可以攻击的对象 if (!ident.IsNull()) { pStateMachine->ChangeState(FightState); } else { RandomPatrol(self, pStateMachine); } } break; default: break; } } return true; }
bool NFCHeroModule::AddHeroExp(const NFGUID& self, const NFGUID& xHeroID, const int64_t nExp) { NF_SHARE_PTR<NFIRecord> pHeroRecord = m_pKernelModule->FindRecord(self, NFrame::Player::PlayerHero::ThisName()); if (nullptr == pHeroRecord.get()) { return false; } if (xHeroID.IsNull()) { return false; } if (nExp <= 0) { return false; } int nRow = pHeroRecord->FindObject(NFrame::Player::PlayerHero::GUID, xHeroID); if (nRow < 0) { return false; } NFDataList varRowData; if (!pHeroRecord->QueryRow(nRow, varRowData)) { return false; } const int64_t nCurExp = varRowData.Int(NFrame::Player::PlayerHero::Exp); const int nBeforeLevel = varRowData.Int32(NFrame::Player::PlayerHero::Level); int64_t nLeftExp = nCurExp + nExp; int nAfterLevel = nBeforeLevel; for (int i = nBeforeLevel; i < ECONSTDEFINE_HERO_MAXLEVEL; i++) { const int64_t nNeedExp = (i + 1) * ECONSTDEFINE_HERO_ONCELEVEEXP; if (nLeftExp >= nNeedExp) { nAfterLevel += 1; nLeftExp -= nNeedExp; pHeroRecord->SetInt(nRow, NFrame::Player::PlayerHero::Level, nAfterLevel); } else { break; } } pHeroRecord->SetInt(nRow, NFrame::Player::PlayerHero::Exp, nLeftExp); return true; }
void NFCChatModule::OnClienChatProcess(const int nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { CLIENT_MSG_PROCESS(nSockIndex, nMsgID, msg, nLen, NFMsg::ReqAckPlayerChat); switch (xMsg.chat_type()) { case NFMsg::ReqAckPlayerChat_EGameChatType::ReqAckPlayerChat_EGameChatType_EGCT_WORLD: { NFINetModule* m_pNetModule = m_pGameServerNet_ServerModule->GetNetModule(); if (m_pNetModule) { m_pNetModule->SendMsgPBToAllClient(NFMsg::EGMI_ACK_CHAT, xMsg); } } break; case NFMsg::ReqAckPlayerChat_EGameChatType::ReqAckPlayerChat_EGameChatType_EGCT_GUILD: { NFGUID xGuildID = m_pKernelModule->GetPropertyObject(nPlayerID, NFrame::Player::GuildID()); if (!xGuildID.IsNull()) { NFINetClientModule * pNetClientModule = m_pGameServerToWorldModule->GetClusterClientModule(); pNetClientModule->SendBySuit(xGuildID.nData64, nMsgID, msg); } } break; case NFMsg::ReqAckPlayerChat_EGameChatType::ReqAckPlayerChat_EGameChatType_EGCT_PRIVATE: case NFMsg::ReqAckPlayerChat_EGameChatType::ReqAckPlayerChat_EGameChatType_EGCT_TEAM: { if (xMsg.has_target_id()) { NFGUID xTargetID = NFINetModule::PBToNF(xMsg.target_id()); if (!xTargetID.IsNull()) { NFINetClientModule * pNetClientModule = m_pGameServerToWorldModule->GetClusterClientModule(); pNetClientModule->SendBySuit(nPlayerID.nData64, nMsgID, msg); } } } break; default: break;; } }
NFGUID NFCHeroModule::ActiviteHero(const NFGUID & self, const string & strID) { NFGUID id = AddHero(self, strID); if (!id.IsNull()) { ActiviteHero(self, id); } return id; }
bool NFCPVPMatchModule::PlayerLeaveRoom(const NFGUID& self, const NFGUID& xRoomID) { if (!xRoomID.IsNull()) { return false; } NFMsg::PVPRoomInfo xRoomInfo; if (!m_pPVPMatchRedisModule->GetRoomInfo(xRoomID, xRoomInfo)) { return false; } NFMsg::PVPRoomInfo xNewRoomInfo; xNewRoomInfo.CopyFrom(xRoomInfo); xNewRoomInfo.clear_xredplayer(); for (int i = 0; i < xRoomInfo.xredplayer_size(); ++i) { if (NFINetModule::PBToNF(xRoomInfo.xredplayer(i)) == self) { continue; } xRoomInfo.add_xredplayer()->CopyFrom(xRoomInfo.xredplayer(i)); } xNewRoomInfo.clear_xblueplayer(); for (int i = 0; i < xRoomInfo.xblueplayer_size(); ++i) { if (NFINetModule::PBToNF(xRoomInfo.xblueplayer(i)) == self) { continue; } xRoomInfo.add_xredplayer()->CopyFrom(xRoomInfo.xblueplayer(i)); } if (!m_pPVPMatchRedisModule->SetPlayerRoomID(self, NFGUID())) { return false; } UpdateRoomStatus(xRoomInfo); if (!m_pPVPMatchRedisModule->SetRoomInfo(xRoomID, xRoomInfo)) { return false; } return true; }
void NFCTileModule::ReqMineTile(const NFSOCK nSockIndex, const int nMsgID, const char * msg, const uint32_t nLen) { CLIENT_MSG_PROCESS( nMsgID, msg, nLen, NFMsg::ReqMiningTitle); NFGUID xViewOppnentID = m_pKernelModule->GetPropertyObject(nPlayerID, NFrame::Player::ViewOppnent()); NFGUID xFightOppnentID = m_pKernelModule->GetPropertyObject(nPlayerID, NFrame::Player::FightOppnent()); if (!xViewOppnentID.IsNull() || !xFightOppnentID.IsNull()) { return; } int nX = xMsg.x(); int nY = xMsg.y(); int nOpr = xMsg.opr(); if (1 == nOpr)//add { ////consume diamond AddTile(nPlayerID, nX, nY, nOpr); } else if (0 == nOpr)//rem { //get money AddTile(nPlayerID, nX, nY, nOpr); } NFMsg::AckMiningTitle xData; NFMsg::TileState* pTile = xData.add_tile(); if (pTile) { pTile->set_x(nX); pTile->set_y(nY); pTile->set_opr(nOpr); } SaveTileData(nPlayerID); m_pGameServerNet_ServerModule->SendMsgPBToGate(NFMsg::EGEC_ACK_MINING_TITLE, xData, nPlayerID); }
bool NFCHeroPropertyModule::CalHeroEquipProperty(const NFGUID& self, const NFGUID& xHeroGUID, NFIDataList& xDataList) { NF_SHARE_PTR<NFIRecord> pHeroRecord = m_pKernelModule->FindRecord(self, NFrame::Player::R_PlayerHero()); if (nullptr == pHeroRecord) { return false; } NFCDataList varFind; if (pHeroRecord->FindObject(NFrame::Player::PlayerHero_GUID, xHeroGUID, varFind) != 1) { return false; } const int nRow = varFind.Int(0); NF_SHARE_PTR<NFIRecord> pHeroPropertyRecord = m_pKernelModule->FindRecord(self, NFrame::Player::R_HeroPropertyValue()); if (nullptr == pHeroPropertyRecord) { return false; } ////////////////////Equip////////////////////////////////////////////////////// xDataList.Clear(); for (int i = 0; i < pHeroPropertyRecord->GetCols(); ++i) { xDataList.AddInt(0); } for (int i = NFrame::Player::PlayerHero_Equip1; i <= NFrame::Player::PlayerHero_Equip6; ++i) { NFCDataList EquipDataList; const NFGUID xEquipID = pHeroRecord->GetObject(nRow, i); if (!xEquipID.IsNull() && m_pEquipPropertyModule->CalEquipProperty(self, xEquipID, EquipDataList)) { //one equip for (int j = 0; j < pHeroPropertyRecord->GetCols(); ++j) { int nOldValue = xDataList.Int(j); int nEquipValue = EquipDataList.Int(j); xDataList.SetInt(j, nOldValue + nEquipValue); } } } return true; }
bool NFCCommonRedisModule::SaveRecordInfo(const NFGUID & self, const NFMsg::ObjectRecordList& xRecordData, const int nExpireSecond) { if (self.IsNull()) { return false; } NF_SHARE_PTR<NFIRedisClient> pDriver = m_pNoSqlModule->GetDriverBySuit(self.ToString()); if (!pDriver) { return false; } std::vector<std::string> vKeyList; std::vector<std::string> vValueList; for (int i = 0; i < xRecordData.record_list_size(); ++i) { const NFMsg::ObjectRecordBase& xRecord = xRecordData.record_list(i); std::string strValue; if (!xRecord.SerializeToString(&strValue)) { continue; } vKeyList.push_back(xRecord.record_name()); vValueList.push_back(strValue); } if (vKeyList.size() != vValueList.size()) { return false; } std::string strKey = GetRecordCacheKey(self); if (!pDriver->HMSET(strKey, vKeyList, vValueList)) { return false; } if (nExpireSecond > 0) { pDriver->EXPIRE(strKey, nExpireSecond); } return true; }
int NFCNPCRefreshModule::OnObjectHPEvent( const NFGUID& self, const std::string& strPropertyName, const NFIDataList::TData& oldVar, const NFIDataList::TData& newVar) { if ( newVar.GetInt() <= 0 ) { NFGUID identAttacker = m_pKernelModule->GetPropertyObject( self, NFrame::NPC::LastAttacker()); if (!identAttacker.IsNull()) { m_pEventProcessModule->DoEvent( self, NFED_ON_OBJECT_BE_KILLED, NFCDataList() << identAttacker ); m_pKernelModule->AddHeartBeat( self, "OnDeadDestroyHeart", this, &NFCNPCRefreshModule::OnDeadDestroyHeart, 5.0f, 1 ); } } return 0; }
bool NFCEquipModule::SetEquipRandPropertyID(const NFGUID& self, const NFGUID& id, const std::string& strPropertyID) { if (id.IsNull() || self.IsNull() || strPropertyID.empty()) { return false; } if (!m_pElementModule->ExistElement(strPropertyID)) { return false; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject(self); if (NULL == pObject) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement(NFrame::Player::R_BagEquipList()); if (!pRecord) { return false; } NFCDataList xDataList; pRecord->FindObject(NFrame::Player::BagEquipList_GUID, id, xDataList); if (xDataList.GetCount() != 1) { return false; } const int nRow = xDataList.Int(0); pRecord->SetString(nRow, NFrame::Player::BagEquipList_RandPropertyID, strPropertyID); return true; }
void NFCPVPMatchModule::OnAckCreatePVPEctypeProcess(const int nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { CLIENT_MSG_PROCESS_NO_OBJECT(nSockIndex, nMsgID, msg, nLen, NFMsg::AckCreatePVPEctype); NFGUID xRoomID = NFINetModule::PBToNF(xMsg.xroominfo().roomid()); if (!xRoomID.IsNull()) { int nServerID = 0; int nSceneID = 0; int nGroup = 0; if (!xMsg.xroominfo().has_serverid()) { return; } if (!xMsg.xroominfo().has_sceneid()) { return; } if (!xMsg.xroominfo().has_groupid()) { return; } nServerID = xMsg.xroominfo().serverid(); nSceneID = xMsg.xroominfo().sceneid(); nGroup = xMsg.xroominfo().groupid(); NFMsg::PVPRoomInfo xRoomInfo; if (m_pPVPMatchRedisModule->GetRoomInfo(xRoomID, xRoomInfo)) { UpdateRoomStatus(xRoomInfo, EPVPROOMSTATUS_FIGHT); if (xRoomInfo.ncellstatus() == EPVPROOMSTATUS_FIGHT) { xRoomInfo.set_serverid(nServerID); xRoomInfo.set_sceneid(nSceneID); xRoomInfo.set_groupid(nGroup); if (m_pPVPMatchRedisModule->SetRoomInfo(xRoomID, xRoomInfo)) { BroadcastMsgToRoom(nPlayerID, xRoomID, NFMsg::EGMI_ACK_CREATEPVPECTYPE, xMsg); } } } } }
bool NFCPVPMatchModule::PlayerEnterRoom(const NFGUID& self, const int nRed, const NFGUID& xRoomID) { if (!xRoomID.IsNull()) { return false; } NFMsg::PVPRoomInfo xRoomInfo; if (!m_pPVPMatchRedisModule->GetRoomInfo(xRoomID, xRoomInfo)) { return false; } if (nRed == EPVPREDORBLUE_RED) { if ((xRoomInfo.xredplayer_size() + 1) > xRoomInfo.maxpalyer()) { return false; } *xRoomInfo.add_xredplayer() = NFINetModule::NFToPB(self); } else { if ((xRoomInfo.xblueplayer_size() + 1) < xRoomInfo.maxpalyer()) { return false; } *xRoomInfo.add_xblueplayer() = NFINetModule::NFToPB(self); } if (!m_pPVPMatchRedisModule->SetPlayerRoomID(self, xRoomID)) { return false; } UpdateRoomStatus(xRoomInfo); if (!m_pPVPMatchRedisModule->SetRoomInfo(xRoomID, xRoomInfo)) { return false; } return true; }
bool NFCCommonRedisModule::SavePropertyInfo(const NFGUID& self, NF_SHARE_PTR<NFIPropertyManager> pPropertyManager, const int nExpireSecond) { if (self.IsNull()) { return false; } if (!pPropertyManager) { return false; } NF_SHARE_PTR<NFIRedisClient> pDriver = m_pNoSqlModule->GetDriverBySuit(self.ToString()); if (!pDriver) { return false; } std::vector<std::string> vKeyList; std::vector<std::string> vValueList; if (!ConvertPropertyManagerToVector(pPropertyManager, vKeyList, vValueList)) { return false; } if (vKeyList.size() != vValueList.size()) { return false; } std::string strKey= GetPropertyCacheKey(self); if (!pDriver->HMSET(strKey, vKeyList, vValueList)) { return false; } if (nExpireSecond > 0) { pDriver->EXPIRE(strKey, nExpireSecond); } return true; }
bool NFCHeroModule::CreateHero(const NFGUID& self, const NFGUID& xHeroID) { if (xHeroID.IsNull()) { return false; } const int nSceneID = m_pKernelModule->GetPropertyInt32(self, NFrame::Player::SceneID()); const int nGroupID = m_pKernelModule->GetPropertyInt32(self, NFrame::Player::GroupID()); E_SCENE_TYPE eSceneType = (E_SCENE_TYPE)m_pElementModule->GetPropertyInt(std::to_string(nSceneID), NFrame::Scene::Type()); if (eSceneType == E_SCENE_TYPE::SCENE_TYPE_ERROR) { return false; } NF_SHARE_PTR<NFIRecord> pHeroRecord = m_pKernelModule->FindRecord(self, NFrame::Player::PlayerHero::ThisName()); if (nullptr == pHeroRecord.get()) { return false; } int nRow = pHeroRecord->FindObject(NFrame::Player::PlayerHero::GUID, xHeroID); if (nRow < 0) { return false; } const std::string& strConfigID = pHeroRecord->GetString(nRow, NFrame::Player::PlayerHero::ConfigID); NFDataList varList; int nCamp = m_pKernelModule->GetPropertyInt32(self, NFrame::Player::Camp()); varList << NFrame::NPC::Camp() << nCamp; varList << NFrame::NPC::MasterID() << self; NF_SHARE_PTR<NFIObject> pHero = m_pKernelModule->CreateObject(xHeroID, nSceneID, nGroupID, NFrame::NPC::ThisName(), strConfigID, NFDataList()); if (!pHero) { return false; } return true; }
bool NFCCommonRedisModule::SaveRecordInfo(const NFGUID& self, NF_SHARE_PTR<NFIRecordManager> pRecordManager, const int nExpireSecond) { if (self.IsNull()) { return false; } if (!pRecordManager) { return false; } NFMsg::ObjectRecordList xRecordList; if (ConvertRecordManagerToPB(pRecordManager, &xRecordList)) { return SaveRecordInfo(self, xRecordList, nExpireSecond); } return false; }