bool NFCSLGBuildingModule::GetProduceDataCount( const NFGUID& self, const NFGUID& xBuilID, const std::string& strItemID, int& nCount ) { NF_SHARE_PTR<NFIRecord> pProduce = m_pKernelModule->FindRecord(self, "BuildingProduce"); if (NULL == pProduce.get()) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, self, "this is no [BuildingProduce] Record!", "", __FUNCTION__, __LINE__); return false; } NFDataList varProduce; pProduce->FindObject("BuildingGUID", xBuilID, varProduce); if(varProduce.GetCount() <= 0) { nCount = 0; return true; } for (int i = 0; i< varProduce.GetCount(); i++) { const std::string& strHasItemID = pProduce->GetString(i, "ItemID"); if (strHasItemID == strItemID) { const int nOldCount = pProduce->GetInt(i, "LeftCount"); nCount = pProduce->GetInt(i, "LeftCount"); return true; } } return false; }
int NFCRecord::FindString(const int nCol, const std::string& value, NFDataList& varResult) { if (!ValidCol(nCol)) { return -1; } if (TDATA_STRING != mVarRecordType->Type(nCol)) { return -1; } { for (int i = 0; i < mnMaxRow; ++i) { if (!IsUsed(i)) { continue; } const std::string& strData = GetString(i, nCol); if (0 == strcmp(strData.c_str(), value.c_str())) { varResult << (int64_t)i; } } return varResult.GetCount(); } return -1; }
bool NFCTeamModule::MemberOffline( const NFGUID& self, const NFGUID& xTeam ) { NF_SHARE_PTR<NFIRecordManager> pRecordManager = m_pCommonRedisModule->GetCacheRecordInfo(xTeam, NFrame::Team::ThisName()); if (!pRecordManager) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = pRecordManager->GetElement(NFrame::Team::MemberList::ThisName()); if (!pMemberRecord.get()) { return false; } NFDataList varList; pMemberRecord->FindObject(NFrame::Team::MemberList::GUID, self, varList); if (varList.GetCount() <= 0) { return false; } const int nRow = varList.Int32(0); pMemberRecord->SetInt(nRow, NFrame::Team::MemberList::Online, 0); pMemberRecord->SetInt(nRow, NFrame::Team::MemberList::GameID, 0); return m_pCommonRedisModule->SaveCacheRecordInfo(xTeam, pRecordManager); }
int NFCRecord::FindVector3(const int nCol, const NFVector3& value, NFDataList& varResult) { if (!ValidCol(nCol)) { return -1; } if (TDATA_VECTOR3 != mVarRecordType->Type(nCol)) { return -1; } { for (int i = 0; i < mnMaxRow; ++i) { if (!IsUsed(i)) { continue; } if (GetVector3(i, nCol) == value) { varResult << (int64_t)i; } } return varResult.GetCount(); } return -1; }
bool NFCTeamModule::LeaveTeam( const NFGUID& self, const NFGUID& xTeamID ) { NF_SHARE_PTR<NFIRecordManager> pRecordManager = m_pCommonRedisModule->GetCacheRecordInfo(xTeamID, NFrame::Team::ThisName()); if (!pRecordManager) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = pRecordManager->GetElement(NFrame::Team::MemberList::ThisName()); if (!pMemberRecord.get()) { return false; } NFDataList varList; pMemberRecord->FindObject(NFrame::Team::MemberList::GUID, self, varList); if (varList.GetCount() == 0) { return false; } const int nRow = varList.Int32(0); if (!pMemberRecord->Remove(nRow)) { return false; } return m_pCommonRedisModule->SaveCacheRecordInfo(xTeamID, pRecordManager); }
bool NFCGuildModule::LeaveGuild( const NFGUID& self, const NFGUID& xGuildID ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pGuildDataModule->GetGuild(xGuildID); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuildID, NFrame::Guild::R_GuildMemberList()); if (!pMemberRecord.get()) { return false; } NFDataList varList; pMemberRecord->FindObject(NFrame::Guild::GuildMemberList_GUID, self, varList); if (varList.GetCount() == 0) { return false; } const int nRow = varList.Int(0); return pMemberRecord->Remove(nRow); }
bool NFCPackModule::DeleteEquip( const NFGUID& self, const NFGUID& id ) { if (id.IsNull()) { return false; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject( self ); if (nullptr == pObject) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement( NFrame::Player::BagEquipList::ThisName() ); if (nullptr == pRecord) { return false; } NFDataList varFindResult; int nFindRowCount = pRecord->FindObject(NFrame::Player::BagEquipList::GUID, id, varFindResult); if (nFindRowCount > 0) { //int nTotalCount = 0; for (int i = 0; i < varFindResult.GetCount(); ++i) { int nFindRow = varFindResult.Int32(i); pRecord->Remove(nFindRow); } } return true; }
bool NFCGuildModule::MemberOffline( const NFGUID& self, const NFGUID& xGuild ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pGuildDataModule->GetGuild(xGuild); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuild, NFrame::Guild::R_GuildMemberList()); if (!pMemberRecord.get()) { return false; } NFDataList varList; pMemberRecord->FindObject(NFrame::Guild::GuildMemberList_GUID, self, varList); if (varList.GetCount() <= 0) { return false; } const int nRow = varList.Int(0); pMemberRecord->SetInt(nRow, NFrame::Guild::GuildMemberList_Online, 0); pMemberRecord->SetInt(nRow, NFrame::Guild::GuildMemberList_GameID, 0); return true; }
int NFCSLGBuildingModule::Boost(const NFGUID& self, const NFGUID& xBuilID) { NF_SHARE_PTR<NFIRecord> pRecord = m_pKernelModule->FindRecord(self, "BuildingList"); if (NULL == pRecord.get()) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, self, "this is no [BuildingList] Record!", "", __FUNCTION__, __LINE__); return 1; } NFDataList var; pRecord->FindObject("BuildingGUID", xBuilID, var); if (var.GetCount() <= 0) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, self, "there are no the building", xBuilID.ToString(), __FUNCTION__, __LINE__); return 1; } const int nRow = var.Int(0); const int nBoostTime = 20; const std::string strBuildID = pRecord->GetString(nRow, "BuildingID"); //NFDataList varHeart; //varHeart << xBuilID; m_pScheduleModule->AddSchedule(self, "OnBoostHeartBeat", this, &NFCSLGBuildingModule::OnBoostHeartBeat, /*varHeart,*/ nBoostTime, 1); pRecord->SetInt(nRow, "State", NFMsg::EBS_BOOST); pRecord->SetInt(nRow, "StateStartTime", pPluginManager->GetNowTime()); pRecord->SetInt(nRow, "StateEndTime", pPluginManager->GetNowTime() + nBoostTime); return 0; }
bool NFCSceneAOIModule::DestroySceneNPC(const int nSceneID, const int nGroupID) { NF_SHARE_PTR<NFCSceneInfo> pSceneInfo = GetElement(nSceneID); if (pSceneInfo) { if (pSceneInfo->GetElement(nGroupID)) { NFDataList xMonsterlistObject; if (m_pKernelModule->GetGroupObjectList(nSceneID, nGroupID, xMonsterlistObject, false)) { for (int i = 0; i < xMonsterlistObject.GetCount(); ++i) { NFGUID ident = xMonsterlistObject.Object(i); m_pKernelModule->DestroyObject(ident); } } pSceneInfo->RemoveElement(nGroupID); return true; } } return false; }
bool NFCGuildModule::UpGuildMmember( const NFGUID& self, const NFGUID& xGuildID, const NFGUID& xMmember ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pGuildDataModule->GetGuild(xGuildID); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuildID, NFrame::Guild::R_GuildMemberList()); if (!pMemberRecord.get()) { return false; } CheckPower(self, xGuildID, NFMsg::ReqAckOprGuildMember::EGAT_UP); NFDataList varList; pMemberRecord->FindObject(NFrame::Guild::GuildMemberList_GUID, self, varList); if (varList.GetCount() == 0) { return false; } const int nRow = varList.Int(0); const int nPower = pMemberRecord->GetInt(nRow, NFrame::Guild::GuildMemberList_Power); if (nPower >= NFMsg::GUILD_POWER_TYPE_PRESIDENT) { return false; } pMemberRecord->SetInt(nRow, NFrame::Guild::GuildMemberList_Power, (nPower + 1)) ; return true; }
int NFCRecord::FindFloat(const int nCol, const double value, NFDataList& varResult) { if (!ValidCol(nCol)) { return -1; } if (TDATA_FLOAT != mVarRecordType->Type(nCol)) { return -1; } for (int i = 0; i < mnMaxRow; ++i) { if (!IsUsed(i)) { continue; } if (GetFloat(i, nCol) == value) { varResult << i; } } return varResult.GetCount(); }
bool NFCPackModule::DeleteItem( const NFGUID& self, const std::string& strItemConfigID, const int nCount ) { if(nCount <= 0) { return false; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject( self ); if ( NULL == pObject ) { return false; } if (!m_pElementModule->ExistElement(NFrame::Item::ThisName(), strItemConfigID)) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement( NFrame::Player::BagItemList::ThisName() ); if (!pRecord) { return false; } NFDataList varFindResult; int nFindRowCount = pRecord->FindString(NFrame::Player::BagItemList::ConfigID, strItemConfigID, varFindResult); if (nFindRowCount > 0) { int nNeedDelCount = nCount; for (int i = 0; i < varFindResult.GetCount(); ++i) { int nFindRow = varFindResult.Int32(i); int nOldCount = pRecord->GetInt32(nFindRow, NFrame::Player::BagItemList::ItemCount); if (nOldCount > nNeedDelCount) { int nNewCount = nOldCount - nNeedDelCount; pRecord->SetInt(nFindRow, NFrame::Player::BagItemList::ItemCount, nNewCount); nNeedDelCount = 0; } else if (nOldCount == nNeedDelCount) { pRecord->Remove(nFindRow); nNeedDelCount = 0; } else if (nOldCount < nNeedDelCount) { pRecord->Remove(nFindRow); nNeedDelCount -= nOldCount; } } if (nNeedDelCount <= 0) { return true; } } return false; }
bool NFCGuildModule::KickGuildMmember( const NFGUID& self, const NFGUID& xGuildID, const NFGUID& xMmember ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pGuildDataModule->GetGuild(xGuildID); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuildID, NFrame::Guild::R_GuildMemberList()); if (!pMemberRecord.get()) { return false; } if (self == xMmember) { return false; } CheckPower(self, xGuildID, NFMsg::ReqAckOprGuildMember::EGAT_KICK); NFDataList varList; pMemberRecord->FindObject(NFrame::Guild::GuildMemberList_GUID, self, varList); if (varList.GetCount() == 0) { return false; } const int nRow = varList.Int(0); pMemberRecord->Remove(nRow); return true; }
int NFCSLGBuildingModule::Produce(const NFGUID& self, const NFGUID& xBuilID, const std::string& strItemID, const int nCount) { NF_SHARE_PTR<NFIRecord> pRecord = m_pKernelModule->FindRecord(self, "BuildingList"); if (NULL == pRecord.get()) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, self, "this is no [BuildingList] Record!", "", __FUNCTION__, __LINE__); return 1; } NFDataList var; pRecord->FindObject("BuildingGUID", xBuilID, var); if (var.GetCount() <= 0) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, self, "there are no the building", xBuilID.ToString(), __FUNCTION__, __LINE__); return 1; } AddProduceData(self, xBuilID, strItemID, nCount); const std::string strHeartname = GetProduceHeartName(self, xBuilID, strItemID); const int nTime = 50;//To ADD if (!m_pScheduleModule->ExistSchedule(self, strHeartname)) { //NFDataList varHeart; //varHeart << xBuilID; //varHeart << strItemID; m_pScheduleModule->AddSchedule(self, strHeartname, this, &NFCSLGBuildingModule::OnProduceHeartBeat, /*varHeart, */nTime, nCount); } return 0; }
bool NFCWorldNet_ServerModule::SendMsgToGame(const NFDataList& argObjectVar, const NFDataList& argGameID, const NFMsg::EGameMsgID eMsgID, google::protobuf::Message& xData) { if (argGameID.GetCount() != argObjectVar.GetCount()) { return false; } for (int i = 0; i < argObjectVar.GetCount(); i++) { const NFGUID& identOther = argObjectVar.Object(i); const int nGameID = (int) argGameID.Int(i); SendMsgToGame(nGameID, eMsgID, xData, identOther); } return true; }
int NFCRecord::FindFloat(const int nCol, const double value) { NFDataList xDataList; int nRowCount = FindFloat(nCol, value, xDataList); if (nRowCount > 0 && xDataList.GetCount() > 0) { return (int) xDataList.Int(0); } return -1; }
int NFCRecord::FindVector3(const std::string & strColTag, const NFVector3 & value) { NFDataList xDataList; int nRowCount = FindVector3(strColTag, value, xDataList); if (nRowCount > 0 && xDataList.GetCount() > 0) { return (int) xDataList.Int(0); } return -1; }
int NFCRecord::FindRowByColValue(const std::string & strColTag, const NFData & var) { NFDataList xDataList; int nRowCount = FindRowByColValue(strColTag, var, xDataList); if (nRowCount > 0 && xDataList.GetCount() > 0) { return (int) xDataList.Int(0); } return -1; }
int NFCRecord::FindVector3(const int nCol, const NFVector3 & value) { NFDataList xDataList; int nRowCount = FindVector3(nCol, value, xDataList); if (nRowCount > 0 && xDataList.GetCount() > 0) { return (int) xDataList.Int(0); } return -1; }
int NFCRecord::FindString(const int nCol, const std::string & value) { NFDataList xDataList; int nRowCount = FindString(nCol, value, xDataList); if (nRowCount > 0 && xDataList.GetCount() > 0) { return (int) xDataList.Int(0); } return -1; }
int NFCRecord::FindRowByColValue(const int nCol, const NFData & var) { NFDataList xDataList; int nRowCount = FindRowByColValue(nCol, var, xDataList); if (nRowCount > 0 && xDataList.GetCount() > 0) { return (int) xDataList.Int(0); } return -1; }
bool NFCPackModule::EnoughItem( const NFGUID& self, const std::string& strItemConfigID, const int nCount ) { if(nCount <= 0) { return false; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject( self ); if ( NULL == pObject ) { return false; } bool bExist = m_pElementModule->ExistElement(NFrame::Item::ThisName(), strItemConfigID ); if ( !bExist ) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement( NFrame::Player::BagItemList::ThisName() ); if (!pRecord) { return false; } NFDataList varFindResult; int nFindRowCount = pRecord->FindString(NFrame::Player::BagItemList::ConfigID, strItemConfigID, varFindResult); if (nFindRowCount > 0) { int nTotalCount = 0; for (int i = 0; i < varFindResult.GetCount(); ++i) { int nFindRow = varFindResult.Int32(i); int nOldCount = pRecord->GetInt32(nFindRow, NFrame::Player::BagItemList::ItemCount); nTotalCount += nOldCount; } if (nTotalCount > 0) { return true; } } return false; }
int NFCSLGBuildingModule::AddProduceData(const NFGUID& self, const NFGUID& xBuilID, const std::string& strItemID, const int nCount) { NF_SHARE_PTR<NFIRecord> pProduce = m_pKernelModule->FindRecord(self, "BuildingProduce"); if (NULL == pProduce.get()) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, self, "this is no [BuildingProduce] Record!", "", __FUNCTION__, __LINE__); return 1; } NFDataList varProduce; pProduce->FindObject("BuildingGUID", xBuilID, varProduce); int nFindRow = -1; for (int i = 0; i< varProduce.GetCount(); i++) { const std::string& strHasItemID = pProduce->GetString(i, "ItemID"); if (strHasItemID == strItemID) { nFindRow = i; break; } } if (nFindRow < 0) { //already exit const int nOldCount = pProduce->GetInt(nFindRow, "LeftCount"); pProduce->SetInt(nFindRow, "LeftCount", nOldCount + nCount); } else { const int nTime = 20; NFDataList varItem; varItem << xBuilID; varItem << strItemID; varItem << nCount; varItem << nTime; varItem << pPluginManager->GetNowTime(); pProduce->AddRow(-1, varItem); } return 0; }
bool NFCTeamModule::JoinTeam( const NFGUID& self, const NFGUID& xTeamID ) { NF_SHARE_PTR<NFIRecordManager> pRecordManager = m_pCommonRedisModule->GetCacheRecordInfo(xTeamID, NFrame::Team::ThisName()); if (!pRecordManager) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = pRecordManager->GetElement(NFrame::Team::MemberList::ThisName()); if (!pMemberRecord.get()) { return false; } NFDataList varList; pMemberRecord->FindObject(NFrame::Team::MemberList::GUID, self, varList); if (varList.GetCount() > 0) { return false; } NFDataList varData; std::string strName ; int nLevel = 0; int nJob = 0; int nDonation = 0; int nReceive = 0; int nVIP = 0; int nOnLine = 0; int nTitle = 0; int nOnlineGameID = 0; GetPlayerGameID(self, nOnlineGameID); varData << self << strName << (NFINT64)nLevel << (NFINT64)nJob << (NFINT64)nDonation << (NFINT64)nReceive << (NFINT64)nVIP << (NFINT64)nOnLine << nTitle << nOnlineGameID ; if (pMemberRecord->AddRow(-1, varData) < 0) { return false; } return m_pCommonRedisModule->SaveCacheRecordInfo(xTeamID, pRecordManager); }
bool NFCRecord::SetRow(const int nRow, const NFDataList & var) { if (var.GetCount() != GetCols()) { return false; } if (!IsUsed(nRow)) { return false; } for (int i = 0; i < GetCols(); ++i) { if (var.Type(i) != GetColType(i)) { return false; } } for (int i = 0; i < GetCols(); ++i) { NF_SHARE_PTR<NFData>& pVar = mtRecordVec.at(GetPos(nRow, i)); if (nullptr == pVar) { pVar = NF_SHARE_PTR<NFData>(NF_NEW NFData(var.Type(i))); } NFData oldValue = *pVar; pVar->variantData = var.GetStack(i)->variantData; RECORD_EVENT_DATA xEventData; xEventData.nOpType = RECORD_EVENT_DATA::Update; xEventData.nRow = nRow; xEventData.nCol = i; xEventData.strRecordName = mstrRecordName; OnEventHandler(mSelf, xEventData, oldValue, *pVar); } return false; }
bool NFCGuildModule::CheckPower( const NFGUID& self, const NFGUID& xGuildID, int nPowerType ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pGuildDataModule->GetGuild(xGuildID); if (pGuildObject.get()) { NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuildID, NFrame::Guild::R_GuildMemberList()); if (pMemberRecord.get()) { NFDataList varList; pMemberRecord->FindObject(NFrame::Guild::GuildMemberList_GUID, self, varList); if (varList.GetCount() == 1) { const int nRow = varList.Int(0); const int nPower = pMemberRecord->GetInt(nRow, NFrame::Guild::GuildMemberList_Power); if (nPower >= NFMsg::GUILD_POWER_TYPE_PRESIDENT) { return true; } } } } return false; }
int NFCSceneAOIModule::GetBroadCastObject(const NFGUID & self, const std::string & strPropertyName, const bool bTable, NFDataList & valueObject) { int nObjectContainerID = m_pKernelModule->GetPropertyInt32(self, NFrame::IObject::SceneID()); int nObjectGroupID = m_pKernelModule->GetPropertyInt32(self, NFrame::IObject::GroupID()); const std::string& strClassName = m_pKernelModule->GetPropertyString(self, NFrame::IObject::ClassName()); NF_SHARE_PTR<NFIRecordManager> pClassRecordManager = m_pClassModule->GetClassRecordManager(strClassName); NF_SHARE_PTR<NFIPropertyManager> pClassPropertyManager = m_pClassModule->GetClassPropertyManager(strClassName); NF_SHARE_PTR<NFIRecord> pRecord(NULL); NF_SHARE_PTR<NFIProperty> pProperty(NULL); if (bTable) { if (NULL == pClassRecordManager) { return -1; } pRecord = pClassRecordManager->GetElement(strPropertyName); if (NULL == pRecord) { return -1; } } else { if (NULL == pClassPropertyManager) { return -1; } pProperty = pClassPropertyManager->GetElement(strPropertyName); if (NULL == pProperty) { return -1; } } if (bTable) { //upload property can not board to itself if (!pRecord->GetUpload()) { if (pRecord->GetPublic()) { m_pKernelModule->GetGroupObjectList(nObjectContainerID, nObjectGroupID, valueObject, true, self); } if (pRecord->GetPrivate()) { valueObject.Add(self); } } } else { //upload property can not board to itself if (!pProperty->GetUpload()) { if (pProperty->GetPublic()) { m_pKernelModule->GetGroupObjectList(nObjectContainerID, nObjectGroupID, valueObject, true, self); } if (pProperty->GetPrivate()) { valueObject.Add(self); } } } return valueObject.GetCount(); }
int NFCSceneAOIModule::OnPlayerGroupEvent(const NFGUID & self, const std::string & strPropertyName, const NFData & oldVar, const NFData & newVar) { //this event only happened in the same scene int nSceneID = m_pKernelModule->GetPropertyInt32(self, NFrame::IObject::SceneID()); int nOldGroupID = oldVar.GetInt32(); int nNewGroupID = newVar.GetInt32(); //maybe form 0, maybe not, only three stuation //example1: 0 -> 1 ==> new_group > 0 && old_group <= 0 //example2: 1 -> 2 ==> new_group > 0 && old_group > 0 //example3: 5 -> 0 ==> new_group <= 0 && old_group > 0 if (nNewGroupID > 0) { if (nOldGroupID > 0) { //example2: 1 -> 2 ==> new_group > 0 && old_group > 0 //step1: leave NFDataList valueAllOldNPCListNoSelf; NFDataList valueAllOldPlayerListNoSelf; m_pKernelModule->GetGroupObjectList(nSceneID, nOldGroupID, valueAllOldNPCListNoSelf, false, self); m_pKernelModule->GetGroupObjectList(nSceneID, nOldGroupID, valueAllOldPlayerListNoSelf, true, self); OnObjectListLeave(valueAllOldPlayerListNoSelf, NFDataList() << self); OnObjectListLeave(NFDataList() << self, valueAllOldPlayerListNoSelf); OnObjectListLeave(NFDataList() << self, valueAllOldNPCListNoSelf); } else { //example1: 0 -> 1 == > new_group > 0 && old_group <= 0 //only use step2 that enough } //step2: enter NFDataList valueAllNewNPCListNoSelf; NFDataList valueAllNewPlayerListNoSelf; m_pKernelModule->GetGroupObjectList(nSceneID, nNewGroupID, valueAllNewNPCListNoSelf, false, self); m_pKernelModule->GetGroupObjectList(nSceneID, nNewGroupID, valueAllNewPlayerListNoSelf, true, self); OnObjectListEnter(valueAllNewPlayerListNoSelf, NFDataList() << self); OnObjectListEnter(NFDataList() << self, valueAllNewPlayerListNoSelf); OnObjectListEnter(NFDataList() << self, valueAllNewNPCListNoSelf); //bc others data to u for (int i = 0; i < valueAllNewNPCListNoSelf.GetCount(); i++) { NFGUID identOld = valueAllNewNPCListNoSelf.Object(i); OnPropertyEnter(NFDataList() << self, identOld); OnRecordEnter(NFDataList() << self, identOld); OnObjectListEnterFinished(NFDataList() << self, NFDataList() << identOld); } //bc others data to u for (int i = 0; i < valueAllNewPlayerListNoSelf.GetCount(); i++) { NFGUID identOld = valueAllNewPlayerListNoSelf.Object(i); OnPropertyEnter(NFDataList() << self, identOld); OnRecordEnter(NFDataList() << self, identOld); OnObjectListEnterFinished(NFDataList() << self, NFDataList() << identOld); } //bc u data to others OnPropertyEnter(valueAllNewPlayerListNoSelf, self); OnRecordEnter(valueAllNewPlayerListNoSelf, self); OnObjectListEnterFinished(valueAllNewPlayerListNoSelf, NFDataList() << self); } else { if (nOldGroupID > 0) { //example3: 5 -> 0 ==> new_group <= 0 && old_group > 0 //step1: leave NFDataList valueAllOldNPCListNoSelf; NFDataList valueAllOldPlayerListNoSelf; m_pKernelModule->GetGroupObjectList(nSceneID, nOldGroupID, valueAllOldNPCListNoSelf, false, self); m_pKernelModule->GetGroupObjectList(nSceneID, nOldGroupID, valueAllOldPlayerListNoSelf, true, self); OnObjectListLeave(valueAllOldPlayerListNoSelf, NFDataList() << self); OnObjectListLeave(NFDataList() << self, valueAllOldPlayerListNoSelf); OnObjectListLeave(NFDataList() << self, valueAllOldNPCListNoSelf); } } return 0; }
bool NFCGuildModule::JoinGuild( const NFGUID& self, const NFGUID& xGuildID ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pGuildDataModule->GetGuild(xGuildID); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuildID, NFrame::Guild::R_GuildMemberList()); if (!pMemberRecord.get()) { return false; } NFDataList varList; pMemberRecord->FindObject(NFrame::Guild::GuildMemberList_GUID, self, varList); if (varList.GetCount() > 0) { return false; } const NFINT64 nCount = m_pKernelModule->GetPropertyInt(xGuildID, NFrame::Guild::GuildMemeberCount()); if (nCount >= m_pKernelModule->GetPropertyInt(xGuildID, NFrame::Guild::GuildMemeberMaxCount())) { //limit return false; } NFDataList varData; std::string strName ; int nLevel = 0; int nJob = 0; int nDonation = 0; int nReceive = 0; int nVIP = 0; int nOnLine = 0; int nPower = NFMsg::GUILD_POWER_TYPE_NORMAL; const NFGUID& xPresident = pGuildObject->GetPropertyObject(NFrame::Guild::PresidentID()); if (xPresident == self) { nPower = NFMsg::GUILD_POWER_TYPE_PRESIDENT; } int nTitle = 0; int nOnlineGameID = 0; m_pGuildDataModule->GetPlayerGameID(self, nOnlineGameID); m_pGuildDataModule->GetPlayerInfo(self, strName, nLevel, nJob, nDonation, nVIP); varData << self << strName << (NFINT64)nLevel << (NFINT64)nJob << (NFINT64)nDonation << (NFINT64)nReceive << (NFINT64)nVIP << (NFINT64)nOnLine << (NFINT64)nPower << nTitle << nOnlineGameID ; if (pMemberRecord->AddRow(-1, varData) < 0) { return false; } m_pKernelModule->SetPropertyInt(xGuildID, NFrame::Guild::GuildMemeberCount(), nCount+1); return true; }