RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Back to Basics RCO 1.0

Status
Not open for further replies.

Grae

Wanderer
Back to Basics RCO 1.0

Setting Up RunUO without a Router and Registering and Setting up UOGateway.

First you need to Download RunUO RCO 1.0 without .Net Framework, which can be found on the RunUO Site Here:-

http://www.runuo.com/downloads/index.php?action=category&id=2

Next you need the .Net Framework which can be downloaded from the Microsoft Site. Here:-

http://msdn.microsoft.com/netframework/downloads/updates/default.aspx

You also need to Download UOGateway. Here:-

http://www.uogateway.com/uogateway.html

First you need a Fresh install of Ultima Online.

Install .Net Framework.

Install RunUO RCO 1.0

Delete all Shortcuts created by the install (they cause problems).
Create your own new Shortcut to RunUO.exe – DO NOT RUN.
Goto the Directory you installed RunUO RCO 1.0
Open \Scripts\Misc\ServerList.cs (Use NotePad to Edit)

Edit Server Name.


Code:
using System;
using System.Net;
using System.Net.Sockets;
using Server;
using Server.Network;

namespace Server.Misc
{
	public class ServerList
	{
		/* Address:
		 * 
		 * The default setting, a value of 'null', will attempt to detect your IP address automatically:
		 * private const string Address = null;
		 * 
		 * This detection, however, does not work for servers behind routers. If you're running behind a router, put in your IP:
		 * private const string Address = "12.34.56.78";
		 * 
		 * If you need to resolve a DNS host name, you can do that too:
		 * private const string Address = "shard.host.com";
		 */

		public const string Address = null; //[b]Do Not Change this unless behind a Router[/b]

		public const string ServerName = "[b]YOUR SHARD NAME HERE[/b] ";

