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

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


********

Mammy's hero
Сообщений: 1.227
Регистрация: 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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Александр Needle™
сообщение 9.8.2017, 17:24
Сообщение #2


********

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



Долго я копал и колдовал над всем этим, вообщем добился я русского языка в клиенте. Оказалось все намного проще. Когда я делал архив клиента, перед этим удалил uo.cfg и некоторые другие файлы, для так сказать чистой сборки, но не рассчитывал что из-за этого слетит русский текст. Файл восстановил из оригинальной сборки (образ диска) И все заработало как надо, везде одинаковый шрифт, читаемый и красивый. Прикрепил скриншот для наглядности, справа uo.cfg который создавался сам при первом открытии клиента, слева - оригинальный (ну немного модифицированный мной, но суть та же)
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 10.8.2017, 12:16
Сообщение #3


*********

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



Цитата(Александр Needle™ @ 9.8.2017, 16:24) *

Долго я копал и колдовал над всем этим, вообщем добился я русского языка в клиенте. Оказалось все намного проще. Когда я делал архив клиента, перед этим удалил uo.cfg и некоторые другие файлы, для так сказать чистой сборки, но не рассчитывал что из-за этого слетит русский текст. Файл восстановил из оригинальной сборки (образ диска) И все заработало как надо, везде одинаковый шрифт, читаемый и красивый. Прикрепил скриншот для наглядности, справа uo.cfg который создавался сам при первом открытии клиента, слева - оригинальный (ну немного модифицированный мной, но суть та же)
Прикрепленное изображение


Если ты сейчас удалишь uo.cfg у тебя вместо нормального фонта снова знаки вопросов будут?
Просто я на твой скриншот смотрю и что-то не вижу как по представленной информации клиент вдруг что-то по другому стал делать в плане использования фонтов.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Александр Needle™
сообщение 10.8.2017, 12:53
Сообщение #4


********

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



Цитата(Aimed @ 10.8.2017, 12:16) *

Если ты сейчас удалишь uo.cfg у тебя вместо нормального фонта снова знаки вопросов будут?
Просто я на твой скриншот смотрю и что-то не вижу как по представленной информации клиент вдруг что-то по другому стал делать в плане использования фонтов.

Да именно так, я уже сидел игрался с удалением этого файла.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 10.8.2017, 13:14
Сообщение #5


*********

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



Цитата(Александр Needle™ @ 10.8.2017, 11:53) *

Да именно так, я уже сидел игрался с удалением этого файла.


Цитата
UnicodeSpeech=on

Вот эта строка в нем, скорее всего.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Александр Needle™
сообщение 10.8.2017, 13:47
Сообщение #6


********

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



Цитата(Aimed @ 10.8.2017, 13:14) *

Вот эта строка в нем, скорее всего.

Именно! (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 10.8.2017, 14:00
Сообщение #7


*********

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



Цитата(Александр Needle™ @ 10.8.2017, 12:47) *


Предпологаю что эту настройку ввели исключительно для жителей США, возможно для других англоязычных стран, которым ASCII фонт больше нравится.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Александр Needle™   Стабильная сборка   25.7.2017, 23:27
Mirage   Берешь последнюю ранку или sunuo и меняешь в паре ...   26.7.2017, 9:33
Александр 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


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

 

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