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; } NFCDataList 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;//加速时间 // TO ADD const std::string strBuildID = pRecord->GetString(nRow, "BuildingID"); //NFCDataList varHeart; //varHeart << xBuilID; m_pKernelModule->AddHeartBeat(self, "OnBoostHeartBeat", this, &NFCSLGBuildingModule::OnBoostHeartBeat, /*varHeart,*/ nBoostTime, 1); //修改建筑的状态 pRecord->SetInt(nRow, "State", NFMsg::EBS_BOOST); pRecord->SetInt(nRow, "StateStartTime", NFTimeEx::GetNowTime()); pRecord->SetInt(nRow, "StateEndTime", NFTimeEx::GetNowTime() + nBoostTime); return 0; }
bool NFCHeroPropertyModule::OnHeroPropertyUpdate(const NFGUID & self, const NFGUID & xHeroGUID) { 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; } NF_SHARE_PTR<NFIRecord> pHeroPropertyRecord = m_pKernelModule->FindRecord(self, NFrame::Player::R_HeroPropertyValue()); if (nullptr == pHeroPropertyRecord) { return false; } const int nRow = varFind.Int(0); NFCDataList xHeroAllValue; bool bRet = CalHeroAllProperty(self, xHeroGUID, xHeroAllValue); if (bRet) { pHeroPropertyRecord->AddRow(nRow, xHeroAllValue); } return true; }
void NFCProperty::SetValue(const NFIDataList::TData& TData) { if (eType != TData.nType) { return; } if (!m_pTData.get()) { if (!NFIDataList::Valid(TData)) { return; } m_pTData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData()); m_pTData->nType = TData.nType; m_pTData->variantData = TData.variantData; } NFCDataList oldValue; oldValue.Append(*m_pTData); m_pTData->variantData = TData.variantData; NFCDataList newValue; newValue.Append(*m_pTData); OnEventHandler(oldValue , newValue); }
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 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 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::R_BagItemList() ); if (!pRecord) { return false; } NFCDataList 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.Int(i); int nOldCount = pRecord->GetInt(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 NFCWorldGuildModule::KickGuildMmember( const NFIDENTID& self, const NFIDENTID& xGuildID, const NFIDENTID& xMmember ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pWorldGuildDataModule->GetGuild(xGuildID); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuildID, "GuildMemberList"); if (!pMemberRecord.get()) { return false; } if (self == xMmember) { return false; } CheckPower(self, xGuildID, NFMsg::ReqAckOprGuildMember::EGAT_KICK); NFCDataList varList; pMemberRecord->FindObject(NFMsg::GuildMemberList_GUID, self, varList); if (varList.GetCount() == 0) { return false; } const int nRow = varList.Int(0); pMemberRecord->Remove(nRow); return true; }
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 NFCWorldGuildModule::LeaveGuild( const NFIDENTID& self, const NFIDENTID& xGuildID ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pWorldGuildDataModule->GetGuild(xGuildID); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuildID, "GuildMemberList"); if (!pMemberRecord.get()) { return false; } NFCDataList varList; pMemberRecord->FindObject(NFMsg::GuildMemberList_GUID, self, varList); if (varList.GetCount() == 0) { return false; } const int nRow = varList.Int(0); return pMemberRecord->Remove(nRow); }
bool NFCWorldGuildModule::UpGuildMmember( const NFIDENTID& self, const NFIDENTID& xGuildID, const NFIDENTID& xMmember ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pWorldGuildDataModule->GetGuild(xGuildID); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuildID, "GuildMemberList"); if (!pMemberRecord.get()) { return false; } CheckPower(self, xGuildID, NFMsg::ReqAckOprGuildMember::EGAT_UP); NFCDataList varList; pMemberRecord->FindObject(NFMsg::GuildMemberList_GUID, self, varList); if (varList.GetCount() == 0) { return false; } const int nRow = varList.Int(0); const int nPower = pMemberRecord->GetInt(nRow, NFMsg::GuildMemberList_Power); if (nPower >= NFMsg::GUILD_POWER_TYPE_PRESIDENT) { return false; } pMemberRecord->SetInt(nRow, NFMsg::GuildMemberList_Power, (nPower + 1)) ; return true; }
bool NFCWorldChatGroupModule::Offeline( const NFGUID& self, const NFGUID& xGroupID ) { NF_SHARE_PTR<NFIObject> pGroup = GetGroup(xGroupID); if (NULL == pGroup) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pGroup->GetRecordManager()->GetElement("GroupMemberList"); if (NULL == pRecord) { return false; } NFCDataList varList; if (pRecord->FindObject(NFrame::ChatGroup::GroupMemberList_GUID, self, varList) <= 0) { return false; } const int nRow = varList.Int(0); pRecord->SetInt(nRow, NFrame::ChatGroup::GroupMemberList_Online, 0); pRecord->SetInt(nRow, NFrame::ChatGroup::GroupMemberList_GameID, 0); return true; }
const int NFCGridModule::GetAroundObject(NFCSceneGridInfo* pGridInfo, NFIDataList& objectList, EGRID_AROUND eAround /*= EGRID_AROUND_9 */) { if (!pGridInfo) { return 0; } NFCDataList gridList; if (GetAroundGrid(pGridInfo, gridList, eAround) > 0) { for (int i = 0; i < gridList.GetCount(); i++) { NFCSceneGridInfo* pGridInfo = (NFCSceneGridInfo*)(gridList.Pointer(i)); if (pGridInfo) { NFIDENTID ident; bool bRet = pGridInfo->First(ident); while (bRet) { objectList.Add(ident); bRet = pGridInfo->Next(ident); } } } } return objectList.GetCount(); }
bool NFCWorldGuildModule::MemberOffeline( const NFIDENTID& self, const NFIDENTID& xGuild ) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pWorldGuildDataModule->GetGuild(xGuild); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuild, "GuildMemberList"); if (!pMemberRecord.get()) { return false; } NFCDataList varList; pMemberRecord->FindObject(NFMsg::GuildMemberList_GUID, self, varList); if (varList.GetCount() <= 0) { return false; } const int nRow = varList.Int(0); pMemberRecord->SetInt(nRow, NFMsg::GuildMemberList_Online, 0); pMemberRecord->SetInt(nRow, NFMsg::GuildMemberList_GameID, 0); return true; }
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); }
bool NFCWorldGuildModule::GetOnlineMember( const NFIDENTID& self, const NFIDENTID& xGuild, NFCDataList& varMemberList, NFCDataList& varGameList) { NF_SHARE_PTR<NFIObject> pGuildObject = m_pWorldGuildDataModule->GetGuild(xGuild); if (!pGuildObject.get()) { return false; } NF_SHARE_PTR<NFIRecord> pMemberRecord = m_pKernelModule->FindRecord(xGuild, "GuildMemberList"); if (!pMemberRecord.get()) { return false; } for (int i = 0; i< pMemberRecord->GetRows(); i++) { if (!pMemberRecord->IsUsed(i)) { continue; } const NFINT64 nOnline = pMemberRecord->GetInt(i, NFMsg::GuildMemberList_Online); const NFINT64 nGameID = pMemberRecord->GetInt(i, NFMsg::GuildMemberList_GameID); const NFIDENTID& xID = pMemberRecord->GetObject(i, NFMsg::GuildMemberList_GUID); if (nOnline > 0 && !xID.IsNull()) { varMemberList.Add(xID); varGameList.Add(nGameID); } } return true; }
int NFCPropertyTrailModule::OnObjectRecordEvent(const NFGUID& self, const RECORD_EVENT_DATA& xEventData, const NFIDataList::TData& oldVar, const NFIDataList::TData& newVar) { std::ostringstream stream; NF_SHARE_PTR<NFIRecord> xRecord = m_pKernelModule->FindRecord(self, xEventData.strRecordName); if (nullptr == xRecord) { return 0; } switch (xEventData.nOpType) { case NFIRecord::RecordOptype::Add: { NFCDataList xDataList; bool bRet = xRecord->QueryRow(xEventData.nRow, xDataList); if (bRet) { stream << " Trail Add Row[" << xEventData.nRow << "]"; for (int j = 0; j < xDataList.GetCount(); ++j) { stream << " [" << j << "] " << xDataList.StringValEx(j); } m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } } break; case NFIRecord::RecordOptype::Del: { stream << " Trail Del Row[" << xEventData.nRow << "]"; m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } break; case NFIRecord::RecordOptype::Swap: { stream << " Trail Swap Row[" << xEventData.nRow << "] Row[" << xEventData.nCol << "]"; m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } break; case NFIRecord::RecordOptype::Create: break; case NFIRecord::RecordOptype::Update: { stream << " Trail UpData Row[" << xEventData.nRow << "] Col[" << xEventData.nCol << "]"; stream << " [Old] " << oldVar.StringValEx(); stream << " [New] " << newVar.StringValEx(); m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } break; case NFIRecord::RecordOptype::Cleared: break; case NFIRecord::RecordOptype::Sort: break; default: break; } return 0; }
int NFCSLGBuildingModule::Upgrade(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; } NFCDataList 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 nNeedTime = 20; const std::string strBuildID = pRecord->GetString(nRow, "BuildingID"); //NFCDataList varHeart; //varHeart << xBuilID; m_pScheduleModule->AddSchedule(self, "OnUpgradeHeartBeat", this, &NFCSLGBuildingModule::OnUpgradeHeartBeat, /*varHeart,*/ nNeedTime, 1); pRecord->SetInt(nRow, "State", NFMsg::EBS_UPGRADE); pRecord->SetInt(nRow, "StateStartTime", pPluginManager->GetNowTime()); pRecord->SetInt(nRow, "StateEndTime", pPluginManager->GetNowTime() + nNeedTime); return 0; }
bool NFCEquipModule::Ramdom( const int nNowLevel , const int nMaxLevel) { if (nNowLevel >= nMaxLevel) { return false; } if (nNowLevel < 0) { return false; } if (nMaxLevel <= 0) { return false; } NFCDataList varList; m_pKernelModule->Random(0, nMaxLevel, 1, varList); const NFINT64 nRandomNum = varList.Int(0); if (nRandomNum > nNowLevel && nRandomNum <= nMaxLevel) { return true; } return false; }
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; } NFCDataList 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 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; } NFCDataList 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)) { //NFCDataList varHeart; //varHeart << xBuilID; //varHeart << strItemID; m_pScheduleModule->AddSchedule(self, strHeartname, this, &NFCSLGBuildingModule::OnProduceHeartBeat, /*varHeart, */nTime, nCount); } return 0; }
bool NFCEctypeModule::CanEntryCloneScene(const NFIDENTID self, const int nContainerID) { std::string strSceneID = boost::lexical_cast<std::string>(nContainerID); //如果没找到,就判断是否是第一个场景IsFirstCloneScene int nLevel = m_pKernelModule->GetPropertyInt(self, "Level"); if (nLevel < m_pElementInfoModule->GetPropertyInt(strSceneID, "SceneLevelLimit")) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, self, "Level limit for scene:" + strSceneID, nLevel, __FUNCTION__, __LINE__); return false; } //更改后则直接看是否存在 NF_SHARE_PTR<NFIRecord> pRecord = m_pKernelModule->FindRecord(self, "EctypeList"); if (!pRecord.get()) { return false; } NFCDataList valNormalResult; pRecord->FindInt(EXTYPE_RC_SCENEID, nContainerID, valNormalResult); if (valNormalResult.GetCount() <= 0) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, self, "no this scene in record", nContainerID, __FUNCTION__, __LINE__); return false; } return true; }
int NFCPropertyTrailModule::LogObjectData(const NFGUID& self) { NF_SHARE_PTR<NFIObject> xObject = m_pKernelModule->GetObject(self); if (nullptr == xObject) { return -1; } NF_SHARE_PTR<NFIPropertyManager> xPropertyManager = xObject->GetPropertyManager(); if (nullptr != xPropertyManager) { NF_SHARE_PTR<NFIProperty> xProperty = xPropertyManager->First(); while (nullptr != xProperty) { std::ostringstream stream; stream << " Start trail "; stream << xProperty->ToString(); m_pLogModule->LogProperty(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xProperty->GetKey(), stream.str(), __FUNCTION__, __LINE__); xProperty = xPropertyManager->Next(); } } NF_SHARE_PTR<NFIRecordManager> xRecordManager = xObject->GetRecordManager(); if (nullptr != xRecordManager) { NF_SHARE_PTR<NFIRecord> xRecord = xRecordManager->First(); while (nullptr != xRecord) { for (int i = 0; i < xRecord->GetRows(); ++i) { NFCDataList xDataList; bool bRet = xRecord->QueryRow(i, xDataList); if (bRet) { std::ostringstream stream; stream << " Start trail Row[" << i << "]"; for (int j = 0; j < xDataList.GetCount(); ++j) { stream << " [" << j << "] " << xDataList.StringValEx(j); } m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } } xRecord = xRecordManager->Next(); } } return 0; }
bool NFCPatrolState::RandomPatrol(const NFGUID& self) { //首先,得看有没路径 //没有的话,随机找个地址走吧(以出生点为中心开始找,种子地址)NPCConfigID const std::string& strConfigID = m_pKernelModule->GetPropertyString(self, "NPCConfigID"); const std::string& strNPCID = m_pKernelModule->GetPropertyString(self, "ConfigID"); if (!strConfigID.empty()) { NF_SHARE_PTR<NFIPropertyManager> xPropertyManager = m_pElementInfoModule->GetPropertyManager(strConfigID); if (xPropertyManager) { NF_SHARE_PTR<NFIProperty> xPropertyX = xPropertyManager->GetElement("SeedX"); NF_SHARE_PTR<NFIProperty> xPropertyY = xPropertyManager->GetElement("SeedY"); NF_SHARE_PTR<NFIProperty> xPropertyZ = xPropertyManager->GetElement("SeedZ"); float fCurX = xPropertyX->GetFloat(); float fCurY = xPropertyY->GetFloat(); float fCurZ = xPropertyZ->GetFloat(); float fPosOffestX = (float)(rand() / double(RAND_MAX) - 0.5f); float fPosOffestZ = (float)(rand() / double(RAND_MAX) - 0.5f); fPosOffestX *= 10; fPosOffestZ *= 10; fCurX += fPosOffestX; fCurZ += fPosOffestZ; //if (fCurX > 0.0f && fCurZ > 0.0f) { //看能否寻路,不能寻路则重来 NFObjectStateType eStateType = NFObjectStateType::NOST_RUN; float fRand = (float)(rand() / double(RAND_MAX)); if (fRand < 0.5f) { eStateType = NFObjectStateType::NOST_WALK; } NFCDataList valueList; valueList.AddFloat(fCurX); valueList.AddFloat(fCurY); valueList.AddFloat(fCurZ); m_pKernelModule->DoEvent(self, NFED_ON_CLIENT_REQUIRE_MOVE, valueList); m_pKernelModule->SetPropertyFloat(self, "X", fCurX); m_pKernelModule->SetPropertyFloat(self, "Y", fCurY); m_pKernelModule->SetPropertyFloat(self, "Z", fCurZ); return true; } } } return false; }
bool NFCHeroPropertyModule::CalHeroTalentProperty(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; } ////////////////////Talent////////////////////////////////////////////////////// xDataList.Clear(); for (int i = 0; i < pHeroPropertyRecord->GetCols(); ++i) { xDataList.AddInt(0); } for (int i = NFrame::Player::PlayerHero_Talent1; i <= NFrame::Player::PlayerHero_Talent5; ++i) { const std::string& strTalentID = pHeroRecord->GetString(nRow, i); const std::string& strTalentEffectData = m_pElementModule->GetPropertyString(strTalentID, NFrame::Talent::EffectData()); if (!strTalentEffectData.empty()) { //one talent for (int j = 0; j < pHeroPropertyRecord->GetCols(); ++j) { const std::string& strColTag = pHeroPropertyRecord->GetColTag(j); int nValue = m_pElementModule->GetPropertyInt(strTalentEffectData, strColTag); int nOldValue = xDataList.Int(j); xDataList.SetInt(j, nOldValue + nValue); } } } return true; }
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; }
int NFCSkillModule::ExistSkill( const NFGUID& self, const std::string& strSkillName ) { NF_SHARE_PTR<NFIRecord> pRecord = m_pKernelModule->FindRecord( self, mstrSkillTableName ); if ( pRecord ) { NFCDataList varResult; pRecord->FindString( EGameSkillStoreType::EGSST_TYPE_SKILL_CONFIGID, strSkillName.c_str(), varResult ); if ( varResult.GetCount() == 1 ) { return varResult.Int( 0 ); } } return -1; }
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 NFCProperty::SetObject(const NFIDENTID& value) { if (eType != TDATA_OBJECT) { return false; } NFIDataList::TData TData; TData.variantData = value; TData.nType = TDATA_OBJECT; if (!m_pTData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (!NFIDataList::Valid(TData)) { return false; } m_pTData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData()); m_pTData->nType = TDATA_OBJECT; m_pTData->variantData = (NFINT64)0; } if (TData.variantData == m_pTData->variantData) { return false; } if (TDATA_OBJECT == m_pTData->nType) { NFCDataList oldValue; oldValue.Append(*m_pTData); m_pTData->variantData = value; NFCDataList newValue; newValue.Append(*m_pTData); OnEventHandler(oldValue , newValue); return true; } return false; }
bool NFCProperty::SetDouble(const double value) { if (eType != TDATA_DOUBLE) { return false; } NFIDataList::TData TData; TData.variantData = value; TData.nType = TDATA_DOUBLE; if (!m_pTData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (!NFIDataList::Valid(TData)) { return false; } m_pTData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData()); m_pTData->nType = TDATA_DOUBLE; m_pTData->variantData = (double)0.0f; } if (TData.variantData == m_pTData->variantData) { return false; } if (TDATA_DOUBLE == m_pTData->nType) { NFCDataList oldValue; oldValue.Append(*m_pTData); m_pTData->variantData = value; NFCDataList newValue; newValue.Append(*m_pTData); OnEventHandler(oldValue , newValue); return true; } return false; }
bool NFCPackModule::CreateItem( const NFGUID& self, const std::string& strConfigName, const int nCount ) { if (nCount <= 0) { return 0; } NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject( self ); if ( NULL == pObject ) { return 0; } //还得确定有这个装备 bool bExist = m_pElementModule->ExistElement(NFrame::Item::ThisName(), strConfigName ); if ( !bExist ) { return 0; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement( NFrame::Player::R_BagItemList() ); if (!pRecord) { return 0; } NFCDataList varFindResult; int nFindRowCount = pRecord->FindString(NFrame::Player::BagItemList_ConfigID, strConfigName, varFindResult); if (nFindRowCount <= 0) { NF_SHARE_PTR<NFIDataList> xRowData = pRecord->GetInitData(); xRowData->SetString(NFrame::Player::BagItemList_ConfigID, strConfigName); xRowData->SetInt(NFrame::Player::BagItemList_ItemCount, nCount); xRowData->SetInt(NFrame::Player::BagItemList_Date, NFTime::GetNowTime()); } else { int nFindRow = varFindResult.Int(0); int nOldCount = pRecord->GetInt(nFindRow, NFrame::Player::BagItemList_ItemCount); int nNewCount = nOldCount + nCount; pRecord->SetInt(nFindRow, NFrame::Player::BagItemList_ItemCount, nNewCount); } return 0; }