Victor

Member
Code:
----------------------------------------------------------------------------
ServUO - [http://www.servuo.com] Version 0.5, Build 5233.39846
Publish 54
Core: Running with arguments: -debug
Core: Optimizing for 4 64-bit processors
RandomImpl: CSPRandom (Software)
OpenUO Error: Client files not found.
Scripts: Compiling C# scripts...Finished with: 0 errors, 0 warnings
Scripts: Skipping VB.NET Scripts...done (use -vb to enable)
Scripts: Verifying...
Finished (3990 items, 998 mobiles, 11 customs) (0.84 seconds)
Regions: Loading...done
World: Loading...done (4 items, 0 mobiles, 3 customs) (0.18 seconds)
Restricting client version to 7.0.34.23. Action to be taken: LenientKick
ServerList: Auto-detecting public IP address...done (24.171.68.166)
04:09:46 Joeku's Staff Runebook: Loading...
04:09:46 Listening: 192.168.1.145:2593
04:09:46 Listening: 127.0.0.1:2593
04:09:46 ----------------------------------------------------------------------
04:15:07 Core: Using dual save strategy
04:15:07 World: Saving...Closing Save Files.
04:15:07 Save finished in 0.09 seconds.


I keep having this issue over and over. I had it a few months ago and i haven't messed with the server since then. Here recently i have been working with it to try and get it back up and running. So i get another server from the repo. Whole new server, nothing to do with my old server at all. But i still get this issue.

Code:
using System;
using System.IO;
using Microsoft.Win32;

namespace Server.Misc
{
    public class DataPath
    {
        /* If you have not installed Ultima Online,
        * or wish the server to use a separate set of datafiles,
        * change the 'CustomPath' value.
        * Example:
        *  private static string CustomPath = @"C:\Program Files (x86)\Electronic Arts\Ultima Online Classic";
        */
        private static readonly string CustomPath = @"C:\Server";
        /* The following is a list of files which a required for proper execution:
        *
        * Multi.idx
        * Multi.mul
        * VerData.mul
        * TileData.mul
        * Map*.mul or Map*LegacyMUL.uop
        * StaIdx*.mul
        * Statics*.mul
        * MapDif*.mul
        * MapDifL*.mul
        * StaDif*.mul
        * StaDifL*.mul
        * StaDifI*.mul
        */
        public static void Configure()
        {
            string pathUO = GetPath(@"Origin Worlds Online\Ultima Online\1.0", "ExePath");
            string pathTD = GetPath(@"Origin Worlds Online\Ultima Online Third Dawn\1.0", "ExePath"); //These refer to 2D & 3D, not the Third Dawn expansion
            string pathKR = GetPath(@"Origin Worlds Online\Ultima Online\KR Legacy Beta", "ExePath"); //After KR, This is the new registry key for the 2D client
            string pathSA = GetPath(@"Electronic Arts\EA Games\Ultima Online Stygian Abyss Classic", "InstallDir");
            string pathHS = GetPath(@"Electronic Arts\EA Games\Ultima Online Classic", "InstallDir");
	   

            if (CustomPath != @"C:\Program Files (x86)\Electronic Arts\Ultima Online Classic")
                Core.DataDirectories.Add(CustomPath);

            if (pathUO != null)
                Core.DataDirectories.Add(pathUO);

            if (pathTD != null)
                Core.DataDirectories.Add(pathTD);

            if (pathKR != null)
                Core.DataDirectories.Add(pathKR);

            if (pathSA != null)
                Core.DataDirectories.Add(pathSA);

            if (pathHS != null)
                Core.DataDirectories.Add(pathHS);

            if (Core.DataDirectories.Count == 0 && !Core.Service)
            {
                Console.WriteLine("Enter the Ultima Online directory:");
                Console.Write("> ");

                Core.DataDirectories.Add(Console.ReadLine());
            }
        }

        private static string GetPath(string subName, string keyName)
        {
            try
            {
                string keyString;

                if (Core.Is64Bit)
                    keyString = @"SOFTWARE\Wow6432Node\{0}";
                else
                    keyString = @"SOFTWARE\{0}";

                using (RegistryKey key = Registry.LocalMachine.OpenSubKey(String.Format(keyString, subName)))
                {
                    if (key == null)
                        return null;

                    string v = key.GetValue(keyName) as string;

                    if (String.IsNullOrEmpty(v))
                        return null;

                    if (keyName == "InstallDir")
                        v = v + @"\";

                    v = Path.GetDirectoryName(v);

                    if (String.IsNullOrEmpty(v))
                        return null;

                    return v;
                }
            }
            catch
            {
                return null;
            }
        }
    }
}



I have altered my datapath file.


Code:
#region Header
// **********
// ServUO - OpenUOSDK.cs
// **********
#endregion

#region References
using System;
using System.IO;
using System.Linq;

using OpenUO.Core.Patterns;
using OpenUO.Ultima;
using OpenUO.Ultima.Windows.Forms;
#endregion

namespace Server
{
	public class OpenUOSDK
	{
		//! You should point this to a directory containing a COPY of your client
		//! files if you are having conflict issues with ServUO using the same files
		//! that your client is using.
		//!+ Example: private static string _ClientData = @"C:\Server Files";
		public static string ClientDataPath = @"C:\Server";

		public static AnimationDataFactory AnimationDataFactory { get; set; }
		public static AnimationFactory AnimationFactory { get; set; }
		public static ArtworkFactory ArtFactory { get; set; }
		public static ASCIIFontFactory AsciiFontFactory { get; set; }
		public static ClilocFactory ClilocFactory { get; set; }
		public static GumpFactory GumpFactory { get; set; }
		public static SkillsFactory SkillsFactory { get; set; }
		public static SoundFactory SoundFactory { get; set; }
		public static TexmapFactory TexmapFactory { get; set; }
		public static UnicodeFontFactory UnicodeFontFactory { get; set; }

		public OpenUOSDK(string path = "")
		{
			if (ClientDataPath == @"C:\Program Files (x86)\Electronic Arts\Ultima Online Classic")
			{
				if (Directory.Exists(path))
				{
					ClientDataPath = path;
				}
			}

			Container container = new Container();
			container.RegisterModule<UltimaSDKCoreModule>();
			container.RegisterModule<UltimaSDKBitmapModule>();

			InstallLocation location = (ClientDataPath == null
											? InstallationLocator.Locate().FirstOrDefault()
											: (InstallLocation)ClientDataPath);

			if (location == null || String.IsNullOrWhiteSpace(location) || !Directory.Exists(location.ToString()))
			{
				Utility.PushColor(ConsoleColor.Red);
				Console.WriteLine("OpenUO Error: Client files not found.");
				Utility.PopColor();
			}

			AnimationDataFactory = new AnimationDataFactory(location, container);
			AnimationFactory = new AnimationFactory(location, container);
			ArtFactory = new ArtworkFactory(location, container);
			AsciiFontFactory = new ASCIIFontFactory(location, container);
			ClilocFactory = new ClilocFactory(location, container);
			GumpFactory = new GumpFactory(location, container);
			SkillsFactory = new SkillsFactory(location, container);
			SoundFactory = new SoundFactory(location, container);
			TexmapFactory = new TexmapFactory(location, container);
			UnicodeFontFactory = new UnicodeFontFactory(location, container);
		}
	}
}

And i altered my OpenUOSDK.cs file.


There is no previous data to go back to, this is a completely new server. Those are the only two files i have changed. I got my classic client from the UO main website. Its patched up completely. I have restarted my computer. I'm at a loss, any ideas?
 
The only thing I can think of is Directory.Exist is returning false because it's getting Access Denied because of user permissions. You can try running the server as admin as see if that fixes the issue. Assuming the directory does exist and the path spelling is right in the edits you made, then it has to be something with permissions.
 
First thing I probably should of asked was did you recompile the server. OpenUOSDK.cs is a server file and any changes you make won't show up unless you recompile. Besides that I'm clueless as to what would be causing your issue because I can't reproduce it.
 
Yes i did compile. I do however have a question, seems there are two compile files. Compile.MONO and Compile.WIN. Does it matter which i use?
 
Just looked through your code again. Didn't bother seeing if you changed anything other than the ClientDataPath variable. Sure enough I found your mistake. You are changing the 'if' check of the variable and not the variable itself.

Change this code:
Code:
if (ClientDataPath == @"C:\Program Files (x86)\Electronic Arts\Ultima Online Classic")
Back to it's default state:
Code:
if (ClientDataPath == null && !String.IsNullOrWhiteSpace(path))


Then change this line to the path you need:
Code:
public static string ClientDataPath = @"C:\Server";
Should look something like this using the path you changed before:
Code:
public static string ClientDataPath = @"C:\Program Files (x86)\Electronic Arts\Ultima Online Classic";


I should note that if that's the path you are using and your client is using the same path you'll probably run into IO errors later on. You should use a copy of the client for OpenUOSDK.cs. All the instructions for this are located in the commented section at the top of the file:
Code:
//! You should point this to a directory containing a COPY of your client
//! files if you are having conflict issues with ServUO using the same files
//! that your client is using.
//!+ Example: private static string _ClientData = @"C:\Server Files";

Don't forget to recompile after changes.
 
Wow i feel dumb now. Done that 100 times and messed it up lol. Thank you! It worked everything is running great.
 

Active Shards

Donations

Total amount
$0.00
Goal
$1,000.00
Back