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

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

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

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

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

示例1: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (!UpdateVictim() || !CheckInRoom())                return;            events.Update(diff);            while (uint32 eventId = events.ExecuteEvent())            {                switch(eventId)                {                    case EVENT_IMPALE:                        //Cast Impale on a random target                        //Do NOT cast it when we are afflicted by locust swarm                        if (!me->HasAura(RAID_MODE(SPELL_LOCUST_SWARM_10,SPELL_LOCUST_SWARM_25)))                            if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))                                DoCast(pTarget, RAID_MODE(SPELL_IMPALE_10,SPELL_IMPALE_25));                        events.ScheduleEvent(EVENT_IMPALE, urand(10000,20000));                        break;                    case EVENT_LOCUST:                        // TODO : Add Text                        DoCast(me, RAID_MODE(SPELL_LOCUST_SWARM_10,SPELL_LOCUST_SWARM_25));                        DoSummon(MOB_CRYPT_GUARD, GuardSummonPos, 0, TEMPSUMMON_CORPSE_DESPAWN);                        events.ScheduleEvent(EVENT_LOCUST, 90000);                        break;                    case EVENT_SPAWN_GUARDIAN_NORMAL:                        // TODO : Add Text                        DoSummon(MOB_CRYPT_GUARD, GuardSummonPos, 0, TEMPSUMMON_CORPSE_DESPAWN);                        break;                    case EVENT_BERSERK:                        DoCast(me, SPELL_BERSERK, true);                        events.ScheduleEvent(EVENT_BERSERK, 600000);                        break;                }            }            DoMeleeAttackIfReady();        }
开发者ID:InkVisible,项目名称:wow,代码行数:38,


示例2: UpdateAI

            void UpdateAI(const uint32 diff)            {                if (!UpdateVictim() || !CheckInRoom())                    return;                events.Update(diff);                if (me->HasUnitState(UNIT_STAT_CASTING))                    return;                while (uint32 eventId = events.ExecuteEvent())                {                    switch (eventId)                    {                        case EVENT_SLIME_SPRAY:                            if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true))                            {                                DoSummon(NPC_OOZE_SPRAY_STALKER, *target, 8000, TEMPSUMMON_TIMED_DESPAWN);                                Talk(EMOTE_SLIME_SPRAY);                                DoCast(me, SPELL_SLIME_SPRAY);                            }                            events.ScheduleEvent(EVENT_SLIME_SPRAY, 20000);                            break;                        case EVENT_HASTEN_INFECTIONS:                            if (infectionStage++ < 4)                            {                                infectionCooldown -= 2000;                                events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90000);                            }                            break;                        case EVENT_MUTATED_INFECTION:                        {                            Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -MUTATED_INFECTION);                            if (!target)                                target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true, -MUTATED_INFECTION);                            if (target)                            {                                me->CastCustomSpell(SPELL_MUTATED_INFECTION, SPELLVALUE_MAX_TARGETS, 1, target, false);                                Talk(EMOTE_MUTATED_INFECTION, target->GetGUID());                            }                            events.ScheduleEvent(EVENT_MUTATED_INFECTION, infectionCooldown);                            break;                        }                        default:                            break;                    }                }                DoMeleeAttackIfReady();            }
开发者ID:Archives,项目名称:MMOCore,代码行数:50,


示例3: EnterCombat

            void EnterCombat(Unit* /*who*/) override            {                for (uint32 i = 0; i < POS_LIVE; ++i)                    if (Creature* trigger = DoSummon(WORLD_TRIGGER, PosSummonLive[i]))                        LiveTriggerGUID.push_back(trigger->GetGUID());                for (uint32 i = 0; i < POS_DEAD; ++i)                    if (Creature* trigger = DoSummon(WORLD_TRIGGER, PosSummonDead[i]))                        DeadTriggerGUID.push_back(trigger->GetGUID());                if (LiveTriggerGUID.size() < POS_LIVE || DeadTriggerGUID.size() < POS_DEAD)                {                    TC_LOG_ERROR("scripts", "Script Gothik: cannot summon triggers!");                    EnterEvadeMode();                    return;                }                _EnterCombat();                waveCount = 0;                events.ScheduleEvent(EVENT_SUMMON, 30000);                DoTeleportTo(PosPlatform);                Talk(SAY_SPEECH);                instance->SetData(DATA_GOTHIK_GATE, GO_STATE_READY);            }
开发者ID:AllThing,项目名称:TrinityCore,代码行数:23,


示例4: UpdateAI

    void UpdateAI(const uint32 diff)    {        if (pInstance && pInstance->GetData(DATA_REMOVE_NPC) == 1)        {            me->ForcedDespawn();            pInstance->SetData(DATA_REMOVE_NPC, 0);        }        if (uiSpawnTimer <= diff)        {            if (bPortalGuardianOrKeeperSpawn)            {                uint8 k = pInstance && pInstance->GetData(DATA_WAVE_COUNT) < 12 ? 2 : 3;                for (uint8 i = 0; i < k; ++i)                {                    uint32 entry = RAND(CREATURE_AZURE_CAPTAIN,CREATURE_AZURE_RAIDER,CREATURE_AZURE_STALKER,CREATURE_AZURE_SORCEROR);                    if (Creature* pSummon = DoSummon(entry, me, 2.0f, 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT))                        pSummon->GetMotionMaster()->MovePoint(0, DoorPosition);                }            }            else            {                bPortalGuardianOrKeeperSpawn = true;                uint32 entry = RAND(CREATURE_PORTAL_GUARDIAN, CREATURE_PORTAL_KEEPER);                if (Creature *pPortalKeeper = DoSummon(entry, me, 2.0f, 0, TEMPSUMMON_DEAD_DESPAWN))                    me->CastSpell(pPortalKeeper, SPELL_PORTAL_CHANNEL, false);            }            uiSpawnTimer = SPAWN_TIME;        } else uiSpawnTimer -= diff;        if (bPortalGuardianOrKeeperSpawn && !me->IsNonMeleeSpellCasted(false))        {            me->Kill(me, false);            me->RemoveCorpse();            return;        }    }
