当前位置: 首页>>代码示例>>C++>>正文


C++ CEntityProperty::SetBufAttr方法代码示例

本文整理汇总了C++中CEntityProperty::SetBufAttr方法的典型用法代码示例。如果您正苦于以下问题:C++ CEntityProperty::SetBufAttr方法的具体用法?C++ CEntityProperty::SetBufAttr怎么用?C++ CEntityProperty::SetBufAttr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CEntityProperty的用法示例。


在下文中一共展示了CEntityProperty::SetBufAttr方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: InitProperty

// 清除子背包对象
//void CDBPlayer::ClearSubpackObjMap(long subPos)
//{
//map<long, set<CGUID>>::iterator placeItr = p_GoodsGroup->GetDirtyGoodsMap().find((long)PEI_PACK);
//if(placeItr != p_GoodsGroup->GetDirtyGoodsMap().end())
//{
//	set<CGUID>::iterator goodsItr = placeItr->second.begin();
//	while( goodsItr != placeItr->second.end() )
//	{
//		CDBGoods* packGoods = p_GoodsGroup->FindGoods(*goodsItr);
//		if(packGoods)
//		{
//			long pos = packGoods->GetLongAttr(string("position"), 0);
//			if(pos == PEI_PACK1+subPos)
//			{
//				if(!p_GoodsGroup->DelGoods(*goodsItr, (long)PEI_PACK))
//				{
//					char szPlayerID[128];
//					char szGoodsID[128];
//					GetExID().tostring(szPlayerID);
//					(*goodsItr).tostring(szGoodsID);
//					AddLogText("CDBPlayer::ClearSubpackObjMap del goods Err!Player[%s], goods[%s], pos[%d]!", szPlayerID, szGoodsID, pos);
//				}
//				placeItr->second.erase((*goodsItr));
//				break;
//			}
//		}
//		goodsItr++;
//	}
//	if(placeItr->second.size() == 0) // 已清空
//	{
//		p_GoodsGroup->GetDirtyGoodsMap().erase(placeItr);
//	}
//}
//}
// 初始化属性配置
void CDBPlayer::InitProperty()
{
    CDataEntityManager* pdeManager = NULL;
    std::map<string, CDataEntityManager*>::iterator itr = GetGame()->GetDBEntityManager()->GetObjAttrDef().find(string("player"));
    if(itr != GetGame()->GetDBEntityManager()->GetObjAttrDef().end())
        pdeManager = itr->second;

    if(pdeManager)
    {
        CDataEntityManager::EntityPropertyMapItr attrItr = pdeManager->GetEntityPropertyMap().begin();

        for(; attrItr != pdeManager->GetEntityPropertyMap().end(); attrItr++)
        {
            CEntityProperty* pe = m_DataEntityManager.CreateEntityProperty(attrItr->first, attrItr->second->GetDBTableName(), attrItr->second->GetDataType());
            if(pe)
            {
                if(pe->GetDataType() == DATA_OBJECT_TIME)
                {
                    long timeBuf[6] = {0};
                    timeBuf[0] = 1990;
                    timeBuf[1] = 1;
                    timeBuf[2] = 1;
                    pe->SetBufAttr(0, (void*)&timeBuf[0], sizeof(DWORD)*6);
                }
            }
        }
    }
    else
    {
        AddLogText("CDBPlayer::InitProperty() Err,未找到相关配置信息!");
    }
}
开发者ID:ueverything,项目名称:mmo-resourse,代码行数:68,代码来源:DBPlayer.cpp

示例2: InitProperty

// 初始化属性配置
void CDBFactionMember::InitProperty()
{
	CDataEntityManager* pdeManager = NULL;
	std::map<string, CDataEntityManager*>::iterator itr = GetGame()->GetDBEntityManager()->GetObjAttrDef().find(string("faction_member"));
	if(itr != GetGame()->GetDBEntityManager()->GetObjAttrDef().end())
		pdeManager = itr->second;

	if(pdeManager)
	{
		CDataEntityManager::EntityPropertyMapItr attrItr = pdeManager->GetEntityPropertyMap().begin();

		for(; attrItr != pdeManager->GetEntityPropertyMap().end(); attrItr++)
		{
			CEntityProperty* ep = m_DataEntityManager.CreateEntityProperty(attrItr->first, attrItr->second->GetDBTableName(), attrItr->second->GetDataType());
			if(ep)
			{
				ep->SetDbFlag(attrItr->second->GetDbFlag());
				if(ep->GetDataType() == DATA_OBJECT_TIME)
				{
					long timeBuf[6] = {0};
					timeBuf[0] = 1990;
					timeBuf[1] = 1;
					timeBuf[2] = 1;
					ep->SetBufAttr(0, (void*)&timeBuf[0], sizeof(DWORD)*6);
				}
			}
		}
	}
}
开发者ID:ueverything,项目名称:mmo-resourse,代码行数:30,代码来源:DBFactionMember.cpp

