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

> Стабильная сборка
Александр Needle™
сообщение 25.7.2017, 23:27
Сообщение #1


********

Mammy's hero
Сообщений: 1.236
Регистрация: 26.5.2009
Группа: Пользователи
Наличность: 0
Из: Украина , Одесса
Пользователь №: 11.891
Возраст: 33



Доброй ночи, начал ковырять различные версии RunUO с целью найти оптимальный вариант (рабочий!) для поддержки обычного клиента Ultima Online: Reinessainse, он же 2.0.3. (IMG:style_emoticons/default/wink.gif) Начал конечно же с последней версии доступной на официальном сайте RunUO, установил клиент, поставил эмулятор. И.. не запускается, точней ругается на IPv6, ну хорошо, отключил интернет, не горит.

Зайти - не заходит, сервер перезапускается при каждом входе. Понял.., через Expansion выставил None, а затем и LBR, и UOR, и все остальные перепробовал на всякий. И ситуация складывается следующая, ставлю версию в Expansion младше AOS, зайти могу, НО:
- ни с кем поговорить невозможно (купить/продать) в VendorAI разбирался, все прописано, но не работает
- вещи не имеют названий (просто кусочек окна без каких-либо надписей)
- "error [TIP]: null string: 145903" при пересечении с npc (на сервере ошибок нет, сам клиент пишет)
- при открытии книги, валится клиент

И такие пляски с бубмном вплоть до RunUO-1.0 RC0, которая вообще отказалась даже устанавливается, так как ей именно .NET Framework старой версии нужно (1.х.х) тогда как у меня последняя стоит, это ее не волнует и плевать она на это хотела.

Единственная версия, которая кое-как работала (относительно) - RunUO Beta 16 но она настолько сырая, что и говорить не приходится. Но на ней остались прежние следующие ошибки:
- "error [TIP]: null string: 145903" при пересечении с npc (на сервере ошибок нет, сам клиент пишет)
- "error [TIP]: null string: 145903 : 5" в названии любого предмета, правда есть некоторые, которые отображаются нормально.
- ни с кем поговорить невозможно
- при открытии книги, валится клиент

За столько лет, не было попыток создать нормальную версию, которая бы поддерживала полностью старые клиенты? Какой смысл от Expansion, если эта функция не работает? Да и вообще какой смысл пилить поддержку последних клиентов, если эмулятор не в состоянии поддержать рание версии, это как не доделав что-то, браться за другую работу.
Накипело, весь день потратил на это и в итоге ничего не добился (IMG:style_emoticons/default/dry.gif)


UPD: Использую RunUO 2.0 RC1 Expansion.None

Решил этот вопрос с NPC, которые проваливались

Такое решение в DataPath.cs, почему-то сервер не устраивало:
Код
private static string CustomPath = @"C:\UO";

Решил такой строкой, и вписал в ручную при запуске сервера.
Код
private static string CustomPath = null;

Решил вопрос с такой проблемой: System.Net.Sockets.SocketException: Предпринятая операция не поддерживается для выбранного типа объекта

Изменил ServerList.cs, полностью вариант ниже:
Код
using System;
using System.IO;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using Server;
using Server.Network;

namespace Server.Misc
{
    public class ServerList
    {
        public static readonly string Address = null;
        public static readonly string ServerName = "RunUO TC";

        public static readonly bool AutoDetect = true;

        public static void Initialize()
        {
            if ( Address == null ) {
                if ( AutoDetect )
                    AutoDetection();
            }
            else {
                Resolve( Address, out m_PublicAddress );
            }

            EventSink.ServerList += new ServerListEventHandler( EventSink_ServerList );
        }

        private static IPAddress m_PublicAddress;

        private static void EventSink_ServerList( ServerListEventArgs e )
        {
            try
            {
                NetState ns = e.State;
                Socket s = ns.Socket;

                IPEndPoint ipep = (IPEndPoint)s.LocalEndPoint;

                IPAddress localAddress = ipep.Address;
                int localPort = ipep.Port;

                if ( IsPrivateNetwork( localAddress ) ) {
                    ipep = (IPEndPoint)s.RemoteEndPoint;
                    if ( !IsPrivateNetwork( ipep.Address ) && m_PublicAddress != null )
                        localAddress = m_PublicAddress;
                }

                e.AddServer( ServerName, new IPEndPoint( localAddress, localPort ) );
            }
            catch
            {
                e.Rejected = true;
            }
        }

        private static void AutoDetection()
        {
            if ( !HasPublicIPAddress() ) {
                Console.Write( "ServerList: Auto-detecting public IP address..." );
                m_PublicAddress = FindPublicAddress();

                if ( m_PublicAddress != null )
                    Console.WriteLine( "done ({0})", m_PublicAddress.ToString() );
                else
                    Console.WriteLine( "failed" );
            }
        }

