TurboHUD

Теория и практика Diablo 3, техническая информация и ПО

Сообщение Extremer » 21 янв 2017, 13:45

lorapalmer, вставьте следующей строкой после
// turn off sell darkening
Hud.GetPlugin<InventoryAndStashPlugin>().SellEnabled = false;


В обычном блокноте.


-- Добавлено позже --

Только без первой и последней скобки ;)
Аватара пользователя
Extremer
В первых рядах Девять с половиной стеклопушек
Сообщения: 184
Репутация: 46
Статус: Не в сети

Сообщение lorapalmer » 21 янв 2017, 15:23

огромное вам спасибо, теперь моя душа спокойна.

а вот до этого не юзал ТХ и проблем не знал )
Аватара пользователя
lorapalmer
Два года стекла и пушек
Сообщения: 15
Репутация: 2
Статус: Не в сети

  • 2

Сообщение DmitryOlenin » 21 янв 2017, 17:14

polysster писал(а):Раньше можно было отмечать игроков кругом под ногами, как например маркировали элитку ну или выпадающие ингридиенты!
На примере из плагина на форуме ТХ! Очень удобно было(

Сделал круг под ногами героев.

Первая строка файла, добавить:
using System.Linq;

B потом в привычное место:

public override void Customize()
{
....

// Circles under feet.
var OtherPlayerCirclePlugin = Hud.GetPlugin<OtherPlayerPlugin>();
OtherPlayerCirclePlugin.OtherPlayerDecorator.Decorators.Add //add GroundCircleDecorator
(new GroundCircleDecorator(Hud)
{
Brush = Hud.Render.CreateBrush(180, 200, 0, 200, 6),
Radius = 3,
});

}


После окончания этого метода, но до закрывающих двух фигурных скобок }}

public override void PaintWorld(WorldLayer layer)
{
var OtherPlayerDecorator = Hud.GetPlugin<OtherPlayerPlugin>().OtherPlayerDecorator;
var players = Hud.Collections.GetPlayers().Where(x => !x.IsMe);//.Where(x => !x.IsMe);
foreach (var player in players)
{
if (player.CoordinateKnown)
{
OtherPlayerDecorator.Paint(layer, player.FloorCoordinate, null); //player.BattleTagAbovePortrait
}
}
}

Изображение
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Сообщение Extremer » 21 янв 2017, 17:52

DmitryOlenin, уже ближе к истине, но смысл в том, чтобы видеть монаха. Поэтому надо на разных классах разные пометки. А в идеале только на монахе.
Аватара пользователя
Extremer
В первых рядах Девять с половиной стеклопушек
Сообщения: 184
Репутация: 46
Статус: Не в сети

  • 2

Сообщение DmitryOlenin » 21 янв 2017, 18:30

Мало мне моей программы, ковыряю чужую :lol:
Попробую что-нибудь сделать...
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Сообщение Extremer » 21 янв 2017, 18:38

На самом деле можно не тратить время. Думаю, скоро товарищ в эксель файл добавить.
У него раньше было, на новой версии перестало работать. Он пока отключил.
Аватара пользователя
Extremer
В первых рядах Девять с половиной стеклопушек
Сообщения: 184
Репутация: 46
Статус: Не в сети

Сообщение DmitryOlenin » 21 янв 2017, 19:46

Ну да, думаю, что он добавит, когда я сделаю :)
Раньше всё это работало через xml, сейчас перестало.

Сделал. Пока только для монаха.

Первая строка файла, добавить:
Код: Выделить всё
using System.Linq;


После окончания метода public override void Customize() { ... }, но до закрывающих двух фигурных скобок }}
Добавляете новый класс.

Код: Выделить всё
   public override void PaintWorld(WorldLayer layer)
   {
            var OtherPlayerDecorator = Hud.GetPlugin<OtherPlayerPlugin>().OtherPlayerDecorator;
            var players = Hud.Collections.GetPlayers().Where(x => !x.IsMe);//.Where(x => !x.IsMe);
            foreach (var player in players)
            {
                if (player.CoordinateKnown)
                {
      switch (player.HeroClassRules.HeroClass)
               {
                   case HeroClass.Wizard:

                       break;
                   case HeroClass.WitchDoctor:

                       break;
                   case HeroClass.Barbarian:

                       break;
                   case HeroClass.DemonHunter:

                       break;
                   case HeroClass.Crusader:

                       break;
                   case HeroClass.Monk:
         OtherPlayerDecorator.Decorators.Add //add GroundCircleDecorator
         (new GroundCircleDecorator(Hud)
                   {
                       Brush = Hud.Render.CreateBrush(180, 200, 0, 200, 6),
                       Radius = 3,
                   });
         OtherPlayerDecorator.Paint(layer, player.FloorCoordinate, null);
                       break;
               }

                    //OtherPlayerDecorator.Paint(layer, player.FloorCoordinate, null); //player.BattleTagAbovePortrait
                }
            }
   }
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Сообщение Extremer » 21 янв 2017, 19:59

