//##类的序列化,用于在游戏服务器之间传输数据 VOID CUseGoodsEnlargeMaxMpState::Serialize( vector<BYTE>& vOut ) { //##是否需要将技能的id和等级都压入? //##这个状态只有技能ID,不需要压入等级,但是有些其他的状态需要等级 _AddToByteArray( &vOut, m_lID ); //##剩余时间 _AddToByteArray( &vOut, GetRemainedTime() ); _AddToByteArray( &vOut, m_dwCoefficient ); }
//##类的序列化,用于在游戏服务器之间传输数据 VOID CExState1::Serialize( vector<BYTE>& vOut ) { //##是否需要将技能的id和等级都压入? //##这个状态只有技能ID,不需要压入等级,但是有些其他的状态需要等级 _AddToByteArray( &vOut, m_lID ); //##剩余时间 m_stStateParam.keeptime = GetRemainedTime(); _AddToByteArray( &vOut, &m_stStateParam, sizeof(tagExState) ); }
//##类的序列化,用于在游戏服务器之间传输数据 VOID CRestoreHpState::Serialize( vector<BYTE>& vOut ) { //##是否需要将技能的id和等级都压入? //##这个状态只有技能ID,不需要压入等级,但是有些其他的状态需要等级 _AddToByteArray( &vOut, m_lID ); //##剩余时间 _AddToByteArray( &vOut, GetRemainedTime() ); //##频率 _AddToByteArray( &vOut, m_dwFrequency ); //##加血量 _AddToByteArray( &vOut, m_dwHPGain ); }
void CFixSummonAI::AI() { if(GetRemainedTime() == 0) { StepEndAI(); return; } else { if(FindEffect(m_vecSummonEffect[0]) == NULL) { CClientRegion *pRegion = GetGame()->GetRegion(); float x = GetPosX(); float y = GetPosY(); float h = pRegion->GetCellHeight(x, y); AddEffect(m_vecSummonEffect[0], x, y, h, true); char strFile[MAX_PATH]; sprintf(strFile, "sounds/skills/%d.wav", m_vecSummonSound[0]); GetGame()->GetAudioList()->Play(strFile, x, y, h); } } }
bool C_TIMER::IsTimeOver() { return GetRemainedTime() == 0; }