bonjeemon

Citizen
if your running the server from home and the server window says its finished and has no errors

load the classic assist launcher option 2 launcher, not classicuo

ensure client options points to c:\ultima-adventures/classicuo.exe

and ultima online points to c:\ultima-adventures\classicuo

click shards

click +

add a new server with the ip address 127.0.0.1 or the word localhost and yhe port 2593

click ok and ensure your new server is in the drop down

click options

click override client version if its not already selected and enter 7.0.15.1

click ok


click start

if your folder for the download is not in c:\ultima-adventures then move it there as it MUST be there to work

if it still doesent work try redownloading and re extracting it

if your useing linux the steps are different, if your using q mac i dont belive it will work at all
 
  • Like
Reactions: Elf

larson

Citizen
I'm trying to play this offline, v1.11, in earlier comments I read about a "local profile" that is supposed to be selected but I don't see any. I click on "Runme Option 1 - Classicuo Launcher" shortcut, ClassicUO window appears with Create Your Fisrt Profile button alone. What am I missing? Thank you.
 

larson

Citizen
I created a new profile with ClassicUO Launcher but without success. These are my settings: Random user and password, Server IP:localhost, port:2593 UO path: C:\Ultima-Adventures\ClassicUO, client version:7.0.15.1.
It loads into the login window but when I proceed it says to check my internet connection (why if I want to play offline?).
Same results using ClassicAssist Launcher.
So at the moment I don't know what else I need to do, I need help.
 

bonjeemon

Citizen
Hi Larson

so to get in game you should need two things, my guess is you don't have the server running for it to connect to, hence why the error your getting assumes your offline

1 the server running before you launch the game
in the latest releases this is called adventures server.exe but i think it was named differently before, probably runuo.exe, but one of these two things should be in the same folder as the "runme option 2",run that, and wait for the game's server window to do its stuff, after a few minuets (5-10 at the most, but usually less) it will have loaded, if it errors you might have other issues, but its very clear when it errors that somethings wrong so watch the window till it settles down

2 the game pointing at it
use run me option 2, when it loads there should be a shard dropdown box, make sure this is pointed to the option called local, if you dont see one add a new shard with the localhost/port details from above, save that shard and make sure its in the drop down
then click options and tick override client version, and put the client version number you list above in

make sure client options points to classicuo.exe and "ultima online" points to a folder called classicuo (should both by default) and away you go

use any username and password when you log in and the account is created at that time, so you can even use 1 as a username and 1 as a password if your playing locallly

good luck buddy, happy adventuring
 
  • Like
Reactions: Elf

larson

Citizen
That worked perfectly, thank you! Just one thing, if I play totally offline the game doesn't save, or so I have noticed. So without an internet connection it's pointless. Or is there a way to save offline? thank you for the help.
EDIT: ok saving works, but a very slow rate and it doesn't save when logging out. Anyway I'll reinstall everything because saving worked fine before.
 
Last edited:

bonjeemon

Citizen
That worked perfectly, thank you! Just one thing, if I play totally offline the game doesn't save, or so I have noticed. So without an internet connection it's pointless. Or is there a way to save offline? thank you for the help.
EDIT: ok saving works, but a very slow rate and it doesn't save when logging out. Anyway I'll reinstall everything because saving worked fine before.
you van force a save via the server console by typing save into it and oressing enter, otherwise it saves frequently but it causes a spike of lag when it happenes so to often is annoying

glad you got ingame :)
 

Artaazar

Citizen
@Finaltwist

\Scripts\Items and addons\Containers\Container.cs
inside class Backpack, line 426, you can add following code:
C#:
        //We try to find that item already exists in bags inside Backpack and stack them together
        public override bool TryDropItem(Mobile from, Item dropped, bool sendFullMessage)
        {  
            //from.SendMessage("Overrided TryDropItem!"); //DEBUG
            Container pack = this;

            //from.SendMessage("Overrided ItemPlaced!"); //DEBUG
            foreach (Container innerPack in pack.FindItemsByType<Container>(true))
            {
                //from.SendMessage("Overrided Found container"); //DEBUG
                var existItem = innerPack.FindItemsByType(dropped.GetType());
                if (existItem != null && existItem.Length > 0)
                {
                    //from.SendMessage("Overrided Found item"); //DEBUG
                    var itemDropped = innerPack.TryDropItem(from, dropped, sendFullMessage);
                    if (!itemDropped)
                        break;
                    else return itemDropped;
                }
            }
            return base.TryDropItem(from, dropped, sendFullMessage);
        }

Or litle bit more advanced code:

C#:
        //We try to find that item already exists in bags inside Backpack and stack them together
        public override bool TryDropItem(Mobile from, Item dropped, bool sendFullMessage)
        {
            if (from is PlayerMobile)
            {
                //from.SendMessage("Overrided TryDropItem!"); //DEBUG
                Container pack = this;
                //from.SendMessage("Overrided ItemPlaced!"); //DEBUG

                //lets collect all types of item
                var droppedBaseType = dropped.GetType();
                List<Type> droppedTypes = new List<Type>();

                while (droppedBaseType != null && !droppedBaseType.Equals(typeof(Item)))
                {
                    droppedTypes.Add(droppedBaseType);
                    droppedBaseType = droppedBaseType.BaseType;                    
                }

                //from.SendMessage("droppedTypes.Count: " + droppedTypes.Count); //DEBUG

                //Create a place for lovely ones
                var properContainers = new HashSet<Container>();
                for (int typeIndex = droppedTypes.Count - 1; typeIndex >= 0; typeIndex--)
                {
                    //from.SendMessage("INDEX: " + typeIndex); //DEBUG
                    var foundContainers = new HashSet<Container>();

                    //from.SendMessage("droppedType: " + droppedTypes[typeIndex].FullName); //DEBUG

                    var foundItems = pack.FindItemsByType(droppedTypes[typeIndex], true);
                    if (foundItems != null)
                    {
                        foreach (var item in foundItems)
                        {
                            Container itemContainer = item.Parent as Container;
                            if (itemContainer != null && !itemContainer.Equals(pack) && !(itemContainer is UnidentifiedItem)) 
                                foundContainers.Add(itemContainer);
                        }
                        
                        //from.SendMessage("foundContainers.Count: " + foundContainers.Count); //DEBUG
                        //from.SendMessage("properContainers.Count: " + properContainers.Count); //DEBUG

                        if (foundContainers.Count > 0)
                        {
                            properContainers = new HashSet<Container>(foundContainers);
                        }
                    }
                }

                if (properContainers.Count > 0)
                {
                    var enumerator = properContainers.GetEnumerator();
                    enumerator.MoveNext();

                    var itemDropped = enumerator.Current.TryDropItem(from, dropped, true);
                    if (!itemDropped)
                    {
                        //from.SendMessage("Cant drop in :" + enumerator.Current.GetType().FullName); //DEBUG                        
                    }
                    else
                    {
                        //from.SendMessage("Found item 1"); //DEBUG
                        return itemDropped;
                    }
                }
            }
            //from.SendMessage("base exit"); //DEBUG
            return base.TryDropItem(from, dropped, sendFullMessage);
        }
Ashes to ashes, dust to dust!
 
Last edited: