Beispiel #1
0
bool CGoods::tagAddonProperty::Serialize(DBWriteSet& setWriteDB, bool b)
{
	setWriteDB.AddToByteArray( static_cast<ulong>(gapType) );
	setWriteDB.AddToByteArray(lValues[0]);
	setWriteDB.AddToByteArray(lValues[1]);
	return true;
}
Beispiel #2
0
//// 添加到CByteArray
bool CGate::CodeToDataBlock(DBWriteSet& setWriteDB, bool bExData)
{
	CBuild::CodeToDataBlock(setWriteDB,bExData);
	setWriteDB.AddToByteArray(m_strOpenSound.c_str());
	setWriteDB.AddToByteArray(m_strCloseSound.c_str());
	return true;
}
//! 响应物品移除
GoodsAllPurposeOpt::eOptResult GoodsAllPurposeOpt::OnGoodsPop(DWORD dwIdx)
{
	if(m_dwMaxPushNum > dwIdx || 0xFFFFFFFF == dwIdx)
	{
		CPlayer *pPlayer = GetGame()->FindPlayer(m_OwnerGuid);
		if(NULL != pPlayer)
		{
			if(CanOpt(pPlayer))
			{
				if(0xFFFFFFFF == dwIdx)
					memset(m_arrGoodsGuid, 0, sizeof(CGUID) * MAX_ALLPURPOSE_CONTAINER_SIZE);
				else
					m_arrGoodsGuid[dwIdx] = NULL_GUID;
				CMessage msg(MSG_S2C_GOODS_AllPurpose_RePop);
				DBWriteSet dbWriteSet;
				msg.GetDBWriteSet(dbWriteSet);
				dbWriteSet.AddToByteArray(dwIdx);
				msg.SendToPlayer(m_OwnerGuid, false);

				CMessage msgTxt(MSG_S2C_GOODS_AllPurpose_UpdateTxt);
				DBWriteSet TxtdbWriteSet;
				msgTxt.GetDBWriteSet(TxtdbWriteSet);
				TxtdbWriteSet.AddToByteArray(m_szText);
				msgTxt.SendToPlayer(m_OwnerGuid, false);

				return eOR_Succeed;
			}
		}
	}

	return eOR_Lawless;
}
//!						±àÂë
void MedalContainer::CodeToDataBlock(DBWriteSet& setWriteDB)
{
	setWriteDB.AddToByteArray( (LONG)m_setHold.size());
	for (set<LONG>::iterator ite = m_setHold.begin(); ite != m_setHold.end(); ++ite)
	{
		setWriteDB.AddToByteArray(*ite);
	}
}
BOOL CRoleRecord::CodeToDataBlock(DBWriteSet& setWriteDB)
{
	setWriteDB.AddToByteArray(m_lRoleID);
	setWriteDB.AddToByteArray(m_cRoleStep);
	setWriteDB.AddToByteArray(m_cAimNum);
	setWriteDB.AddToByteArray(m_Param,sizeof(sRoleParam)*m_cAimNum);
	return TRUE;
}
BOOL CGoodsBaseProperties::tagSuitProperty::Serialize(DBWriteSet& setWriteDB, BOOL b )
{
	setWriteDB.AddToByteArray( static_cast<DWORD>(gapType));
	setWriteDB.AddToByteArray( static_cast<DWORD>( vValues.size() ) );
	for( size_t i = 0; i < vValues.size(); i ++ )
	{
		vValues[i].Serialize( setWriteDB );
	}
	return TRUE;
}
bool CGoodsBaseProperties::tagSuitProperty::Serialize(DBWriteSet& setWriteDB, bool b )
{
	setWriteDB.AddToByteArray(static_cast<ulong>(gapType));
	setWriteDB.AddToByteArray(static_cast<ulong>(vValues.size()));
	for(size_t i = 0; i < vValues.size(); i++)
	{
		vValues[i].Serialize(setWriteDB);
	}
	return true;
}
Beispiel #8
0
// ½±ÀøÐÅÏ¢±àÂë
void tagBounsInfo::EncodeToDataBlock(DBWriteSet& setWriteDB)
{
    setWriteDB.AddToByteArray(guid);
    setWriteDB.AddToByteArray((char*)strAccount.c_str());
    setWriteDB.AddToByteArray((uchar)bStatus);
    setWriteDB.AddToByteArray(dwBounsID);
//	setWriteDB.AddToByteArray((long)tValidTime);
    setWriteDB.AddToByteArray((void*)&tValidTime, sizeof(time_t));

}
Beispiel #9
0
bool CMultiHpBar::CodeToDataBlock(DBWriteSet& setWriteDB)
{
    setWriteDB.AddToByteArray(m_BaseMaxHp);
    setWriteDB.AddToByteArray((long)m_listHpBar.size());
    for (list<HpBar>::iterator it= m_listHpBar.begin();
            it!= m_listHpBar.end(); it++)
    {
        setWriteDB.AddToByteArray((long)it->HpRange);
    }
    return true;
}
//! 编码到数据集
BOOL CGameInfo::Code(DBWriteSet &setWriteDB) const
{
	setWriteDB.AddToByteArray(m_dwType);
	setWriteDB.AddToByteArray((LONG)m_vGameInfoData.size());

	for (LONG i = 0; i < m_vGameInfoData.size(); ++i)
	{
		setWriteDB.AddToByteArray((void*)&m_vGameInfoData[i], sizeof(tagGameInfoData));
	}

	return TRUE;
}
BOOL CSilverWallet::Serialize( DBWriteSet& setWriteDB, BOOL b  )
{
	if( m_pSilverCoins )
	{
		setWriteDB.AddToByteArray( static_cast<BYTE>(1) );
		m_pSilverCoins -> Serialize( setWriteDB ,b );
	}
	else
	{
		setWriteDB.AddToByteArray( static_cast<BYTE>(0) );
	}
	return TRUE;
}
	void CPackage::EncodeForGS( DBWriteSet &db )
	{
		if( m_pGoods != NULL )
		{
			db.AddToByteArray( (BYTE)1 );
			m_pGoods->Serialize( db );
			m_pContainer->Serialize( db );
		}
		else
		{
			db.AddToByteArray( (BYTE)0 );
		}
	}
