int NFCPropertyModule::OnObjectClassEvent( const NFGUID& self, const std::string& strClassName, const CLASS_OBJECT_EVENT eClassEvent, const NFIDataList& var ) { if ( strClassName == NFrame::Player::ThisName() ) { if ( CLASS_OBJECT_EVENT::COE_CREATE_NODATA == eClassEvent ) { NF_SHARE_PTR<NFIRecord> pRecord = m_pKernelModule->FindRecord(self, NFrame::Player::R_CommPropertyValue()); if (pRecord.get()) { for(int i =0; i< NPG_ALL; i++) { pRecord->AddRow(-1); } } m_pKernelModule->AddPropertyCallBack( self, NFrame::Player::Level(), this, &NFCPropertyModule::OnObjectLevelEvent ); // TODO:一级属性回调 m_pKernelModule->AddRecordCallBack( self, NFrame::Player::R_CommPropertyValue(), this, &NFCPropertyModule::OnRecordPropertyEvent ); } else if ( CLASS_OBJECT_EVENT::COE_CREATE_EFFECTDATA == eClassEvent ) { int nOnlineCount = m_pKernelModule->GetPropertyInt( self, NFrame::Player::OnlineCount() ); if ( nOnlineCount <= 0 && m_pKernelModule->GetPropertyInt( self, NFrame::Player::SceneID() ) > 0 ) { //第一次出生,设置基础属性 m_pKernelModule->SetPropertyInt( self, NFrame::Player::Level(), 1 ); } } else if (CLASS_OBJECT_EVENT::COE_CREATE_FINISH == eClassEvent) { } } return 0; }
int NFCSkillModule::AddSkill( const NFGUID& self, const std::string& strSkillName ) { if(m_pElementInfoModule->ExistElement(strSkillName)) { if ( ExistSkill( self, strSkillName ) < 0 ) { NF_SHARE_PTR<NFIRecord> pRecord = m_pKernelModule->FindRecord( self, mstrSkillTableName ); if ( pRecord ) { return pRecord->AddRow( -1, NFCDataList() << strSkillName.c_str()); //if ( nRow >= 0 ) //{ // return pRecord->SetString( nRow, EGameSkillStoreType::EGSST_TYPE_SKILL_CONFIGID, strSkillName.c_str() ); //} } } } m_pLogModule->LogElement(NFILogModule::NLL_ERROR_NORMAL, NFGUID(), strSkillName, "There is no element", __FUNCTION__, __LINE__); return 0; }
void NFGamePVPModule::RecordPVPData(const NFGUID & self, const int nStar, const int nGold, const int nDiamond) { //how to record this war for these two people NFGUID xWarID = m_pKernelModule->GetPropertyObject(self, NFrame::Player::WarID()); NF_SHARE_PTR<NFIRecord> xAttackWarRecord = m_pKernelModule->FindRecord(self, NFrame::Player::WarList::ThisName()); NF_SHARE_PTR<NFDataList> xDataList = xAttackWarRecord->GetInitData(); xDataList->SetObject(NFrame::Player::WarList::WarID, xWarID); //record the war information /* //the fields below need to be setted run-time static const std::string& BuildingCount() { static std::string x = "BuildingCOunt"; return x; };// int static const std::string& DestroiedBuilding() { static std::string x = "DestroiedBuilding"; return x; };// int static const std::string& DeadHero1() { static std::string x = "DeadHero1"; return x; };// int static const std::string& DeadHero2() { static std::string x = "DeadHero2"; return x; };// int static const std::string& DeadHero3() { static std::string x = "DeadHero3"; return x; };// int static const std::string& KilledHero1() { static std::string x = "KilledHero1"; return x; };// int static const std::string& KilledHero2() { static std::string x = "KilledHero2"; return x; };// int static const std::string& KilledHero3() { static std::string x = "KilledHero3"; return x; };// int static const std::string& KilledMasterCount() { static std::string x = "KilledMasterCount"; return x; };// int static const std::string& MasterCount() { static std::string x = "MasterCount"; return x; };// int */ xDataList->SetString(NFrame::Player::WarList::AttackerName, m_pKernelModule->GetPropertyString(self, NFrame::Player::Name())); xDataList->SetInt(NFrame::Player::WarList::AttackerCup, m_pKernelModule->GetPropertyInt(self, NFrame::Player::Cup())); //xDataList->SetString(NFrame::Player::WarList::AttackerHero1, m_pKernelModule->GetPropertyString(self, NFrame::Player::HeroPos1CnfID())); //xDataList->SetInt(NFrame::Player::WarList::AttackerHero1Star, m_pKernelModule->GetPropertyInt(self, NFrame::Player::HeroPos1Star())); //xDataList->SetString(NFrame::Player::WarList::AttackerHero2, m_pKernelModule->GetPropertyString(self, NFrame::Player::HeroPos2CnfID())); //xDataList->SetInt(NFrame::Player::WarList::AttackerHero2Star, m_pKernelModule->GetPropertyInt(self, NFrame::Player::HeroPos2Star())); //xDataList->SetString(NFrame::Player::WarList::AttackerHero3, m_pKernelModule->GetPropertyString(self, NFrame::Player::HeroPos3CnfID())); //xDataList->SetInt(NFrame::Player::WarList::AttackerHero3Star, m_pKernelModule->GetPropertyInt(self, NFrame::Player::HeroPos3Star())); xDataList->SetObject(NFrame::Player::WarList::AttackerID, self); xDataList->SetInt(NFrame::Player::WarList::AttackerLevel, m_pKernelModule->GetPropertyInt(self, NFrame::Player::Level())); xDataList->SetString(NFrame::Player::WarList::BeAttackerName, m_pKernelModule->GetPropertyString(self, NFrame::Player::OpponentName())); xDataList->SetInt(NFrame::Player::WarList::BeAttackerCup, m_pKernelModule->GetPropertyInt(self, NFrame::Player::OpponentCup())); //xDataList->SetString(NFrame::Player::WarList::BeAttackerHero1, m_pKernelModule->GetPropertyString(self, NFrame::Player::OpponentHero1())); //xDataList->SetInt(NFrame::Player::WarList::BeAttackerHero1Star, m_pKernelModule->GetPropertyInt(self, NFrame::Player::OpponentHero1Star())); //xDataList->SetString(NFrame::Player::WarList::BeAttackerHero2, m_pKernelModule->GetPropertyString(self, NFrame::Player::OpponentHero2())); //xDataList->SetInt(NFrame::Player::WarList::BeAttackerHero2Star, m_pKernelModule->GetPropertyInt(self, NFrame::Player::OpponentHero2Star())); //xDataList->SetString(NFrame::Player::WarList::BeAttackerHero3, m_pKernelModule->GetPropertyString(self, NFrame::Player::OpponentHero3())); //xDataList->SetInt(NFrame::Player::WarList::BeAttackerHero3Star, m_pKernelModule->GetPropertyInt(self, NFrame::Player::OpponentHero3Star())); xDataList->SetObject(NFrame::Player::WarList::BeAttackerID, m_pKernelModule->GetPropertyObject(self, NFrame::Player::OpponentFighting())); xDataList->SetInt(NFrame::Player::WarList::BeAttackerLevel, m_pKernelModule->GetPropertyInt(self, NFrame::Player::Level())); //xDataList->SetString(NFrame::Player::WarList::Item1, m_pKernelModule->GetPropertyString(self, NFrame::Player::Item1())); //xDataList->SetInt(NFrame::Player::WarList::Item1Count, m_pKernelModule->GetPropertyInt(self, NFrame::Player::Item1UsedCount())); //xDataList->SetString(NFrame::Player::WarList::Item2, m_pKernelModule->GetPropertyString(self, NFrame::Player::Item2())); //xDataList->SetInt(NFrame::Player::WarList::Item2Count, m_pKernelModule->GetPropertyInt(self, NFrame::Player::Item2UsedCount())); //xDataList->SetString(NFrame::Player::WarList::Item3, m_pKernelModule->GetPropertyString(self, NFrame::Player::Item3())); //xDataList->SetInt(NFrame::Player::WarList::Item3Count, m_pKernelModule->GetPropertyInt(self, NFrame::Player::Item3UsedCount())); int64_t nEventTime = m_pKernelModule->GetPropertyInt(self, NFrame::Player::WarEventTime()); int64_t nCostTime = NFGetTimeMS() - nEventTime; xDataList->SetInt(NFrame::Player::WarList::EventTime, nEventTime); xDataList->SetInt(NFrame::Player::WarList::WarStar, nStar); xDataList->SetInt(NFrame::Player::WarList::CostTime, nCostTime); xDataList->SetInt(NFrame::Player::WarList::Gold, nGold); xDataList->SetInt(NFrame::Player::WarList::Diamond, nDiamond); if (nStar >= 2) { xDataList->SetObject(NFrame::Player::WarList::Winner, self); } else { xDataList->SetObject(NFrame::Player::WarList::Winner, m_pKernelModule->GetPropertyObject(self, NFrame::Player::OpponentFighting())); } xAttackWarRecord->AddRow(-1, *xDataList); ////////for beattacker//////////////////////////////////// }
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; }
NFGUID NFCTeamModule::CreateTeam( const NFGUID& self, const NFGUID& xDefaultTeamID, const std::string& strName, const std::string& strRoleName, const int nLevel, const int nJob , const int nDonation , const int nVIP) { if (strName.empty()) { return NULL_OBJECT; } NFGUID xTeam = xDefaultTeamID; if (xTeam.IsNull()) { xTeam = m_pKernelModule->CreateGUID(); } NF_SHARE_PTR<NFIPropertyManager> pPropertyManager = m_pCommonRedisModule->NewPropertyManager(NFrame::Team::ThisName()); NF_SHARE_PTR<NFIRecordManager> pRecordManager = m_pCommonRedisModule->NewRecordManager(NFrame::Team::ThisName()); if (!pPropertyManager) { return NFGUID(); } if (!pRecordManager) { return NFGUID(); } NF_SHARE_PTR<NFIRecord> pMemberRecord = pRecordManager->GetElement(NFrame::Team::MemberList::ThisName()); if (!pMemberRecord.get()) { return NFGUID(); } NFDataList varList; pMemberRecord->FindObject(NFrame::Team::MemberList::GUID, self, varList); if (varList.GetCount() > 0) { return NFGUID(); } NFDataList varData; int nReceive = 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 NFGUID(); } if (!pPropertyManager->SetPropertyObject(NFrame::Team::Captain(), self)) { return NFGUID(); } if (!m_pCommonRedisModule->SaveCachePropertyInfo(xTeam, pPropertyManager)) { return NFGUID(); } if (!m_pCommonRedisModule->SaveCacheRecordInfo(xTeam, pRecordManager)) { return NFGUID(); } return xTeam; }
int NFCBuffModule::ProcessBuffValuePropertyReferAbsoluteValue( const NFIDENTID& self, NFIBuffConfigModule::NFCBuffConfig* pBuffConfig, const NFIDENTID& releaserIdent ) { //buff group property int nBuffGroup = 0; //RUNTIME_BUFF_INFO NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject( self ); NF_SHARE_PTR<NFIRecord> pBuffRecord = pObject->GetRecordManager()->GetElement( mstrRunTimeEffectTable ); if ( pBuffRecord ) { NF_SHARE_PTR<NFIRecord> pPropertyGroupRecord = pObject->GetRecordManager()->GetElement( mstrPropertyTable ); std::string strPropertyList; std::string strPropertyName; int* pnEffectValue = pBuffConfig->First( strPropertyName ); while ( pnEffectValue ) { NF_SHARE_PTR<NFIProperty> pProperty = pObject->GetPropertyManager()->GetElement( strPropertyName ); if ( pProperty ) { char szEffectValue[MAX_PATH] = {0}; printf( szEffectValue, "%d", *pnEffectValue ); strPropertyList.append( strPropertyName ); strPropertyList.append( "," ); strPropertyList.append( szEffectValue ); strPropertyList.append( ";" ); //相继设置属性到buff group,增值 //从属性系统得到属性应该在的col函数 int nPropertyGroupCol = 0; int nPropertyBuffGroupRow = 0; TDATA_TYPE eColType = pPropertyGroupRecord->GetColType( nPropertyGroupCol ); if ( NFIBuffConfigModule::BuffReverseType::ERT_NEED_REVERSE == pBuffConfig->NeedReverseType ) { //需要还原 switch ( eColType ) { case TDATA_INT: pPropertyGroupRecord->SetInt( nPropertyBuffGroupRow, nPropertyGroupCol, *pnEffectValue ); break; case TDATA_FLOAT: pPropertyGroupRecord->SetFloat( nPropertyBuffGroupRow, nPropertyGroupCol, float( *pnEffectValue ) ); break; case TDATA_DOUBLE: pPropertyGroupRecord->SetDouble( nPropertyBuffGroupRow, nPropertyGroupCol, double( *pnEffectValue ) ); break; default: break; } } else if ( NFIBuffConfigModule::BuffReverseType::ERT_NO_REVERSE == pBuffConfig->NeedReverseType ) { //不需要还原 NFIDataList::TData valueEffectValue; switch ( eColType ) { case TDATA_INT: valueEffectValue.nType = TDATA_INT; valueEffectValue.variantData = NFINT64( *pnEffectValue ); break; case TDATA_FLOAT: valueEffectValue.nType = TDATA_FLOAT; valueEffectValue.variantData = float( *pnEffectValue ); break; case TDATA_DOUBLE: valueEffectValue.nType = TDATA_DOUBLE; valueEffectValue.variantData = double( *pnEffectValue ); break; default: break; } //const NFIDataList& oldValue = pProperty->GetValue(); pObject->GetPropertyManager()->SetProperty( strPropertyName, valueEffectValue ); } pnEffectValue = pBuffConfig->Next( strPropertyName ); } //还原与否,都需要保存在runtimebuff表 NFCDataList valueBuffProperty; valueBuffProperty.AddString( strPropertyName.c_str() ); valueBuffProperty.AddObject( releaserIdent ); valueBuffProperty.AddFloat( pBuffConfig->EffectTimeInterval ); valueBuffProperty.AddInt( pBuffConfig->EffectTimeValue ); valueBuffProperty.AddString( strPropertyName.c_str() ); pBuffRecord->AddRow( -1, valueBuffProperty ); } } return 0; }