I downloaded ML packet and updated 'til 7.0.1.1 like yours. The previous problem is partially resolved as the mod now seems to be able to find map addresses, but now the client raise an error window with the message "Unknown Facet 32" when I try to "[go custommap". The logfile now is:
Code:
INFO UltimaLive.RazorUtility - ----------------------------------------------------------------------------------------------------------------------------
INFO UltimaLive.RazorUtility - Starting UltimaLive v.0.50 ALPHA
INFO UltimaLive.RazorUtility - Waiting for Razor's MainForm...
INFO UltimaLive.RazorUtility - Found Razor's MainForm
INFO UltimaLive.RazorUtility - Importing UltimaLive Razor tab into Razor
INFO UltimaLive.AuxMapData - Initializing Map Data
INFO UltimaLive.RazorUtility - Initializing OSI Map Slots:
INFO UltimaLive.RazorUtility - Registering Packet Handlers:
INFO UltimaLive.RazorUtility - Client To Server OnClientPacketDropReq
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketWorldItem
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketLoginConfirm
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketMobileUpdate
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketMovementRej
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketAcceptMovement
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketDragEffect
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketReceiveUltimaLiveCommand
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketReceiveLandUpdate
INFO UltimaLive.RazorUtility - Server To Client OnClientPacketAccountLoginRequest
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketPlaySound
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketLoginComplete
INFO UltimaLive.RazorUtility - Client To Server OnClientPacketTargetResponse
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketMobileMoving
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketMobileIncoming
INFO UltimaLive.RazorUtility - Server To Client OnServerQuestPointer
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketGenericCommand
INFO UltimaLive.RazorUtility - Server To Client OnServerPacketHuedEffect
INFO UltimaLive.RazorUtility - Server To Client OnServerParticleEffect
INFO UltimaLive.RazorUtility - Server To Client OnServerSAPacketWorldItem
INFO UltimaLive.MapManager - Client sent account Login Request
INFO UltimaLive.MapManager - Received 6 Map Definitions
INFO UltimaLive.MapManager - PACKET: MobileUpdate
ERROR UltimaLive.MapManager - Failed to convert PseudoPoint
INFO UltimaLive.MapManager - PACKET: MobileUpdate
ERROR UltimaLive.MapManager - Failed to convert PseudoPoint
INFO UltimaLive.MapManager - PACKET: MobileUpdate
ERROR UltimaLive.MapManager - Failed to convert PseudoPoint
INFO UltimaLive.MapManager - PACKET: Mobile Incoming
ERROR UltimaLive.MapManager - Failed to convert PseudoPoint
INFO UltimaLive.MapManager - PACKET: MobileUpdate
ERROR UltimaLive.MapManager - Failed to convert PseudoPoint
INFO UltimaLive.MapManager - PACKET: Mobile Incoming
ERROR UltimaLive.MapManager - Failed to convert PseudoPoint
INFO UltimaLive.MapManager - PACKET: Login Complete
INFO UltimaLive.MapManager - Received Ultima Live Login Complete Command, loading map
ERROR UltimaLive.Client - Received Check CRC for map 32, but its not active
I forgot to mention that I use Windows 7 64bit, do you know of any issues with x64 architecture?
I see in the logfile that map32 it's not active, do I need to patch some other file in the server in order to activate new map?
Edit:
The previous problem is fully resolved as the mod now seems to be able to find map addresses, and to switch to a new custom map (I forgot to re-enable the map definition line in MapRegistry, dumb me!
).
I noticed that when the custom map is missing from client files the mod creates necessary files with the size of the map stored on the server. If I shutdown the server and change the map with another one bigger in size, when I restart my client the mod does not notice this size change and throw a list of out of range errors.
I think it's not really an issue, because this can be handled simply by manually deleting the affected files from the client installation directory, but it would be nice to have a command that could make the server to resend map size and then reset/resize the map files on the client.
I'm here waiting for any new improvements you will make to this exceptional mod
Edit2:
Ok Praxiiz don't hate me please!
Now that map switching works, but adding/deleting statics with [addstatic [delstatic crash the server with a null reference exception. I debugged it until I found that for some strange reason
MapRegistry::Configure is called by the server AFTER
MapChangeTracker::Configure so the hashtable array
m_StaticsChanges it's not filles at all because
MapRegistry.Definitions has no entries.
I suspect that it's a threading issue but I'll investigate further in order to solve it.
Edit3:
Ok, I've done it! It was an ordering issue. You only need to decorate affected
Configure methods with
CallPriority Attribute like following examples.
In
MapChangeTracker.cs file:
Code:
// Add this with an integer number where the lower values are the highest priority
[CallPriorityAttribute(Int32.MaxValue)]
public static void Configure()
{
....
and in
MapRegistry.cs:
Code:
// Add this with an integer number where the lower values are the highest priority
[CallPriorityAttribute(Int32.MaxValue - 1)]
public static void Configure()
{
....
so that the server compiler run
MapRegistry::Configure always before
MapChangeTracker::Configure().
I hope it helps!