Beispiel #13
0
BOOL CJiFen::Serialize( DBWriteSet& setWriteDB, BOOL b  )
{
	if( m_pGoldCoins )
	{
		setWriteDB.AddToByteArray( static_cast<BYTE>(1) );
		m_pGoldCoins -> Serialize( setWriteDB, b );
	}
	else
	{
		setWriteDB.AddToByteArray( static_cast<BYTE>(0) );
	}
	return TRUE;
}
bool CGoodsBaseProperties::tagAddonProperty::Serialize(DBWriteSet& setWriteDB, bool b)
{
	setWriteDB.AddToByteArray(static_cast<ulong>(gapType) );
	setWriteDB.AddToByteArray(static_cast<long>(bIsEnabled) );
	setWriteDB.AddToByteArray(static_cast<long>(bIsImplicitAttribute) );
	setWriteDB.AddToByteArray(static_cast<ulong>(vValues.size()));
	for(size_t i = 0; i < vValues.size(); i++)
	{
		vValues[i].Serialize(setWriteDB);
	}

	return true;
}
BOOL CGoodsBaseProperties::tagAddonProperty::Serialize(DBWriteSet& setWriteDB, BOOL b)
{
	// TODO: Add your specialized code here.
	setWriteDB.AddToByteArray(static_cast<DWORD>(gapType) );
	setWriteDB.AddToByteArray(static_cast<LONG>(bIsEnabled) );
	setWriteDB.AddToByteArray(static_cast<LONG>(bIsImplicitAttribute) );
	setWriteDB.AddToByteArray(static_cast<DWORD>( vValues.size() ) );
	for( size_t i = 0; i < vValues.size(); i ++ )
	{
		vValues[i].Serialize( setWriteDB );
	}

	return TRUE;
}
Beispiel #16
0
bool CMercenaryQuestSys::CodeToDataBlock(DBWriteSet& setWriteDB)
{
	setWriteDB.AddToByteArray(m_lCurQuestID);
	setWriteDB.AddToByteArray((WORD)m_MerQuests.size());
	itMerQ it = m_MerQuests.begin();
	for(;it != m_MerQuests.end();it++)
	{
		setWriteDB.AddToByteArray((*it).first);
		tagMerQuest &MercQuests = (*it).second;
		setWriteDB.AddToByteArray(MercQuests.dwLastUpdateTime);
		setWriteDB.AddToByteArray((WORD)MercQuests.Quests.size());
		vector<long>::iterator itQ = MercQuests.Quests.begin();
		for(;itQ != MercQuests.Quests.end();itQ++)
		{
			setWriteDB.AddToByteArray((*itQ));
		}
	}
	set<long>::iterator itDisband=DisbandQuests.begin();
	setWriteDB.AddToByteArray( (WORD)DisbandQuests.size() );
	for (;itDisband != DisbandQuests.end();itDisband++)
	{
		setWriteDB.AddToByteArray( (*itDisband) );
	}
	return true;
}
Beispiel #17
0
	void CConfiger::Encode( DBWriteSet &db ) const
	{
		db.AddToByteArray( (long) m_BuyGoodsList.size() );
		for( BuyGoodsListT::const_iterator it = m_BuyGoodsList.begin();
			it != m_BuyGoodsList.end(); ++ it )
		{
			const BuyGoods &goods = *it;
			db.AddToByteArray( const_cast<BuyGoods*>( &goods ), sizeof( goods ) );
		}
		db.AddToByteArray( const_cast<GlobalCfg*>( &m_GlobalCfg ), sizeof( m_GlobalCfg ) );
		db.AddToByteArray( (long) m_ShopTable.size() );
		for( ShopTableT::const_iterator it = m_ShopTable.begin();
			it != m_ShopTable.end(); ++ it )
		{
			db.AddToByteArray( (long) it->first );
			db.AddToByteArray( it->second.npcOrigName );
			const SellGoodsListT *sellgoods_list = it->second.SellList;
			db.AddToByteArray( (long) sellgoods_list->size() );
			for( SellGoodsListT::const_iterator sit = sellgoods_list->begin();
				sit != sellgoods_list->end(); ++ sit )
			{
				const SellGoods &goods = *sit;
				db.AddToByteArray( const_cast<SellGoods*>( &goods ), sizeof( goods ) );
			}
		}
	}
