Здравствуйте, гость ( Вход | Регистрация )

> Надо помощь в RunUO!
Dragon Killer
сообщение 12.5.2015, 15:18
Сообщение #1


***

Novice
Сообщений: 63
Регистрация: 4.4.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 16.748
Возраст: 29



И так пытаюсь разобраться в файлах RanUO сам не скриптер но как по мне ранка этот как лего можно склепать что захочешь, ну по крайней мере я так надеюсь ... FAQ толкового нет ... Хочу вот разобраться что к чему , настроить шард под свои нужды что то добавить что то убрать ....

Помогите разобраться с файлами что за что отвечает файл ExpansionInfo.cs и давайте его разложим его по полочкам за что отвечают флаги и ну вообщем кую функцию они выполняют что включают и отключают хочу знать все ... прошу не ленится а реально описать файл ..... и помочь разобраться...

Код

using System;

namespace Server
{
    public enum Expansion
    {
        None,
        T2A,
        UOR,
        UOTD,
        LBR,        
        AOS,
        SE,
        ML,
        SA,
        HS
    }

    [Flags]
    public enum ClientFlags
    {
        None    = 0x00000000,
        Felucca    = 0x00000001,
        Trammel    = 0x00000002,
        Ilshenar= 0x00000004,
        Malas    = 0x00000008,
        Tokuno    = 0x00000010,
        TerMur    = 0x00000020,
        Unk1    = 0x00000040,
        Unk2    = 0x00000080,
        UOTD    = 0x00000100
    }

    [Flags]
    public enum FeatureFlags
    {
        None                = 0x00000000,
        T2A                    = 0x00000001,
        UOR                    = 0x00000002,
        UOTD                = 0x00000004,
        LBR                    = 0x00000008,
        AOS                    = 0x00000010,
        SixthCharacterSlot    = 0x00000020,
        SE                    = 0x00000040,
        ML                    = 0x00000080,
        EigthAge            = 0x00000100,
        NinthAge            = 0x00000200, /* Crystal/Shadow Custom House Tiles */
        TenthAge            = 0x00000400,
        IncreasedStorage    = 0x00000800, /* Increased Housing/Bank Storage */
        SeventhCharacterSlot= 0x00001000,
        RoleplayFaces        = 0x00002000,
        TrialAccount        = 0x00004000,
        LiveAccount            = 0x00008000,
        SA                    = 0x00010000,
        HS                    = 0x00020000,
        Gothic                = 0x00040000,
        Rustic                = 0x00080000,

        ExpansionNone    = None,
        ExpansionT2A    = T2A,
        ExpansionUOR    = ExpansionT2A    | UOR,
        ExpansionUOTD    = ExpansionUOR    | UOTD,
        ExpansionLBR    = ExpansionUOTD    | LBR,
        ExpansionAOS    = ExpansionLBR    | AOS    | LiveAccount,
        ExpansionSE        = ExpansionAOS    | SE,
        ExpansionML        = ExpansionSE    | ML    | NinthAge,
        ExpansionSA        = ExpansionML    | SA    | Gothic    | Rustic,
        ExpansionHS        = ExpansionSA    | HS
    }

    [Flags]
    public enum    CharacterListFlags
    {
        None                    = 0x00000000,
        Unk1                    = 0x00000001,
        OverwriteConfigButton    = 0x00000002,
        OneCharacterSlot        = 0x00000004,
        ContextMenus            = 0x00000008,
        SlotLimit                = 0x00000010,
        AOS                        = 0x00000020,
        SixthCharacterSlot        = 0x00000040,
        SE                        = 0x00000080,
        ML                        = 0x00000100,
        Unk2                    = 0x00000200,
        UO3DClientType            = 0x00000400,
        Unk3                    = 0x00000800,
        SeventhCharacterSlot    = 0x00001000,
        Unk4                    = 0x00002000,
        NewMovementSystem        = 0x00004000,
        NewFeluccaAreas            = 0x00008000,

