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
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.
 
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.
 
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
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:
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 :)
 
@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:
We've been super busy!

We are working on the Midlands, a completely new system and world within Adventures, with completely new combat mechanics - no item attributes whatsoever. This is meant to be an RP world, where reputation matters and trade is a viable way to earn a living. we've set up a testing area for anyone interested to check out the new combat mechanism.

Be an agile player who can swing faster, dodge and run longer or choose to be a protected tank with slower speed but more protection and strength.

Anyone who wants to test can login with a new char that has BETA in the name and page one of us here with the account/char names or talk to us in the discord.
@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!
just seeing this - can you explain what you are trying to fix or what needed fixing with this new code? the countainer script in the live server now is very different than the offline code. Does this just try to stack items with existing items in the backpack?
 
Last edited:
The easiest way to just start playing is basically to download the package, extract it to C:/, and run "Runme Option 2 - ClassicAssist Launcher", make sure you have Adventures selected and just hit start. Should be able to log in and just play.
finally i made it :))) it was about graphics card's capacity. i bought a new 1 gb card and problem solved :)) thanks for your care man. but i have a new problem. how can i get out skara brae? i accidentally get in and i cant find the way out.its a quest maybe yes?
 
yea but its a big quest, thw whole place is like an enclosed quest chainwith no way out, the only way to leave is complete the quest or use a gm to take yourself out
 
yea but its a big quest, thw whole place is like an enclosed quest chainwith no way out, the only way to leave is complete the quest or use a gm to take yourself out
hmm i came to scarlet bard tavern, after discovered hidden passage to the dungeons and sewer under thieves hideout. scroll i found says there's a passage too. playing offline single player. so i guess i must complete the quest to come back. thanks man :)
 
Hello, Ive download and installed per instructions. It all seems to work, however the graphics are all goofie. After I complete the Jail questions. Im sent to town. It took me an hr to figure out out to get out of the building as it kept pooping from top floor to bottom. Once out, get stuck a lot just trying to walk around. When I hit "im stuck" it sent me to a cave somewhere and after leaving the cave same deal, all broken graphics and you cant move more than a few tiles before getting stopped. I even logged into the actual Adventures shard, but same deal. (tried install on two different PC, same deal) This looks really fun and I like to solve the problems and get it up and running.
 
Hello, Ive download and installed per instructions. It all seems to work, however the graphics are all goofie. After I complete the Jail questions. Im sent to town. It took me an hr to figure out out to get out of the building as it kept pooping from top floor to bottom. Once out, get stuck a lot just trying to walk around. When I hit "im stuck" it sent me to a cave somewhere and after leaving the cave same deal, all broken graphics and you cant move more than a few tiles before getting stopped. I even logged into the actual Adventures shard, but same deal. (tried install on two different PC, same deal) This looks really fun and I like to solve the problems and get it up and running.
something is wrong with your client. did you install over a client? did you extract everything in a new directory in c:\?
if yes to those, then what OS are you using?
also try the discord. not much discussion here since that's where we talk :D
 
Yes , I put everything in the c:\ as instructed used client in zip. c:\classicuo
Tried on both windows 10 laptop I7, and my gaming PC with windows 11.
Used both Runme options 1 & 2 to start client.
I did log into the discord channel, but on one was on to answer questions. Was hoping to show a screen shot.
I will try Discord again on the weekend, maybe more people on.

Thank you for the reply.
Kosmo
 
Yes , I put everything in the c:\ as instructed used client in zip. c:\classicuo
Tried on both windows 10 laptop I7, and my gaming PC with windows 11.
Used both Runme options 1 & 2 to start client.
I did log into the discord channel, but on one was on to answer questions. Was hoping to show a screen shot.
I will try Discord again on the weekend, maybe more people on.

Thank you for the reply.
Kosmo
thats what you did wrong.... maybe
you should use the client in the c:\ultima-adventures\ folder. use one of the launcher options. it has to be c:\ultima-adventures\ not c:\classicuo

oh and come play on server with us!
 
Sorry I meant the client C:\Ultima-Adventures\ClassicUO
OK, im stumped. I just logged into your server and all is work fine. That's weird.
Guess Ill poke around a bit.
Thx for the help
I didn't change anything I know of in the C:\Ultima-Adventures directory
 
Last edited:
hi guys again :) i have completed skara brae quest finally and sailed to new adventures. is there a big quest like this?? reading quests on billboard named "seeking brave adventurers" and got a quest but i can't receive details from sage in town. how can i do? i choose "hire" but i couldn't go on from that. and how can assign weapon's special moves to macro?? (set1 commands not working.

is there an easy way to treasure hunting? only digging a bullseye square gives a result with looking a that little scale map which is very hard.

one last, i've losing karma and fame when i go out a dungeon, recalling yo somewhere or to attempt sell an item to a vendor. and losing good amount of it. what happening? how can i stop that?

by the way i'm playing offline single.
(edited)
 
Last edited:
Hi Everyone, I have to apologize for taking so long to bring up the latest update to the offline package... to be completely honest adventures has been a quasi-fulltime job for me for over a year and half - fixing bugs, coding new features and systems, and making some really great friends in the process. However, having neglected a number of things in my life I opted to take a break from this project for the last few months. I've been fixing game bugs on the server when needed...

Well all that to say that I will be releasing an offline package soon. This offline package will have everything the server has - there have been NUMEROUS systems added since 1.11, including ultima live which allows live editing of the maps, we've added new maps, and are working on a new land called midlands will completely custom systems and gameplay. Midlands isn't complete, but the server now runs for a week or so without a restart or a crash so its very stable, and well balanced for online/group play.