//! 发送自身信息到所有客户端
VOID HardInfoList::SendInfoToAll(VOID)
{
	tagHardInfoGroup HardInfoGroup;
	GetCacheAllInfo(HardInfoGroup);

	CMessage msg(MSG_SCC2SUC_INFO_Notify_HardInfoList);
	DBWriteSet setWriteSet;
	msg.GetDBWriteSet(setWriteSet);

	setWriteSet.AddToByteArray(m_dwSMID);
	setWriteSet.AddToByteArray(HardInfoGroup.dwUseNum);
	setWriteSet.AddToByteArray(HardInfoGroup.pHardwareInfo, sizeof(tagHardwareInfo) * HardInfoGroup.dwUseNum);

	UserManage::GetInstance().SendToAll(ePT_Scout2, msg);
}
//! 发送自身信息到客户端
VOID HardInfoList::SendInfoToSocket(LONG lSocket)
{
	tagHardInfoGroup HardInfoGroup;
	GetCacheAllInfo(HardInfoGroup);

	CMessage msg(MSG_SCC2SUC_INFO_Notify_HardInfoList);
	DBWriteSet setWriteSet;
	msg.GetDBWriteSet(setWriteSet);

	setWriteSet.AddToByteArray(m_dwSMID);
	setWriteSet.AddToByteArray(HardInfoGroup.dwUseNum);
	setWriteSet.AddToByteArray(HardInfoGroup.pHardwareInfo, sizeof(tagHardwareInfo) * HardInfoGroup.dwUseNum);

	msg.SendToSuc(lSocket);
}
//编码
void CAutoFightData::CodeToDataBlock(DBWriteSet& setWriteDB)
{
    //由于不需要保存稳定挂机和普通挂机的状态,不需要发给GS,需要是启用
    //setWriteDB.AddToByteArray(m_AutoFightSetup,DATA_SIZE);
    //给GS传稳定时间
    setWriteDB.AddToByteArray((DWORD)GetStableTime());
}
//! 响应开始物品操作
GoodsAllPurposeOpt::eOptResult GoodsAllPurposeOpt::FinishOpt(void)
{
	CPlayer *pPlayer = GetGame()->FindPlayer(m_OwnerGuid);
	if(NULL != pPlayer)
	{
		if(CanOpt(pPlayer))
		{
			BOOL bPass = TRUE;
			//! 找到物品
			for (DWORD i = 0; i < m_dwMaxPushNum; ++i)
			{
				if(NULL == pPlayer->FindGoodsByGuidInPack(m_arrGoodsGuid[i]))
				{
					bPass = FALSE;
					break;
				}
			}
			
			if(bPass)
			{
				//! 执行脚本
				pPlayer->PlayerRunScript(m_szOnFinishScript);

				return eOR_Succeed;
			}
			else
			{
				memset(m_arrGoodsGuid, 0, sizeof(CGUID) * MAX_ALLPURPOSE_CONTAINER_SIZE);
				CMessage msg(MSG_S2C_GOODS_AllPurpose_RePop);
				DBWriteSet dbWriteSet;
				msg.GetDBWriteSet(dbWriteSet);
				dbWriteSet.AddToByteArray((DWORD)0xFFFFFFFF);
				msg.SendToPlayer(m_OwnerGuid, false);

				CMessage msgTxt(MSG_S2C_GOODS_AllPurpose_UpdateTxt);
				DBWriteSet TxtdbWriteSet;
				msgTxt.GetDBWriteSet(TxtdbWriteSet);
				TxtdbWriteSet.AddToByteArray(m_szText);
				msgTxt.SendToPlayer(m_OwnerGuid, false);

				return eOR_Failed;
			}
		}
	}

	return eOR_Lawless;
}
void  SkillAttribute::ConfigEnCode(DBWriteSet& dbWrite)
{
     dbWrite.AddToByteArray( (long) m_SkillAttriTable.size() );

     for ( SkillIter Iter( m_SkillAttriTable.begin()) ; Iter != m_SkillAttriTable.end() ; Iter ++ )
     {
         /// skill id
         dbWrite.AddToByteArray( Iter->first );
         dbWrite.AddToByteArray( (long)Iter->second.size() );
         for ( SkillTable::iterator it = Iter->second.begin() ; it != Iter->second.end() ; it++)
         {                
             /// add level
             dbWrite.AddToByteArray( it->first );
             dbWrite.AddToByteArray( &it->second, sizeof(tagSkillAttr) );
         }
     }
}
Beispiel #23
0
bool CGoods::SerializeForRgnDisplay(DBWriteSet& setWriteDB,bool b)
{
	bool bResult=false;
	CGoodsBaseProperties* pProperties = GoodsSetup::QueryGoodsBaseProperties(
		GetBasePropertiesIndex() );
	if( pProperties )
	{
		setWriteDB.AddToByteArray( GetBasePropertiesIndex() );		
		setWriteDB.AddToByteArray( GetAmount() );
		setWriteDB.AddToByteArray(GetPosX());
		setWriteDB.AddToByteArray(GetPosY());
		long lLev=GetAddonPropertyValues(GAP_WEAPON_LEVEL,1);
		setWriteDB.AddToByteArray(lLev);
		bResult=true;
	}
	return bResult;
}
Beispiel #24
0
BOOL CRoleQueue::CodeToDataBlock(DBWriteSet& setWriteDB)
{
	setWriteDB.AddToByteArray(m_lChapter);
	
	setWriteDB.AddToByteArray((LONG)m_listRoleRecord.size());
	for (list<CRoleRecord*>::iterator it=m_listRoleRecord.begin(); it!= m_listRoleRecord.end(); it++)
	{
		(*it)->CodeToDataBlock(setWriteDB);
	}

	setWriteDB.AddToByteArray((LONG)m_mapExcessRecord.size());
	for (map<WORD,sExcessRecord>::iterator it= m_mapExcessRecord.begin(); it!= m_mapExcessRecord.end() ; it++)
	{
		setWriteDB.AddToByteArray((WORD)(*it).first);
		setWriteDB.AddToByteArray(&(*it).second,sizeof(sExcessRecord));
	}

	setWriteDB.AddToByteArray((LONG)m_setRoleRecord.size());
	for (set<LONG>::iterator ite=m_setRoleRecord.begin(); ite!= m_setRoleRecord.end(); ite++)
	{
		setWriteDB.AddToByteArray((LONG)*ite);
	}

	return TRUE;
}
	void CQuestionManager::EncodeQuestionCache( DBWriteSet &db )
	{
		::EnterCriticalSection( &m_QuesMutex );

		// questions count
		db.AddToByteArray( (long) m_pQuestions->size() );
		for( QuestionList::const_iterator it = m_pQuestions->begin(); it != m_pQuestions->end(); ++ it )
		{
			const Question &ques = *it; 
			// answer
			db.AddToByteArray( (BYTE) ques.answer );
			// question buffer size
			db.AddToByteArray( (long) ques.data.size );
			// question buffer
			db.AddToByteArray( ques.data.buf, (long)ques.data.size );
		}

		::LeaveCriticalSection( &m_QuesMutex );
	}