        ExpansionNone    = ContextMenus, //
        ExpansionT2A    = ContextMenus, //
        ExpansionUOR    = ContextMenus, // None
        ExpansionUOTD    = ContextMenus, //
        ExpansionLBR    = ContextMenus, //
        ExpansionAOS    = ContextMenus    | AOS,
        ExpansionSE        = ExpansionAOS    | SE,
        ExpansionML        = ExpansionSE    | ML,
        ExpansionSA        = ExpansionML,
        ExpansionHS        = ExpansionSA
    }

    public class ExpansionInfo
    {
        public static ExpansionInfo[] Table { get { return m_Table; } }
        private static ExpansionInfo[] m_Table = new ExpansionInfo[]
            {
                new ExpansionInfo( 0, "None",                    ClientFlags.None,
                FeatureFlags.ExpansionNone,    CharacterListFlags.ExpansionNone,    0x0000 ),
                new ExpansionInfo( 1, "The Second Age",            ClientFlags.Felucca,
            FeatureFlags.ExpansionT2A,    CharacterListFlags.ExpansionT2A,    0x0000 ),
                new ExpansionInfo( 2, "Renaissance",            ClientFlags.Trammel,
            FeatureFlags.ExpansionUOR,    CharacterListFlags.ExpansionUOR,    0x0000 ),
                new ExpansionInfo( 3, "Third Dawn",                ClientFlags.Ilshenar,
            FeatureFlags.ExpansionUOTD,    CharacterListFlags.ExpansionUOTD,    0x0000 ),
                new ExpansionInfo( 4, "Blackthorn's Revenge",    ClientFlags.Ilshenar,
            FeatureFlags.ExpansionLBR,    CharacterListFlags.ExpansionLBR,    0x0000 ),
                new ExpansionInfo( 5, "Age of Shadows",            ClientFlags.Malas,
                FeatureFlags.ExpansionAOS,    CharacterListFlags.ExpansionAOS,    0x0000 ),
                new ExpansionInfo( 6, "Samurai Empire",            ClientFlags.Tokuno,
                FeatureFlags.ExpansionSE,    CharacterListFlags.ExpansionSE,        0x00C0 ), // 0x20 | 0x80
                new ExpansionInfo( 7, "Mondain's Legacy",        new ClientVersion( "5.0.0a" ),
    FeatureFlags.ExpansionML,    CharacterListFlags.ExpansionML,        0x02C0 ), // 0x20 | 0x80 | 0x200
                new ExpansionInfo( 8, "Stygian Abyss",            ClientFlags.TerMur,
                FeatureFlags.ExpansionSA,    CharacterListFlags.ExpansionSA,
        0xD02C0 ), // 0x20 | 0x80 | 0x200 | 0x10000 | 0x40000 | 0x80000
                new ExpansionInfo( 9, "High Seas",                new ClientVersion( "7.0.9.0" ),
    FeatureFlags.ExpansionHS,
    CharacterListFlags.ExpansionHS,        0xD02C0 ) // 0x20 | 0x80 | 0x200 | 0x10000 | 0x40000 | 0x80000
            };

        private string m_Name;
        private int m_ID, m_CustomHousingFlag;

        private ClientFlags m_ClientFlags;
        private FeatureFlags m_SupportedFeatures;
        private CharacterListFlags m_CharListFlags;

        private ClientVersion m_RequiredClient;    // Used as an alternative to the flags

        public string Name{ get{ return m_Name; } }
        public int ID{ get{ return m_ID; } }
        public ClientFlags ClientFlags{ get{ return m_ClientFlags; } }
        public FeatureFlags SupportedFeatures{ get{ return m_SupportedFeatures; } }
        public CharacterListFlags CharacterListFlags { get { return m_CharListFlags; } }
        public int CustomHousingFlag { get{ return m_CustomHousingFlag; } }
        public ClientVersion RequiredClient { get { return m_RequiredClient; } }

        public ExpansionInfo( int id, string name, ClientFlags clientFlags, FeatureFlags supportedFeatures, CharacterListFlags charListFlags, int customHousingFlag )
        {
            m_Name = name;
            m_ID = id;
            m_ClientFlags = clientFlags;
            m_SupportedFeatures = supportedFeatures;
            m_CharListFlags = charListFlags;
            m_CustomHousingFlag = customHousingFlag;
        }