示例3: LoadBufferField

//读Buffer
bool CRsDupRgn::LoadBufferField(CBaseDBEntity *pGoods, const char* szFiledName, _RecordsetPtr &rs)
{
	if(pGoods == NULL)	return false;

	try
	{
		if(rs->GetadoEOF())
		{
			ReleaseRs(rs);
			return false;
		}

		long lSize=0;
		FieldsPtr fldPtr = rs->GetFields();
		FieldPtr itemPtr = fldPtr->GetItem(szFiledName);
		lSize = itemPtr->ActualSize;

		if(lSize > 0)
		{
			_variant_t varBLOB;
			varBLOB = itemPtr->GetChunk(lSize);

			BYTE *pBuf=NULL;
			SafeArrayAccessData(varBLOB.parray,(void**)&pBuf);
			SafeArrayUnaccessData(varBLOB.parray);

			// 清空SKILL
			CEntityProperty* ep = pGoods->GetDataEntityManager().GetEntityProperty(string(szFiledName));
			if(ep)
				ep->SetBufAttr(0, pBuf, lSize);
		}
	}
	catch(_com_error e)
	{
		PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_LOADRGNOBJERR), e);
		return false;
	}
	return true;
}
开发者ID:xiongshaogang,项目名称:mmo-resourse,代码行数:40,代码来源:RsDupRgn.cpp

示例4: Load

void CDBPlayer::Load(long msgid, BYTE* msgBuf, long& msgBufPos, long bufSize)
{
    m_mapDirtyAttrData.clear();

    WORD attrNum = _GetWordFromByteArray(msgBuf, msgBufPos, bufSize); // 属性种类个数

    char varName[1024];
    for(int i=0; i<(int)attrNum; i++)
    {
        //--新格式
        //变量名字符串长度(long)
        //变量名字符串
        //变量类型(long)
        //变量数据长度(long)
        //变量数据
        long varNameLen = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量名字符串长度(long)
        _GetStringFromByteArray(msgBuf, msgBufPos, varName, bufSize);//变量名字符串
        m_mapDirtyAttrData.insert(string(varName));
        long bufType = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量类型(long)
        long varBufLen = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量数据长度(long)

        CEntityProperty* ep = NULL;
        CDataEntityManager::EntityPropertyMapItr itr = GetDataEntityManager().GetEntityPropertyMap().find(varName);
        if(itr != GetDataEntityManager().GetEntityPropertyMap().end())
            ep = itr->second;
        else
        {
            CDataEntityManager* pdeManager = NULL;
            std::map<string, CDataEntityManager*>::iterator itr = GetGame()->GetDBEntityManager()->GetObjAttrDef().find(string("player"));
            if(itr != GetGame()->GetDBEntityManager()->GetObjAttrDef().end())
                pdeManager = itr->second;

            if(pdeManager)
            {
                CEntityProperty* templateEP = pdeManager->GetEntityProperty(varName);
                if(templateEP)
                    ep = GetDataEntityManager().CreateEntityProperty(varName, templateEP->GetDBTableName(), templateEP->GetDataType());
                else
                    AddLogText("根据属性名[%s]查找属性指针为空!", varName);
            }
        }

        assert(ep != NULL);

        switch((DATA_OBJECT_TYPE)bufType)
        {
        case DATA_OBJECT_TIME:
        {
            // 6个long值 : 年 月 日 时 分 秒
            BYTE timeValue[6*sizeof(DWORD)];
            memset(timeValue, 0, 6*sizeof(DWORD));
            _GetBufferFromByteArray(msgBuf, msgBufPos, timeValue, 6*sizeof(DWORD), bufSize);
            ep->SetBufAttr(0, timeValue, 6*sizeof(DWORD));
        }
        break;
        case DATA_OBJECT_STRING:
        {
            char varValue[1024];
            _GetStringFromByteArray(msgBuf, msgBufPos, varValue, bufSize);//变量数据
            ep->SetStringAttr(0, string((char*)varValue));
        }
        break;
        case DATA_OBJECT_FLOAT:
        case DATA_OBJECT_LONG:
        case DATA_OBJECT_SHORT:
        case DATA_OBJECT_ULONG:
        case DATA_OBJECT_USHORT:
        case DATA_OBJECT_BOOL:
        case DATA_OBJECT_CHAR:
        case DATA_OBJECT_BYTE:
        case DATA_OBJECT_WORD:
        case DATA_OBJECT_DWORD:
        {
            long value = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量数据
            ep->SetLongAttr(0, (long)value);
        }
        break;
        case DATA_OBJECT_GUID:
        {
            CGUID tGUID;
            _GetBufferFromByteArray(msgBuf, msgBufPos, tGUID, bufSize);//变量数据
            ep->SetGuidAttr(0, tGUID);
        }
        break;
        case DATA_OBJECT_BUFFER:
        {
            BYTE* buf = new BYTE[varBufLen];
            _GetBufferFromByteArray(msgBuf, msgBufPos, buf, varBufLen, bufSize);//变量数据
            ep->SetBufAttr(0, buf, varBufLen);
            SAFE_DELETE_ARRAY(buf);
        }
        break;
        }
    }
}
开发者ID:ueverything,项目名称:mmo-resourse,代码行数:95,代码来源:DBPlayer.cpp