        private static void Resolve( string addr, out IPAddress outValue )
        {
            if ( IPAddress.TryParse( addr, out outValue ) )
                return;

            try {
                IPHostEntry iphe = Dns.GetHostEntry( addr );

                if ( iphe.AddressList.Length > 0 )
                    outValue = iphe.AddressList[iphe.AddressList.Length - 1];
            }
            catch {
            }
        }

        private static bool HasPublicIPAddress()
        {
            NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();

            foreach ( NetworkInterface adapter in adapters ) {
                IPInterfaceProperties properties = adapter.GetIPProperties();

                foreach ( IPAddressInformation unicast in properties.UnicastAddresses ) {
                    IPAddress ip = unicast.Address;

                    if ( !IPAddress.IsLoopback( ip ) && ip.AddressFamily != AddressFamily.InterNetworkV6 && !IsPrivateNetwork( ip ) )
                        return true;
                }
            }

            return false;


            /*
            IPHostEntry iphe = Dns.GetHostEntry( Dns.GetHostName() );

            IPAddress[] ips = iphe.AddressList;

            for ( int i = 0; i < ips.Length; ++i )
            {
                if ( ips[i].AddressFamily != AddressFamily.InterNetworkV6 && !IsPrivateNetwork( ips[i] ) )
                    return true;
            }

            return false;
            */
        }

        private static bool IsPrivateNetwork( IPAddress ip )
        {
            // 10.0.0.0/8
            // 172.16.0.0/12
            // 192.168.0.0/16

            if ( ip.AddressFamily == AddressFamily.InterNetworkV6 )
                return false;

            if ( Utility.IPMatch( "192.168.*", ip ) )
                return true;
            else if ( Utility.IPMatch( "10.*", ip ) )
                return true;
            else if ( Utility.IPMatch( "172.16-31.*", ip ) )
                return true;
            else
                return false;
        }

        private static IPAddress FindPublicAddress()
        {
            try {
                WebRequest req = HttpWebRequest.Create( "http://www.runuo.com/ip.php" );
                req.Timeout = 15000;

                WebResponse res = req.GetResponse();

                Stream s = res.GetResponseStream();

                StreamReader sr = new StreamReader( s );

                IPAddress ip = IPAddress.Parse( sr.ReadLine() );

                sr.Close();
                s.Close();
                res.Close();

                return ip;
            } catch {
                return null;
            }
        }
    }
}


Решил проблему с NPC, которые не реагируют на команды BUY/SELL

Код
        
public override void OnSpeech( SpeechEventArgs e )
        {
            base.OnSpeech( e );
            Mobile from = e.Mobile;
            string speech = e.Speech.ToLower();

            if ( m_Mobile is BaseVendor && from.InRange( m_Mobile, Core.AOS ? 1 : 4 ) && !e.Handled )
            {
                if ( e.HasKeyword( 0x014D ) || speech == "sell" )  // *vendor sell*
                {
                    e.Handled = true;

                    ((BaseVendor)m_Mobile).VendorSell( from );
                    m_Mobile.FocusMob = from;
                }
                else if ( e.HasKeyword( 0x003C ) || speech == "buy" ) // *vendor buy*
                {
                    e.Handled = true;

                    ((BaseVendor)m_Mobile).VendorBuy( from );
                    m_Mobile.FocusMob = from;
                }
                else if ( WasNamed( e.Speech ) )
                {
                    e.Handled = true;

                    if ( e.HasKeyword( 0x0177 ) || speech == "sell" ) // *sell*
                        ((BaseVendor)m_Mobile).VendorSell( from );
                    else if ( e.HasKeyword( 0x0171 ) || speech == "buy" ) // *buy*
                        ((BaseVendor)m_Mobile).VendorBuy( from );

                    m_Mobile.FocusMob = from;
                }
            }
        }

Само решилось при переходе на более новую версию RunUO
- "error [TIP]: null string: 145903" при пересечении с npc (на сервере ошибок нет, сам клиент пишет)

НЕ РЕШЕНО

- при открытии меню покупки/продажи зависает клиент, но спокойно реагирует на команды, то есть если продать нечего, меню не появляется и клиент не зависает
- вещи не имеют названий (просто кусочек окна без каких-либо надписей)
- при открытии книги (обычная книга), валится клиент
- "error [TIP]: null string: 145903 : 5" в названии любого предмета, правда есть некоторые, которые отображаются нормально.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Mirage
сообщение 26.7.2017, 9:33
Сообщение #2


*******

Группа: Пользователи
Наличность: 0
Из: Иваново
Пользователь №: 13.089
Возраст: 35



Берешь последнюю ранку или sunuo и меняешь в паре файлов эру на до аосную. То что error всего скорее отсутствия в клилоке клиента надписи. Там по дефолту всякие окошки с хелпами лезут для новых клиентов, свойства резистов... Вырубать надо для старого.
Я делал для 203 клиента, день протрахался, завел, и удалил. Многие интересные и нужные вещи из новых клиентов в ренесансе отсутствуют. И ранка оптимизированней работает с 4-7 клиентами. Оптимальнее всего 6 и 7 до uop клиенты. Там и новые мобы, и резисты, и всякие удачи, новые монстры и боссы.

