コード例 #1
0
        public void PaintWorld(WorldLayer layer)
        {
            var me = Hud.Game.Me;

            if (!me.IsInTown)
            {
                return;
            }

            var PlayerId           = 0;
            var PlayerAreaName     = string.Empty;
            var PlayerParagonLevel = 0;
            var StoryNo            = 0;
            var cnt      = 0;
            var tmpValue = 0;
            int tmp      = 0;

            foreach (var player in Hud.Game.Players)
            {
                cnt++;
                if (player.IsInTown || player.InGreaterRift || player.IsMe)
                {
                    continue;
                }

                PlayerAreaName = player.SnoArea.NameLocalized;  // player.SnoArea.NameEnglish
                if (!PlayerAreaName.Contains(RiftId))
                {
                    continue;
                }
                Match match = Regex.Match(PlayerAreaName, @"\d");

                if (match.Success)
                {
                    tmpValue = Int32.Parse(match.Value);
                    if (tmpValue > StoryNo)
                    {
                        tmp = checked ((int)player.CurrentLevelParagon);
                        PlayerParagonLevel = tmp;
                        PlayerId           = cnt;
                    }
                    else if (tmpValue == StoryNo)
                    {
                        if (player.CurrentLevelParagon > PlayerParagonLevel)
                        {
                            tmp = checked ((int)player.CurrentLevelParagon);
                            PlayerParagonLevel = tmp;
                            PlayerId           = cnt;
                        }
                    }
                    if (tmpValue != StoryNo)
                    {
                        StoryNo = tmpValue;
                    }
                }
            }

            if (PlayerId == 0)
            {
                return;
            }

            cnt = 0;
            foreach (var player in Hud.Game.Players)
            {
                cnt++;
                if (cnt == PlayerId)
                {
                    bool DrawIt  = false;
                    var  banners = Hud.Game.Actors.Where(x => _bannersSnoList.Contains(x.SnoActor.Sno));
                    foreach (var banner in banners)
                    {
                        switch (banner.SnoActor.Sno)
                        {
                        case ActorSnoEnum._banner_player_1:
                        case ActorSnoEnum._banner_player_1_act2:
                        case ActorSnoEnum._banner_player_1_act5:
                            if (PlayerId == 1)
                            {
                                DrawIt = true;
                            }
                            break;

                        case ActorSnoEnum._banner_player_2:
                        case ActorSnoEnum._banner_player_2_act2:
                        case ActorSnoEnum._banner_player_2_act5:
                            if (PlayerId == 2)
                            {
                                DrawIt = true;
                            }
                            break;

                        case ActorSnoEnum._banner_player_3:
                        case ActorSnoEnum._banner_player_3_act2:
                        case ActorSnoEnum._banner_player_3_act5:
                            if (PlayerId == 3)
                            {
                                DrawIt = true;
                            }
                            break;

                        case ActorSnoEnum._banner_player_4:
                        case ActorSnoEnum._banner_player_4_act2:
                        case ActorSnoEnum._banner_player_4_act5:
                            if (PlayerId == 4)
                            {
                                DrawIt = true;
                            }
                            break;
                        }

                        if (DrawIt)
                        {
                            //var Hero = string.Empty;
                            var Hero = player.HeroClassDefinition.Name;
                            Hero = Hero.Substring(0, 2);                        // "0, 4" for English Class Name -> up to you

                            /*
                             *      switch (player.HeroClassDefinition.HeroClass)
                             * {
                             *      case HeroClass.Monk:
                             *              Hero = "수도";
                             *              break;
                             *      case HeroClass.Wizard:
                             *              Hero = "법사";
                             *              break;
                             *      case HeroClass.Crusader:
                             *              Hero = "성전";
                             *              break;
                             *      case HeroClass.Barbarian:
                             *              Hero = "야만";
                             *              break;
                             *      case HeroClass.DemonHunter:
                             *              Hero = "악사";
                             *              break;
                             *      case HeroClass.WitchDoctor:
                             *              Hero = "부두";
                             *              break;
                             *      case HeroClass.Necromancer:
                             *              Hero = "강령";
                             *              break;
                             * }
                             */

                            var pTitle = player.BattleTagAbovePortrait + " - " + Hero + "( P:" + PlayerParagonLevel.ToString() + " | S:" + player.HighestHeroSoloRiftLevel.ToString() + " )";
                            PlayerTitleLabelDecorator.Paint(layer, banner, banner.FloorCoordinate.Offset(0, 0, 8), $"{pTitle}");
                            PlayerLabelDecorator.Paint(layer, banner, banner.FloorCoordinate.Offset(0, 0, 6), $"{PlayerAreaName}");
                            TelpoSignDecorator.Paint(layer, banner, banner.FloorCoordinate.Offset(0, 0, 3), string.Empty);                      // circle
                            DrawIt = false;
                            break;
                        }
                    }
                }
            }
        }
