Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Вопросы по RunUO _ Имя NPC и его цвет

Автор: volkinson 28.3.2019, 10:56

Всем доброго времени суток. Подскажите пожалуйста, где можно поменять логику отображения имени NPC. Допустим, в брите у меня стоит провизионер, хочу сделать, чтобы титл в папердоле отображался в названии после имени. Пример Soroka the provisioner, John the blacksmith ну и так далее. Буду очень благодарен за совет. P.S! RunUO 2.2

Автор: Juzzver 28.3.2019, 11:55

а по умолчанию разве не так?
Прикрепленное изображение

Автор: volkinson 28.3.2019, 12:00

Возможно по умолчанию идет так, но у меня сборка с уклоном сферы. Ищу, где зарыта собака, но пока без результатов.

Автор: Aimed 28.3.2019, 12:50

Цитата(volkinson @ 28.3.2019, 10:00) *

Возможно по умолчанию идет так, но у меня сборка с уклоном сферы. Ищу, где зарыта собака, но пока без результатов.


Вот тебе пара советов для самостоятельной работы:
1) Изучи что такое дебаг и как он работает в Visual Studio.
2) https://www.servuo.com/threads/debugging-servuo-with-visual-studio-image-heavy.810/. 2.2 РанУО, - это не Нова случайно? Если Нова, то там ядро и скрипты вместе и не надо ничего делать как в мануале от ServUO. Можешь сразу ставить брейк пойнты.
3) Когда сделал пункты 1 и 2, ищи код от парсеров пакетов, либо самих пакетов. Если слабо шаришь в коде РанУО тебе будет гораздо легче сперва найти какой https://github.com/runuo/runuo/blob/master/Server/Network/Packets.csили https://github.com/runuo/runuo/blob/master/Server/Network/PacketHandlers.cs#L75 http://docs.polserver.com/packets/. Дальше ставишь там брейк пойнты и потом по стеку вызовов( если сервер отсылает пакет ) или через выполнение кода в дебаге ( если сервер парсит пакет ) смотришь что и как.

Автор: volkinson 28.3.2019, 13:23

Aimed, спасибо за совет. Сижу разбираюсь. Мануал у них устарел, но логика понятна. В VS 2017 все по другому, нету вкладки Build, нету опции Properties при ПКМ на папку scripts.
Я когда-то видел здесь тему и там было что-то похожее, но поиск не дал результатов. Буду разбираться дальше.

Пока идет борьба с такой ошибкой: Interop debugging is not supported

Автор: volkinson 28.3.2019, 16:20

В общем с отладкой я не справляюсь, ищу в ручную т.к. это не баг, это было сделано специально. Я нашел функцию отображения игроков:

Код
public virtual void AddNameProperties( ObjectPropertyList list )
        {
            string name = Name;

            if( name == null )
                name = String.Empty;

            string prefix = "";

            if( ShowFameTitle && (m_Player || m_Body.IsHuman) && m_Fame >= 10000 )
                prefix = m_Female ? "Lady" : "Lord";

            string suffix = "";

            if( PropertyTitle && Title != null && Title.Length > 0 )
                suffix = Title;

            BaseGuild guild = m_Guild;

            if( guild != null && (m_Player || m_DisplayGuildTitle) )
            {
                if( suffix.Length > 0 )
                    suffix = String.Format( "{0} [{1}]", suffix, Utility.FixHtml( guild.Abbreviation ) );
                else
                    suffix = String.Format( "[{0}]", Utility.FixHtml( guild.Abbreviation ) );
            }

            suffix = ApplyNameSuffix( suffix );

            list.Add( 1050045, "{0} \t{1}\t {2}", prefix, name, suffix ); // ~1_PREFIX~~2_NAME~~3_SUFFIX~

            if( guild != null && (m_DisplayGuildTitle || (m_Player && guild.Type != GuildType.Regular)) )
            {
                string type;

                if( guild.Type >= 0 && (int)guild.Type < m_GuildTypes.Length )
                    type = m_GuildTypes[(int)guild.Type];
                else
                    type = "";

                string title = GuildTitle;

                if( title == null )
                    title = "";
                else
                    title = title.Trim();

                if( NewGuildDisplay && title.Length > 0 )
                {
                    list.Add( "{0}, {1}", Utility.FixHtml( title ), Utility.FixHtml( guild.Name ) );
                }
                else
                {
                    if( title.Length > 0 )
                        list.Add( "{0}, {1} Guild{2}", Utility.FixHtml( title ), Utility.FixHtml( guild.Name ), type );
                    else
                        list.Add( Utility.FixHtml( guild.Name ) );
                }
            }
        }

Где можно такое же найти для NPC? Спасибо!

Автор: Aimed 28.3.2019, 19:23

Смотри в BaseCreature, это базовый класс всех НПЦ сразу после Мобайла. Смотри там такой же метод, только вместо virtual будет override.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)