UO Architect won't compile - trying to follow the instruction

Bonaccorso

Citizen
I'm trying to isntall UO Architect 2.7.3 found on this site, with my servuo. Installed, but when I try to complie, I get a whole load of errors like:

Custom\OrbRemoteServer\OrbServer.cs(3,7): error CS0246: The type or namespace name 'OrbServerSDK' could not be found (are you missing a using directive or an assembly reference?) . [C:\ServUO-master\Scripts\Scripts.csproj]
Custom\OrbRemoteServer\OrbServer.cs(6,40): error CS0234: The type or namespace name 'Tcp' does not exist in the namespace "System.Runtime.Remoting.Channels" (возможно, отсутствует ссылка на сборку). [C:\ServUO-master\Scripts\Scripts.csproj]

That's what I did for install:
Client folder of UOAR - put into servuo folder, so it's in C:\ServUO-master\Client now
Placed OrbRemoteServer UOAR folder into C:\ServUO-master\Scripts\Custom\OrbRemoteServer
Placed three dlls - System.Runtime.Remoting.dll, OrbServerSDK.dll, UOArchitectInterface.dll - to the core folder C:\ServUO-master
Added lines in Assemblies.cfg, so now that's how it looks:
Code:
System.dll
System.Core.dll
System.Data.dll
System.Data.DataSetExtensions.dll
System.Drawing.dll
System.Web.dll
System.Windows.Forms.dll
System.Xml.dll
System.IO.Compression.FileSystem.dll
OrbServerSDK.dll
UOArchitectInterface.dll
System.Runtime.Remoting.dll

Ultima.dll

It seems I followed the instructions, but I might have forgot something, it seems, as it doesn't even close compile.
 

GoldDraco13

Knight
if your are using the newest ServUO, you have to make a ref in the Scripts.csproj file, they change how things start up, assembies is for pre Pub57 , there might be more, this is from feedback on systems of mine that people solved by adding the ref to the Scripts.csproj
Post automatically merged:

So, I solved custom Sickness System errors problem myself.
I added inside script.csproj file in the ItemGroup section a line
<Reference Include="System.Windows.Forms" />
Now build was completed sucessfuly.
 

Bonaccorso

Citizen
if your are using the newest ServUO, you have to make a ref in the Scripts.csproj file, they change how things start up, assembies is for pre Pub57 , there might be more, this is from feedback on systems of mine that people solved by adding the ref to the Scripts.csproj
Post automatically merged:
Thanks! Yes, of the newest ones. And unfortunately with adding the line <Reference Include="System.Windows.Forms" /> it doesn't work either. Maybe really something else in addition should be added there - so far, same errors.
 

GoldDraco13

Knight
The example was for reference, not to be used for UOA, it has different dll's needed, use the example to add the ones you need for UOA
Post automatically merged:

Code:
<Reference Include="OrbServerSDK.dll" />
 

Bonaccorso

Citizen
The example was for reference, not to be used for UOA, it has different dll's needed, use the example to add the ones you need for UOA
Post automatically merged:

Code:
<Reference Include="OrbServerSDK.dll" />
My bad, it becomes really late here, and I'm a bit slow :)

But doesn't work as well. Added:
C#:
  <ItemGroup>
    <Reference Include="OrbServerSDK.dll" />
    <Reference Include="UOArchitectInterface.dll" />
    <Reference Include="System.Runtime.Remoting.dll" />
  </ItemGroup>

And now get two more warnings like
C:\Program Files\dotnet\sdk\3.1.401\Microsoft.Common.CurrentVersion.targets(2084,5): warning MSB3245: ... and something about not being able to find OrbServerSDK.dll", same for UOArchitectInterface.dll too, despite all those dlls are in root folder of servuo.
 

GoldDraco13

Knight
I think each one needs its own group, not sure, like I said, I am only going off feedback, I have not yet used the new servuo, I am still on 57 myself!
 

Milva

Moderator
The client folder can just go on your desktop, easy to get to. When you open the servuo folder , you added the dell there and not in a folder?
 

Bonaccorso

Citizen
The client folder can just go on your desktop, easy to get to. When you open the servuo folder , you added the dell there and not in a folder?
Yes, I put Client folder there only to have all the stuff together.

And yes, all three dll's are no longer in Server folder but in C:\ServUO-master

I'm really surprised that it didn't work.
 

Bonaccorso

