ServUO Version
Publish 57
Ultima Expansion
Renaissance
I am uncertain what happened, but whenever I try to load my server, it gets stuck on certain lines and freezes. Never had this issue and Im uncertain what causes it.
Whenever I delete the whole save folder and open a blank server (with the same custom stuff), it lets me create an admin account and works just fine. Anyone had this issue before?

1652654370840.png
This is where it gets stuck.
 
It could possibly be any change you've made that somehow effects your saves and corrupts them. It then gets hung up trying to load the corrupted saves. If it's a recent development, I would recommend removing or reverting any changes you've made/added/removed to help narrow it down. Once you find the source of the issue, you can add it all back and fix the associated code.

Things you would normally not expect to have any effect on the server saves or on the server itself can actually cause a lot of various issues. For example, when I was making a fairly simple script I had a few server crashes. When I made a few changes, loaded the server, it had me create a new owner account. For some reason that particular crash kept deleting several files in my Saves folder, like accounts and mobiles, but not others. I still never figured out why it was happening when that particular crash was only related to a null object reference.

That's really the best advice I can offer.

**Edit**
Also, the console saying Multi data files not found, though just a warning, might be part of the issue. It's trying to load saved Multi's that it thinks are there but are no longer present? So when it's loading the world it freezes trying to load the saves. I'm not sure, just a thought.
 
Last edited:
Is there any way to see which file could corrupt a saving file without taking custom stuff one by one?
 
Is there any way to see which file could corrupt a saving file without taking custom stuff one by one?
Honestly I am not even sure that is the problem. First, make a backup of your Saves folder then delete the original. Load the server, create your staff account, login, [save, [restart. See if it happens again with that newer fresh Saves folder. If it does, a corrupt save isn't the problem and there is a larger issue at hand.

Also, I did a bit of research and it turns out the Multi data warning is just a bug according to Voxpire.

However the MusicName error could still be the issue. In Server/Region.cs you'll find the enum MusicName as well as the ReadEnum bool and the other relevant information. Have you recently made any changes to a region, it's music or added/removed any new/old regions? I suppose this could be part of the issue.

I would also look in World.cs at public static void Load() and possibly add some additional Console.WriteLine's to each area it's looking through to possibly narrow it down a bit further. At least you'll know if it's an item, mobile, guild, etc. There are a lot of different ways you could try as well as get it to write to the console, but to start I'd just do something basic like:
C#:
            if (File.Exists(MobileIndexPath) && File.Exists(MobileTypesPath))
            {
                Console.WriteLine("Began MobileIndexPath.");
                using (FileStream idx = new FileStream(MobileIndexPath, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    BinaryReader idxReader = new BinaryReader(idx);

                    using (FileStream tdb = new FileStream(MobileTypesPath, FileMode.Open, FileAccess.Read, FileShare.Read))
                    {
                        BinaryReader tdbReader = new BinaryReader(tdb);

                        var types = ReadTypes(tdbReader);

                        mobileCount = idxReader.ReadInt32();

                        m_Mobiles = new Dictionary<Serial, Mobile>(mobileCount);

                        for (int i = 0; i < mobileCount; ++i)
                        {
                            int typeID = idxReader.ReadInt32();
                            int serial = idxReader.ReadInt32();
                            long pos = idxReader.ReadInt64();
                            int length = idxReader.ReadInt32();

                            var objs = types[typeID];

                            if (objs == null)
                            {
                                continue;
                            }

                            Mobile m = null;
                            ConstructorInfo ctor = objs.Item1;
                            string typeName = objs.Item2;

                            try
                            {
                                ctorArgs[0] = (Serial)serial;
                                m = (Mobile)(ctor.Invoke(ctorArgs));
                            }
                            catch
                            { }

                            if (m != null)
                            {
                                mobiles.Add(new MobileEntry(m, typeID, typeName, pos, length));
                                AddMobile(m);
                            }
                        }

                        tdbReader.Close();
                    }

                    idxReader.Close();
                }
                Console.WriteLine("Finished MobileIndexPath.");
            }
            else
            {
                m_Mobiles = new Dictionary<Serial, Mobile>();
            }
I highlighted lines 3 and 56 where the WriteLine's are. If you never see it finish an index, you'll know where it's having issues. It'd look like this.
this.png
I only did one Index but you get the point.
 
Just to be save.

Do you click onto the console? If so press enter. The console itself doesnt show any kind of issue.
Even if the multidata isnt found it would go further
 
Just to be save.

Do you click onto the console? If so press enter. The console itself doesnt show any kind of issue.
Even if the multidata isnt found it would go further
He's Kuja in the ServUO Discord. I believe that was the problem for it sometimes, but it's still doing it without the console being paused due to mouse click. From my understanding it just stays frozen and won't load.
 
Well either it is running, it is paused via console still or the server should be started via visual studio / rider and pause the run.

Then it would be shown where it is stuck.
Also, the missing files wouldnt be the issue, since it would simply cry about deleting the objects otherwise
 
Back