        public ExpansionInfo( int id, string name, ClientVersion requiredClient, FeatureFlags supportedFeatures, CharacterListFlags charListFlags, int customHousingFlag )
        {
            m_Name = name;
            m_ID = id;
            m_SupportedFeatures = supportedFeatures;
            m_CharListFlags = charListFlags;
            m_CustomHousingFlag = customHousingFlag;
            m_RequiredClient = requiredClient;
        }

        public static ExpansionInfo GetInfo( Expansion ex )
        {
            return GetInfo( (int)ex );
        }

        public static ExpansionInfo GetInfo( int ex )
        {
            int v = (int)ex;

            if( v < 0 || v >= m_Table.Length )
                v = 0;

            return m_Table[v];
        }

        public static ExpansionInfo CurrentExpansion { get { return GetInfo( Core.Expansion ); } }

        public override string ToString()
        {
            return m_Name;
        }
    }
}


Сообщение отредактировал Juzzver - 12.5.2015, 20:56
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Juzzver
сообщение 12.5.2015, 18:32
Сообщение #2


**********

Модератор RunUO
Сообщений: 3.432
Регистрация: 1.11.2008
Группа: Супермодераторы
Наличность: 22498
Из: Северная Корея
Пользователь №: 11.273



Цитата
Однако рулить фичами отсюда не надо. Это не файл настройки, а описание протокола по которому сервер и клиент согласуют свои настройки. Если здесь что-то поправить, то может случиться, что клиент и сервер перестанут понимать друг друга.

Это касается всей папки Server в целом, куда лезть на начальном этапе весьма нежелательно.
Начинать стоит с папки Scripts, где находится тот же конфигурационный файл для экспансий: Scripts->Misc->CurrentExpansion.cs
И этот участок кода уже имеет смысл разбирать построчно:

Код
    public class CurrentExpansion
    {
        private static readonly Expansion Expansion = Expansion.HS;

        public static void Configure()
        {
            Core.Expansion = Expansion;

            bool Enabled = Core.AOS;

            Mobile.InsuranceEnabled = Enabled;
            ObjectPropertyList.Enabled = Enabled;
            Mobile.VisibleDamageType = Enabled ? VisibleDamageType.Related : VisibleDamageType.None;
            Mobile.GuildClickMessage = !Enabled;
            Mobile.AsciiClickMessage = !Enabled;

            if ( Enabled )
            {
                AOS.DisableStatInfluences();

                if ( ObjectPropertyList.Enabled )
                    PacketHandlers.SingleClickProps = true; // single click for everything is overriden to check object property list

                Mobile.ActionDelay = 1000;
                Mobile.AOSStatusHandler = new AOSStatusHandler( AOS.GetStatus );
            }
        }


private static readonly Expansion Expansion = Expansion.HS; - задается текущая экспансия, если выбрать .HS - активируются все ветви кода, которые предназначены для High Seas расширения игры ( это крафт новых вещей, создание новой расы Гаргулии, работа новых скиллов, новые комплектующие для постройки домов(станы, плитка, двери и т.д.), новые города и т.д.). Если поставить .T2A или .UOR, то мы активируем настройки уо эпохи Ренесанса, соответственно часть новых фитч у нас деактивируется, но заработают старые конфиги, алгоритмы, формулы и т.д.
Ранка в том комплекте как она поставляется продвинулась не столь далеко и обладает лишь поддержкой ML (Mondain's Legacy) расширением, соответственно выставляя экспансию .SA или .HS существенных приоритетов нам не создаст, но стоит понимать, что включая .HS, в неё будут включены по умолчанию все фитчи предыдущих AOS, SE, ML, SA, HS расширений. По памяти, для SA/HS эры, мы можем получить доступ в новые миры, созданию новой рассы, плавное передвижение по морям, новые элементы для постройки домов, ну и что нибудь еще (IMG:style_emoticons/default/smile.gif), т.е. не шибко много. Всякие там новые крафт вещи, мобов, системы из новых эр и т.д. - это придется делать самим, или же искать в интернете плоды сторонних разработчиков.
Для полноты ощущений, рекомендую все же использовать Expansion.HS;

bool Enabled = Core.AOS; // Если у нас активирована экспансия AOS, то переменная Enabled у нас будет активирована(true), если ниже чем .AOS ( к примеру Core.UOR ), то деактивирована (false).
Ну и смотрим ниже по списку, что этой переменной активируют.

Mobile.InsuranceEnabled = Enabled; // Если .AOS, то активируем систему страхования вещей (система, которая позволяет сохранять свои вещи в момент смерти, но при этом снимая налог за страховку). Если мы хотим продолжать использовать эру AOS или выше, но при этом захотим отключить систему страховки, то просто меняем заменяем Enable(повторюсь, который несет у нас значение true, если мы стоим на AOS или выше экспансии) на false. Получаея следующий вид: Mobile.InsuranceEnabled = false; // так будет выглядеть отключение системы страховки.

ObjectPropertyList.Enabled = Enabled; // Показывает лейблы со свойствами предметов, при наведении на них. Если отключить, то мы будем видеть привычное название итемов без какой либо доп. информации, как на сферах и пол серверах.

Mobile.VisibleDamageType = Enabled ? VisibleDamageType.Related : VisibleDamageType.None; // Показывает получаемый урон над головой у персонажа, соответственно так же ставим false, если хотим отключить.

Mobile.GuildClickMessage = !Enabled; // По идее какие то гильд приписки, которые показываются при клике на персонажа, состоящего в гильдии. !Enabled; - означает, что значение не равно Core.AOS(т.е. не true), соответственно оно будет являтся false(деактивированное). Если мы хотим активировать, то пишем либо просто Enable, либо true.

Mobile.AsciiClickMessage = !Enabled; // Аналогично, только для различных предметов, ников и т.д.
Если активировать, то мы будем видеть привычные старые типы символов из клиента(ренесансные, как на сферах и полах), а не стандартный строчный тип, которым я сейчас пишу.

AOS.DisableStatInfluences(); // Что-то связанное с ростом статов, если не ошибаюсь, в зависимости от качаемых навыков. Для уточнения, смотреть что изложенно в методе DisableStatInfluences();

Цитата
if ( ObjectPropertyList.Enabled )
PacketHandlers.SingleClickProps = true; // single click for everything is overriden to check object property list

Если у нас включено отображение свойств, то включаем отображение этих свойств по одиночному клику мышки.

Mobile.ActionDelay = 1000; // задержка для перекидывания предметов с одного места на другое, 1000 указано в мс, соответственно это 1 секунда.
Mobile.AOSStatusHandler = new AOSStatusHandler( AOS.GetStatus ); // Похоже на статус гамп персонажа, где перечислены его характеристики(статы, резисты, вес и т.д.), соответственно если поменять его на другой, нужно посмотреть какие статусы еще есть в наличии (типа старых, ренесансных) и есть ли они вообще.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Dragon Killer   Надо помощь в RunUO!   12.5.2015, 15:18
Soteric   Здесь ничего не настраивается. Это скорее шаблон/и...   12.5.2015, 16:03
Aimed   Я довольно плотно пишу на ранке уже 2 года, ниразу...   12.5.2015, 16:57
Dragon Killer   типо сфер ... но и в направлении оси хочу откзатся...   12.5.2015, 17:18
Aimed   типо сфер ... но и в направлении оси хочу откзатс...   12.5.2015, 17:38
Soteric   В Scripts\Data\CurrentExpansion.cs priva...   12.5.2015, 17:37
Dragon Killer   там язык какой то рагульный ,я когда в ранку смотр...   12.5.2015, 17:41
Aimed   там язык какой то рагульный ,я когда в ранку смот...   12.5.2015, 18:05
Dragon Killer   Soteric это сработало но уникорн стал как обычн...   12.5.2015, 18:04
Aimed   это сработало но уникорн стал как обычная белая л...   12.5.2015, 18:12
Dragon Killer   ну с каждым днем ноли добавляются типо 0+0 ..... д...   12.5.2015, 18:08
Soteric   А уникорны точно были в Pre-AOS?   12.5.2015, 18:28
Aimed   А уникорны точно были в Pre-AOS? Не было их.   12.5.2015, 18:30
Dragon Killer   абалдеть нема слов сам бог ранки ответил ) спасиб...   12.5.2015, 18:41


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 17.7.2025, 17:39
Designed by Nickostyle