Насчет buy - нпс по дефолту настроены на клик. Что бы включить голосовое управление надо либо эру опускать либо файл НПС править. Мне кажется проще сделать через даблклик по НПС открытие списка торговли или гампа окна.

Цитата
Да и вообще какой смысл пилить поддержку последних клиентов, если эмулятор не в состоянии поддержать рание версии

Ты никогда не пробовал на ssd/Core i7/GF1070 ставить windows 3.11 ? Зафига компьютеру поддержка десятки если он так хреново со старыми операционками работает? (IMG:style_emoticons/default/rolleyes.gif)


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

Сообщений в этой теме
Александр Needle™   Стабильная сборка   25.7.2017, 23:27
Александр Needle™   Берешь последнюю ранку или sunuo и меняешь в паре...   26.7.2017, 14:13
Juzzver   Эпохи меняются в один клик, но причем тут клиенты...   26.7.2017, 20:17
Александр Needle™   Эпохи меняются в один клик, но причем тут клиенты...   26.7.2017, 22:20
Wap   А смысл в этих извращениях? Мейнстрим в рунете уже...   27.7.2017, 0:32
Александр Needle™   А смысл в этих извращениях? Мейнстрим в рунете уж...   27.7.2017, 1:01
Mirage   Если взять 6 клиент и опустить эпоху то разницы ты...   27.7.2017, 1:43
Александр Needle™   Если взять 6 клиент и опустить эпоху то разницы т...   27.7.2017, 3:18
Juzzver   Эти гампы вшиты в клиент, но сервер не даст выбра...   27.7.2017, 3:41
Александр Needle™   Эти гампы вшиты в клиент, но сервер не даст выбра...   27.7.2017, 3:52
Aimed   Ты на ServUO пробовал ставить экспансию Т2А какое ...   27.7.2017, 13:04
Александр Needle™   Ты на ServUO пробовал ставить экспансию Т2А какое...   27.7.2017, 14:50
Aimed   Никогда не работал с ServUO, попробую, спасибо. ...   29.7.2017, 19:44
Александр Needle™   Как успехи? Да как-то не очень, все пестрое посл...   30.7.2017, 2:17
StaticZ   Да как-то не очень, все пестрое после RunUO, откр...   30.7.2017, 14:33
Александр Needle™   RunUO та еще помойка, одна скорость оружия в кажд...   30.7.2017, 15:06
Aimed   RunUO та еще помойка, одна скорость оружия в кажд...   31.7.2017, 23:02
Александр Needle™   В чем смысл этой критики? Тем кому это действител...   31.7.2017, 23:49
StaticZ   В чем смысл этой критики? Тем кому это действител...   1.8.2017, 2:21
Aimed   Да как-то не очень, все пестрое после RunUO, откр...   31.7.2017, 22:52
Mirage   ServUO грустный эмулятор. Ставишь, запускаешь и не...   29.7.2017, 21:58
Артемий Шан   Я бы сейчас точно брал сервер на runuo, знание C++...   2.8.2017, 14:45
Mirage   :) Хммм боюсь тебя расстроить... Сфера на С++ Р...   2.8.2017, 16:41
StaticZ   Хммм боюсь тебя расстроить... Сфера на С++ Ранка ...   2.8.2017, 18:27
Aimed   Тут нужна оговорка, что хоть и сфера написана на ...   2.8.2017, 21:14
Артемий Шан   Да, точно, C#. Но он в любом случае полезен не мен...   5.8.2017, 3:10
Александр Needle™   И такс, все сделал, настроил RunUO 2.2 Все работае...   8.8.2017, 6:38
Aimed   И такс, все сделал, настроил RunUO 2.2 Все работа...   8.8.2017, 8:25
Александр Needle™   Посмотри какой там фонт файл используется при спи...   8.8.2017, 9:46
Aimed   Fonts.mul имеют русские буквы, более того вводимы...   8.8.2017, 10:00
Александр Needle™   Долго я копал и колдовал над всем этим, вообщем до...   9.8.2017, 17:24
Aimed   Долго я копал и колдовал над всем этим, вообщем д...   10.8.2017, 12:16
Александр Needle™   Если ты сейчас удалишь uo.cfg у тебя вместо норма...   10.8.2017, 12:53
Aimed   Да именно так, я уже сидел игрался с удалением эт...   10.8.2017, 13:14
Александр Needle™   Вот эта строка в нем, скорее всего. Именно! ...   10.8.2017, 13:47
Aimed   Именно! :) Предпологаю что эту настройку в...   10.8.2017, 14:00


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

 

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