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; } } } } }
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; } } } }