I'm also proud of how we've been able to create a world that doesn't use skillcaps and other cheap methods of balancing gameplay... I think it's safe to say adventures has plenty of content for players for months on end - especially with the soulbound playstyle.

So keep you eyes here for an updated package!
 
Finaltwist updated Ultima Adventures - A full featured, content packed offline/online server with a new update entry:

Stable update April 2022

Greetings all!

Here is a copy of the server which have been running for well over 2 years at this point. I won't post a changelog, but anyone who wants to see what was changed is welcome to check on the discord - all changes are posted in the annoucement channel.

discord

This version is very stable, runs 1week+ without issues, contains a large number of new features compared to the last (see the discord), including new environment...

Read the rest of this update entry...
 
Is there any method to allow this to run from another directory? I rather not put this at the root of my C Drive.
 
yeah many people here have done so. you can just do a text search for "c:\ultima-adventures" for all the files in the archive and change. I think it appears 2-3 places.

If you're playing on the server, just install classicuo from their site and point to this client (put it wherever you want)
 
Thanks for the tip, found it
MyServerSettings.cs
Just changed the line to use a relative path so it doesn't matter where the folder is at

return @"..\Ultima-Adventures\Files";


-----------------------------------------------
One more thing, to enable item decay

'// note, itemdecay was disabled in this release. if you want itemdecay, run runuo.exe.itemdecay instead and set the value here to the amount of time you want for item decay .'

I feel like its right in front of me. Where is 'runuo.exe.itemdecay'
 
Last edited:
that was removed a loooong time ago. you need to compile a new exe (the core files are in the utilities folder, runuo2.2) with item decay on.
also there's an offline channel in the discord for people playing offline to chat about iddues/etc they might be having.
 
I was considering a core change, but wasn't make sure there wasn't a toggle that was put in place. So if the core is the same as the one in the utilities folder that should be an easy change. Thank you
 
So I switched it to true, to set decayed by default, compiled, loaded fine, saved, and every item in the world was deleted. haha

The workaround, use the below.

[CommandProperty( AccessLevel.GameMaster )] public virtual bool Decays { get { if (this.Movable == false) return false; else return true; // final - final is set to false. } }

This keeps anything that is set to movable as decaying, anything set as not movable as not decaying, and it does actively switch.
 
Changed the squire gump so that it could be used, the text was stuck black, no matter what I did, the text color for the gump would not change, so I changed the background to accommodate the black text.
 

Attachments

  • SquireGump.cs
    87.1 KB · Views: 16
Changed the squire gump so that it could be used, the text was stuck black, no matter what I did, the text color for the gump would not change, so I changed the background to accommodate the black text.
thanks for the share! adopting this on the server :)
 
So the flying carpet, it will not work over land, it works like a boat. Trying to find the hiccup but no luck, anyone have any success with this?
 
I didn't want to deal with changing regions the hard way so I just fixed the existing region scripts (custom regions) to exclude the guard region so it would compile and work.
 

Attachments

  • Custom Regions.zip
    11.7 KB · Views: 10
okay, im happy to make this a side project, I finally got xmlspawner to work (yes I'm a XML spawner junkie) :-D
 
Hello guys, I'm having an annoying bug in offline, I lose all my karma everytime I die. It will be very appreciated if in someway help me to fix it. Thanks you.
 
the karma issue has been fixed (among many other bugs) in the server. next offline will have a slew of changes, including properly working jedi, new taming bod rewards, etc.
 
first thank you all making this awesome project.
i have a question for updating offline server.
i was playing last version of offline client about 2 mounts by myself. and then i saw aprill 2022 update and want to play with it. but how can i copy my chars to new updated server? i tried copy saves folder but it ruins everything in game. so what is my options to acieve that?
 
that was removed a loooong time ago. you need to compile a new exe (the core files are in the utilities folder, runuo2.2) with item decay on.
also there's an offline channel in the discord for people playing offline to chat about iddues/etc they might be having.
i know this isnt where i should post this just not sure where to get the answer i download ultima adventure trying to log in as admin whats the account and password to log in
 
Anyone run into a bug where left-clicking on anything doesn't give a pop up, just the name? generally restarting the client helps but this is weird and annoying.
 
Anyone run into a bug where left-clicking on anything doesn't give a pop up, just the name? generally restarting the client helps but this is weird and annoying.
In my experience, this is a ClassicUO issue. I ran into it...I think twice...since playing the game. I usually just get a new/fresh copy of ClassicUO and it goes away.

 
i know this isnt where i should post this just not sure where to get the answer i download ultima adventure trying to log in as admin whats the account and password to log in
You can just make a new account, save, close the server, go into the save folder, edit the accounts file and just move the owner permission to your new account, issue solved.
 
New character creation bottleneck, to prevent and mitigate lines, I found it suitable to make only the first toon on an account go through the player-directed process, then any other toons go through a more mass process where players get a gump instead and making use of the previous starting room. To still showcase and use the player-directed process for the RPG element but also make it easier to make new toons.

I thought had occurred to me to just have to do the check line option first then redirect if there is a line.
 
Last edited:
I'm almost done with my custom skills gump that has a built in class system.

The perk of using the classes is you get bonus to stats, a toon partner that cannot die and acts as a pack horse (wisp), then turn on the anti macro code and set everything to true, then have the code make all classes to false for the macro code. Im half way done with it, is it something that anyone may be interested in?
 

Attachments

  • Capture.PNG
    Capture.PNG
    291.8 KB · Views: 27
  • Capture2.PNG
    Capture2.PNG
    273.2 KB · Views: 27
  • Capture3.PNG
    Capture3.PNG
    294.9 KB · Views: 27
Back