Praxiiz
Sorceror
Ultima Live v0.50 Alpha
This is an ALPHA release! Do not use it on a live production server!!
Change Log
--------------------------
v.0.50 Alpha
Support for auxiliary maps.
(changes to this page are shown in green)
Statics are now sorted not only by their location in a block, but then by Z location, and item id.
Log4Net has been added to handle error logging.
[m is now supported for commands ([area coming soon!)
objectlist target implemented server side (Thanks -hash- for the packet info)
The entire structure has been reworked.
Some packets have been modified.
And many many more internal changes on the client side.
v0.44 Alpha
Changed the save system to save only pending changes to disk on each save. When a server loads, it will load all the change files and apply them. Use [ExportClientFiles to write the full client files out to disk with all changes. They can then be copied to the server's client file folder. Then the change files can be deleted from the /UltimaLive/ClientFiles.
To revert to an old save, the change files after that save date will have to be moved or deleted.
v0.38 Alpha
Removed the version hashing system. The hash files and folders are no longer necessary.
Added a CRC system to take the place of the hashing system.
Fixed a bug where blocks with 0 statics wouldn't update properly.
--------------------------
Summary
This project allows the modification of client map and static files while the client is running.
Requirements
This project requires Razor.
This project supports clients version 7 and above. It does not support diff files.
Client 6 may be supported at a later time, use at your own risk.
Known Issues
Maps need to be a minimum size of 1024x1024
You will experience problems if your coordinates are outside of the map size. I recommend getting to somewhere well inside the size limit of the map on an OSI map before you switch to an auxiliary map.
Razor's Auto-Queue does not play well when a player is on an auxiliary map. I will be working on this issue in upcoming releases. For now just turn off auto-queue on the More Options tab on Razor when you're on an auxiliary map.
Defrag Button is broke.
[Livefreeze works, but you will not see the changes immediately, this is really simple to fix. Look for it in the next release.
The wrapping parameter in the MapRegistry.cs is currently ignored. Its mostly there for systems to refer to.
There is no provision for wrapping in the boat system. Please explore this and post results.
There is a known issue with about a 100ms delay (it looks like your screen blacks out for a fraction of a second). This is caused by the client re-synching with the server after it refreshes. I will be working on correcting this in future releases. The only non-visual side effect that it causes is a little bit of wasted bandwidth. As of 0.50 Alpha, this has been modified, please provide feedback if you think its better or worse.
Notes
If you're not comfortable with the performance of the streaming part of this system, you can disable it by removing the playermobile modifications. You will then need to distribute your auxiliary maps as you normally would.
You would do this if you were interested in having auxiliary maps, but not necessarily the editing aspects of the system. Or perhaps you are done editing and just want your players to be able to be able to use the auxiliary maps.
You cannot run a server and a client off the same set of data files! Make a copy of your UO folder if you're running the client and server on the same machine.
The commands that are available with this release should be viewed as example commands for building player interact-able systems.. Its not very efficient to type commands to edit a map, so I will be adding a map editing component to the client end that will make editing more efficient.
For now, the example commands are as follows:
[inclandalt increment land altitude (z) by a positive or negative number at a single tile
[setlandalt set land altitude (z) to a specific number
[setlandid change the tile number of a land tile
[incstaticalt increment static altitude (z) by a positive or negative number
[setstaticalt set static altitude (z) to a specific number
[setstaticid change statid art id number
[delstatic delete static
[addstatic add a static
[movestatic move a static
[livefreeze freeze dynamic statics in a bounding box into the map
[getblocknumber tells you what block number your standing in
[circularindent radius height change raises/lowers the map (not statics) in a circular area
Enjoy, and please report bugs / issues here.
Setup Instructions
Server Side:
Drop the included server files into your customs folder, then make the
following modifications to PlayerMobile.cs
Add this section near the top of the file just under
namespace Server.Mobiles
{
/* Begin UltimaLive Mod */
public interface UltimaLiveQuery
{
int QueryMobile(Mobile m, int previousBlock);
}
/* End UltimaLive Mod */
Look in playermobile and find the SetLocation method
public override void SetLocation( Point3D loc, bool isTeleport )
Add this right above the SetLocation method:
/* Begin UltimaLive Mod */
public static UltimaLiveQuery BlockQuery;
private int m_PreviousMapBlock = -1;
/* End UltimaLive Mod */
Add this to the bottom of the SetLocation method and to the top of the OnMapChange method
/* Begin UltimaLive Mod */
if (BlockQuery != null)
{
m_PreviousMapBlock = BlockQuery.QueryMobile(this, m_PreviousMapBlock);
}
/* End UltimaLive Mod */
You will need to go into the MapRegistry and define the additional physical maps you want to use. You can see existing examples that have been commented out in the file.
You will also need to define maps in your regular server/misc/mapdefinitions.cs, for example
RegisterMap(32, 32, 32, 6144, 4096, 1, "Map 32", MapRules.TrammelRules);
RegisterMap(33, 33, 33, 7168, 4096, 1, "Map 33", MapRules.TrammelRules);
RegisterMap(34, 34, 34, 2304, 1600, 1, "Map 34", MapRules.TrammelRules);
RegisterMap(35, 35, 35, 2560, 2048, 1, "Map 35", MapRules.TrammelRules);
RegisterMap(36, 36, 36, 2560, 2048, 1, "Map 36", MapRules.TrammelRules);
RegisterMap(37, 37, 37, 1448, 1448, 1, "Map 37", MapRules.TrammelRules);
You will need to export your current maps to avoid excessive block updates. In the next release I will be re-enabling the defrag button on the UltimaLive tab so that players will not have to re-download existing maps to avoid the excessive updates.
Client Side:
Shutdown Razor and unrar the archive into the razor installation
folder. Run the included setup.bat file and restart Razor. The
setup file will need to be run after each time Razor updates.
This is an ALPHA release! Do not use it on a live production server!!
Change Log
--------------------------
v.0.50 Alpha
Support for auxiliary maps.
(changes to this page are shown in green)
Statics are now sorted not only by their location in a block, but then by Z location, and item id.
Log4Net has been added to handle error logging.
[m is now supported for commands ([area coming soon!)
objectlist target implemented server side (Thanks -hash- for the packet info)
The entire structure has been reworked.
Some packets have been modified.
And many many more internal changes on the client side.
v0.44 Alpha
Changed the save system to save only pending changes to disk on each save. When a server loads, it will load all the change files and apply them. Use [ExportClientFiles to write the full client files out to disk with all changes. They can then be copied to the server's client file folder. Then the change files can be deleted from the /UltimaLive/ClientFiles.
To revert to an old save, the change files after that save date will have to be moved or deleted.
v0.38 Alpha
Removed the version hashing system. The hash files and folders are no longer necessary.
Added a CRC system to take the place of the hashing system.
Fixed a bug where blocks with 0 statics wouldn't update properly.
--------------------------
Summary
This project allows the modification of client map and static files while the client is running.
Requirements
This project requires Razor.
This project supports clients version 7 and above. It does not support diff files.
Client 6 may be supported at a later time, use at your own risk.
Known Issues
Maps need to be a minimum size of 1024x1024
You will experience problems if your coordinates are outside of the map size. I recommend getting to somewhere well inside the size limit of the map on an OSI map before you switch to an auxiliary map.
Razor's Auto-Queue does not play well when a player is on an auxiliary map. I will be working on this issue in upcoming releases. For now just turn off auto-queue on the More Options tab on Razor when you're on an auxiliary map.
Defrag Button is broke.
[Livefreeze works, but you will not see the changes immediately, this is really simple to fix. Look for it in the next release.
The wrapping parameter in the MapRegistry.cs is currently ignored. Its mostly there for systems to refer to.
There is no provision for wrapping in the boat system. Please explore this and post results.
There is a known issue with about a 100ms delay (it looks like your screen blacks out for a fraction of a second). This is caused by the client re-synching with the server after it refreshes. I will be working on correcting this in future releases. The only non-visual side effect that it causes is a little bit of wasted bandwidth. As of 0.50 Alpha, this has been modified, please provide feedback if you think its better or worse.
Notes
If you're not comfortable with the performance of the streaming part of this system, you can disable it by removing the playermobile modifications. You will then need to distribute your auxiliary maps as you normally would.
You would do this if you were interested in having auxiliary maps, but not necessarily the editing aspects of the system. Or perhaps you are done editing and just want your players to be able to be able to use the auxiliary maps.
You cannot run a server and a client off the same set of data files! Make a copy of your UO folder if you're running the client and server on the same machine.
The commands that are available with this release should be viewed as example commands for building player interact-able systems.. Its not very efficient to type commands to edit a map, so I will be adding a map editing component to the client end that will make editing more efficient.
For now, the example commands are as follows:
[inclandalt increment land altitude (z) by a positive or negative number at a single tile
[setlandalt set land altitude (z) to a specific number
[setlandid change the tile number of a land tile
[incstaticalt increment static altitude (z) by a positive or negative number
[setstaticalt set static altitude (z) to a specific number
[setstaticid change statid art id number
[delstatic delete static
[addstatic add a static
[movestatic move a static
[livefreeze freeze dynamic statics in a bounding box into the map
[getblocknumber tells you what block number your standing in
[circularindent radius height change raises/lowers the map (not statics) in a circular area
Enjoy, and please report bugs / issues here.
Setup Instructions
Server Side:
Drop the included server files into your customs folder, then make the
following modifications to PlayerMobile.cs
Add this section near the top of the file just under
namespace Server.Mobiles
{
/* Begin UltimaLive Mod */
public interface UltimaLiveQuery
{
int QueryMobile(Mobile m, int previousBlock);
}
/* End UltimaLive Mod */
Look in playermobile and find the SetLocation method
public override void SetLocation( Point3D loc, bool isTeleport )
Add this right above the SetLocation method:
/* Begin UltimaLive Mod */
public static UltimaLiveQuery BlockQuery;
private int m_PreviousMapBlock = -1;
/* End UltimaLive Mod */
Add this to the bottom of the SetLocation method and to the top of the OnMapChange method
/* Begin UltimaLive Mod */
if (BlockQuery != null)
{
m_PreviousMapBlock = BlockQuery.QueryMobile(this, m_PreviousMapBlock);
}
/* End UltimaLive Mod */
You will need to go into the MapRegistry and define the additional physical maps you want to use. You can see existing examples that have been commented out in the file.
You will also need to define maps in your regular server/misc/mapdefinitions.cs, for example
RegisterMap(32, 32, 32, 6144, 4096, 1, "Map 32", MapRules.TrammelRules);
RegisterMap(33, 33, 33, 7168, 4096, 1, "Map 33", MapRules.TrammelRules);
RegisterMap(34, 34, 34, 2304, 1600, 1, "Map 34", MapRules.TrammelRules);
RegisterMap(35, 35, 35, 2560, 2048, 1, "Map 35", MapRules.TrammelRules);
RegisterMap(36, 36, 36, 2560, 2048, 1, "Map 36", MapRules.TrammelRules);
RegisterMap(37, 37, 37, 1448, 1448, 1, "Map 37", MapRules.TrammelRules);
You will need to export your current maps to avoid excessive block updates. In the next release I will be re-enabling the defrag button on the UltimaLive tab so that players will not have to re-download existing maps to avoid the excessive updates.
Client Side:
Shutdown Razor and unrar the archive into the razor installation
folder. Run the included setup.bat file and restart Razor. The
setup file will need to be run after each time Razor updates.