Citizen
:) You can only build with Uo art- can’t do any thing to the map
Yeah you are right, UO Architech but it doesn't compile for me, or CentralED which kinda worked but only for buggy 7.0.23.1 version. I think I'll try to deal with Scripts.csproj more as I was advised few posts above, I'll look for how it did look before but not sure I'll find there the answer. And maybe I found 7.0.20 version to try CentrED on it - I'll check when gonna be by my laptop.
 

Maxus

Citizen
Soooo I know I may be a bit rusty, but has anyone gotten version "2-7-final" of UOAR to work on the latest SERVUO server release? Maybe have an accurate "do this, then this, and edit this, then compile" list to get Orbserver running? I am using a completely fresh (untainted, unspoiled if you will) latest version of SERVUO, no edits or addons to start. I have placed all the files in their proper place, made edits to reference the .dll files individually and then in both the "csproj.cs" and the "Assemblies.cs" files. I have added the different mobilesave.cs mentioned. Then I restarted fresh, and tried it again.. Pretty much every reference I could find here on these forums for a potential fix, and in every order, and then together, then back-ways and front-ways and side-ways. Still not compiling. I have also double checked my installed .net versions as well just in case. I even referenced my old RunUO ML server where Orbserver runs perfectly. Still a fail.

Is it that Orbserver just will not work on the latest SERVUO release? I see MANY references to a version 57 of SERVUO on these forums to get things working for many custom things. Kind of like a lot of people halted updating custom scripts at the release. (I am not up on the reasons why that is). I have gotten almost all of my older custom scripts working with only a few exceptions like our packable camping tent script which I will work on after I type this. I would just loooove to get UOAR going on the latest. Its almost a must have for me as I simply enjoy building things within UO.

Getting the client side working standalone was easy enough as I just referenced my old UOML files to build things, but I typically build in-game and then pull the designs into UOAR. (I also attempted to reference the latest UO fully patched release files, but the client side does not like that one bit).
Ok this is wayyyy wordy enough of a post, I am normally quiet on most support forums a I can typically get things working by simply reading the forums, or just following the instructions if I have problems. Thanks to anyone who can assist.
 

OldManPsylus

Citizen
Alright gang, looks like nobody has posted about this in a while - for those still struggling with this, I seem to have figured it out for both release 57 and the latest release. The methods are slightly different, but here's a step-by-step:
______________________________________________________________________________________________________

Things you'll need:

1. Download UOArchitect version 2.7.# (Misc - UO Architect)
2. A working (buildable) copy of either ServUO-57 or the latest version as of this post.
3. Visual Studio 2019: Community Edition (It probably works with other versions, but this is what I use. It's free, just google it if you don't yet have it.)
______________________________________________________________________________________________________

Steps for both ServUO 57 and latest releases:
1 a. Open your ServUO.sln in VS2019.
b. Extract both the Client and Server folders from the UOArchitect zip. Doesn't matter where, but for organization sake, let's not put it in the ServUO folder just yet.

2. In the Solution Explorer (far right side) of Visual Studio, if you don't already have it, right click on "Scripts" and go to "add" -> "new folder". Name it "Customs".

3. Open the Server folder that you previously extracted from UOArchitect's zip. Drag the folder called "OrbRemoteServer" into the Visual Studio Solution Explorer, and drop it into the Customs folder that you just made in the previous step.

4. Navigate into the OrbRemoteServer\UOArchitect folder that you just added and open MobileSaver.cs. Find the following lines and comment out "spawner.SpawnNames.Add( t.ToString() );
MobileSaver.cs spawner.SpawnNames:
        public static Spawner LoadMobile( Item item )
        {
            Type t = GetType( item.Z - Offset );

            if ( t == null )
                return null;

            Spawner spawner = new Spawner();
            //spawner.SpawnNames.Add( t.ToString() );
            spawner.Running = true;
            spawner.HomeRange = 0;
            spawner.WalkingRange = 4;
            //spawner.Respawn();
            return spawner;
        }

5. In the same MobileSaver.cs, find the line that says "ConversionTable.Add( typeof( FortuneTeller ) );" and comment it out as well
MobileSaver.cs FortuneTeller:
            // Healers
            ConversionTable.Add( typeof( EvilHealer ) );
            ConversionTable.Add( typeof( EvilWanderingHealer ) );
            //ConversionTable.Add( typeof( FortuneTeller ) );
            ConversionTable.Add( typeof( Healer ) );
            ConversionTable.Add( typeof( PricedHealer ) );
            ConversionTable.Add( typeof( WanderingHealer ) );

