//! 响应物品移除 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; }
//// 添加到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; }
bool CGoods::tagAddonProperty::Serialize(DBWriteSet& setWriteDB, bool b) { setWriteDB.AddToByteArray( static_cast<ulong>(gapType) ); setWriteDB.AddToByteArray(lValues[0]); setWriteDB.AddToByteArray(lValues[1]); return true; }
//! ±àÂë 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; }
// ½±ÀøÐÅÏ¢±àÂë 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)); }
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; }
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 ); } }
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 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; }
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; }
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 ) ); } } }
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; }
//! 发送自身信息到客户端 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 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 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) ); } } }
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; }
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 ); }
// 添加到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; }
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); } // } }
// 到添加到DataBlock为客户端 bool stModuParam::CodeToDataBlockForClient(DBWriteSet& setWriteDB,ModuleType eType) { //添加id和等级 setWriteDB.AddToByteArray((long)nID); setWriteDB.AddToByteArray((long)nLvl); //如果是状态添加第一个定时器剩余时间到客户端 if(eType == ModuType_Buff || eType == ModuType_DeBuff) { stModuParam::itTimer it = Timers.begin(); if( it!=Timers.end() ) { stTimerParam *pTimerParam = (*it); DWORD dwRemainTime = pTimerParam->lFuture+pTimerParam->lInter*(pTimerParam->nCount-pTimerParam->nCalledCount); setWriteDB.AddToByteArray(dwRemainTime); } else { setWriteDB.AddToByteArray((DWORD)0); } } return true; }