示例5: InitProperty

// 初始化属性配置
void CEntityGroup::InitProperty()
{
	CEntityManager::AttrDefMap& mapAttrDef = GetGame()->GetEntityManager()->GetObjAttrDef();
	CEntityManager::AttrDefMapItr itr = mapAttrDef.find(GetCompositeFlag());
	if(itr != mapAttrDef.end())
	{
		// 初始化属性变量
		tagEntityBuildInfo* pInfo = itr->second;
		if(!pInfo) return;
		
		map<string, tagEntityAttrInfo>::iterator daEpItr = itr->second->pDataMgr.begin();
		for(; daEpItr != itr->second->pDataMgr.end(); daEpItr++)
		{
			m_DataEntityManager.CreateEntityProperty(daEpItr->second.lAttrTypeEnum);
		}

		// 初始化数据
		m_lLeafComFlag = pInfo->strLeafComFlag;
		m_lLeafComType = pInfo->lLeafComType;
		m_bHasDetailLeavesFlag = pInfo->lHasDetailLeaves;

		m_CompositeType = (COMPOSITE_TYPE)pInfo->lComType;
		m_bHasAttrs = pInfo->lHhasAttrFlag;

		m_strDetailComPositeFlagName = pInfo->strDbQueryName;
		m_lDetailComPositeFlagType = pInfo->lDbQueryType;

		if(m_lDetailComPositeFlagType != -1) // 有分散类型
		{
			long lQueryAttrType = GetGame()->GetEntityManager()->GetAttrEnumByStr(pInfo->strComFlag, pInfo->strDbQueryName);

			CEntityProperty* pEP = m_DataEntityManager.CreateEntityProperty(lQueryAttrType);
			if(pEP)
			{
				switch((DATA_OBJECT_TYPE)pInfo->lDbQueryType)
				{
				case DATA_OBJECT_TIME:
					{
						pEP->SetBufAttr(((void*)&pInfo->pQueryVar[0]), 6*sizeof(DWORD));
					}
					break;
				case  DATA_OBJECT_STRING:
					{
						pEP->SetStringAttr(string((char*)&pInfo->pQueryVar[0]));
					}
					break;
				case DATA_OBJECT_BUFFER:
					{
						pEP->SetBufAttr(((void*)&pInfo->pQueryVar[0]), 6*sizeof(DWORD));
					}
					break;
				case DATA_OBJECT_GUID:
					{
						CGUID bguid;
						memcpy(&bguid, pInfo->pQueryVar, sizeof(CGUID));
						pEP->SetGuidAttr(bguid);
					}
					break;
				case DATA_OBJECT_BOOL:
				case DATA_OBJECT_CHAR:
				case DATA_OBJECT_BYTE:
				case DATA_OBJECT_SHORT:
				case DATA_OBJECT_WORD:
				case DATA_OBJECT_USHORT:
				case DATA_OBJECT_FLOAT:
				case DATA_OBJECT_LONG:
				case DATA_OBJECT_ULONG:
				case DATA_OBJECT_DWORD:
					{
						long lVar = *((long*)&pInfo->pQueryVar[0]);
						pEP->SetLongAttr(lVar);
					}
					break;
				}
			}
		}
		// 初始化结构
		map<string, tagBuildFileInfo*>::iterator leafItr = pInfo->mapBuildFileInfo.begin();
		for(; leafItr != pInfo->mapBuildFileInfo.end(); leafItr++)
		{
			tagBuildFileInfo* leafInfo = leafItr->second;
			CEntityGroup* pLeaf = new CEntityGroup(leafInfo->strLeafComFlag, leafInfo->leafGuid);
			if(pLeaf)
			{
				AddChild(pLeaf);
				pLeaf->InitProperty();
			}
		}
	}
}
开发者ID:ueverything,项目名称:mmo-resourse,代码行数:91,代码来源:EntityGroup.cpp

