Go Back   RunUO - Ultima Online Emulation > RunUO > FAQ Forum

FAQ Forum A place to find answers to the most frequently asked questions, and a place to post said answers. Do NOT use this forum to ask questions.

Reply
 
Thread Tools Display Modes
Old 03-15-2007, 08:58 PM   #1 (permalink)
Forum Expert
 
mordero's Avatar
 
Join Date: Nov 2003
Location: Illinois, USA
Age: 21
Posts: 2,911
Default Getting RunUO 2.0 to work on Vista

With the latest SVN of RunUO (286) you no longer need to make any changes to the core of the server for it to work on Microsoft Vista. The only change that needs to be made is in Scripts/Misc/ServerList.cs.

Find this line in the file (it is located right after the larger comment/header):
Code:
public static readonly string Address = null;
You will need to change this to either a host name or IP address. If you want people outside of your LAN to connect to your server, I recommend using No-IP (No-IP - Dynamic DNS, Static DNS for Your Dynamic IP) to set up a dynamic DNS for your server. So then the line should look something like this:

Code:
public static readonly string Address = "hostname.no-ip.org";
And that's all there is to it!


The following quote is just the old instructions on getting RunUO to work. **These no longer work, I am only keeping them here for archival sake**
Quote:
Intro

If you have tried using the RunUO 2.0 server on Vista, you know that there are some problems. One of the fixes is to go through and disable some of the functions in Vista, but I find this to be a temperary fix that does really solve the problem. Instead, you can change a few things in the core to get it working.** This fix I show here is what I posted in this thread: http://www.runuo.com/forums/server-s...light=solution plus a couple of things to make the server work on both Vista and XP. Since I will be walking you through every change you need to make, you only need a basic knowledge of C#.net, how RunUO works, and such. However, I reccomend you only do this if you understand what you are doing.

I also recommend you read the following articles on wikipedia.org:
IPv4 - Wikipedia, the free encyclopedia
IPv6 - Wikipedia, the free encyclopedia


**Disclaimer: Once you make any changes to your core, you can no longer receive any script support from these forums. So, if you have any problems with scripts, etc you need to test them on the version available for download here: http://www.runuo.com/forums/downloads.php?do=cat&id=1 or one of the SVN versions.

Distro Scripts Change
The first thing you need to do is use a custom ServerList.cs in the distro scripts. The default version tries to determine you IP address itself which causes some problems for clients trying to connect. This is because the server will attempt to use a IPv6 address instead of IPv4. Since the client does not yet support IPv6 we need to force the server to use a IPv4 for connections.

Doing this is simple, you need to change the Address to to specific IP or DNS host name.

Examples:
Code:
public static readonly string Address = "192.168.1.65";
or for a DNS host name:
Code:
public static readonly string Address = "blah.someserver.com";
From what I can tell, this fix will allow connections from clients on Windows XP but not Windows Vista, this is where the required core modifications are needed.

Core Modifications

The other class we need to edit inside of the core is the Listener.cs. The first change is made in its constructor. We need to find
Code:
m_Listener = Bind(IPAddress.Any, port);
and change it to

Code:
if (Socket.OSSupportsIPv6)
m_Listener = Bind(IPAddress.IPv6Any, port);
else
m_Listener = Bind(IPAddress.Any, port);
Next, we need to change the Bind method that is used. So, find:
Code:
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
and change it to this:
Code:
Socket s;
if (Socket.OSSupportsIPv6)
{
s = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
s.SetSocketOption(SocketOptionLevel.IPv6, (SocketOptionName)27, 0);
}
else
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
This should enable connections from both Windows XP and Windows Vista by allowing IPv4 connections that are required to be used by the client.

If you have any problems with these changes running on either version of Windows, please contact me so I can figure out what else needs to be fixed for it to work.

Thanks to:

Erica for testing the original fix,
noobie for this article: Windows Core Networking : Creating IP Agnostic Applications - Part 2 (Dual Mode Sockets), and
Zippy for pointing out the needed change in ServerList.cs

Last edited by mordero; 03-29-2008 at 08:40 PM.
mordero is offline   Reply With Quote
Old 03-29-2008, 08:40 PM   #2 (permalink)
Forum Expert
 
mordero's Avatar
 
Join Date: Nov 2003
Location: Illinois, USA
Age: 21
Posts: 2,911
Default

I've updated the instructions for the latest SVN (286).
mordero is offline   Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 RC5