开发者ID:Asandru,项目名称:Script-Land,代码行数:37,


示例5: UpdateAI

    void UpdateAI(const uint32 uiDiff) override    {        if (m_uiTimer < uiDiff)        {            switch (m_uiWave)            {            case 0:                DoSummon(0);                m_uiTimer = 15000;                ++m_uiWave;                break;            case 1:                DoSummon(1);                DoSummon(2);                m_uiTimer = 15000;                ++m_uiWave;                break;            case 2:                {                    DoSummon(3);                    m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED | UNIT_FLAG_PASSIVE);                    m_creature->SetVisibility(VISIBILITY_ON);                    if (auto pPlayer = m_creature->GetMap()->GetPlayer(m_PlayerGuid))                    {                        if (pPlayer->isAlive())                            m_creature->AI()->AttackStart(pPlayer);                    }                    ++m_uiWave;                }                break;            }        }        else            m_uiTimer -= uiDiff;        ScriptedAI::UpdateAI(uiDiff);    }
开发者ID:Maduse,项目名称:server,代码行数:37,


示例6: UpdateAI

        void UpdateAI(const uint32 diff)        {            //Return since we have no target            if (!UpdateVictim())                return;            if (uiSpawnTimer <= diff)            {                uint32 spawnNumber = urand(2, DUNGEON_MODE(3, 5));                for (uint8 i = 0; i < spawnNumber; ++i)                    DoSummon(RAND(NPC_DRAKKARI_INVADER_1, NPC_DRAKKARI_INVADER_2), AddSpawnPoint, 0, TEMPSUMMON_DEAD_DESPAWN);                uiSpawnTimer = urand(30*IN_MILLISECONDS, 40*IN_MILLISECONDS);            } else uiSpawnTimer -= diff;            if (uiConsumeTimer <= diff)            {                DoScriptText(SAY_CONSUME, me);                DoCast(SPELL_CONSUME);                uiConsumeTimer = 15*IN_MILLISECONDS;            } else uiConsumeTimer -= diff;            if (consumptionJunction)            {                Aura* ConsumeAura = me->GetAura(DUNGEON_MODE(SPELL_CONSUME_AURA, H_SPELL_CONSUME_AURA));                if (ConsumeAura && ConsumeAura->GetStackAmount() > 9)                    consumptionJunction = false;            }            if (uiCrushTimer <= diff)            {                DoCastVictim(SPELL_CRUSH);                uiCrushTimer = urand(10*IN_MILLISECONDS, 15*IN_MILLISECONDS);            } else uiCrushTimer -= diff;            if (uiInfectedWoundTimer <= diff)            {                DoCastVictim(SPELL_INFECTED_WOUND);                uiInfectedWoundTimer = urand(25*IN_MILLISECONDS, 35*IN_MILLISECONDS);            } else uiInfectedWoundTimer -= diff;            if (uiExplodeCorpseTimer <= diff)            {                DoCast(SPELL_CORPSE_EXPLODE);                DoScriptText(SAY_EXPLODE, me);                uiExplodeCorpseTimer = urand(15*IN_MILLISECONDS, 19*IN_MILLISECONDS);            } else uiExplodeCorpseTimer -= diff;            DoMeleeAttackIfReady();        }
开发者ID:Rouen-X,项目名称:SkyFireEMU,代码行数:49,


示例7: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (!UpdateVictimWithGaze() || !CheckInRoom())                return;            events.Update(diff);            while (uint32 eventId = events.ExecuteEvent())            {                switch (eventId)                {                    case EVENT_WOUND:                        DoCast(me->getVictim(), SPELL_MORTAL_WOUND);                        events.ScheduleEvent(EVENT_WOUND, 10000);                        break;                    case EVENT_ENRAGE:                        // TODO : Add missing text                        DoCast(me, SPELL_ENRAGE);                        events.ScheduleEvent(EVENT_ENRAGE, 15000);                        break;                    case EVENT_DECIMATE:                        // TODO : Add missing text                        DoCastAOE(SPELL_DECIMATE);                        events.ScheduleEvent(EVENT_DECIMATE, 105000);                        break;                    case EVENT_BERSERK:                        DoCast(me, SPELL_BERSERK);                        events.ScheduleEvent(EVENT_BERSERK, 5*60000);                        break;                    case EVENT_SUMMON:                        for (int32 i = 0; i < RAID_MODE(1, 2); ++i)                            DoSummon(MOB_ZOMBIE, PosSummon[rand() % RAID_MODE(1, 3)]);                        events.ScheduleEvent(EVENT_SUMMON, 10000);                        break;                }            }            if (me->getVictim() && me->getVictim()->GetEntry() == MOB_ZOMBIE)            {                if (me->IsWithinMeleeRange(me->getVictim()))                {                    me->Kill(me->getVictim());                    me->ModifyHealth(int32(me->CountPctFromMaxHealth(5)));                }            }            else                DoMeleeAttackIfReady();        }
开发者ID:Eralan,项目名称:Darkcore,代码行数:48,


示例8: boss_flame_leviathanAI

        boss_flame_leviathanAI(Creature *pCreature) : BossAI(pCreature, BOSS_LEVIATHAN), vehicle(me->GetVehicleKit())        {            assert(vehicle);            pInstance = pCreature->GetInstanceScript();            ColossusCount = 0;            me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);            me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true);  // Death Grip                    me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);            me->SetReactState(REACT_PASSIVE);        // Summon Ulduar Colossus        if (me->isAlive())            for(uint32 i = 0; i < 2; ++i)                DoSummon(MOB_COLOSSUS, PosColossus[i], 7000, TEMPSUMMON_CORPSE_TIMED_DESPAWN);    	}
开发者ID:InkVisible,项目名称:wow,代码行数:16,


示例9: UpdateAI

        void UpdateAI(uint32 diff) override        {            if (!UpdateVictim())                return;            events.Update(diff);            if (me->HasUnitState(UNIT_STATE_CASTING))                return;            while (uint32 eventId = events.ExecuteEvent())            {                switch (eventId)                {                case EVENT_SLIME_SPRAY:                    if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true))                    {                        DoSummon(NPC_OOZE_SPRAY_STALKER, *target, 8000, TEMPSUMMON_TIMED_DESPAWN);                        Talk(EMOTE_SLIME_SPRAY);                        DoCast(me, SPELL_SLIME_SPRAY);                    }                    events.ScheduleEvent(EVENT_SLIME_SPRAY, 20000);                    break;                case EVENT_HASTEN_INFECTIONS:                    if (infectionStage++ < 4)                    {                        infectionCooldown -= 2000;                        events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90000);                    }                    break;                case EVENT_MUTATED_INFECTION:                    DoCastAOE(SPELL_MUTATED_INFECTION);                    events.ScheduleEvent(EVENT_MUTATED_INFECTION, infectionCooldown);                    break;                case EVENT_VILE_GAS:                    DoCastAOE(SPELL_VILE_GAS_TRIGGER);                    events.ScheduleEvent(EVENT_VILE_GAS, urand(30000, 35000));                    break;                default:                    break;                }            }            DoMeleeAttackIfReady();        }