6. In your root ServUO folder where your ServUO.sln file is (not inside of Visual Studio), paste the three .dll files from the Server folder that you extracted from the UOArchitect zip. They should be called "OrbServerSDK.dll", "System.Runtime.Remoting.dll", and "UOArchitectInterface.dll".

7. Now, using the file explorer (not in Visual Studio), navigate to your ServUO\Data folder and open the Assemblies.cfg file. Append to the end of this file the following three lines:
Assemblies.cfg:
OrbServerSDK.dll
System.Runtime.Remoting.dll
UOArchitectInterface.dll

Thus ends the parts that are the same between release 57 and the current ServUO release - now go to whichever set of instructions apply to you:
______________________________________________________________________________________________________

ServUO - release 57 additional instructions:

1. Inside of Visual Studio, in the Solution Explorer, right click on "Scripts" and go to "add"->"Reference...". Under the "Browse" tab, in the bottom right hand corner click on "Browse...". Navigate to your ServUO folder and find the three .dlls that we pasted there. "OrbServerSDK.dll", "System.Runtime.Remoting.dll", and "UOArchitectInterface.dll". Add them, make sure their check boxes are checked, then click "OK".

2. Build your solution and cross your fingers that no errors come up. Launch your ServUO.exe and cross your fingers even harder. If the build does not work, then your problem is either with the previous step regarding references, or you might not have commented out the right lines properly. If the build works but your server console is a big wall of red text on startup, then your Assemblies.cfg isn't set up correctly and needs another look.
______________________________________________________________________________________________________

ServUO - Current release (as of this post) additional instructions:

1. Inside of Visual Studio, in the Solution Explorer, right click on "Scripts" and go to "add"->"Project Reference...". Under the "Browse" tab, in the bottom right hand corner click on "Browse...". Navigate to your ServUO folder and find the three .dlls that we pasted there. "OrbServerSDK.dll", "System.Runtime.Remoting.dll", and "UOArchitectInterface.dll". Add them, make sure their check boxes are checked, then click "OK".