DmitryOlenin, очень странно работает...
Пока не появился в пати монах кругов нет. Но когда есть монах круги на всех. Причем с дикими лагами. Персонаж убежал, а круг через секунду где-то за ним перемещается.
Аватара пользователя
Extremer
В первых рядах Девять с половиной стеклопушек
Сообщения: 184
Репутация: 46
Статус: Не в сети

Сообщение DmitryOlenin » 21 янв 2017, 20:05

О, получилось, кажется...
Изображение

Сделал чуть иначе. Сейчас потестирую.
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Сообщение polysster » 21 янв 2017, 20:32

А как сделать что бы имя игрока отображалось не под ногами, а по середине персонажа или над его головой? использую правленый стандартный плагин OtherPlayerPlugin.cs

Изображение

А то теперь получается наложение имени и круга, и в толпе мобов неразбериха полная!

Изображение

Извини, что задалбываю!)
Последний раз редактировалось polysster 21 янв 2017, 20:55, всего редактировалось 1 раз.
Аватара пользователя
polysster
В первых рядах Танец с пушками Девять с половиной стеклопушек Семь раз отмерь, один раз стеклопушка Восьмое чудо Санктуария
Сообщения: 52
Откуда: Киев
Репутация: 27
Статус: Не в сети

Сообщение Extremer » 21 янв 2017, 20:52

polysster, а зачем и имя и круг?
По моему надо что-то одно.
Обычно проблема в толпе сапа в четверке разглядеть и куда он сваливает.
В остальных случаях это особо не надо.
Аватара пользователя
Extremer
В первых рядах Девять с половиной стеклопушек
Сообщения: 184
Репутация: 46
Статус: Не в сети

Сообщение polysster » 21 янв 2017, 20:57