示例6: GetFromByteArray

void CEntityGroup::GetFromByteArray(BYTE* msgBuf, long& msgBufPos, long bufSize)
{
	QueryDataRelease();
	RetQueryDataRelease();

	// 查询变量
	long lQueryAttrNum = _GetWordFromByteArray(msgBuf, msgBufPos, bufSize);
	for(int j=0; j<lQueryAttrNum; j++)
	{	
		char szQueryStrName[128];
		_GetStringFromByteArray(msgBuf, msgBufPos, szQueryStrName, bufSize);
		DATA_OBJECT_TYPE objType = (DATA_OBJECT_TYPE)_GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量类型(long)
		long lQueryBufSize = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);
		CTempEntityProperty* pEP = new CTempEntityProperty(szQueryStrName, objType);
		if(pEP)
		{
			switch(objType)
			{
			case  DATA_OBJECT_BUFFER:
				{
					if(lQueryBufSize>0)
					{
						BYTE* queryBuf = new BYTE[lQueryBufSize];
						_GetBufferFromByteArray(msgBuf, msgBufPos, queryBuf, lQueryBufSize, bufSize);
						pEP->SetBufAttr(queryBuf, lQueryBufSize);
						SAFE_DELETE_ARRAY(queryBuf);
					}
				}
				break;
			case  DATA_OBJECT_STRING:
				{
					char szValue[128];
					memset(szValue, 0, sizeof(szValue));
					_GetStringFromByteArray(msgBuf, msgBufPos, szValue, bufSize);
					pEP->SetStringAttr(string(szValue));
				}
				break;
			case DATA_OBJECT_GUID:
				{
					CGUID tGuid;
					_GetBufferFromByteArray(msgBuf, msgBufPos, tGuid, bufSize);
					pEP->SetGuidAttr(tGuid);
				}
				break;
			case DATA_OBJECT_BOOL:
			case DATA_OBJECT_CHAR:
			case DATA_OBJECT_BYTE:
			case DATA_OBJECT_SHORT:
			case DATA_OBJECT_WORD:
			case DATA_OBJECT_USHORT:
			case DATA_OBJECT_FLOAT:
			case DATA_OBJECT_LONG:
			case DATA_OBJECT_ULONG:
			case DATA_OBJECT_DWORD:
				{
					pEP->SetLongAttr(_GetLongFromByteArray(msgBuf, msgBufPos, bufSize));
				}
				break;
			}

			DB_RELATE_TYPE relateType = (DB_RELATE_TYPE)_GetByteFromByteArray(msgBuf, msgBufPos, bufSize);
			pEP->SetDbRelateType(relateType);
			m_pQueryDataMgr.push_back(pEP);
		}
	}

	// 查询返回的变量
	lQueryAttrNum = _GetWordFromByteArray(msgBuf, msgBufPos, bufSize);
	for(int j=0; j<lQueryAttrNum; j++)
	{	
		char szQueryStrName[128];
		_GetStringFromByteArray(msgBuf, msgBufPos, szQueryStrName, bufSize);
		DATA_OBJECT_TYPE objType = (DATA_OBJECT_TYPE)_GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量类型(long)
		CTempEntityProperty* pEP = new CTempEntityProperty(szQueryStrName, objType);
		if(pEP)
		{
			switch(objType)
			{
			case  DATA_OBJECT_STRING:
				{
					char szValue[128];
					memset(szValue, 0, sizeof(szValue));
					_GetStringFromByteArray(msgBuf, msgBufPos, szValue, bufSize);
					pEP->SetStringAttr(string(szValue));
				}
				break;
			case DATA_OBJECT_GUID:
				{
					CGUID tGuid;
					_GetBufferFromByteArray(msgBuf, msgBufPos, tGuid, bufSize);
					pEP->SetGuidAttr(tGuid);
				}
				break;
			case DATA_OBJECT_BOOL:
			case DATA_OBJECT_CHAR:
			case DATA_OBJECT_BYTE:
			case DATA_OBJECT_SHORT:
			case DATA_OBJECT_WORD:
			case DATA_OBJECT_USHORT:
			case DATA_OBJECT_FLOAT:
//.........这里部分代码省略.........
开发者ID:ueverything,项目名称:mmo-resourse,代码行数:101,代码来源:EntityGroup.cpp


注:本文中的CEntityProperty::SetBufAttr方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。