您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GetSpellRecoveryTime函数代码示例

51自学网 2021-06-01 21:15:18
  C++
这篇教程C++ GetSpellRecoveryTime函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GetSpellRecoveryTime函数的典型用法代码示例。如果您正苦于以下问题:C++ GetSpellRecoveryTime函数的具体用法?C++ GetSpellRecoveryTime怎么用?C++ GetSpellRecoveryTime使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

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

示例1: HandleScript

            void HandleScript(SpellEffIndex /*effIndex*/)            {                Player* caster = GetCaster()->ToPlayer();                if (!caster)                    return;                SpellEntry const* spellInfo = GetSpellInfo();                caster->AddSpellCooldown(spellInfo->Id, NULL, time(NULL) + GetSpellRecoveryTime(sSpellStore.LookupEntry(SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER)) / IN_MILLISECONDS);                WorldPacket data(SMSG_SPELL_COOLDOWN, 8+1+4);                data << uint64(caster->GetGUID());                data << uint8(0);                data << uint32(spellInfo->Id);                data << uint32(0);                caster->GetSession()->SendPacket(&data);            }
开发者ID:Belzac,项目名称:TrinityCore,代码行数:15,


示例2: GetSpellDuration

uint32 PetAI::GetSpellType(PetAutoSpellType type){    if (type >= PET_SPELL_MAX || m_spellType[type].empty())        return 0;    std::vector<uint32> tmpSet;    for (Unit::SpellIdSet::const_iterator itr = m_spellType[type].begin(); itr != m_spellType[type].end(); ++itr)    {        uint32 _spellID = *itr;        if (!_spellID)            continue;        SpellEntry const* spellInfo = sSpellStore.LookupEntry(_spellID);        if (!spellInfo)            continue;        if (m_creature->GetCharmInfo() && m_creature->GetCharmInfo()->GetGlobalCooldownMgr().HasGlobalCooldown(spellInfo))            continue;        if (m_creature->HasSpellCooldown(spellInfo))            continue;        if (IsInCombat() && IsNonCombatSpell(spellInfo))            continue;        if (!IsInCombat() && IsPositiveSpell(spellInfo) && !IsNonCombatSpell(spellInfo))        {            int32 duration = GetSpellDuration(spellInfo);//            if ((spellInfo->manaCost || spellInfo->ManaCostPercentage || spellInfo->manaPerSecond) && duration > 0)//                continue;            // allow only spell without cooldown > duration            int32 cooldown = GetSpellRecoveryTime(spellInfo);            if (cooldown >= 0 && duration >= 0 && cooldown > duration)                continue;        }        tmpSet.push_back(_spellID);    }    if (tmpSet.empty())        return 0;    else        return tmpSet[urand(0, tmpSet.size() - 1)];}
开发者ID:Jojo2323,项目名称:mangos3,代码行数:46,


示例3: HandleDummy

    void HandleDummy(SpellEffIndex effIndex)    {        Unit *caster = GetCaster();        if (caster->GetTypeId() != TYPEID_PLAYER)            return;        // immediately finishes the cooldown on Frost spells        const SpellCooldowns& cm = caster->ToPlayer()->GetSpellCooldownMap();        for (SpellCooldowns::const_iterator itr = cm.begin(); itr != cm.end();)        {            SpellEntry const *spellInfo = sSpellStore.LookupEntry(itr->first);            if (spellInfo->SpellFamilyName == SPELLFAMILY_MAGE &&                (GetSpellSchoolMask(spellInfo) & SPELL_SCHOOL_MASK_FROST) &&                spellInfo->Id != SPELL_MAGE_COLD_SNAP && GetSpellRecoveryTime(spellInfo) > 0)            {                caster->ToPlayer()->RemoveSpellCooldown((itr++)->first, true);            }            else                ++itr;        }    }
开发者ID:Archives,项目名称:ro_core,代码行数:23,


示例4: UpdateAllies

//.........这里部分代码省略.........        for (uint8 i = 0; i < m_creature->GetPetAutoSpellSize(); ++i)        {            uint32 spellID = m_creature->GetPetAutoSpellOnPos(i);            if (!spellID)                continue;            SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellID);            if (!spellInfo)                continue;            if (m_creature->GetCharmInfo() && m_creature->GetCharmInfo()->GetGlobalCooldownMgr().HasGlobalCooldown(spellInfo))                continue;            // ignore some combinations of combat state and combat/noncombat spells            if (!inCombat)            {                // ignore attacking spells, and allow only self/around spells                if (!IsPositiveSpell(spellInfo->Id))                    continue;                // non combat spells allowed                // only pet spells have IsNonCombatSpell and not fit this reqs:                // Consume Shadows, Lesser Invisibility, so ignore checks for its                if (!IsNonCombatSpell(spellInfo))                {                    // allow only spell without spell cost or with spell cost but not duration limit                    int32 duration = GetSpellDuration(spellInfo);                    SpellPowerEntry const* spellPower = spellInfo->GetSpellPower();                    if (spellPower && (spellPower->manaCost || spellPower->ManaCostPercentage || spellPower->manaPerSecond) && duration > 0)                        continue;                    // allow only spell without cooldown > duration                    int32 cooldown = GetSpellRecoveryTime(spellInfo);                    if (cooldown >= 0 && duration >= 0 && cooldown > duration)                        continue;                }            }            else            {                // just ignore non-combat spells                if (IsNonCombatSpell(spellInfo))                    continue;            }            Spell* spell = new Spell(m_creature, spellInfo, false);            if (inCombat && !m_creature->hasUnitState(UNIT_STAT_FOLLOW) && spell->CanAutoCast(m_creature->getVictim()))            {                targetSpellStore.push_back(TargetSpellList::value_type(m_creature->getVictim(), spell));                continue;            }            else            {                bool spellUsed = false;                for (GuidSet::const_iterator tar = m_AllySet.begin(); tar != m_AllySet.end(); ++tar)                {                    Unit* Target = m_creature->GetMap()->GetUnit(*tar);                    // only buff targets that are in combat, unless the spell can only be cast while out of combat                    if (!Target)                        continue;                    if (spell->CanAutoCast(Target))                    {                        targetSpellStore.push_back(TargetSpellList::value_type(Target, spell));
开发者ID:ErYayo,项目名称:mangos-cata,代码行数:67,


示例5: UpdateAllies

//.........这里部分代码省略.........        {            uint32 spellID = m_creature->GetPetAutoSpellOnPos(i);            if (!spellID)                continue;            SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellID);            if (!spellInfo)                continue;            if (m_creature->GetCharmInfo() && m_creature->GetCharmInfo()->GetGlobalCooldownMgr().HasGlobalCooldown(spellInfo))                continue;            if (m_creature->HasSpellCooldown(spellInfo))                continue;            // ignore some combinations of combat state and combat/noncombat spells            if (!inCombat)            {                // ignore attacking spells, and allow only self/around spells                if (!IsPositiveSpell(spellInfo->Id))                    continue;                // non combat spells allowed                // only pet spells have IsNonCombatSpell and not fit this reqs:                // Consume Shadows, Lesser Invisibility, so ignore checks for its                if (!IsNonCombatSpell(spellInfo))                {                    // allow only spell without spell cost or with spell cost but not duration limit                    int32 duration = GetSpellDuration(spellInfo);                    if ((spellInfo->manaCost || spellInfo->ManaCostPercentage || spellInfo->manaPerSecond) && duration > 0)                        continue;                    // allow only spell without cooldown > duration                    int32 cooldown = GetSpellRecoveryTime(spellInfo);                    if (cooldown >= 0 && duration >= 0 && cooldown > duration)                        continue;                }            }            else            {                // just ignore non-combat spells                if (IsNonCombatSpell(spellInfo))                    continue;            }            Unit* autoCastTarget = NULL;            if (inCombat && m_creature->getVictim() && !m_creature->hasUnitState(UNIT_STAT_FOLLOW))            {                SpellCastResult result = CanAutoCast(m_creature->getVictim(), spellInfo);                if (result == SPELL_CAST_OK || result == SPELL_FAILED_UNIT_NOT_INFRONT)                    autoCastTarget = m_creature->getVictim();            }            if (!autoCastTarget)            {                for (GuidSet::const_iterator tar = m_AllySet.begin(); tar != m_AllySet.end(); ++tar)                {                    Unit* target = m_creature->GetMap()->GetUnit(*tar);                    // Only buff targets that are in combat, unless the spell can only be cast while out of combat                    if (!target)                        continue;                    SpellCastResult result = CanAutoCast(target, spellInfo);                    if (result == SPELL_CAST_OK || result == SPELL_FAILED_UNIT_NOT_INFRONT)
开发者ID:Kuvaldin,项目名称:mangos,代码行数:67,


示例6: UpdateAllies

//.........这里部分代码省略.........    // Auto cast (casted only in combat or persistent spells in any state)    else if (!m_unit->IsNonMeleeSpellCasted(false))    {        typedef std::vector<std::pair<Unit*, Spell*> > TargetSpellList;        TargetSpellList targetSpellStore;        if (pet)        {            for (uint8 i = 0; i < pet->GetPetAutoSpellSize(); ++i)            {                uint32 spellID = pet->GetPetAutoSpellOnPos(i);                if (!spellID)                    continue;                SpellEntry const* spellInfo = sSpellTemplate.LookupEntry<SpellEntry>(spellID);                if (!spellInfo)                    continue;                if (!m_unit->IsSpellReady(*spellInfo))                    continue;                // ignore some combinations of combat state and combat/non combat spells                if (!inCombat)                {                    // ignore attacking spells, and allow only self/around spells                    if (!IsPositiveSpell(spellInfo->Id))                        continue;                    // non combat spells allowed                    // only pet spells have IsNonCombatSpell and not fit this requirements:                    // Consume Shadows, Lesser Invisibility, so ignore checks for its                    if (!IsNonCombatSpell(spellInfo))                    {                        int32 duration = GetSpellDuration(spellInfo);                        int32 cooldown = GetSpellRecoveryTime(spellInfo);                        // allow only spell not on cooldown                        if (cooldown != 0 && duration < cooldown)                            continue;                        // not allow instant kill auto casts as full health cost                        if (IsSpellHaveEffect(spellInfo, SPELL_EFFECT_INSTAKILL))                            continue;                    }                }                // just ignore non-combat spells                else if (IsNonCombatSpell(spellInfo))                    continue;                Spell* spell = new Spell(m_unit, spellInfo, false);                if (inCombat && !m_unit->hasUnitState(UNIT_STAT_FOLLOW) && spell->CanAutoCast(victim))                {                    targetSpellStore.push_back(TargetSpellList::value_type(victim, spell));                    continue;                }                else                {                    bool spellUsed = false;                    for (GuidSet::const_iterator tar = m_AllySet.begin(); tar != m_AllySet.end(); ++tar)                    {                        Unit* Target = m_unit->GetMap()->GetUnit(*tar);                        // only buff targets that are in combat, unless the spell can only be cast while out of combat                        if (!Target)                            continue;
开发者ID:conan513,项目名称:mangos-wotlk,代码行数:66,


示例7: UpdateAllies

//.........这里部分代码省略.........    }    // Autocast (casted only in combat or persistent spells in any state)    else if (!m_creature->IsNonMeleeSpellCasted(false))    {        typedef std::vector<std::pair<Unit*, Spell*> > TargetSpellList;        TargetSpellList targetSpellStore;        for (uint8 i = 0; i < m_creature->GetPetAutoSpellSize(); ++i)        {            uint32 spellID = m_creature->GetPetAutoSpellOnPos(i);            if (!spellID)                continue;            SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellID);            if (!spellInfo)                continue;            if (m_creature->GetCharmInfo() && m_creature->GetCharmInfo()->GetGlobalCooldownMgr().HasGlobalCooldown(spellInfo))                continue;            // ignore some combinations of combat state and combat/noncombat spells            if (!inCombat)            {                // ignore attacking spells, and allow only self/around spells                if (!IsPositiveSpell(spellInfo->Id))                    continue;                // non combat spells allowed                // only pet spells have IsNonCombatSpell and not fit this reqs:                // Consume Shadows, Lesser Invisibility, so ignore checks for its                if (!IsNonCombatSpell(spellInfo))                {                    int32 duration = GetSpellDuration(spellInfo);                    int32 cooldown = GetSpellRecoveryTime(spellInfo);                    // allow only spell not on cooldown                    if (cooldown != 0 && duration < cooldown)                        continue;                    // not allow instant kill autocasts as full health cost                    if (IsSpellHaveEffect(spellInfo, SPELL_EFFECT_INSTAKILL))                        continue;                }            }            // just ignore non-combat spells            else if (IsNonCombatSpell(spellInfo))                continue;            Spell* spell = new Spell(m_creature, spellInfo, false);            if (inCombat && !m_creature->hasUnitState(UNIT_STAT_FOLLOW) && spell->CanAutoCast(m_creature->getVictim()))            {                targetSpellStore.push_back(TargetSpellList::value_type(m_creature->getVictim(), spell));                continue;            }            else            {                bool spellUsed = false;                for (GuidSet::const_iterator tar = m_AllySet.begin(); tar != m_AllySet.end(); ++tar)                {                    Unit* Target = m_creature->GetMap()->GetUnit(*tar);                    // only buff targets that are in combat, unless the spell can only be cast while out of combat                    if (!Target)                        continue;
开发者ID:Ccaz,项目名称:mangos-tbc,代码行数:66,


示例8: UpdateAllies

//.........这里部分代码省略.........        {            uint32 spellID = m_creature->GetPetAutoSpellOnPos(i);            if (!spellID)                continue;            SpellEntry const *spellInfo = sSpellMgr.GetSpellEntry(spellID);            if (!spellInfo)                continue;            if (m_creature->GetGlobalCooldownMgr().HasGlobalCooldown(spellInfo))                continue;            // check spell cooldown            if (m_creature->HasSpellCooldown(spellInfo->Id))                continue;            if (IsPositiveSpell(spellInfo->Id))            {                if (!IsNonCombatSpell(spellInfo)) // Can be used in combat.                {                    /*                    Spells handled here:                        Dash (1850), Dive (23145), Furious Howl (24604), Tainted Blood (19478)                        Blood Pact (6307), Fire Shield (11771), Sacrifice ...                        Consume Shadows (17767)                    */                    // Warlock Sacrifice: do not auto cast if not in combat                    bool castOnlyInCombat = IsSpellHaveEffect(spellInfo, SPELL_EFFECT_INSTAKILL);                    if (!castOnlyInCombat)                    {                        int32 duration = GetSpellDuration(spellInfo);                        int32 cooldown = GetSpellRecoveryTime(spellInfo);                        // Keep this spell for when we will be in combat.                        if (cooldown >= 0 && duration >= 0 && cooldown > duration)                            castOnlyInCombat = true;                    }                    // 19478 - Tainted Blood, rank 1 enUS                    if (spellInfo->SpellIconID == 153)                        castOnlyInCombat = true;                    // 2947 - Fire Shield, rank 1 enUS                    // When set to auto-cast, the Imp will cast this on any party members within 30 yds if they receive a melee attack.                    if (spellInfo->IsFitToFamily<SPELLFAMILY_WARLOCK, CF_WARLOCK_IMP_BUFFS>() && spellInfo->SpellVisual == 289)                        castOnlyInCombat = false;                    // Furious Howl: in combat only                    if (IsSpellHaveAura(spellInfo, SPELL_AURA_MOD_DAMAGE_DONE))                        castOnlyInCombat = true;                    if (castOnlyInCombat && !m_creature->getVictim())                        continue;                }                Spell *spell = new Spell(m_creature, spellInfo, false);                bool spellUsed = false;                // Some spells can target enemy or friendly (DK Ghoul's Leap)                // Check for enemy first (pet then owner)                Unit* target = m_creature->getAttackerForHelper();                if (!target && owner)                    target = owner->getAttackerForHelper();                if (target)                {                    if (CanAttack(target) && spell->CanAutoCast(target))                    {                        targetSpellStore.push_back(std::make_pair(target, spell));
开发者ID:Maduse,项目名称:server,代码行数:67,


示例9: UpdateAllies

//.........这里部分代码省略.........        else if(m_creature->GetCharmInfo()->HasState(CHARM_STATE_COMMAND,COMMAND_FOLLOW))        {            if (!m_creature->hasUnitState(UNIT_STAT_FOLLOW) )            {                m_creature->GetMotionMaster()->MoveFollow(owner,PET_FOLLOW_DIST, m_creature->IsPet() ? ((Pet*)m_creature)->GetPetFollowAngle() : PET_FOLLOW_ANGLE);            }        }    }    // Autocast (casted only in combat or persistent spells in any state)    if (!m_creature->IsNonMeleeSpellCasted(false) && !m_creature->GetObjectGuid().IsVehicle())    {        typedef std::vector<std::pair<ObjectGuid, uint32> > TargetSpellList;        TargetSpellList targetSpellStore;        for (uint8 i = 0; i < m_creature->GetPetAutoSpellSize(); ++i)        {            uint32 spellID = m_creature->GetPetAutoSpellOnPos(i);            if (!spellID)                continue;            SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellID);            if (!spellInfo)                continue;            if (m_creature->GetCharmInfo() && m_creature->GetCharmInfo()->GetGlobalCooldownMgr().HasGlobalCooldown(spellInfo))                continue;            // ignore some combinations of combat state and combat/noncombat spells            if (!inCombat)            {                // ignore attacking spells, and allow only self/around spells                if (!IsPositiveSpell(spellInfo->Id))                    continue;                // non combat spells allowed                // only pet spells have IsNonCombatSpell and not fit this reqs:                // Consume Shadows, Lesser Invisibility, so ignore checks for its                if (!IsNonCombatSpell(spellInfo))                {                    // allow only spell without spell cost or with spell cost but not duration limit                    int32 duration = GetSpellDuration(spellInfo);                    if ((spellInfo->manaCost || spellInfo->ManaCostPercentage || spellInfo->manaPerSecond) && duration > 0)                        continue;                    // allow only spell without cooldown > duration                    int32 cooldown = GetSpellRecoveryTime(spellInfo);                    if (cooldown >= 0 && duration >= 0 && cooldown > duration)                        continue;                }            }            else            {                // just ignore non-combat spells                if (IsNonCombatSpell(spellInfo))                    continue;            }            if (inCombat && m_creature->getVictim() && !m_creature->hasUnitState(UNIT_STAT_FOLLOW) && CanAutoCast(m_creature->getVictim(), spellInfo))            {                targetSpellStore.push_back(TargetSpellList::value_type(m_creature->getVictim()->GetObjectGuid(), spellInfo->Id));                continue;            }            else            {                for (AllySet::const_iterator tar = m_AllySet.begin(); tar != m_AllySet.end(); ++tar)                {                    Unit* Target = m_creature->GetMap()->GetUnit(*tar);                    //only buff targets that are in combat, unless the spell can only be cast while out of combat                    if (!Target)                        continue;                    if (CanAutoCast(Target, spellInfo))                    {                        targetSpellStore.push_back(TargetSpellList::value_type(Target->GetObjectGuid(), spellInfo->Id));                        break;                    }                }            }        }        //found units to cast on to        if (!targetSpellStore.empty())        {            uint32 index = urand(0, targetSpellStore.size() - 1);            uint32 spellId         = targetSpellStore[index].second;            ObjectGuid  targetGuid = targetSpellStore[index].first;            if (Unit* target = m_creature->GetMap()->GetUnit(targetGuid))            {                m_creature->DoPetCastSpell(target, spellId);            }            targetSpellStore.erase(targetSpellStore.begin() + index);        }        targetSpellStore.clear();    }}
开发者ID:Bootz,项目名称:mangos,代码行数:101,



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


C++ GetSpellStore函数代码示例
C++ GetSpellRangeStore函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。