2. Navigate once again to your MobileSaver.cs file inside of Visual Studio. The current version of ServUO has a LOT more lines we'll need to comment out. They are as follows: (No lines above Townfolk need to be commented)
MobileSaver.cs Current ServUO version:
            // Townfolk
            ConversionTable.Add( typeof( Actor ) );
            ConversionTable.Add( typeof( Artist ) );
            ConversionTable.Add( typeof( Banker ) );
            //ConversionTable.Add( typeof( BrideGroom ) );
            //ConversionTable.Add( typeof( EscortableMage ) );
            ConversionTable.Add( typeof( Gypsy ) );
            ConversionTable.Add( typeof( HarborMaster ) );
            //ConversionTable.Add( typeof( Merchant ) );
            //ConversionTable.Add( typeof( Messenger ) );
            ConversionTable.Add( typeof( Minter ) );
            ConversionTable.Add( typeof( Ninja ) );
            //ConversionTable.Add( typeof( Noble ) );
            //ConversionTable.Add( typeof( Peasant ) );
            ConversionTable.Add( typeof( Samurai ) );
            ConversionTable.Add( typeof( Sculptor ) );
            //ConversionTable.Add( typeof( SeekerOfAdventure ) );
            ConversionTable.Add( typeof( TownCrier ) );
            // Guards
            ConversionTable.Add( typeof( ArcherGuard ) );
            ConversionTable.Add( typeof( WarriorGuard ) );
            // Healers
            ConversionTable.Add( typeof( EvilHealer ) );
            ConversionTable.Add( typeof( EvilWanderingHealer ) );
            //ConversionTable.Add( typeof( FortuneTeller ) );
            ConversionTable.Add( typeof( Healer ) );
            ConversionTable.Add( typeof( PricedHealer ) );
            ConversionTable.Add( typeof( WanderingHealer ) );
            #endregion

            #region Animals
            // Animals Bears
            ConversionTable.Add( typeof( BlackBear ) );
            ConversionTable.Add( typeof( BrownBear ) );
            ConversionTable.Add( typeof( GrizzlyBear ) );
            ConversionTable.Add( typeof( PolarBear ) );
            // Animals Birds
            ConversionTable.Add( typeof( Chicken ) );
            ConversionTable.Add( typeof( Crane ) );
            ConversionTable.Add( typeof( Eagle ) );
            ConversionTable.Add( typeof( Phoenix ) );
            // Animals Canines
            ConversionTable.Add( typeof( DireWolf ) );
            ConversionTable.Add( typeof( GreyWolf ) );
            ConversionTable.Add( typeof( TimberWolf ) );
            ConversionTable.Add( typeof( WhiteWolf ) );
            // Animals Cows
            ConversionTable.Add( typeof( Bull ) );
            ConversionTable.Add( typeof( Cow ) );
            // Animals Felines
            ConversionTable.Add( typeof( Cougar ) );
            ConversionTable.Add( typeof( HellCat ) );
            ConversionTable.Add( typeof( Panther ) );
            ConversionTable.Add( typeof( PredatorHellCat ) );
            ConversionTable.Add( typeof( SnowLeopard ) );
            // Animals Misc
            ConversionTable.Add( typeof( Boar ) );
            ConversionTable.Add( typeof( BullFrog ) );
            ConversionTable.Add( typeof( Dolphin ) );
            ConversionTable.Add( typeof( Gaman ) );
            ConversionTable.Add( typeof( GiantToad ) );
            ConversionTable.Add( typeof( Goat ) );
            ConversionTable.Add( typeof( Gorilla ) );
            ConversionTable.Add( typeof( GreatHart ) );
            ConversionTable.Add( typeof( Hind ) );
            ConversionTable.Add( typeof( Llama ) );
            ConversionTable.Add( typeof( MountainGoat ) );
            ConversionTable.Add( typeof( PackHorse ) );
            ConversionTable.Add( typeof( PackLlama ) );
            ConversionTable.Add( typeof( Pig ) );
            ConversionTable.Add( typeof( Sheep ) );
            ConversionTable.Add( typeof( Walrus ) );
            // Animals Mounts
            ConversionTable.Add( typeof( Beetle ) );
            ConversionTable.Add( typeof( DesertOstard ) );
            ConversionTable.Add( typeof( FireSteed ) );
            ConversionTable.Add( typeof( ForestOstard ) );
            ConversionTable.Add( typeof( HellSteed ) );
            ConversionTable.Add( typeof( Hiryu ) );
            ConversionTable.Add( typeof( Horse ) );
            ConversionTable.Add( typeof( Kirin ) );
            ConversionTable.Add( typeof( LesserHiryu ) );
            ConversionTable.Add( typeof( RidableLlama ) );
            ConversionTable.Add( typeof( Ridgeback ) );
            ConversionTable.Add( typeof( SavageRidgeback ) );
            ConversionTable.Add( typeof( ScaledSwampDragon ) );
            ConversionTable.Add( typeof( SeaHorse ) );
            ConversionTable.Add( typeof( SilverSteed ) );
            ConversionTable.Add( typeof( SkeletalMount ) );
            ConversionTable.Add( typeof( SwampDragon ) );
            ConversionTable.Add( typeof( Unicorn ) );
            // Animals Mounts War Horses
            //ConversionTable.Add( typeof( CoMWarHorse ) );
            //ConversionTable.Add( typeof( MinaxWarHorse ) );
            //ConversionTable.Add( typeof( SLWarHorse ) );
            //ConversionTable.Add( typeof( TBWarHorse ) );
            // Animals Reptiles
            ConversionTable.Add( typeof( Alligator ) );
            ConversionTable.Add( typeof( GiantSerpent ) );
            ConversionTable.Add( typeof( IceSerpent ) );
            ConversionTable.Add( typeof( IceSnake ) );
            ConversionTable.Add( typeof( LavaLizard ) );
            ConversionTable.Add( typeof( LavaSerpent ) );
            ConversionTable.Add( typeof( LavaSnake ) );
            ConversionTable.Add( typeof( SilverSerpent ) );
            ConversionTable.Add( typeof( Snake ) );
            // Animals Rodents
            ConversionTable.Add( typeof( GiantRat ) );
            ConversionTable.Add( typeof( JackRabbit ) );
            ConversionTable.Add( typeof( Rabbit ) );
            ConversionTable.Add( typeof( Sewerrat ) );
            // Animals Slimes
            ConversionTable.Add( typeof( Jwilson ) );
            // Animals Town Critters
            ConversionTable.Add( typeof( Bird ) );
            ConversionTable.Add( typeof( Cat ) );
            ConversionTable.Add( typeof( Dog ) );
            ConversionTable.Add( typeof( Rat ) );
            #endregion
           
            #region Special
            ConversionTable.Add( typeof( Barracoon ) );
            //ConversionTable.Add( typeof( ChaosGuard ) );
            ConversionTable.Add( typeof( Harrower ) );
            ConversionTable.Add( typeof( HarrowerTentacles ) );
            ConversionTable.Add( typeof( LordOaks ) );
            ConversionTable.Add( typeof( Mephitis ) );
            ConversionTable.Add( typeof( Neira ) );
            //ConversionTable.Add( typeof( OrderGuard ) );
            ConversionTable.Add( typeof( Rikktor ) );
            ConversionTable.Add( typeof( Semidar ) );
            ConversionTable.Add( typeof( Serado ) );
            ConversionTable.Add( typeof( ServantOfSemidar ) );
            ConversionTable.Add( typeof( Silvani ) );

