Redmoon
Member
(Moved by suggestion to be easier to find)
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:
Second Edit:
Third Edit:
Last edit:
"Scripts\CUSTOMS\UltimaLive\ServerSideScripts\MapsRegistry.cs"
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"
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)
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
And around Line 341 (TerMur)
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
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\"[DOUBLEPOST=1380719231,1380718499][/DOUBLEPOST]**How this works for your players**
Your players will ~only~ need the Igrping.dll/ Igrping_.dll mod.
Once the player connects to your shard a folder will be created in their "C:\ProgramData\UltimaLive\Your Shard Name", with the map#.mul files. These files will be "blank" for your players until they walk around and "discover" areas. The screen may quickly blink as they "discover" areas, which is for me only a millisecond and only has happened when I visited a new land for the first time.
Pics.[DOUBLEPOST=1380722169][/DOUBLEPOST]
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
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\"[DOUBLEPOST=1380719231,1380718499][/DOUBLEPOST]**How this works for your players**
Your players will ~only~ need the Igrping.dll/ Igrping_.dll mod.
Once the player connects to your shard a folder will be created in their "C:\ProgramData\UltimaLive\Your Shard Name", with the map#.mul files. These files will be "blank" for your players until they walk around and "discover" areas. The screen may quickly blink as they "discover" areas, which is for me only a millisecond and only has happened when I visited a new land for the first time.
Pics.[DOUBLEPOST=1380722169][/DOUBLEPOST]