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

 
Ответить в эту темуОткрыть новую тему
> Надо помощь в 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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 12.5.2015, 16:03
Сообщение #2


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 3055
Пользователь №: 7.166



Здесь ничего не настраивается. Это скорее шаблон/инструкция для сервера как вести себя при подключении клиентов определенных версий. Например, клиент должен знать сколько персонажей на аккаунте поддерживается сервером: шесть как в старых версиях или семь как в новых. Если в Account классе определено, что на аккаунте можно завести семь персонажей, то сервер включит в ответ флаг SeventhCharacterSlot, если шесть, то флаг SixthCharacterSlot.

Однако рулить фичами отсюда не надо. Это не файл настройки, а описание протокола по которому сервер и клиент согласуют свои настройки. Если здесь что-то поправить, то может случиться, что клиент и сервер перестанут понимать друг друга.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 12.5.2015, 16:57
Сообщение #3


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 8664
Пользователь №: 15.607



Я довольно плотно пишу на ранке уже 2 года, ниразу в этот файл не залазил, правда нас трое. Может кто-то другой из нас и залазил, но по моему нет.

А вообще ты слишком мало инфы по вопросам выложил, а обьяснять всё подряд никто тебе не будет.


Цитата
сам не скриптер но как по мне ранка этот как лего можно склепать что захочешь,


(IMG:style_emoticons/default/huh.gif)
Это с чего ты такое взял???

Тебе какой шард нужен? ТИпа сфер, которых большинство в рунете или типа ОСИ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Dragon Killer
сообщение 12.5.2015, 17:18
Сообщение #4


***

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



типо сфер ... но и в направлении оси хочу откзатся левельнной системы выбор людям кого хотят качать как бы первого мага или война или то и другое

меня интересуют вопросы как переключатся между эпохами и и что оно даст в том или ином случаи?

просто хочу по отключать эту тему когда клацаешь на вендора или на персонажа своего то появляется табличка хочется как на сферах buy, sell

также где включать и выключать резисты лед,огонь, холод и тп

как задать свою гвард зону там именно где мне надо

чем отличается фелюка от тремелл кроме визуализации?

также хочу отключить гаргулий шивалери нинжитсу итп...


Вопросов у меня много и они мне надо что понять смысл и кишки ранки ибо уже взялся за нее а не за пол или сферу ..... думаю довести до конца но без толковой помощи нечего не получится...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 12.5.2015, 17:37
Сообщение #5


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 3055
Пользователь №: 7.166



В Scripts\Data\CurrentExpansion.cs
Код
private static readonly Expansion Expansion = Expansion.HS;

попробуй указать Expansion.None. Это должно выключить AOS фичи: резисты и контекстное меню buy/sell.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 12.5.2015, 17:38
Сообщение #6


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 8664
Пользователь №: 15.607



Цитата(Dragon Killer @ 12.5.2015, 16:18) *

типо сфер ... но и в направлении оси хочу откзатся левельнной системы выбор людям кого хотят качать как бы первого мага или война или то и другое


Тогда тебе, честно говоря, лучше на сфере работать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Dragon Killer
сообщение 12.5.2015, 17:41
Сообщение #7


***

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



там язык какой то рагульный ,я когда в ранку смотрю то где то просвещает что оно такое и через студию удобно все включать .... а там смотрю и тьма полная
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Dragon Killer
сообщение 12.5.2015, 18:04
Сообщение #8


***

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



Soteric
Цитата
В Scripts\Data\CurrentExpansion.cs
Код
private static readonly Expansion Expansion = Expansion.HS;

попробуй указать Expansion.None. Это должно выключить AOS фичи: резисты и контекстное меню buy/sell.



это сработало но уникорн стал как обычная белая лошадь как поправить ? походу оно выруби и графику

до Прикрепленное изображение после Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 12.5.2015, 18:05
Сообщение #9


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 8664
Пользователь №: 15.607



Цитата(Dragon Killer @ 12.5.2015, 16:41) *

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


(IMG:style_emoticons/default/smile.gif)

Что-бы сделать *как на сферах*, тебе прийдётся норм времени потратить и научиться программированию. Ты точно готов к этому? (IMG:style_emoticons/default/rolleyes.gif)



Для общего понимания. Ты в коде совсем совсем 0 или хоть какой-то курс или учебник проходил?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Dragon Killer
сообщение 12.5.2015, 18:08
Сообщение #10


***

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



ну с каждым днем ноли добавляются типо 0+0 ..... думаю что разберусь )
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 12.5.2015, 18:12
Сообщение #11


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 8664
Пользователь №: 15.607



Цитата(Dragon Killer @ 12.5.2015, 17:04) *

это сработало но уникорн стал как обычная белая лошадь как поправить ?


Что именно поправить? Сделать его черным? Убрать? Будь конкретнее

Цитата(Dragon Killer @ 12.5.2015, 17:08) *

ну с каждым днем ноли добавляются типо 0+0 ..... думаю что разберусь )


Тогда советую начать с вот этого, иначе ты очень неэффективно будешь проводить время:
http://rutracker.org/forum/viewtopic.php?t=3538125

Могу даже тебе задания связанные с ранкой попридумывать для каждой главы.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 12.5.2015, 18:28
Сообщение #12


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 3055
Пользователь №: 7.166



Цитата
это сработало но уникорн стал как обычная белая лошадь как поправить ?

А уникорны точно были в Pre-AOS?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 12.5.2015, 18:30
Сообщение #13


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 8664
Пользователь №: 15.607



Цитата(Soteric @ 12.5.2015, 17:28) *

А уникорны точно были в Pre-AOS?


Не было их.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Juzzver
сообщение 12.5.2015, 18:32
Сообщение #14


**********

Модератор RunUO
Сообщений: 3.425
Регистрация: 1.11.2008
Группа: Супермодераторы
Наличность: 22565
Из: Северная Корея
Пользователь №: 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
сообщение 12.5.2015, 18:41
Сообщение #15


***

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



абалдеть нема слов сам бог ранки ответил ) спасибо ! еще бы по всем файлам так бы тогда я бы стал скриптером (наверно ) (IMG:style_emoticons/default/rolleyes.gif) практика практика господа ... а книжку почитаю )
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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