开发者ID:xjose93,项目名称:TrinityCore,代码行数:45,


示例10: UpdateAI

    void UpdateAI(const uint32 diff)    {        if (!UpdateVictimWithGaze() || !CheckInRoom())            return;        events.Update(diff);        while(uint32 eventId = events.ExecuteEvent())        {            switch(eventId)            {                case EVENT_WOUND:                    DoCast(me->getVictim(), SPELL_MORTAL_WOUND);                    events.ScheduleEvent(EVENT_WOUND, 10000);                    return;                case EVENT_ENRAGE:                    DoCast(me, SPELL_ENRAGE);                    events.ScheduleEvent(EVENT_ENRAGE, 30000);                    return;                case EVENT_DECIMATE:                    DoCastAOE(SPELL_DECIMATE);                    events.ScheduleEvent(EVENT_DECIMATE, 105000);                    return;                case EVENT_BERSERK:                    DoCast(me, SPELL_BERSERK);                    return;                case EVENT_SUMMON:                    for(uint32 i = 0; i < HEROIC(1,2); ++i)                        DoSummon(MOB_ZOMBIE, triggers[rand()%3]);                    events.ScheduleEvent(EVENT_SUMMON, 10000);                    return;            }        }        if (me->getVictim()->GetEntry() == MOB_ZOMBIE)        {            if (me->IsWithinMeleeRange(me->getVictim()))            {                me->Kill(me->getVictim());                me->ModifyHealth(me->GetMaxHealth() * 0.05f);            }        }        else            DoMeleeAttackIfReady();    }
开发者ID:pfchrono,项目名称:mangos-mods,代码行数:45,


