LockeKnight
Wanderer
Lord_Greywolf;838590 said:you need to make a directory - c:\runuofiles
in the datapath.cs file - have it point to that directory instead of null
then copy ALL of the files from your UO directory (not the sub directories) into that folder
then runuo is using the exact same copy of UO that uo are - and it allows you to then freeze items, etc to the map (then have to patch the changed files)
STILL no luck. I just can't figure this out. Here's a Code with my DataPath.
Code:
using System;
using System.IO;
using Microsoft.Win32;
using Server;
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 const string CustomPath = @"C:\Program Files\Ultima Online";
*/
private static string CustomPath = @"C:\runuofiles";
/* The following is a list of files which a required for proper execution:
*
* Multi.idx
* Multi.mul
* VerData.mul
* TileData.mul
* Map*.mul
* StaIdx*.mul
* Statics*.mul
* MapDif*.mul
* MapDifL*.mul
* StaDif*.mul
* StaDifL*.mul
* StaDifI*.mul
*/
public static void Configure()
{
string pathReg = GetExePath( "Ultima Online" );
string pathTD = GetExePath( "Ultima Online Third Dawn" ); //These refer to 2D & 3D, not the Third Dawn expansion
if ( CustomPath != null )
Core.DataDirectories.Add( CustomPath );
if ( pathReg != null )
Core.DataDirectories.Add( pathReg );
if ( pathTD != null )
Core.DataDirectories.Add( pathTD );
if ( Core.DataDirectories.Count == 0 && !Core.Service )
{
Console.WriteLine( "Enter the Ultima Online directory:" );
Console.Write( "> " );
Core.DataDirectories.Add( Console.ReadLine() );
}
}
private static string GetExePath( string subName )
{
try
{
String keyString;
if( Core.Is64Bit )
keyString = @"SOFTWARE\Wow6432Node\Origin Worlds Online\{0}\1.0";
else
keyString = @"SOFTWARE\Origin Worlds Online\{0}\1.0";
using( RegistryKey key = Registry.LocalMachine.OpenSubKey( String.Format( keyString, subName ) ) )
{
if( key == null )
return null;
string v = key.GetValue( "ExePath" ) as string;
if( v == null || v.Length <= 0 )
return null;
if( !File.Exists( v ) )
return null;
v = Path.GetDirectoryName( v );
if( v == null )
return null;
return v;
}
}
catch
{
return null;
}
}
}
}