		public static void Initialize()
		{
			Listener.Port = 2593;

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

		public static void EventSink_ServerList( ServerListEventArgs e )
		{
			try
			{
				IPAddress ipAddr;

				if ( Resolve( Address != null && !IsLocalMachine( e.State ) ? Address : Dns.GetHostName(), out ipAddr ) )
					e.AddServer( ServerName, new IPEndPoint( ipAddr, Listener.Port ) );
				else
					e.Rejected = true;
			}
			catch
			{
				e.Rejected = true;
			}
		}

		public static bool Resolve( string addr, out IPAddress outValue )
		{
			try
			{
				outValue = IPAddress.Parse( addr );
				return true;
			}
			catch
			{
				try
				{
					IPHostEntry iphe = Dns.Resolve( addr );

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

			outValue = IPAddress.None;
			return false;
		}

		private static bool IsLocalMachine( NetState state )
		{
			Socket sock = state.Socket;

			IPAddress theirAddress = ((IPEndPoint)sock.RemoteEndPoint).Address;

			if ( IPAddress.IsLoopback( theirAddress ) )
				return true;

			bool contains = false;
			IPHostEntry iphe = Dns.Resolve( Dns.GetHostName() );

			for ( int i = 0; !contains && i < iphe.AddressList.Length; ++i )
				contains = theirAddress.Equals( iphe.AddressList[i] );

			return contains;
		}
	}
}

Close and Save.

Start RunUO RCO 1.0 Server

IF everything goes right you should be looking at a DOS/Command Type window with something like the following:-

Code:
Scripts: Compiling C# scripts...done (0 errors, 0 warnings)
Scripts: Compiling VB.net scripts...no files found.
Scripts: Verifying...done (1477 items, 421 mobiles)
World: Loading...done (143124 items, 25773 mobiles) (8.2 seconds)
Regions: Loading...done
Address: 127.0.0.1:2593
Address: 192.168.0.1:2593
Address: xxx.xxx.xx.xx:2593

During this part of the process you will be asked if you want to create an admin account. Type “Yâ€
Next enter a Password for the New Admin account.

The Admin account is your main work account, only use this account when you need to work on your Shard. Make yourself another account later if you just want to play.

If you see the above code in your DOS/Command window, with IP addresses, then your server is up and running. DO NOT CLOSE. Leave running in the background.

Next thing is to goto UOGateway Website = http://www.uogateway.com/ and Register your Shard and details.

Here’s How.

On the menu 3rd Subsection down is called "Shardlist" under this there is a link called "Add Public Server" click that.

It will take you to a new screen with rules, read them. If you agree click "Yes" at the bottom. New screen "Enter Your E-Mail" Submit.

Wait for e-mail to receive your Password. Once you have that, login (which is the next link under "Add Public Server" called "Edit Public Server/Login".

Here is where you fill in the relevant details.

GENERAL DETAILS:

Server Name = Your Server Name.

Description = A brief description about your Shard.

Webpage = Your Website URL.

Accountpage = ? (I left this blank)

Language = Eng

Roleplay = No/Yes

PvP = No/Yes

Macroing = No/Yes

Autoaccount = No/Yes

Server brand = RunUO

Hide settings page = Set to No

NEXT SECTION - CONNECTION:

Server dns or IP address = Your Internet IP

Server Port = Normally 2593

NEXT SECTION - SERVER ENCRYPTION:

Server encryption = Remove encryption/Keep encryption (set to Remove Encryption).

Thats about it, go to the bottom of the Page and click on the Button "Save Settings"

You are done. Now keep your shard online 24/7.

Now go back to the UOGateway Home Page.

On the Menu under "ShardList" 3rd link down is a link called "Veiw Public Servers" click that and you should go to a new page with a list of all registered Shards.

Restart your UOGateway Program, allow it to download the latest list.

Goto "Public Server List" on your UOGateway Program - Scroll down the list until you find your own shard. Click on it and you should get a copy of it move to "My Servers". Goto "My Servers" and click on your shard name. The client should then start automatically.

If everything has gone fine you should be looking at the log in screen.

Login as: Admin
Enter Password.

Now you should be In-Game as Administrator. From here I recommend making yourself a player account. Only use Admin account for doing modifications and working on the Shard. Anything else use your player account.

In your RunUO Console do you see the following:

Client: 80.212.156.35: Connected. [1 Online]
Client: 80.212.156.35: Disconnected. [0 Online]
Client: 80.212.156.35: Connected. [1 Online]
Client: 80.212.156.35: Disconnected. [0 Online]

If you do, this is the UOGateway Heartbeat. It checks every 30mins to make sure your shard in online. However if you are not getting this, then it is been blocked by something. Could be a firewall (Remember if you are running Windows XP it has an inbuilt Firewall). Also if you have a Virus Scanner active check that also, as some also have a Personal Firewall (disable it, the Firewall part, if it has one).

How do I find out my Internet IP?

Open your DOS/Command window and type: ipconfig <hit enter>

that should tell you your Internet IP and any Network IP's.

Use the Internet one. Also make sure its Static. Or all the above is going to the least of your problems.

For any extra information please refer to RunUO Forum FAQ Section.

http://www.runuo.com/forum/forumdisplay.php?f=18

Best of Luck,
Grae
 

Grae

Wanderer
If you are using a router then the following script is for you.

I do not have or use a router so I could not test it myself. And I do not take any credit for it as it was written by someone else. Thanks goes out to them.

Before using it, backup original ServerList.cs (rename it ServerList.old), make a new text file, copy the following script into the new text file and saveas ServerList (you need to edit the extension .txt to .cs). Also you will need to edit this script to suit your own needs to show the correct Internet address and Network address for your setup and also Server Name.

I have bolded the parts you will need to edit.

Code:
using Server;
using Server.Network;

namespace Server.Misc
{
public class ServerList
{
/* Address:
* 
* The default setting, a value of 'null', will attempt to detect your IP address automatically:
* private const string Address = null;
* 
* This detection, however, does not work for servers behind routers. If you're running behind a router, put in your IP:
* private const string Address = "12.34.56.78";
* 
* If you need to resolve a DNS host name, you can do that too:
* private const string Address = "shard.host.com";
*/

public const string Address = [b]"your public IP here"[/b]; 

public const string LocalServerAddress = [b]"your local IP here"[/b];

public const string ServerName = [b]"server name here"[/b];

public static void Initialize()
{
Listener.Port = 2593;

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

public static void EventSink_ServerList( ServerListEventArgs e )
{
try
{
IPAddress ipAddr;
IPAddress LocalAddress = IPAddress.Parse( LocalServerAddress );


if ( Resolve( Address != null && !IsLocalMachine( e.State ) ? Address : Dns.GetHostName(), out ipAddr ) )
{
e.AddServer( ServerName, new IPEndPoint( ipAddr, Listener.Port ) );
e.AddServer( "Local Server", new IPEndPoint( LocalAddress, Listener.Port ) ); 
}
else
e.Rejected = true;
}
catch
{
e.Rejected = true;
}
}

public static bool Resolve( string addr, out IPAddress outValue )
{
try
{
outValue = IPAddress.Parse( addr );
return true;
}
catch
{
try
{
IPHostEntry iphe = Dns.Resolve( addr );

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

outValue = IPAddress.None;
return false;
}

private static bool IsLocalMachine( NetState state )
{
Socket sock = state.Socket;

IPAddress theirAddress = ((IPEndPoint)sock.RemoteEndPoint).Address;

if ( IPAddress.IsLoopback( theirAddress ) )
return true;

bool contains = false;
IPHostEntry iphe = Dns.Resolve( Dns.GetHostName() );

for ( int i = 0; !contains && i < iphe.AddressList.Length; ++i )
contains = theirAddress.Equals( iphe.AddressList[i] );

return contains;
}
}
}

I truely hope this helps those using routers (may not work with all routers). And again many thanks to the author of this script. If all else fails and this script does'nt work for you, try Mr.Fixit's. Most likely found on the UOGateway MessageBoards.

Good Luck.

Grae
 

Lady_Ella

Wanderer
Hmm i cant seem to get further than... well it shows me that im loged in but stays at the same pont and like it seems has no maps or worlds .... :(
And it doesnt recognize me as admin either i think ... :(
 

Quantos

Lord
Lady_Ella said:
Hmm i cant seem to get further than... well it shows me that im loged in but stays at the same pont and like it seems has no maps or worlds .... :(
And it doesnt recognize me as admin either i think ... :(

I am closing this thread as it leads a new user to assume some things that are just not true.

Lady Ella, please post a new support thread in the New Join Forum, this thread is a bad choice to try to get support in.

*Thread Closed.*
 
Status
Not open for further replies.
Top