コード例 #2
0
        public void PaintWorld(WorldLayer layer)
        {
            var me = Hud.Game.Me;

            meTag = me.BattleTagAbovePortrait;
            if (me.IsInTown && BannerShow)
            {
                var cnt       = 0;
                var PlayerId  = 0;
                var tmpPlayer = "*";

                foreach (var player in Hud.Game.Players)
                {
                    cnt++;
                    if (player == null)
                    {
                        continue;
                    }

                    tmpPlayer = player.BattleTagAbovePortrait;
                    if (tmpPlayer == meTag)
                    {
                        return;
                    }

                    if (tmpPlayer == Caller)
                    {
                        PlayerId = cnt;
                        TagDecorator.TextFunc = () => tmpPlayer.ToString();
                        break;
                    }
                }

                if (PlayerId == 0)                                                      // No match - it's logically impossible.. but just for exceptions
                {
                    Console.Beep(900, 200);
                    BannerShow = false;
                    return;
                }

                bool IsCalled = false;
                var  banners  = Hud.Game.Actors.Where(x => _bannersSnoList.Contains(x.SnoActor.Sno));
                foreach (var banner in banners)
                {
                    switch (banner.SnoActor.Sno)
                    {
                    case ActorSnoEnum._banner_player_1:
                    case ActorSnoEnum._banner_player_1_act2:
                    case ActorSnoEnum._banner_player_1_act5:
                        if (PlayerId == 1)
                        {
                            IsCalled = true;
                        }
                        break;

                    case ActorSnoEnum._banner_player_2:
                    case ActorSnoEnum._banner_player_2_act2:
                    case ActorSnoEnum._banner_player_2_act5:
                        if (PlayerId == 2)
                        {
                            IsCalled = true;
                        }
                        break;

                    case ActorSnoEnum._banner_player_3:
                    case ActorSnoEnum._banner_player_3_act2:
                    case ActorSnoEnum._banner_player_3_act5:
                        if (PlayerId == 3)
                        {
                            IsCalled = true;
                        }
                        break;

                    case ActorSnoEnum._banner_player_4:
                    case ActorSnoEnum._banner_player_4_act2:
                    case ActorSnoEnum._banner_player_4_act5:
                        if (PlayerId == 4)
                        {
                            IsCalled = true;
                        }
                        break;
                    }

                    if (IsCalled)
                    {
                        if (PlayersCount != Hud.Game.Players.Count())
                        {
                            return;
                        }

                        CallerSignDecorator.Paint(layer, banner, banner.FloorCoordinate.Offset(0, 0, 10), string.Empty);          // circle
                        PlayerLabelDecorator.Paint(layer, banner, banner.FloorCoordinate.Offset(0, 0, 13), $"Caller: {Caller}");
                        w = tmpPlayer.Length * 12;
                        if (w < 100)
                        {
                            w = 100;
                        }
                        h = 50;
                        x = Hud.Window.Size.Width / 2 - 50;
                        y = 280;
                        CallerPopupDecorator.Paint(x, y, w, h, tmpPlayer, " Caller ");

                        if (FirstTimer)
                        {
                            // start the timer setting
                            aTimer           = new System.Timers.Timer();
                            aTimer.Interval  = 15000;                                   // 15 secs
                            aTimer.Elapsed  += DeleteBannerShow;                        // function to delete ready-made marker(circle) and popup after the interval
                            aTimer.AutoReset = false;                                   // false: only once
                            aTimer.Enabled   = true;                                    // timer On/Off
                            // end the timer setting
                            FirstTimer = false;
                            PreCaller  = Caller;
                            CallSw     = false;
                        }
                        else if (PreCaller != Caller || CallSw)
                        {
                            aTimer.Interval = 15000;
                            PreCaller       = Caller;
                            CallSw          = false;
                        }

                        IsCalled = false;
                        break;
                    }
                }
            }
        }