示例11: UpdateAI

        void UpdateAI(uint32 diff) override        {            if (!UpdateVictimWithGaze() || !CheckInRoom())                return;            events.Update(diff);            while (uint32 eventId = events.ExecuteEvent())            {                switch (eventId)                {                    case EVENT_WOUND:                        DoCastVictim(SPELL_MORTAL_WOUND);                        events.ScheduleEvent(EVENT_WOUND, 10000);                        break;                    case EVENT_ENRAGE:                        Talk(EMOTE_ENRAGE);                        DoCast(me, SPELL_ENRAGE);                        events.ScheduleEvent(EVENT_ENRAGE, 15000);                        break;                    case EVENT_DECIMATE:                        Talk(EMOTE_DECIMATE);                        DoCastAOE(SPELL_DECIMATE);                        events.ScheduleEvent(EVENT_DECIMATE, 105000);                        break;                    case EVENT_BERSERK:                        DoCast(me, SPELL_BERSERK);                        events.ScheduleEvent(EVENT_BERSERK, 5*60000);                        break;                    case EVENT_SUMMON:                        for (int32 i = 0; i < RAID_MODE(1, 2); ++i)                            DoSummon(NPC_ZOMBIE, PosSummon[rand32() % RAID_MODE(1, 3)]);                        // There's probably a better way to handle this                        for (SummonList::iterator itr = summons.begin(); itr != summons.end(); ++itr)                            if(Unit* unit = ObjectAccessor::GetUnit(*me, *itr))                                if (unit->GetEntry() == NPC_ZOMBIE)                                    unit->ToCreature()->AI()->AttackStart(me);                        events.ScheduleEvent(EVENT_SUMMON, 10000);                        break;                }            }                DoMeleeAttackIfReady();        }
开发者ID:OniBoov,项目名称:TCOLD,代码行数:43,


示例12: EnterCombat

    void EnterCombat(Unit *who)    {        for(uint32 i = 0; i < 3; ++i)            if (Creature *trigger = DoSummon(WORLD_TRIGGER, PosSummon[i]))                triggers.push_back(trigger);        if (triggers.size() < 3)        {            error_log("Script Gluth: cannot summon triggers!");            EnterEvadeMode();            return;        }        _EnterCombat();        events.ScheduleEvent(EVENT_WOUND, 10000);        events.ScheduleEvent(EVENT_ENRAGE, 30000);        events.ScheduleEvent(EVENT_DECIMATE, 105000);        events.ScheduleEvent(EVENT_BERSERK, 8*60000);        events.ScheduleEvent(EVENT_SUMMON, 10000);    }
开发者ID:pfchrono,项目名称:mangos-mods,代码行数:19,


示例13: MovementInform

        void MovementInform(uint32 type, uint32 id) override        {            if (type != POINT_MOTION_TYPE)                return;            if (id < 10)                wpreached = true;            if (id == 8)            {                for (uint8 i = 0; i < 2; i++)                    DoSummon(NPC_FOUL_PURGE, exorcismPos[8]);            }            if (id == 10)            {                wpreached = true;                point = 3;            }        }
开发者ID:Lyill,项目名称:TrinityCore,代码行数:20,


示例14: DoSummonAtRift

        void DoSummonAtRift(uint32 creature_entry)        {            if (!creature_entry)                return;            if (instance->GetData(TYPE_MEDIVH) != IN_PROGRESS)            {                me->InterruptNonMeleeSpells(true);                me->RemoveAllAuras();                return;            }            Position pos = me->GetRandomNearPosition(10.0f);            //normalize Z-level if we can, if rift is not at ground level.            pos.m_positionZ = std::max(me->GetMap()->GetHeight(pos.m_positionX, pos.m_positionY, MAX_HEIGHT), me->GetMap()->GetWaterLevel(pos.m_positionX, pos.m_positionY));            if (Unit* Summon = DoSummon(creature_entry, pos, 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT))                if (Unit* temp = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_MEDIVH)))                    AddThreat(temp, 0.0f, Summon);        }
开发者ID:ElunaLuaEngine,项目名称:ElunaTrinityWotlk,代码行数:21,


示例15: SummonPlanarAnomaly

	void SummonPlanarAnomaly()	{		std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList();		std::list<HostileReference*>::const_iterator i = m_threatlist.begin();		for (i = m_threatlist.begin(); i!= m_threatlist.end(); ++i)		{			Unit* pUnit = Unit::GetUnit((*me), (*i)->getUnitGuid());			if (pUnit )			{				Creature* summon = DoSummon(PLANAR_ANOMALY, me, 3.0f, 30000, TEMPSUMMON_DEAD_DESPAWN);				if(summon)				{					summon->Attack(pUnit,true);					printf("PLANAR_ANOMALY attack uinit %s /n",pUnit->GetName());					summon->SetVisibility(VISIBILITY_ON);					summon->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);					summon->SetUnitMovementFlags(MOVEMENTFLAG_FLYING);				}			}		}	}
开发者ID:SergeySV,项目名称:RoCore,代码行数:21,


示例16: WaypointStart

 void WaypointStart(uint32 pointId) override {     switch (pointId)     {         case 27:             for (uint8 i = 0; i < 3; ++i)             {                 const Position src = {147.927444f, -3851.513428f, 130.893f, 0};                 Position dst = me->GetRandomPoint(src, 7.0f);                 DoSummon(NPC_MARAUDING_OWL, dst, 25000, TEMPSUMMON_CORPSE_TIMED_DESPAWN);             }             break;         case 44:             for (uint8 i = 0; i < 3; ++i)             {                 const Position src = {-141.151581f, -4291.213867f, 120.130f, 0};                 Position dst = me->GetRandomPoint(src, 7.0f);                 me->SummonCreature(NPC_VILE_AMBUSHER, dst, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 25000);             }             break;     } }
开发者ID:Diyvol,项目名称:TrinityCore,代码行数:22,


示例17: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (LamentEvent)            {                if (LamentEvent_Timer <= diff)                {                    DoSummon(ENTRY_HIGHBORNE_BUNNY, me, 10.0f, 3000, TEMPSUMMON_TIMED_DESPAWN);                    LamentEvent_Timer = 2000;                    if (!me->HasAura(SPELL_SYLVANAS_CAST))                    {                        DoScriptText(SAY_LAMENT_END, me);                        DoScriptText(EMOTE_LAMENT_END, me);                        LamentEvent = false;                    }                } else LamentEvent_Timer -= diff;            }            if (!UpdateVictim())                return;            DoMeleeAttackIfReady();        }
开发者ID:kmishima,项目名称:DarkCore,代码行数:23,


示例18: RandomSpawn

 void RandomSpawn() {     switch(m_uiStage)     {         case 1:             DoSummon(CREATURE_FANATIC, SpawnLoc[0]);             DoSummon(CREATURE_ADHERENT, SpawnLoc[1]);             DoSummon(CREATURE_FANATIC, SpawnLoc[2]);             ++m_uiStage;             break;         case 2:             DoSummon(CREATURE_ADHERENT, SpawnLoc[3]);             DoSummon(CREATURE_FANATIC, SpawnLoc[4]);             DoSummon(CREATURE_ADHERENT, SpawnLoc[5]);             --m_uiStage;             break;     } }
开发者ID:ice74,项目名称:blizzwow,代码行数:18,


示例19: OozesMeetCheck

		void OozesMeetCheck()		{			if (summons.empty() || summons.size()==1)				return;			for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)			{				Creature* ooze = ObjectAccessor::GetCreatureOrPetOrVehicle((*me), (*itr));				if (!ooze || !ooze->isAlive())					continue;				if (ooze->GetEntry() != CREATURE_LITTLE_OOZE && ooze->GetEntry() != CREATURE_OOZE_BIG)					continue;				bool little = (ooze->GetEntry() == CREATURE_LITTLE_OOZE);				for(SummonList::const_iterator itr2 = summons.begin(); itr2 != summons.end(); ++itr2)				{					Creature* ooze2 = ObjectAccessor::GetCreatureOrPetOrVehicle((*me), (*itr2));					if (!ooze2 || !ooze2->isAlive())						continue;					if (ooze2->GetEntry() != CREATURE_LITTLE_OOZE && ooze2->GetEntry() != CREATURE_OOZE_BIG)						continue;					if (ooze2 == ooze)						continue;					if (ooze->GetDistance2d(ooze2) > 5.0f)						continue;					bool little2 = (ooze2->GetEntry() == CREATURE_LITTLE_OOZE);					//if first ooze is big ooze					if (!little)					{						//and if second ooze is little						if (little2)						{							ooze->CastSpell(ooze, SPELL_UNSTABLE_OOZE, false);							if (ooze->GetAura(SPELL_UNSTABLE_OOZE) && ooze->GetAura(SPELL_UNSTABLE_OOZE)->GetStackAmount() >= 5)								ooze->CastSpell(ooze2->getVictim(), SPELL_UNSTABLE_EXPLOSION, true);							continue;						}						else //big ooze meet another big ooze, check wich one have more buff stack and despawn second one						{							uint8 stack1, stack2 = 0;							if (Aura* aura = ooze->GetAura(SPELL_UNSTABLE_OOZE))								stack1 = aura->GetStackAmount();							if (Aura* aura = ooze2->GetAura(SPELL_UNSTABLE_OOZE))								stack2 = aura->GetStackAmount();							if (stack1 < stack2)							{								ooze2->CastSpell(ooze, SPELL_UNSTABLE_OOZE, false);								ooze->ForcedDespawn();								if (ooze2->GetAura(SPELL_UNSTABLE_OOZE) && ooze2->GetAura(SPELL_UNSTABLE_OOZE)->GetStackAmount() >= 5)								{									ooze2->CastSpell(ooze2->getVictim(), SPELL_UNSTABLE_EXPLOSION, true);									ooze2->ForcedDespawn();								}								break;							}							else							{								ooze->CastSpell(ooze, SPELL_UNSTABLE_OOZE, false);								ooze2->ForcedDespawn();								if (ooze->GetAura(SPELL_UNSTABLE_OOZE) && ooze->GetAura(SPELL_UNSTABLE_OOZE)->GetStackAmount() >= 5)								{									ooze->CastSpell(ooze2->getVictim(), SPELL_UNSTABLE_EXPLOSION, true);									ooze->ForcedDespawn();								}								continue;							}						}					}					else  //if first ooze is little					{						if (little2) //and second ooze is little, despawn both and summon big ooze						{							DoSummon(CREATURE_OOZE_BIG, (*ooze));							ooze->ForcedDespawn();							ooze2->ForcedDespawn();							break;						}						else						{							ooze2->CastSpell(ooze, SPELL_UNSTABLE_OOZE, false);							ooze->ForcedDespawn();							if (ooze2->GetAura(SPELL_UNSTABLE_OOZE) && ooze2->GetAura(SPELL_UNSTABLE_OOZE)->GetStackAmount() >= 5)							{								ooze2->CastSpell(ooze2->getVictim(), SPELL_UNSTABLE_EXPLOSION, true);								ooze2->ForcedDespawn();							}							break;						}					}				}			}		}
开发者ID:InkVisible,项目名称:wow,代码行数:100,


示例20: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (!phase)                return;            events.Update(diff);            if ((phase != PHASE_BIRTH && !UpdateVictim()) || !CheckInRoom())                return;            if (CanTheHundredClub)            {                if (CheckFrostResistTimer <= diff)                {                    CheckPlayersFrostResist();                    CheckFrostResistTimer = (rand() % 5 + 5) * 1000;                } else CheckFrostResistTimer -= diff;            }            if (phase == PHASE_GROUND)            {                while (uint32 eventId = events.ExecuteEvent())                {                    switch (eventId)                    {                        case EVENT_BERSERK:                            DoScriptText(EMOTE_ENRAGE, me);                            DoCast(me, SPELL_BERSERK);                            return;                        case EVENT_CLEAVE:                            DoCast(me->getVictim(), SPELL_CLEAVE);                            events.ScheduleEvent(EVENT_CLEAVE, 5000+rand()%10000, 0, PHASE_GROUND);                            return;                        case EVENT_TAIL:                            DoCastAOE(SPELL_TAIL_SWEEP);                            events.ScheduleEvent(EVENT_TAIL, 5000+rand()%10000, 0, PHASE_GROUND);                            return;                        case EVENT_DRAIN:                            DoCastAOE(SPELL_LIFE_DRAIN);                            events.ScheduleEvent(EVENT_DRAIN, 24000, 0, PHASE_GROUND);                            return;                        case EVENT_BLIZZARD:                        {                            //DoCastAOE(SPELL_SUMMON_BLIZZARD);                            if (Creature* summon = DoSummon(MOB_BLIZZARD, me, 0.0f, urand(25000, 30000), TEMPSUMMON_TIMED_DESPAWN))                                summon->GetMotionMaster()->MoveRandom(40);                            events.ScheduleEvent(EVENT_BLIZZARD, RAID_MODE(20000, 7000), 0, PHASE_GROUND);                            break;                        }                        case EVENT_FLIGHT:                            if (HealthAbovePct(10))                            {                                phase = PHASE_FLIGHT;                                events.SetPhase(PHASE_FLIGHT);                                me->SetReactState(REACT_PASSIVE);                                me->AttackStop();                                float x, y, z, o;                                me->GetHomePosition(x, y, z, o);                                me->GetMotionMaster()->MovePoint(1, x, y, z);                                return;                            }                            break;                    }                }                DoMeleeAttackIfReady();            }            else            {                if (uint32 eventId = events.ExecuteEvent())                {                    switch (eventId)                    {                        case EVENT_LIFTOFF:                            me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);                            me->SetLevitate(true);                            me->SendMovementFlagUpdate();                            events.ScheduleEvent(EVENT_ICEBOLT, 1500);                            iceboltCount = RAID_MODE(2, 3);                            return;                        case EVENT_ICEBOLT:                        {                            std::vector<Unit*> targets;                            std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();                            for (; i != me->getThreatManager().getThreatList().end(); ++i)                                if ((*i)->getTarget()->GetTypeId() == TYPEID_PLAYER && !(*i)->getTarget()->HasAura(SPELL_ICEBOLT))                                    targets.push_back((*i)->getTarget());                            if (targets.empty())                                iceboltCount = 0;                            else                            {                                std::vector<Unit*>::const_iterator itr = targets.begin();                                advance(itr, rand()%targets.size());                                iceblocks.insert(std::make_pair((*itr)->GetGUID(), 0));                                DoCast(*itr, SPELL_ICEBOLT);                                --iceboltCount;                            }                            if (iceboltCount)//.........这里部分代码省略.........
开发者ID:Asandru,项目名称:Script-Land,代码行数:101,


示例21: UpdateAI

        void UpdateAI(uint32 uiDiff)        {            if (!UpdateVictim())                return;            if (!bIsFrenzy && !bIsExploded && HealthBelowPct(25))            {                Talk(SAY_ENRAGE);                me->CastSpell(me, SPELL_FRENZY, true);                bIsFrenzy = true;            }            if (!bIsFrenzy)            {                if (!bIsExploded)                {                    if (!me->HasAura(SPELL_PROTECTIVE_BUBBLE))                    {                        me->InterruptNonMeleeSpells(false);                        Talk(SAY_SHATTER);                        DoZoneInCombat();                        IchoronDoCastToAllHostilePlayers(SPELL_WATER_BLAST, true);                        me->CastSpell(me, SPELL_DRAINED, true);                        bIsExploded = true;                        uiDrainedTimer = 15000;                        me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                        me->SetDisplayId(11686);                        for (uint8 i=0; i<MAX_SPAWN_LOC; ++i)                        {                            float angle = rand_norm()*2*M_PI;                            Position p1(SpawnLoc[i]), p2(SpawnLoc[i]);                            p1.m_positionX += 2.5f*cos(angle);                            p1.m_positionY += 2.5f*sin(angle);                            p2.m_positionX -= 2.5f*cos(angle);                            p2.m_positionY -= 2.5f*sin(angle);                            DoSummon(NPC_ICHOR_GLOBULE, p1, 60000, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN);                            DoSummon(NPC_ICHOR_GLOBULE, p2, 60000, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN);                        }                    }                }                else                {                    if (uiDrainedTimer <= uiDiff)                        DoExplodeCompleted();                    else                    {                        uiDrainedTimer -= uiDiff;                        bool bIsWaterElementsAlive = false;                        if (!globules.empty())                        {                            for (std::list<uint64>::const_iterator itr = globules.begin(); itr != globules.end(); ++itr)                                if (Creature* pTemp = ObjectAccessor::GetCreature(*me, *itr))                                    if (pTemp->IsAlive())                                    {                                        bIsWaterElementsAlive = true;                                        break;                                    }                        }                        if (!bIsWaterElementsAlive)                            DoExplodeCompleted();                    }                }            }            if (!bIsExploded)            {                if (uiWaterBoltVolleyTimer <= uiDiff)                {                    me->CastSpell((Unit*)NULL, SPELL_WATER_BOLT_VOLLEY, false);                    uiWaterBoltVolleyTimer = urand(10000, 15000);                }                else uiWaterBoltVolleyTimer -= uiDiff;            }            DoMeleeAttackIfReady();        }
开发者ID:Keader,项目名称:Sunwell,代码行数:78,


示例22: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (!UpdateVictim())                return;            events.Update(diff);            if (me->HasUnitState(UNIT_STAT_CASTING))                return;            EncounterTime += diff;            ConstructTimer += diff;            while(uint32 eventId = events.ExecuteEvent())            {                switch(eventId)                {                    case EVENT_JET:                        me->MonsterTextEmote(EMOTE_JETS, 0, true);                        DoCastAOE(SPELL_FLAME_JETS);                        events.RescheduleEvent(EVENT_JET,urand(35000,40000));                        break;                    case EVENT_SLAG_POT:                        if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))                        {                            DoScriptText(SAY_SLAG_POT, me);                            SlagPotGUID = pTarget->GetGUID();                            DoCast(pTarget, SPELL_GRAB);                            events.DelayEvents(3000);                            events.ScheduleEvent(EVENT_GRAB_POT, 500);                        }                        events.RescheduleEvent(EVENT_SLAG_POT,RAID_MODE(30000, 15000));                        break;                    case EVENT_GRAB_POT:                        if (Unit* SlagPotTarget = Unit::GetUnit(*me, SlagPotGUID))                        {                            SlagPotTarget->EnterVehicle(me, 0);                            events.CancelEvent(EVENT_GRAB_POT);                            events.ScheduleEvent(EVENT_CHANGE_POT, 1000);                        }                        break;                    case EVENT_CHANGE_POT:                        if (Unit* SlagPotTarget = Unit::GetUnit(*me, SlagPotGUID))                        {                            SlagPotTarget->AddAura(SPELL_SLAG_POT, SlagPotTarget);                            SlagPotTarget->EnterVehicle(me, 1);                            events.CancelEvent(EVENT_CHANGE_POT);                            events.ScheduleEvent(EVENT_END_POT, 10000);                        }                        break;                    case EVENT_END_POT:                        if (Unit* SlagPotTarget = Unit::GetUnit(*me, SlagPotGUID))                        {                            SlagPotTarget->ExitVehicle();                            SlagPotTarget = NULL;                            SlagPotGUID = NULL;                            events.CancelEvent(EVENT_END_POT);                        }                        break;                    case EVENT_SCORCH:                        DoScriptText(RAND(SAY_SCORCH_1, SAY_SCORCH_2), me);                        if (Unit *pTarget = me->getVictim())                            me->SummonCreature(NPC_GROUND_SCORCH, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 45000);                        DoCast(SPELL_SCORCH);                        events.RescheduleEvent(EVENT_SCORCH,25000);                        break;                    case EVENT_CONSTRUCT:                        DoScriptText(SAY_SUMMON, me);                        DoSummon(NPC_IRON_CONSTRUCT, Pos[rand()%20], 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT);                        DoCast(SPELL_STRENGHT);                        DoCast(me, SPELL_ACTIVATE_CONSTRUCT);                        events.RescheduleEvent(EVENT_CONSTRUCT,RAID_MODE(40000, 30000));                        break;                    case EVENT_BERSERK:                        DoCast(me, SPELL_BERSERK, true);                        DoScriptText(SAY_BERSERK, me);                        break;                }            }            DoMeleeAttackIfReady();        }
开发者ID:Alindor,项目名称:TrinityCore,代码行数:81,


示例23: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (LamentEvent)            {                if (LamentEvent_Timer <= diff)                {                    DoSummon(ENTRY_HIGHBORNE_BUNNY, me, 10.0f, 3000, TEMPSUMMON_TIMED_DESPAWN);                    LamentEvent_Timer = 2000;                    if (!me->HasAura(SPELL_SYLVANAS_CAST))                    {                        DoScriptText(SAY_LAMENT_END, me);                        DoScriptText(EMOTE_LAMENT_END, me);                        LamentEvent = false;                    }                }                 else                     LamentEvent_Timer -= diff;            }            if (!UpdateVictim())                return;            if (_fadeTimer <= diff)            {                DoCast(SPELL_FADE);                _fadeTimer = 10 *IN_MILLISECONDS;            }            else                _fadeTimer -= diff;            if (_blackarrowTimer <= diff)            {                Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0);                if (target)                {                    DoCast(target, SPELL_BLACK_ARROW);                    _blackarrowTimer = urand(12, 15) *IN_MILLISECONDS;                }            }            else                _blackarrowTimer -= diff;            if (_multishotTimer <= diff)            {                Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1);                if (target)                {                    DoCast(target, SPELL_MULTI_SHOT);                    _multishotTimer = urand(8, 10) *IN_MILLISECONDS;                }            }            else                _multishotTimer -= diff;            if (_shootTimer <= diff)            {                Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1);                if (target)                {                    DoCast(target, SPELL_SHOOT);                    _shootTimer = urand(2, 4) *IN_MILLISECONDS;                }            }            else                _shootTimer -= diff;            if (_summonskeletonTimer <= diff)            {                DoCast(SPELL_SUMMON_SKELETON);                _summonskeletonTimer = 10 *IN_MILLISECONDS;            }            else                _summonskeletonTimer -= diff;            DoMeleeAttackIfReady();        }
开发者ID:JunkyBulgaria,项目名称:avalon_core_v1,代码行数:77,


示例24: UpdateAI

        void UpdateAI(uint32 diff) override        {            if (LamentEvent)            {                if (LamentEventTimer <= diff)                {                    DoSummon(ENTRY_HIGHBORNE_BUNNY, me, 10.0f, 3000, TEMPSUMMON_TIMED_DESPAWN);                    LamentEventTimer = 2000;                    if (!me->HasAura(SPELL_SYLVANAS_CAST))                    {                        Talk(SAY_LAMENT_END);                        Talk(EMOTE_LAMENT_END);                        LamentEvent = false;                    }                } else LamentEventTimer -= diff;            }            if (!UpdateVictim())                return;            // Combat spells            if (FadeTimer <= diff)            {                DoCast(me, SPELL_FADE);                // add a blink to simulate a stealthed movement and reappearing elsewhere                DoCast(me, SPELL_FADE_BLINK);                FadeTimer = 30000 + rand32() % 5000;                // if the victim is out of melee range she cast multi shot                if (Unit* victim = me->GetVictim())                    if (me->GetDistance(victim) > 10.0f)                        DoCast(victim, SPELL_MULTI_SHOT);            } else FadeTimer -= diff;            if (SummonSkeletonTimer <= diff)            {                DoCast(me, SPELL_SUMMON_SKELETON);                SummonSkeletonTimer = 20000 + rand32() % 10000;            } else SummonSkeletonTimer -= diff;            if (BlackArrowTimer <= diff)            {                if (Unit* victim = me->GetVictim())                {                    DoCast(victim, SPELL_BLACK_ARROW);                    BlackArrowTimer = 15000 + rand32() % 5000;                }            } else BlackArrowTimer -= diff;            if (ShotTimer <= diff)            {                if (Unit* victim = me->GetVictim())                {                    DoCast(victim, SPELL_SHOT);                    ShotTimer = 8000 + rand32() % 2000;                }            } else ShotTimer -= diff;            if (MultiShotTimer <= diff)            {                if (Unit* victim = me->GetVictim())                {                    DoCast(victim, SPELL_MULTI_SHOT);                    MultiShotTimer = 10000 + rand32() % 3000;                }            } else MultiShotTimer -= diff;            DoMeleeAttackIfReady();        }
开发者ID:Anbush,项目名称:TrinityCore,代码行数:70,


示例25: UpdateAI

        void UpdateAI(uint32 diff) override        {            if (!UpdateVictim() && !LamentEvent)                return;            _events.Update(diff);            if (me->HasUnitState(UNIT_STATE_CASTING))                return;            while (uint32 eventId = _events.ExecuteEvent())            {                switch (eventId)                {                    case EVENT_FADE:                        DoCast(me, SPELL_FADE);                        // add a blink to simulate a stealthed movement and reappearing elsewhere                        DoCast(me, SPELL_FADE_BLINK);                        // if the victim is out of melee range she cast multi shot                        if (Unit* victim = me->GetVictim())                            if (me->GetDistance(victim) > 10.0f)                                DoCast(victim, SPELL_MULTI_SHOT);                        _events.ScheduleEvent(EVENT_FADE, urand(30000, 35000));                        break;                    case EVENT_SUMMON_SKELETON:                        DoCast(me, SPELL_SUMMON_SKELETON);                        _events.ScheduleEvent(EVENT_SUMMON_SKELETON, urand(20000, 30000));                        break;                    case EVENT_BLACK_ARROW:                        if (Unit* victim = me->GetVictim())                            DoCast(victim, SPELL_BLACK_ARROW);                        _events.ScheduleEvent(EVENT_BLACK_ARROW, urand(15000, 20000));                        break;                    case EVENT_SHOOT:                        if (Unit* victim = me->GetVictim())                            DoCast(victim, SPELL_SHOT);                        _events.ScheduleEvent(EVENT_SHOOT, urand(8000, 10000));                        break;                    case EVENT_MULTI_SHOT:                        if (Unit* victim = me->GetVictim())                            DoCast(victim, SPELL_MULTI_SHOT);                        _events.ScheduleEvent(EVENT_MULTI_SHOT, urand(10000, 13000));                        break;                    case EVENT_LAMENT_OF_THE_HIGHBORN:                        if (!me->HasAura(SPELL_SYLVANAS_CAST))                        {                            Talk(SAY_LAMENT_END);                            Talk(EMOTE_LAMENT_END);                            LamentEvent = false;                            me->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL);                            Reset();                        }                        else                        {                            DoSummon(NPC_HIGHBORNE_BUNNY, me, 10.0f, 3000, TEMPSUMMON_TIMED_DESPAWN);                            _events.ScheduleEvent(EVENT_LAMENT_OF_THE_HIGHBORN, 2000);                        }                        break;                    case EVENT_SUNSORROW_WHISPER:                        if (Creature* ambassador = me->FindNearestCreature(NPC_AMBASSADOR_SUNSORROW, 20.0f))                            if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))                                ambassador->AI()->Talk(SAY_SUNSORROW_WHISPER, player);                        break;                    default:                        break;                }            }            DoMeleeAttackIfReady();        }
开发者ID:kemlg,项目名称:trinitycore-conciens,代码行数:70,


示例26: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (!UpdateVictim())                return;            events.Update(diff);            if (Phase == 1)            {                while (uint32 eventId = events.GetEvent())                {                    switch (eventId)                    {                        case EVENT_WASTE:                            DoSummon(NPC_WASTE, Pos[RAND(0, 3, 6, 9)]);                            events.RepeatEvent(urand(2000, 5000));                            break;                        case EVENT_ABOMIN:                            if (nAbomination < 8)                            {                                DoSummon(NPC_ABOMINATION, Pos[RAND(1, 4, 7, 10)]);                                nAbomination++;                                events.RepeatEvent(20000);                            }                            else                                events.PopEvent();                            break;                        case EVENT_WEAVER:                            if (nWeaver < 8)                            {                                DoSummon(NPC_WEAVER, Pos[RAND(0, 3, 6, 9)]);                                nWeaver++;                                events.RepeatEvent(25000);                            }                            else                                events.PopEvent();                            break;                        case EVENT_TRIGGER:                            if (GameObject* pKTTrigger = me->GetMap()->GetGameObject(KTTriggerGUID))                                pKTTrigger->SetPhaseMask(2, true);                            events.PopEvent();                            break;                        case EVENT_PHASE:                            events.Reset();                            DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2, SAY_AGGRO_3), me);                            spawns.DespawnAll();                            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NOT_SELECTABLE);                            me->CastStop();                            DoStartMovement(me->getVictim());                            events.ScheduleEvent(EVENT_BOLT, urand(5000, 10000));                            events.ScheduleEvent(EVENT_NOVA, 15000);                            events.ScheduleEvent(EVENT_DETONATE, urand(30000, 40000));                            events.ScheduleEvent(EVENT_FISSURE, urand(10000, 30000));                            events.ScheduleEvent(EVENT_BLAST, urand(60000, 120000));                            if (GetDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL)                                events.ScheduleEvent(EVENT_CHAIN, urand(30000, 60000));                            Phase = 2;                            break;                        default:                            events.PopEvent();                            break;                    }                }            }            else            {                //start phase 3 when we are 45% health                if (Phase != 3)                {                    if (HealthBelowPct(45))                    {                        Phase = 3;                        DoScriptText(SAY_REQUEST_AID, me);                        //here Lich King should respond to KelThuzad but I don't know which Creature to make talk                        //so for now just make Kelthuzad says it.                        DoScriptText(SAY_ANSWER_REQUEST, me);                        for (uint8 i = 0; i <= 3; ++i)                        {                            if (GameObject* pPortal = me->GetMap()->GetGameObject(PortalsGUID[i]))                            {                                if (pPortal->getLootState() == GO_READY)                                    pPortal->UseDoorOrButton();                            }                        }                    }                }                else if (nGuardiansOfIcecrownCount < RAID_MODE(2, 4))                {                    if (uiGuardiansOfIcecrownTimer <= diff)                    {                        // TODO : Add missing text                        if (Creature* pGuardian = DoSummon(NPC_ICECROWN, Pos[RAND(2, 5, 8, 11)]))                            pGuardian->SetFloatValue(UNIT_FIELD_COMBATREACH, 2);                        ++nGuardiansOfIcecrownCount;                        uiGuardiansOfIcecrownTimer = 5000;                    }                    else uiGuardiansOfIcecrownTimer -= diff;                }//.........这里部分代码省略.........
开发者ID:Krill156,项目名称:FreyaCore,代码行数:101,



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


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