Extremer, когда в пати 2 ВД, один петовод, второй мышкер, мне приоритетней следить за мышкером, просто раньше этот плагин так и был у меня настроен, а тут ни как не разберусь в системе координат!(
Аватара пользователя
polysster
В первых рядах Танец с пушками Девять с половиной стеклопушек Семь раз отмерь, один раз стеклопушка Восьмое чудо Санктуария
Сообщения: 52
Откуда: Киев
Репутация: 27
Статус: Не в сети

  • 2

Сообщение DmitryOlenin » 21 янв 2017, 21:18

Сделал разноцветные круги вокруг персонажей разных классов других игроков.

Cкачать.

Файл PlayerColorCirclesPlugin.cs просто положить в TurboHUD\config\ui_user\.
Отдельный файл. В основной файл с кастомизированными настройками ничего добавлять не надо.
У себя я там оставил только блок public override void Customize() { .. }

Изображение

P.S.
Можете менять цвета в файле (RGB):
ColorsForClasses (0, 200, 200); //Wizard - blue
ColorsForClasses (250, 100, 100); //WitchDoctor - pink
ColorsForClasses (150, 0, 0); //Barbarian - red
ColorsForClasses (250, 250, 0); //DemonHunter - yellow
ColorsForClasses (200, 0, 200); //Crusader - violet
ColorsForClasses (150, 200, 0); //Monk - green
Последний раз редактировалось DmitryOlenin 21 янв 2017, 21:48, всего редактировалось 2 раз(а).
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Сообщение Extremer » 21 янв 2017, 21:34

DmitryOlenin, спасибо, вроде работает. Буду тестить.
Аватара пользователя
Extremer
В первых рядах Девять с половиной стеклопушек
Сообщения: 184
Репутация: 46
Статус: Не в сети

Сообщение Extremer » 21 янв 2017, 23:45

А как убрать с некоторых?
Аватара пользователя
Extremer
В первых рядах Девять с половиной стеклопушек
Сообщения: 184
Репутация: 46
Статус: Не в сети

Сообщение ASIK1212 » 21 янв 2017, 23:46

А когда рабочая будет уже под 2.4.3? :(
Аватара пользователя
ASIK1212
В первых рядах Семь раз отмерь, один раз стеклопушка Танец с пушками Девять с половиной стеклопушек Восьмое чудо Санктуария
Сообщения: 16
Репутация: 0
Статус: Не в сети

Сообщение Extremer » 22 янв 2017, 01:37

ASIK1212, кто рабочая?
Аватара пользователя
Extremer
В первых рядах Девять с половиной стеклопушек
Сообщения: 184
Репутация: 46
Статус: Не в сети

  • 2

Сообщение DmitryOlenin » 22 янв 2017, 02:18

Чтобы убрать круги с каких-то классов, соответствующую строку удалить надо или закомментировать. Например:
// ColorsForClasses (150, 200, 0); //Monk - green

Поправил проблему, что круги оставались на земле после смены персонажами локации.
Сделал отметку своего персонажа. Маленький красный круг.
Файл по ссылке обновил.
Если не нужно, можно закоментировать или удалить три строки 43, 43, 44:
Код: Выделить всё
      //if (player.IsMe)
      //   ColorsForClasses (255, 0, 51, 2);  //If Me
      //else


Изображение

Текст файла
Код: Выделить всё
//using System.Linq;

namespace Turbo.Plugins.Custom
{

    public class PlayerColorCirclesPlugin : BasePlugin
    {

        public PlayerColorCirclesPlugin()
        {
            Enabled = true;
        }

        public override void Load(IController hud)
        {
            base.Load(hud);
        }


        public void ColorsForClasses (int R, int G, int B, int radius)
   {
            var OtherPlayerDecorator = Hud.GetPlugin<OtherPlayerPlugin>().OtherPlayerDecorator;
           
            if (OtherPlayerDecorator.Decorators.Count > 2)
          OtherPlayerDecorator.Decorators.RemoveAt(2); //remove GroundCircleDecorator
       OtherPlayerDecorator.Decorators.Add //add GroundCircleDecorator
         (new GroundCircleDecorator(Hud)
                   {
                       Brush = Hud.Render.CreateBrush(180, R, G, B, 6),
                       Radius = radius,
                   });
   }

   public override void PaintWorld(WorldLayer layer)
   {
            var OtherPlayerDecorator = Hud.GetPlugin<OtherPlayerPlugin>().OtherPlayerDecorator;
            var players = Hud.Collections.GetPlayers();//.Where(x => !x.IsMe);//.Where(x => x.IsMe);
            foreach (var player in players)
            {
                if (player.CoordinateKnown)
      {
      if (player.IsMe)
         ColorsForClasses (255, 0, 51, 2);  //If Me
      else
      if (!player.IsMe)
      switch (player.HeroClassRules.HeroClass)
               {
                   case HeroClass.Wizard:
                       ColorsForClasses (0, 200, 200, 3);  //Wizard - blue
                       break;

                   case HeroClass.WitchDoctor:
                       ColorsForClasses (250, 100, 100, 3);  //WitchDoctor - pink
                       break;

                   case HeroClass.Barbarian:
                       ColorsForClasses (51, 0, 0, 3);  //Barbarian - dark red
                       break;

                   case HeroClass.DemonHunter:
                       ColorsForClasses (250, 250, 0, 3);  //DemonHunter - yellow
                       break;

                   case HeroClass.Crusader:
                       ColorsForClasses (200, 0, 200, 3); //Crusader - violet
                       break;

                   case HeroClass.Monk:
                       ColorsForClasses (150, 200, 0, 3); //Monk - green
                       break;
               }
      OtherPlayerDecorator.Paint(layer, player.FloorCoordinate, null);
      }
            }
   }
 
    } //End of class PlayerColorCirclesPlugin

} //End of namespace Turbo.Plugins.Custom


P.S.
На моём скрине отлично читаются имена и круги видно. Ничего не мешает.
Поднять имена как-то, наверное, можно, но мне этим заниматься не хотелось бы, не вижу смысла.

polysster писал(а):использую правленый стандартный плагин OtherPlayerPlugin.cs

Не надо вносить правки в базовые плагины. Это плохая идея, правда.
Советую вернуть оригинальный файл.
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Сообщение Yamaxus » 22 янв 2017, 10:55

DmitryOlenin, не подскажешь ли как вернуть круги радиуса действия зеева, пленных, вуду вд и дальность действия элитки (тюрьма, ковровая бомбадировка, молнии). Раньше подключались через xml.
No brain, no pain!
Аватара пользователя
Yamaxus
Девять с половиной стеклопушек
Сообщения: 506
Репутация: 621
Статус: Не в сети

Сообщение polysster » 22 янв 2017, 12:39

как я понимаю за положение ника персонажа отвечает параметр "player.FloorKoordinate"!? в кодировании не разбираюсь вообще, чистая догадка) я угадал?

Код: Выделить всё
public override void PaintWorld(WorldLayer layer)
        {
            var players = Hud.Collections.GetPlayers().Where(x => !x.IsMe);
            foreach (var player in players)
            {
                if (player.CoordinateKnown && (player.HeadStone == null))
                {
                    OtherPlayerDecorator.Paint(layer, player.FloorCoordinate, player.BattleTagAbovePortrait);
                }
            }

            var headStones = Hud.Collections.GetHeadStones();
            foreach (var headStone in headStones)
            {
                HeadStoneDecorator.Paint(layer, headStone.FloorCoordinate, headStone.Player.BattleTagAbovePortrait);
            }
        }


если да, то буду дальше копать на просторах интернета!
Аватара пользователя
polysster
В первых рядах Танец с пушками Девять с половиной стеклопушек Семь раз отмерь, один раз стеклопушка Восьмое чудо Санктуария
Сообщения: 52
Откуда: Киев
Репутация: 27
Статус: Не в сети

Сообщение DmitryOlenin » 22 янв 2017, 13:13

polysster
Да, всё верно.

Yamaxus
Как это должно выглядеть?
У меня вся эта штука отключена всегда была, я не очень представляю.
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Сообщение polysster » 22 янв 2017, 13:19

DmitryOlenin, Еще нашел параметр отвечающий за определение элемента управления "Label" (как я понимаю это и есть эта метка - батлтаг под ногами), находится ли элемент управления на верхнем уровне "GetTopLevel", только не знаю как его применить( :cute:

Код: Выделить всё
public override void Load(IController hud)
        {
            base.Load(hud);

            OtherPlayerDecorator = new WorldDecoratorCollection(               
                new GroundLabelDecorator(Hud)
                {
                    BackgroundBrush = Hud.Render.CreateBrush(255, 0, 0, 0, 0),
                    BorderBrush = Hud.Render.CreateBrush(200, 0, 190, 255, 1),
                    LabelFont = Hud.Render.CreateFont("tahoma", 6f, 255, 0, 190, 255, false, false, 128, 0, 0, 0, true),
                }
                );
Аватара пользователя
polysster
В первых рядах Танец с пушками Девять с половиной стеклопушек Семь раз отмерь, один раз стеклопушка Восьмое чудо Санктуария
Сообщения: 52
Откуда: Киев
Репутация: 27
Статус: Не в сети

Сообщение DmitryOlenin » 22 янв 2017, 14:01

Это шрифт, которым отображается имя игрока. Цвет, размер, начертание и т.д.
К положению в пространстве он не имеет отношения.

С положением проблема, что в турбохуде всё около ног, над головой ничего не висит, если я правильно помню.
Собственно, так и называется, GroundLabelDecorator.
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Сообщение polysster » 22 янв 2017, 14:27

Ну как я понимаю "GroundLabelDecorator" - это и есть метка на земле, значение этой метки соответствует батл тагу, остальные параметры это шрифт, рамка и фон рамки. А параметр "GetTopLevel" должен переместить метку выше!
Аватара пользователя
polysster
В первых рядах Танец с пушками Девять с половиной стеклопушек Семь раз отмерь, один раз стеклопушка Восьмое чудо Санктуария
Сообщения: 52
Откуда: Киев
Репутация: 27
Статус: Не в сети

Сообщение DmitryOlenin » 22 янв 2017, 15:36

Не должен. Топ - это поверх других слоёв, скорее всего.
Расположение чего угодно на экране - это координаты + слои. Всё.

И, кстати, никакого GetTopLevel я в коде не вижу.
Программа для автоматического нажатия клавиш Diablo 3 Hotkeys
Школьники ушли в школы, больше за 10 минут никто калькуляторы не пишет...
Программа для расчёта DPS - Diablo 3
Аватара пользователя
DmitryOlenin
В первых рядах В центре внимания (II-го уровня) Девять с половиной стеклопушек
Сообщения: 1606
Откуда: Москва
Репутация: 1184
Статус: Не в сети

Пред.След.

Вернуться в Игровая механика



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10