//! 刷新容器显示金钱数
GoodsAllPurposeOpt::eOptResult GoodsAllPurposeOpt::SetGold(DWORD dwGoldNum)
{
	CPlayer *pPlayer = GetGame()->FindPlayer(m_OwnerGuid);
	if(NULL != pPlayer)
	{
		if(CanOpt(pPlayer))
		{
			CMessage msgTxt(MSG_S2C_GOODS_AllPurpose_UpdateGold);
			DBWriteSet TxtdbWriteSet;
			msgTxt.GetDBWriteSet(TxtdbWriteSet);
			TxtdbWriteSet.AddToByteArray(dwGoldNum);
			msgTxt.SendToPlayer(m_OwnerGuid, false);

			return eOR_Succeed;
		}
	}

	return eOR_Lawless;
}
// 添加到DataBlock
bool stModuParam::CodeToDataBlock(DBWriteSet& setWriteDB)
{
	DWORD dwFuture =0;
	DWORD dwCount = 0;
	//当前执行的工序号
	setWriteDB.AddToByteArray(nProceNum);
	//添加当前定时器信息
	long lTimerNum = (long)Timers.size();
	setWriteDB.AddToByteArray(lTimerNum);
	stModuParam::itTimer it = Timers.begin();
	for(;it != Timers.end();it++)
	{
		stTimerParam *pTimerParam = (*it);
		pTimerParam->GetRemainTime(dwFuture,dwCount);
		setWriteDB.AddToByteArray(pTimerParam->lFlag);
		setWriteDB.AddToByteArray(dwFuture);
		setWriteDB.AddToByteArray(dwCount);
	}
	return true;
}
//! 添加一个硬件信息节点
BOOL HardInfoList::AddNode(tagHardwareInfo &HardwareInfo, BOOL bSendToUser)
{
	if(NULL == m_CurrGroup.pHardwareInfo)
	{
		m_CurrGroup.pHardwareInfo = (tagHardwareInfo*)M_ALLOC(sizeof(tagHardwareInfo) * HARD_INFO_GROUP_NUM);
		m_CurrGroup.dwUseNum = 0;
		if (NULL == m_CurrGroup.pHardwareInfo)
		{
			return FALSE;
		}
	}
	
	if(HARD_INFO_GROUP_NUM <= m_CurrGroup.dwUseNum)
	{
		AddGroup(m_CurrGroup);

		m_CurrGroup.dwUseNum = 0;
		m_CurrGroup.pHardwareInfo = (tagHardwareInfo*)M_ALLOC(sizeof(tagHardwareInfo) * HARD_INFO_GROUP_NUM);
		if (NULL == m_CurrGroup.pHardwareInfo)
		{
			return FALSE;
		}
	}

	m_CurrGroup.pHardwareInfo[m_CurrGroup.dwUseNum] = HardwareInfo;
	++m_CurrGroup.dwUseNum;

	if(bSendToUser)
	{
		CMessage msg(MSG_SCC2SUC_INFO_Notify_AddHardInfo);
		DBWriteSet setWriteSet;
		msg.GetDBWriteSet(setWriteSet);

		setWriteSet.AddToByteArray(m_dwSMID);
		setWriteSet.AddToByteArray(&HardwareInfo, sizeof(tagHardwareInfo));	

		UserManage::GetInstance().SendToAll(ePT_Penniless, msg);
	}

	return TRUE;
}
//! 添加一组硬件信息节点
BOOL HardInfoList::AddNodeList(tagHardwareInfo *pHardwareInfo, LONG lNum)
{
	if(NULL == pHardwareInfo)
		return FALSE;
	for (LONG i = 0; i < lNum; ++i)
	{
		AddNode(pHardwareInfo[i]);
	}

	CMessage msg(MSG_SCC2SUC_INFO_Notify_HardInfoList);
	DBWriteSet setWriteSet;
	msg.GetDBWriteSet(setWriteSet);

	setWriteSet.AddToByteArray(m_dwSMID);
	setWriteSet.AddToByteArray(lNum);
	setWriteSet.AddToByteArray(pHardwareInfo, sizeof(tagHardwareInfo) * lNum);

	UserManage::GetInstance().SendToAll(ePT_Penniless, msg);

	return TRUE;
}
Beispiel #30
0
void CMail::CodeToDataBlockForClient(DBWriteSet& setWriteDB,CPlayer *pPlayer)
{
	time_t t_CurrentTime = time(NULL);
	DWORD dwRemainTime = 0;
	if (GetRemainTime() - t_CurrentTime>0)
	{
		dwRemainTime = (DWORD)(GetRemainTime() - t_CurrentTime);
	} 	
	setWriteDB.AddToByteArray(GetExID());									//邮件的ID

	setWriteDB.AddToByteArray(dwRemainTime);//邮件的有效时间

	setWriteDB.AddToByteArray((DWORD)GetGold());//操作的金钱数

	setWriteDB.AddToByteArray(GetSubject().c_str());//邮件名称
	setWriteDB.AddToByteArray(GetText().c_str());//邮件内容
	setWriteDB.AddToByteArray(GetExText().c_str());//邮件附加内容
	setWriteDB.AddToByteArray(GetWriter().c_str());//邮件发送者名称
	setWriteDB.AddToByteArray((BYTE)GetRead());		   //是否阅读过
	setWriteDB.AddToByteArray((BYTE)GetType());        //类型
	setWriteDB.AddToByteArray((BYTE)GetReject());      //退信标志符


//	setWriteDB.AddToByteArray((long)GetSGood().size());

// 	if (GetSGood().size()>0 && GetType()==REQUEST_MAIL)
// 	{
// 		for (list<tagSGoods*>::iterator it=GetSGood().begin(); it!=GetSGood().end(); ++it)
// 		{
// 			setWriteDB.AddToByteArray((long)(*it)->lIndex);
// 			setWriteDB.AddToByteArray((long)(*it)->lNum);		
// 		}
// 	}
// 	else
// 	{
		setWriteDB.AddToByteArray((long)GetMGoodsContainer().size());
		for (vector<CGoods*>::iterator it=GetMGoodsContainer().begin(); it!=GetMGoodsContainer().end(); ++it)
		{
			(*it)->SerializeForOldClient(setWriteDB);		
		} 	
//	}
	
}