コード例 #1
0
        private void Game_OnGameUpdate(EventArgs args)
        {
            if (!IsActive() || lastGameUpdateTime + new Random().Next(500, 1000) > Environment.TickCount)
            {
                return;
            }

            lastGameUpdateTime = Environment.TickCount;

            if (AltarTimer.GetActive())
            {
                AltarObject altarDestroyed = null;
                foreach (AltarObject altar in Altars)
                {
                    if (altar.Obj.IsValid)
                    {
                        bool hasBuff = false;
                        foreach (BuffInstance buff in altar.Obj.Buffs)
                        {
                            if (buff.Name == "treelinelanternlock")
                            {
                                hasBuff = true;
                                break;
                            }
                        }
                        if (!hasBuff)
                        {
                            altar.Locked          = false;
                            altar.NextRespawnTime = 0;
                            altar.Called          = false;
                        }
                        else if (hasBuff && altar.Locked == false)
                        {
                            altar.Locked          = true;
                            altar.NextRespawnTime = altar.RespawnTime + (int)Game.ClockTime;
                        }
                    }
                    else
                    {
                        if (altar.NextRespawnTime < (int)Game.ClockTime)
                        {
                            altarDestroyed = altar;
                        }
                    }
                }
                if (altarDestroyed != null && Altars.Remove(altarDestroyed))
                {
                }
                foreach (Obj_AI_Minion altar in ObjectManager.Get <Obj_AI_Minion>())
                {
                    AltarObject nAltar = null;
                    if (altar.Name.Contains("Buffplat"))
                    {
                        AltarObject health1 = Altars.Find(jm => jm.Obj.NetworkId == altar.NetworkId);
                        if (health1 == null)
                        {
                            if (altar.Name.Contains("_L"))
                            {
                                nAltar = new AltarObject("Left Altar", altar);
                            }
                            else
                            {
                                nAltar = new AltarObject("Right Altar", altar);
                            }
                        }
                    }

                    if (nAltar != null)
                    {
                        Altars.Add(nAltar);
                    }
                }
            }

            /////

            if (AltarTimer.GetActive())
            {
                foreach (AltarObject altar in Altars)
                {
                    if (altar.Locked)
                    {
                        if (altar.NextRespawnTime <= 0 || altar.MapType != GMap.Type)
                        {
                            continue;
                        }
                        int time = Timer.Timers.GetMenuItem("SAssembliesTimersRemindTime").GetValue <Slider>().Value;
                        if (!altar.Called && altar.NextRespawnTime - (int)Game.ClockTime <= time &&
                            altar.NextRespawnTime - (int)Game.ClockTime >= time - 1)
                        {
                            altar.Called = true;
                            Timer.PingAndCall(altar.Name + " unlocks in " + time + " seconds!", altar.Obj.ServerPosition);
                            if (AltarTimer.GetMenuItem("SAssembliesTimersAltarSpeech").GetValue <bool>())
                            {
                                Speech.Speak(altar.Name + " unlocks in " + time + " seconds!");
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
ファイル: Altar.cs プロジェクト: BlueSun99/SAwarenessBeta
        private void Game_OnGameUpdate(EventArgs args)
        {
            if (!IsActive() || lastGameUpdateTime + new Random().Next(500, 1000) > Environment.TickCount)
                return;

            lastGameUpdateTime = Environment.TickCount;

            if (AltarTimer.GetActive())
            {
                AltarObject altarDestroyed = null;
                foreach (AltarObject altar in Altars)
                {
                    if (altar.Obj.IsValid)
                    {
                        bool hasBuff = false;
                        foreach (BuffInstance buff in altar.Obj.Buffs)
                        {
                            if (buff.Name == "treelinelanternlock")
                            {
                                hasBuff = true;
                                break;
                            }
                        }
                        if (!hasBuff)
                        {
                            altar.Locked = false;
                            altar.NextRespawnTime = 0;
                            altar.Called = false;
                        }
                        else if (hasBuff && altar.Locked == false)
                        {
                            altar.Locked = true;
                            altar.NextRespawnTime = altar.RespawnTime + (int)Game.ClockTime;
                        }
                    }
                    else
                    {
                        if (altar.NextRespawnTime < (int)Game.ClockTime)
                        {
                            altarDestroyed = altar;
                        }
                    }
                }
                if (altarDestroyed != null && Altars.Remove(altarDestroyed))
                {
                }
                foreach (Obj_AI_Minion altar in ObjectManager.Get<Obj_AI_Minion>())
                {
                    AltarObject nAltar = null;
                    if (altar.Name.Contains("Buffplat"))
                    {
                        AltarObject health1 = Altars.Find(jm => jm.Obj.NetworkId == altar.NetworkId);
                        if (health1 == null)
                            if (altar.Name.Contains("_L"))
                                nAltar = new AltarObject("Left Altar", altar);
                            else
                                nAltar = new AltarObject("Right Altar", altar);
                    }

                    if (nAltar != null)
                        Altars.Add(nAltar);
                }
            }

            /////

            if (AltarTimer.GetActive())
            {
                foreach (AltarObject altar in Altars)
                {
                    if (altar.Locked)
                    {
                        if (altar.NextRespawnTime <= 0 || altar.MapType != GMap.Type)
                            continue;
                        int time = Timer.Timers.GetMenuItem("SAssembliesTimersRemindTime").GetValue<Slider>().Value;
                        if (!altar.Called && altar.NextRespawnTime - (int)Game.ClockTime <= time &&
                            altar.NextRespawnTime - (int)Game.ClockTime >= time - 1)
                        {
                            altar.Called = true;
                            Timer.PingAndCall(altar.Name + " unlocks in " + time + " seconds!", altar.Obj.ServerPosition);
                            if (AltarTimer.GetMenuItem("SAssembliesTimersAltarSpeech").GetValue<bool>())
                            {
                                Speech.Speak(altar.Name + " unlocks in " + time + " seconds!");
                            }
                        }
                    }
                }
            }
        }