3. Now you'll need to also open up your OrbServer.cs within Visual Studio. You will be adding an argument to the "ChannelServices.RegisterChannel(chan);" line. It will look like this:
OrbServer.cs ChannelServices:
        public static void Run(object o)
        {
            try{
            Console.WriteLine("\n{0} {1} is listening on port {2}", SERVER_NAME, SERVER_VERSION, SERVER_PORT);
            // Create Tcp channel using the selected Port number
            TcpChannel chan = new TcpChannel(SERVER_PORT);
            ChannelServices.RegisterChannel(chan, true);    //register channel

4. Build your solution and cross your fingers that no errors come up. Launch your ServUO.exe and cross your fingers even harder. If the build does not work, then your problem is likely either with the previous steps regarding references, commenting, or changing lines. If the build works but your server console is a big wall of red text on startup, then your Assemblies.cfg isn't set up correctly and needs another look.
______________________________________________________________________________________________________

If you also need a little help with the Client side, read this section:

1. Firstly, let's make sure that your UOArchitect is pointed at something that it can use without getting in anything else's way. To do that, first we will make a clean copy of the UO Client folder of your choice. If you are using the default client installation, that will be located in your "C:\Games\Electronic Arts\Ultima Online Classic" directory. Either way, located your client folder and make a copy of it. Place that copy wherever you like and consider renaming it so that you know what it is (I named mine UOArchitectClient). Open your UOArchitect Client folder that you extracted earlier and open "UO Architect.xml" with your preferred text editor. Where it says, "<clientDirectory>C:\GAMES\ELECTRONIC ARTS\ULTIMA ONLINE CLASSIC</clientDirectory>, replace the directory with that of your new client folder that you've made specifically for UOArchitect to use. Save and close this file.

2. Right click on "UO Architect.exe" and go to Properties. In the Compatibility tab, check the box for "Run this program as an administrator", then click OK.

3. Launch UO Architect and click at the top where it says "Connect". Add a new connection, naming it whatever you want and giving it the proper IP Address. The default port for this application is 2594, and the User Name is whatever you login to your server with normally. Click "Save", and provided your server is currently running, click on the new Server Listing entry that you just made and fill in the password. Click connect and hope that you don't get any errors! You may need to port forward 2594-2595 on your remote server.

4. If your button which previously said "Connect" at the top now says "Disconnect", then you're good to go. Feel free to hit File->New Design, or explore the default designs that came with the program. Note: When in the Editor, you must hold down shift in order to move the camera around.
______________________________________________________________________________________________________

That should do it; those are all of the steps I took in order to get UO Architect running properly on both ServUO release 57 as well as current. Hope this helps everybody else who stumbles on this thread while searching for answers!
 

Milva

Moderator
Maybe consider creating a new post for this :) less likely to get lost , plus will be seen mech easier. Thanks! Have been many hoping for this
 

OldManPsylus

Citizen
Maybe consider creating a new post for this :) less likely to get lost , plus will be seen mech easier. Thanks! Have been many hoping for this
Having fumbled through this particular problem for a bit, I'm certain that this thread (despite its age) wouldn't have gotten lost for those who were having this particular issue. The info on the subject is lacking enough that only a small handful of threads actually pop up when searching for anything related to compiling errors for UOArchitect 2.7.# and ServUO 57+

That said, I hear ya'. I went ahead and made a separate post as per your suggestion. Now it'll be doubly easy to find it! :cool: