ALL of ZModule_HealOverTime.h :
ALL of ZModule_HealOverTime.cpp :Code:#ifndef _ZMODULE_HEALOVERTIME_H #define _ZMODULE_HEALOVERTIME_H #include "ZModule.h" #include "ZModuleID.h" // ステー」タヌ ネ蟶ァソ。 オ郞ュ HPウェ APー。 ネクコケオヌエツ ネソー弴ヲ タァヌム ク・ struct ZHealInfo { float fBeginTime; // ネ・ステタロヌム ステー」 float fNextHealTime; // エルタスケ・ネ・ゲタサ ステー」 float fHeal; // 1ネク ネクコケキョ int numHealDesire; // テム ク・ ネクコケネスシ・ int numHealDone; // ヌ・ネクコケヌム ネスシ・ MMatchDamageType type; MMatchItemEffectId nEffectId; int nItemId; // ネソー弴ヲ タマタクナイ セニタフナロID bool bOnHeal; // ネ・ゲー・タヨエツ チ゚タホー。 }; class ZModule_HealOverTime : public ZModule { private: list<ZHealInfo *> m_Heals; void RemoveEndedHeal(); void ClearHeal(); public: DECLARE_ID(ZMID_HEALOVERTIME) ZModule_HealOverTime(); ~ZModule_HealOverTime(); virtual bool Update(float fElapsed); virtual void InitStatus(); void BeginHeal(MMatchDamageType type, int nHealAmount, int numHeal, MMatchItemEffectId effectId, int nItemId); // bool IsOnHeal() { return m_bOnHeal.Ref(); } // float GetHealBeginTime() { return m_fBeginTime.Ref(); } bool GetHealOverTimeBuffInfo(vector<MTD_BuffInfo> &vecOut); void ShiftFugitiveValues(); }; #endif
ZMyCharacter.cpp - ZMyCharacter::MakeBuffEffectBlob() :Code:#include "stdafx.h" #include "ZModule_HealOverTime.h" #include "ZGame.h" #include "ZApplication.h" #include "ZModule_HPAP.h" int GetEffectLevel(); ZModule_HealOverTime::ZModule_HealOverTime() { ClearHeal(); } ZModule_HealOverTime::~ZModule_HealOverTime() { ClearHeal(); } void ZModule_HealOverTime::InitStatus() { Active(false); } bool ZModule_HealOverTime::Update(float fElapsed) { ZCharacter* pChar = MDynamicCast(ZCharacter, m_pContainer); if (!pChar) _ASSERT(0); else { for(list<ZHealInfo *>::iterator i = m_Heals.begin(); i != m_Heals.end(); i++) { ZHealInfo *pInfo = (*i); if(ZGetGame()->GetTime() > pInfo->fNextHealTime) { pInfo->fNextHealTime += 1.f; pInfo->numHealDone += 1; if(pChar->IsDie()) { pInfo->bOnHeal = false; } else { switch (pInfo->type) { case MMDT_HEAL: pChar->SetHP( min( pChar->GetHP() + pInfo->fHeal, pChar->GetMaxHP() ) ); break; case MMDT_REPAIR: pChar->SetAP( min( pChar->GetAP() + pInfo->fHeal, pChar->GetMaxAP() ) ); break; default: _ASSERT(0); } ZGetEffectManager()->AddPotionEffect( pChar->GetPosition(), pChar, pInfo->nEffectId ); } } if(pInfo->numHealDone == pInfo->numHealDesire) { pInfo->bOnHeal = false; } } } RemoveEndedHeal(); return true; } void ZModule_HealOverTime::BeginHeal(MMatchDamageType type, int nHealAmount, int numHeal, MMatchItemEffectId effectId, int nItemId) { if (type != MMDT_HEAL && type != MMDT_REPAIR) { _ASSERT(0); return; } ZHealInfo *pNew = new ZHealInfo; pNew->type = type; pNew->nEffectId = effectId; float fCurrTime = ZGetGame()->GetTime(); pNew->fBeginTime = fCurrTime; pNew->fHeal = (float)nHealAmount; pNew->numHealDesire = numHeal; pNew->numHealDone = 0; pNew->fNextHealTime = fCurrTime; pNew->bOnHeal = true; pNew->nItemId = nItemId; m_Heals.push_back(pNew); Active(); } bool ZModule_HealOverTime::GetHealOverTimeBuffInfo(vector<MTD_BuffInfo> &vecOut) { for(list<ZHealInfo *>::iterator i = m_Heals.begin(); i != m_Heals.end(); i++) { ZHealInfo *pInfo = (*i); MTD_BuffInfo temp; temp.nItemId = pInfo->nItemId; temp.nRemainedTime = pInfo->numHealDesire - pInfo->numHealDone; vecOut.push_back(temp); } return true; } void ZModule_HealOverTime::ShiftFugitiveValues() { // Nothing. } void ZModule_HealOverTime::RemoveEndedHeal() { list<ZHealInfo *>::iterator i = m_Heals.begin(); while(i != m_Heals.end()) { if((*i)->bOnHeal == false) { delete (*i); i = m_Heals.erase(i); } else i++; } } void ZModule_HealOverTime::ClearHeal() { for(list<ZHealInfo *>::iterator i = m_Heals.begin(); i != m_Heals.end(); i++) delete (*i); m_Heals.clear(); }
Code:....... if (((ZModule_Movable*)pMod)->GetHasteBuffInfo(tempBuffInfo)) vec.push_back(tempBuffInfo); } if (pMod = GetModule(ZMID_HEALOVERTIME)) { // if (((ZModule_HealOverTime*)pMod)->GetHealOverTimeBuffInfo(tempBuffInfo)) // vec.push_back(tempBuffInfo); ((ZModule_HealOverTime*)pMod)->GetHealOverTimeBuffInfo(vec); } int num = (int)vec.size(); if (num == 0) return NULL; .......
Usage :spam your vials.



Reply With Quote


