I'm not sure what I'm missing or if anyone here uses this and can help. I can log in and go to my new maps (added not replaced), The problem is if I log out I can't log back in or get a client crash. I'm using client 7.0.7.1 (really want 7.0.8.2 but I can't find it).

Edit: I have found the issue with this. It is if you go out of the bounds of the map, and logging in with a stream does lag me for 3 seconds on log in screen (~only~ on custom maps).
 
Last edited:
@Redmoon i would really like to see your chronicles on how you got this installed and working, i too would like to add some new maps!

Also how are you creating these maps? I have probably asked this question a million times but never actually followed through on it as before Ultima Live it was more of a pain to get the up and running.
 
Edit: I forgot "UltimaLiveSettings.cs" just change the "Test" to "Your Server Name" so folder will be named "Your Server Name" and not "Test" in "C:\ProgramData\UltimaLive\"

@sec_goat
For the Ultima Live:
1.I put the whole folder in my Scripts\Customs
2. Rename Igrping.dll in my UO Client folder to Igrping_.dll and pasted the one from Ultima Live into it, leaving both
3. Run Server and Ultima Live will create a folder in "C:\ProgramData\UltimaLive\Your Shard Name" and it will put all maps/staidx/statics in there.
4. Add new map/staidx/static to folders "Custom Path Folder" and "C:\ProgramData\UltimaLive\Your Shard Name"
5. edit these files:
"Scripts\Mobiles\Playermobile.cs (I think this is the one most have issues with)
First edit:
Code:
namespace Server.Mobiles
{
/* Begin UltimaLive Mod */
public interface UltimaLiveQuery
{
int QueryMobile(Mobile m, int previousBlock);
}
/* End UltimaLive Mod */
#region Enums

Second Edit:
Code:
 public override void MoveToWorld(Point3D loc, Map map)
{
base.MoveToWorld(loc, map);
 
 
 
 
this.RecheckTownProtection();
}
/* Begin UltimaLive Mod */
public static UltimaLiveQuery BlockQuery;
private int m_PreviousMapBlock = -1;
/* End UltimaLive Mod *

Third Edit:
Code:
 public override void SetLocation(Point3D loc, bool isTeleport)
{
if (!isTeleport && this.IsPlayer())
{
// moving, not teleporting
int zDrop = (this.Location.Z - loc.Z);
 
 
 
 
if (zDrop > 20) // we fell more than one story
this.Hits -= ((zDrop / 20) * 10) - 5; // deal some damage; does not kill, disrupt, etc
}
 
 
 
 
base.SetLocation(loc, isTeleport);
 
 
 
 
if (isTeleport || --this.m_NextProtectionCheck == 0)
this.RecheckTownProtection();
/* Begin UltimaLive Mod */
if (BlockQuery != null)
{
m_PreviousMapBlock = BlockQuery.QueryMobile(this, m_PreviousMapBlock);
}
/* End UltimaLive Mod */

Last edit:

Code:
public override bool CheckShove(Mobile shoved)
{
if (this.m_IgnoreMobiles || TransformationSpellHelper.UnderTransformation(shoved, typeof(WraithFormSpell)))
return true;
else
return base.CheckShove(shoved);
/* Begin UltimaLive Mod */
if (BlockQuery != null)
{
m_PreviousMapBlock = BlockQuery.QueryMobile(this, m_PreviousMapBlock);
}
/* End UltimaLive Mod */

"Scripts\CUSTOMS\UltimaLive\ServerSideScripts\MapsRegistry.cs"
Code:
m_Definitions.Add(5, new MapDefinition(5, new Point2D(1280, 4096), new Point2D(1280, 4096))); //TerMur
m_Definitions.Add(32, new MapDefinition(32, new Point2D(6144, 4096), new Point2D(6144, 4096))); //Doinsiun

The numbers 32 are my new map numbers (map32.mul/staidx32.mul/statics32.mul)
The numbers (6144, 4096) are the map size

"Scripts\Misc\mapdefinitions.cs"
Code:
RegisterMap(5, 5, 5, 1280, 4096, 1, "TerMur", MapRules.TrammelRules);
//Custom Map
RegisterMap(32, 32, 32, 6144, 4096, 1, "Doinsiun", MapRules.TrammelRules);//Dungeons

The "32,32,32," is my new map
The "6144, 4096" is the new map size
The "1" is the season (0 is desolation aka trees with no leaves)
"Doinsiun" is the map name
"MapRules.TrammelRules" well I'm sure ya know that one.

I also edited my PublicMoongate.cs (I haven't finished with it yet, but I copied Trammel to use until I get it all sorted out)
Code:
[Usage("MoonGen")]
[Description("Generates public moongates. Removes all old moongates.")]
public static void MoonGen_OnCommand(CommandEventArgs e)
{
DeleteAll();
 
 
 
 
int count = 0;
 
 
 
 
count += MoonGen(PMList.Trammel);
count += MoonGen(PMList.Felucca);
count += MoonGen(PMList.Ilshenar);
count += MoonGen(PMList.Malas);
count += MoonGen(PMList.Tokuno);
count += MoonGen(PMList.TerMur);
//Custom Maps
count += MoonGen(PMList.Doinsiun);
And add under Tokuno (Line 255 for me)
(new PMList (#####,#####) These are cliloc numbers. The first is for the name, the second is to add the name with color
Clicoc color ex:<BASEFONT COLOR=#2DDC1B>Malas</BASEFONT

Code:
//Dungeons Start
   public static readonly PMList Doinsiun =
new PMList(1119784, 1119785, Map.Maps[32], new PMEntry[]
{
new PMEntry( new Point3D( 4467, 1283, 5 ), 1012003 ), // Moonglow
new PMEntry( new Point3D( 1336, 1997, 5 ), 1012004 ), // Britain
new PMEntry( new Point3D( 1499, 3771, 5 ), 1012005 ), // Jhelom
new PMEntry( new Point3D(  771,  752, 5 ), 1012006 ), // Yew
new PMEntry( new Point3D( 2701,  692, 5 ), 1012007 ), // Minoc
new PMEntry( new Point3D( 1828, 2948,-20), 1012008 ), // Trinsic
new PMEntry( new Point3D(  643, 2067, 5 ), 1012009 ), // Skara Brae
/* Dynamic Z for Magincia to support both old and new maps. */
new PMEntry( new Point3D( 3563, 2139, Map.Maps[32].GetAverageZ( 3563, 2139 ) ), 1012010 ), // (New) Magincia
new PMEntry( new Point3D( 3450, 2677, 25), 1078098 )  // New Haven
});
//Dungeons End

And around Line 341 (TerMur)

Code:
public static readonly PMList TerMur =
new PMList(1113602, 1119783, Map.TerMur, new PMEntry[]
{
new PMEntry(new Point3D(852, 3526, -43), 1113603), // Royal City
new PMEntry(new Point3D(926, 3989, -36), 1112572), // Holy City
});
public static readonly PMList[] UORLists = new PMList[] { Trammel, Felucca, Doinsiun, DergogeaLach, Vollstrecker /*,Lune, Odland */ };
public static readonly PMList[] UORListsYoung = new PMList[] { Trammel };
public static readonly PMList[] LBRLists = new PMList[] { Trammel, Felucca, Ilshenar, Doinsiun, DergogeaLach, Vollstrecker ,Lune, Odland  };
public static readonly PMList[] LBRListsYoung = new PMList[] { Trammel, Ilshenar, Doinsiun, DergogeaLach, Vollstrecker ,Lune, Odland  };
public static readonly PMList[] AOSLists = new PMList[] { Trammel, Felucca, Ilshenar, Malas, Doinsiun, DergogeaLach, Vollstrecker ,Lune, Odland  };
public static readonly PMList[] AOSListsYoung = new PMList[] { Trammel, Ilshenar, Malas, Doinsiun, DergogeaLach, Vollstrecker ,Lune, Odland  };
public static readonly PMList[] SELists = new PMList[] { Trammel, Felucca, Ilshenar, Malas, Tokuno, Doinsiun, DergogeaLach, Vollstrecker ,Lune, Odland  };
public static readonly PMList[] SEListsYoung = new PMList[] { Trammel, Ilshenar, Malas, Tokuno, Doinsiun, DergogeaLach, Vollstrecker ,Lune, Odland  };
public static readonly PMList[] SALists = new PMList[] { Trammel, Felucca, Ilshenar, Malas, Tokuno, TerMur, Doinsiun, DergogeaLach, Vollstrecker ,Lune, Odland  };
public static readonly PMList[] SAListsYoung = new PMList[] { Trammel, Ilshenar, Malas, Tokuno, TerMur, Doinsiun, DergogeaLach, Vollstrecker ,Lune, Odland  };
public static readonly PMList[] RedLists = new PMList[] { Felucca };
public static readonly PMList[] SigilLists = new PMList[] { Felucca };
private readonly int m_Number;
private readonly int m_SelNumber;
private readonly Map m_Map;
private readonly PMEntry[] m_Entries;
public PMList(int number, int selNumber, Map map, PMEntry[] entries)

I haven't edited the [go command as I don't need it. But to go to your new map IG [set map 32 or [set map "new map name"

Make sure to paste new map/staidx/statics into ~both~ "C:\ProgramData\UltimaLive\Your Shard Name" and "your custom data folder"

Edit: Sheesh that's a lot of words,lol
I left the codes "complete" due to people not being able to find the locations (Playermobile)
sorry :oops:
 
Last edited:
Redmoon this would make an excellent tutorial for any one having issues or questions for adding a custom map, maybe one day you would share this under the Tutorial section? :)
 
I have no idea how to share it, copy and paste?[DOUBLEPOST=1380216842,1380213418][/DOUBLEPOST]@sec_goat "Also how are you creating these maps? I have probably asked this question a million times but never actually followed through on it as before Ultima Live it was more of a pain to get the up and running."

Yeah, back in the day things were much easier. I still have custom art work (clothing and weapons) to fix as new definitions have changed (mainly art to gumps with female definitions). At this moment I've bought a map from darkshard, which works flawless. I had found one of my older maps, but since the art.mul has changed the locations of my older customs..well I'd have to totally re-do it. I don't have the time right now to make a new map or fix mine and my peeps are silently rushing me to get the server up and running. :oops: I think I have a link to a tutorial ~somewhere~ or a file I made that's lost within the clutter of old files I have on a "How to make a map", but I do remember that it's pretty simple, but tedious to draw out a map (Corel, Photoshop, Gimp). The secret is, you have to make the map no larger than the largest current map (7168 x 4096), most make them (6144 x 4096). OR you can make them with a map program (Dragon <-prefer, UO Landscaper <- not as much). You also can make ~just~ a land bmp, add it and decorating to your specs works too.

~If~ you have a bmp of a map you can just run it through Dragon to get the muls you're needing. (<- I don't have my old bmps..just muls and dragon's mul2bmp isn't working for me.

Quick tutorial on getting muls from map.bmps:
Open Dragon.exe and load your map.bmp file
"BMP File"
Set output location (You don't need any muls in this location..or I don't)
EX: C:\Maps\map32.mul
Click "Config" button and select "Sphere Statics" uncheck all others if checked
Click Start and it'll make map32.mul

~Leave Dragon OPEN~
Open Dragonsp.exe
Set the staidx0 and statics0 to where you want to save them
EX: C:\Maps\statics32.mul
(Yeah, you don't have them...yet)
On the left in the middle click the "All" button. (This selects tile types)
Click Start and it'll make your staidx32.mul and statics32.mul.
It will ask you if you want to clear/remove statics and well...I'll leave that up to you, but I select NO.

Once you've done this, then you can copy and paste these into your respective folders.

I hope this at least 1/2 way answers your question.
 

Attachments

  • adev.uoquint.ru_attachments_download_778_render_example.png
    adev.uoquint.ru_attachments_download_778_render_example.png
    1.1 MB · Views: 63
  • adev.uoquint.ru_attachments_download_777_udktoolshelp.png
    adev.uoquint.ru_attachments_download_777_udktoolshelp.png
    32.1 KB · Views: 58
@RoninGT The way I understand it, if you turn on the live streaming of maps you do not have to have them download the new maps. I could be wrong as I have zero experience with this other than what I have read.
 
I haven't tested any of the new(er) programs, and the last time I did a map was over 6 years ago. I used CorelDraw at that time, along with Worldforge, dragon. Most of my old maps are MIA and the one I ~did~ find is screwy due to newer art. :eek: I'm dealing with having to jump around the map since no map viewer works correctly...yet. I have UO Atlas but I have an error that I can't understand at this moment. (If I didn't awake @ 3AM I'd be able to help more,lol)
You can download a few free maps from these two sites and convert to muls/rename:

http://www.uo-pixel.de/map/bmp/
http://uoarchive.com/index.php/downloads/viewcategory/56

or buy one from darkshard.net (<- I did this due to laziness and being rushed to get everything done)[DOUBLEPOST=1380300009][/DOUBLEPOST]Oh! I did however find a program to extract map.muls to bmp! (so I can fix my maps later on) I can't for the life of me remember where I got it...one of those sites above....I think. :oops:
 
The darkshard maps are really great, they come with complete towns built, roads so for $ 14.99 you can't go wrong. We had the Ultima map and loved it no details missed even wells extra buildings outside of towns, alot to explore :)
 
Didn't this also require your players to patch their client files (or Razor files) to allow for the live map editor to work correctly or has that changed?
 
Ok I got this installed and the server runs fine but it didn't install a folder like this "C:\ProgramData\UltimaLive\Your Shard Name"
I have tried to add a new test map but the only thing I can figure out is adding new facets of the current maps ... any help would be appreciated.
X
 
Ok I got this installed and the server runs fine but it didn't install a folder like this "C:\ProgramData\UltimaLive\Your Shard Name"

3. Run Server and Ultima Live will create a folder in "C:\ProgramData\UltimaLive\Your Shard Name" and it will put all maps/staidx/statics in there.

These files should be in your custom path folder, but Ultima Live should still make a folder. I use Windows 8, but did this with Windows 7 too. You can search your computer for the map#.mul to see if maybe the folder is just hidden or in another location.


Did you patch your UO client file?
2. Rename Igrping.dll in my UO Client folder to Igrping_.dll and pasted the one from Ultima Live into it, leaving both
This is ~only~ what will be needed for others to see the maps when they connect to your shard.

I have tried to add a new test map but the only thing I can figure out is adding new facets of the current maps ... any help would be appreciated.

I'm a little confused as to what you're needing here, so bare with me. :D

4. Add new map/staidx/static to folders "Custom Path Folder" and "C:\ProgramData\UltimaLive\Your Shard Name"

This is what I'm thinking you need to do,:confused:? New map files (just like standard map files) need to be in both of these folders. One folder is the server sending the buffered map files to a client (Custom Data Path), and the other is the actual Ultima Live map files that get "built by walking around" (UltimaLive\Your Shard Name).


I would suggest testing a new map (felucca factions map would do nicely), re-name the map#.mul, staidx.mul, and statics.mul to a new number (map42.mul, staidx42.mul, statics42.mul) and putting it in folders, and add to the proper scripts. Then when log in [set map 42 and see if it takes you there.
 
Thanks for your reply. I have looked and diid a search just like u said and still no
C:\ProgramData\UltimaLive\Your Shard Name" I run patch 7.0.34.2 I think
 
Thanks for your reply. I have looked and diid a search just like u said and still no
C:\ProgramData\UltimaLive\Your Shard Name" I run patch 7.0.34.2 I think

1. Do you see this on server terminal/console?
World: Loading...Loading Ultima Live map changes
done
**If not then Ultima Live is not installed or not installed correctly**


2. Do you see green (like being in Green Acres) on the IG Map and then it fills in the map while walking?
**If not then Ultima Live is not installed or not installed correctly**

If #1 is true, but #2 isn't then more than likely you didn't copy/replace the dll into your UO folder (C:\Program Files\UO).


I can't say 100% that it isn't your patch, but I use a lower client for custom artwork and mounts. Unless EA has done more major changes to the client then I highly doubt this would be an issue.
 
I do see the Loading Ultima Live Map changes and the server boots up great. I do not see the green. What is the IG map? I did copy paste and change the name of the dll file/ they are both in the client folder.
 
ok I got it working ... I was using the enhanced client instead of classic doh! me... ok so to add a new map I place it in the C:\ProgramData\UltimaLive\Your Shard Name" and custom path folder ? What custom path folder are we talking about? The one in my server customs?
 
ok I got it working ... I was using the enhanced client instead of classic doh! me... ok so to add a new map I place it in the C:\ProgramData\UltimaLive\Your Shard Name" and custom path folder ? What custom path folder are we talking about? The one in my server customs?


Scripts\Misc\DataPath.cs

* Example:
* private static string CustomPath = @"C:\Program Files\Ultima Online";
*/
private static readonly string CustomPath = @"C:\Server";

//private static readonly string CustomPath = @"C:\Data";
 
I must be missing something .... I copied the Felucca map0.mul staidx0.mul and statics0.mul and changed them to map37.mul ect... I then copied them into my client folder ,C:\PrgramData\UltimaLive\Test , and scripts\customs\Ultimalive\Ultimalive\Maps ... in my server I then changed the map registry and map definitions to RegisterMap (37,37,37,7168,4096,3, "Hogwarts",MapRules.FeluccaRules); and m_definitions.Add ect .... when I log in and do [set map 37 the whole screen goes blank and the character is visable or the server just restarts. What am I missing?

My datapath is set up like u have on your previous post but am I suppose to put the map files in that folder as well?
 
Last I remember, UltimaLive had it's own datapath class setup. You had to add your maps to it also. Although I haven't used it in a loooong time, so things could of changed.
 
I have been able to see some of the maps I put in but its al bugged out ... most of the map has tiles that say "unused" all over it. This seemed like a great idea for expansions but I cant seem to get it to work properly
 
I have been able to see some of the maps I put in but its al bugged out ... most of the map has tiles that say "unused" all over it. This seemed like a great idea for expansions but I cant seem to get it to work properly

I think this is because the Z axis may be off. (I actually had this issue with a few of my custom maps) Try set your z higher/lower to see. ( [set z 10 target yourself )

If you can see most of the map but have scattered unused tiles then this is because you're using a newer map with older muls.
 
Thanks for that Ill try it .... the map I tried today [set map 40 all I got was a black screen with nothing. The Ultima Live little map does not work on custom maps it stays green
 
Thanks for that Ill try it .... the map I tried today [set map 40 all I got was a black screen with nothing. The Ultima Live little map does not work on custom maps it stays green

I was working on adding custom maps to another UOAM style program to be able to see more of custom maps than the IG map (overview map), but RL things took over.
The black screen could be because your character is not at the correct z, in a "dungeon reserve area", or Ultima Live has not buffered the map yet. (try [tele command to move to find some land or water)

The green on the overview map could be due to being in a green acres area, or not moving around to "unlock" the map.

I haven't reused the UO maps (tram, malas, ilsh, etc), I'm using new custom maps.
If you are re-using standard UO maps, then you shouldn't have many issues with the finding areas, other than the possible z issue. If you are using a new custom map then areas may be more difficult to find.

Here is what I did for my custom maps.
Go to the Luna moongate and [set map #, then [set z 10, then used [mtele or [tele to open a bit of the map, use the bmp of the new map for reference and teleport around until I found a noticeable landmark (similar to Grove of Love in Trammel/Felucca). Once I found an area, I would use [where to get the cords and typed it in a copy of the map bmp with photoshop. This will be useful when adding in the public moongates to your new lands.

The only issue I have found with custom maps is not being able to "loop" the map, but stops at the top, bottom or sides. (sail to the bottom of the map and "loop" to the top...think old school power hour skill grinding on a boat).

Screenshot:
Redmoon_12-10_07.34.jpg
Custom map:
MAP.jpg
 
Redmoon, the "map wrap" points you're talking about where you can circumnavigate the map are hard coded in the client. You'd have to hex edit the client.exe in order to change, add or remove them. Its definitely a sucky limitation for those of us using custom maps.
 
Are you talking about the edges of the map where the client tries to match the tile altitude? The wrap point where the ocean normally meets the dungeon space?

I hope you don't have to modify the client.exe to achieve this because UltimaLive should be altering that in memory for you when the client is run as long as you've defined it in the MapRegistry.cs:

Code:
m_Definitions.Add(0, new MapDefinition(0, new Point2D(7168, 4096), new Point2D(5120, 4096))); //Felucca
m_Definitions.Add(32, new MapDefinition(32, new Point2D(6144, 4096), new Point2D(6144, 4096))); //Custom Example

The first Point2D is the map dimension, and the second Point2D should be the wrap point.

Relevent client side code:
Code:
if (m_mapDefinitions.find((uint32_t)map) != m_mapDefinitions.end())
{
  *reinterpret_cast<uint16_t*>(m_pAppState->m_pMapDimensions) = m_mapDefinitions[map].mapWidthInTiles;
  *reinterpret_cast<uint16_t*>(m_pAppState->m_pMapDimensions + 4) = m_mapDefinitions[map].mapHeightInTiles;
  *reinterpret_cast<uint16_t*>(m_pAppState->m_pMapDimensions + 8) = m_mapDefinitions[map].mapWrapWidthInTiles;
  *reinterpret_cast<uint16_t*>(m_pAppState->m_pMapDimensions + 12) = m_mapDefinitions[map].mapWrapHeightInTiles;
  m_pManager->LoadMap(map);
  m_currentMap = map;
}

Now what Ultima Live doesn't do is move you / your ship when you reach the edges of the map.
I believe that's currently handled in baseboat.cs


It looks like UltimaLive doesn't currently stream the other side of a wrapped map correctly at this time. In this screenshot I've altered the wrap point of Felucca to 1000, 4096. The client acts like one would expect. It shows the other end of the map. The problem is that in the lower portion of the screenshot that part of the map hasn't been streamed yet. I will have to look into this before the next release, but it does seem to modify the wrap points correctly in the client.

MapWrapping.png
 
Last edited:
@ m309
Yeah, I haven't had time to fix/look into a fix for these limitations yet. I plan on working on this and other things after the holiday madness has past. ;)

@Praxiiz
Now what Ultima Live doesn't do is move you / your ship when you reach the edges of the map.
I believe that's currently handled in baseboat.cs

It looks like UltimaLive doesn't currently stream the other side of a wrapped map correctly at this time. In this screenshot I've altered the wrap point of Felucca to 1000, 4096. The client acts like one would expect. It shows the other end of the map. The problem is that in the lower portion of the screenshot that part of the map hasn't been streamed yet. I will have to look into this before the next release, but it does seem to modify the wrap points correctly in the client.

Yes, the wrapping is the only non-working issue I have found. The other would be a "blackout" when logging in to a custom map. The blackout fixes itself after movement, but scary for those who experience this for the first time. :D:D:D
 
this is what I get on my map 32 that came with ultima live and a few other maps I have tried. I get all these unused spots all over. check the image
 

Attachments

  • 20131211_215739.jpg
    20131211_215739.jpg
    2.8 MB · Views: 41
this is what I get on my map 32 that came with ultima live and a few other maps I have tried. I get all these unused spots all over. check the image

Now we're cookin with grease! :cool:

These unused tiles are because something is missing or moved in the tiledata.mul, art.mul, and artidx.mul. I have seen this when I used a new map with an older client/tiledata.mul.

The solutions are:
1. go in and re-add the missing tiles in tiledata.mul and the art.muls (easiest)

2. manually go and [add static # all around the world (painfully tedious)

3. Use a different map, or create a new map with the muls you have.


Just to clarify...this is not a Ultima Live issue. ;)
 
Last edited:
Redmoon said:
The other would be a "blackout" when logging in to a custom map.

Does this only happen when you relog? Or does it also happen when you first start the game client and login to a custom map?
 
The maps on that website require their mul package with the following files:

uo-pixel-mul(22-09-13).rar:
animdata.mul
art.mul
artidx.mul
radarcol.mul
texidx.mul
texmaps.mul
tiledata.mul

Those maps are using graphics which are not part of the standard client. If you haven't downloaded that package and installed it over your client files, you will continue to see the "unused" tiles everywhere.

When you install that package into your client, do you see a blank map when you log into a custom map?
 
I didn't ever get all those u just posted ... but I have seen a blank map .... this is streaming all the original maps but none of the custom ones I see it open up in the mini map in like trammel but in a custom map the mini map stays green.
 
So I added in all those files and it messed up a lot of stuff some not worried about the maps from uo-pixel.de The maps from darkshard work great on the server computer but when I log into a different computer to try it it knocks me out and says invalid facet. So I suppose its not streaming? How do u get it to actually stream to the other players?
 
Every player needs to:
  1. Rename the Igrping.dll in their client folder to Igrping_.dll
  2. Copy the Igrping.dll from UltimaLive into their client folder
Then they should be able to stream just fine.
 
I think I've fixed the black screen when players relog or are forcibly disconnected. It will be included in the next release which will be soon. I am steadily adding features and working toward the 1.0 release.
 
Back