Hey !

I have been able to merge the modifications for Enhanced Client support (see patch txt files in this post). It seems to be working :)
I just had to modify RaceDefinitions.cs according to what I have found on the net ;)

Here are the results !

I still need to test it out on long term ... but I have just launched it on my Test Center, and it seems to be working. Now I am able to create a character with Enhanced Client (for example)

EDIT : updated with Publish 54 version
 

Attachments

  • Enhanced Client Support for ServUO Publish 54.zip
    143 KB · Views: 479
Last edited:
Just wondering what do you use to launch the enhanced client? Do you use AssistUO or something similier?


Sent from my iPhone using Tapatalk - now Free
 
Assistants won't work for the enhanced client I believe. Think you have to run the exe through a utility for it to connect to a public shard. Something...cheese, not completely sure on the name of the app. Haven't used the enhanced client much myself.

Sent from my DROID RAZR using Tapatalk 4
 
Hey !

Yes, I use UOSALoader (that I found somewhere on the web. Don't remember where exactly, but I can upload it here if you want to). You just have to change the cheese.cfg file to the right IP. :)

But I have abandoned support for Enhanced Client for now ... There were still problems with the grid view, which was kinda annoying for players.
However, character creation seemed to work fine :)
 
Here is a new version compatible with ServUO Publish 54.

I tried to make it more user friendly, with all the files in one zipped file, and a small readme.

There might still have some problems left on that version :
- grid view seems to get broken on certain conditions (I haven't found which ones though).
- there might be a crash about DropReq6017 method in PacketHandlers.cs

So, please, use this carefully and preferrably not on a public shard.
As one can say : use at your own risks.... ;)

If some people want to improve the code, I'm open for help ! The changes were originally done from the GemUO fork (that seems to be abandoned now) ^^

Have fun !

-Rek-

EDIT : after some testing, I've just discovered the "missing string" bug was back. I'm working on fixing this
 
Last edited:
Just wondering what do you use to launch the enhanced client? Do you use AssistUO or something similier?
Assistants won't work for the enhanced client I believe. Think you have to run the exe through a utility for it to connect to a public shard. Something...cheese, not completely sure on the name of the app. Haven't used the enhanced client much myself.

UoSALoader is needed.

Note: Always scan any downloaded *.exe
 

Attachments

  • UoSALoader.rar
    43.3 KB · Views: 261
Hey guys !

I've found the issue about Missing Strings.... I hadn't seen there were two DisplayContextMenu now (a new one and an old one). I had done my changes in the new one, and not in the old one. ;)

Anyway, now it works fine :)

Just some tweaking with the grid system ... and it should work fine ^^

Also, I've changed the DropReq6017 so that it doesn't crashes (2 days without crashes now ... so it seems to be ok ^^)


Please use the file in this post if you want to test ServUO and Enhanced Client Support.

Thank you,

-Rek-
 
Hey, Thanks for this! I am really eager to try this out. Will the classic client still work as well if this is installed?
 
My pleasure ! I'm glad it can help some people :)

One last modification, I've been reported the ContextMenus on Classic client were broken with that version.

Please use the Packets.cs in this post.

Thanks ^^
 
Errors:
+ Item.cs:
CS0227: Line 1046: Unsafe code may only appear if compiling with /unsafe
Scripts: One or more scripts failed to compile or no script files were found.
https://www.virustotal.com/es-ar/fi...6e9512ad56dcd99e941aa795/analysis/1383816008/

TR/Hijacker.Gen
Win32/Heri
W32/Trojan.UVXA-1621
UnclassifiedMalware
Trojan.Hijacker
RDN/Generic.sb!l
RDN/Generic.sb!l
Troj_Generic.ESYVV
WS.Reputation.1
TROJ_GEN.R0CBB01K213
Malware-Cryptor.Inject.gen
RiskTool.Win32.ProcessPatcher.Sml!cobra (v) (not malicious)


why server files have Unsafe code?
why the exe is an suspicious trojan?

------------------------------------------------------------

Scripts: Compiling C# scripts...Failed with: 1 errors, 0 warnings
Errors:
+ Misc/RaceDefinitions.cs:

CS0115: Line 108: 'Server.Misc.RaceDefinitions.Human.ValidateFace(bool, int)': no suitable method found to override
CS0115: Line 118: 'Server.Misc.RaceDefinitions.Human.RandomFace(bool)': no suitable method found to override
CS0115: Line 169: 'Server.Misc.RaceDefinitions.Human.ClipFaceHue(int)': no suitable method found to override
CS0115: Line 174: 'Server.Misc.RaceDefinitions.Human.RandomFaceHue()': no suitable method found to override
CS0115: Line 258: 'Server.Misc.RaceDefinitions.Elf.ValidateFace(bool, int)':no suitable method found to override
CS0115: Line 268: 'Server.Misc.RaceDefinitions.Elf.RandomFace(bool)': no suitable method found to override
CS0115: Line 316: 'Server.Misc.RaceDefinitions.Elf.ClipFaceHue(int)': no suitable method found to override
CS0115: Line 321: 'Server.Misc.RaceDefinitions.Elf.RandomFaceHue()': no suitable method found to override
CS0115: Line 410: 'Server.Misc.RaceDefinitions.Gargoyle.ValidateFace(bool, int)': no suitable method found to override
CS0115: Line 426: 'Server.Misc.RaceDefinitions.Gargoyle.RandomFace(bool)': no suitable method found to override
CS0115: Line 473: 'Server.Misc.RaceDefinitions.Gargoyle.ClipFaceHue(int)': no suitable method found to override
CS0115: Line 478: 'Server.Misc.RaceDefinitions.Gargoyle.RandomFaceHue()': no suitable method found to override

Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.
 
I think it didn't compile your Item.cs ... Did you remove the "/unsafe" in the compiler ?
It is in the default Win compiler batch file from ServUO Publish 54, so I guess it is no risk. ;-)

For the Trojan, some antivirus might consider UOSALoader.exe as one ... Although it is safe imho to use it.
But I haven't checked its behavior carefully. As long it loads the Enhanced Client correctly, I am happy with that ;)
 
I think it didn't compile your Item.cs ... Did you remove the "/unsafe" in the compiler ?
It is in the default Win compiler batch file from ServUO Publish 54, so I guess it is no risk. ;-)

For the Trojan, some antivirus might consider UOSALoader.exe as one ... Although it is safe imho to use it.
But I haven't checked its behavior carefully. As long it loads the Enhanced Client correctly, I am happy with that ;)

problem solved.

I have removed my actual servuo.exe and compiled with Compile.WIN.bat

Please note that my UOSALoader isn't consider as trojan or malware by any security software.
I recommend to use this.

Thanks for your hard work!!!
 
classic client is bugged?
we must choose classic or enhanced? not both?
 

Attachments

  • 001Untitled.jpg
    001Untitled.jpg
    84.2 KB · Views: 165
Classic Client is OK. Please replace the Packets.cs by the one in this post :

My pleasure ! I'm glad it can help some people :)

One last modification, I've been reported the ContextMenus on Classic client were broken with that version.

Please use the Packets.cs in this post.

Thanks ^^

You can choose both, Enhanced Client or Classic Client. It's just I made a mistake in the ContextMenus in the original merge.
Sorry for that !
 
fyi, I just installed the packets.cs from your post and now all the menus in the enhanced client say "missing string". Still, good job on this though. I know most people in the private uo shard community seem to prefer the classic client, which I have no problem using, but I actually like the enhanced client if I can get a few bugs worked out. Thanks again for your help.
 
fyi, I just installed the packets.cs from your post and now all the menus in the enhanced client say "missing string". Still, good job on this though. I know most people in the private uo shard community seem to prefer the classic client, which I have no problem using, but I actually like the enhanced client if I can get a few bugs worked out. Thanks again for your help.

No problem :) I care about the Enhanced Client too, because I find some of the graphics awesome (especially water effects). I've tested full Galleons on Enhanced Client, and they look awesome !

By the way, I don't have the same problem as you. Both clients, classic and enhanced work fine on my test center (and live on my shard too).
In case I uploaded the wrong Packet.cs, here is the full version I use (and that seems to work).
Btw, which client do you use ? I'm with 7.0.33.1 / 4.0.33.1
 

Attachments

  • Enhanced Client Support for ServUO Publish 54.zip
    143 KB · Views: 221
.I just copied all of the files from your post above. It looks like the problem was that I had put packets.cs in the wrong place. Everything works now. I am using the same client versions as you.
 
after appying this great patch i have a problem.
new created characters have 0 skill


i tried downloading a new servuo and created a necromancer he have this skills and this necro clothes.
appyied only the enhanced support patch and now new character don't have they clothes and have 0 skills.
 
Seems doesnt work with newest UOE client. Does anyone know where a backup of the UOE client 4.0.33.1 might be?

Sorry forgot to mention that UOE is at 4.0.34.2. I didnt have any othen version before I downloaded LOL.
 
Hey !

Sorry it took me so long to fix this ... it was an easy but hard to find fix. :p

Anyway, now characters start with all their skills (Classic and Enhanced clients).

This was the line to change in EventSink.cs :
Code:
public Mobile Mobile{ get{ return m_Mobile; } set{ m_Mobile = value; } }

I'm not sure why Voxpire removed that variable from Publish 53, but we need it for Character Creation with the patch introduced to support Enhanced Client. ;)

I'm updating the file in the first post to get the full patch.

Have fun !

-Rek-
 
You can try installing this resource into your RunUO build. Then just work through any errors/issues if you have any.
 
Indeed, I think you will have to try it "the hard way"... I'm not sure what are the differences in more recent versions of RunUO, so I guess just using the files provided here will give you some errors.
I'll give it a try when I have some time though ;)

But even on ServUO, I'm still encountering a crash from the DropReq6017 method in PacketHandlers.cs. This crash comes rarely, but when it comes, it is REALLY annoying.

I noticed the way of detecting the Enhanced Client has changed. I think I got it right now ... but I'm still not sure it is 100% correct, as not long ago I was getting a crash from people using Scavenger option (from Razor) on the Classic Client (although it was leading in the Enhanced Client part of the code).
Now I get another type of crash when people use the CTRL + SHIFT option from the Enhanced Client (I guess they do something else special though, as I've not been able to reproduce it).

So yeah, Enhanced Client is "cool", but it's still "use it at your own risk"...
 
Code:
Exception:
System.NullReferenceException:
Object reference not set to an instance of an object
 
at Server.Network.PacketHandlers.DropReq6017 (Server.Network.NetStatestate, Server.Network.PacketReader pvSrc) [0x00000] in <filename unknown>:0
 
at Server.Network.MessagePump.HandleReceive (Server.Network.NetState ns) [0x00000] in <filename unknown>:0
 
at Server.Network.MessagePump.Slice () [0x00000] in <filename unknown>:0
 
at Server.Core.Main (System.String[] args) [0x00000] in <filename unknown>:0
 
Hello,

I need to update this resource ... or create a real resource. :p

Anyway, for the DropReq6017 crash, here is mine in PacketHandlers.cs :
Code:
        //
        //genova:START support uo:kr
        public static void DropReq6017(NetState state, PacketReader pvSrc)
        {       
            if (state.IsKRClient)
            {             
                Serial m_item = pvSrc.ReadInt32(); // support UO:KR
                int x = pvSrc.ReadInt16();
                int y = pvSrc.ReadInt16();
                int z = pvSrc.ReadSByte();
                int GridLocation = pvSrc.ReadByte(); // support UO:KR
                Serial dest = pvSrc.ReadInt32();
                Point3D loc = new Point3D(x, y, z);
                Mobile from = state.Mobile;
                if (dest.IsMobile)
                    from.Drop(World.FindMobile(dest), loc);
                else if (dest.IsItem)
                {
                    #region GeNova KR Support
                    if (World.FindItem(dest) is Container)
                    {
                        Container m_container = World.FindItem(dest) as Container;
                        Item[] items = m_container.FindItemsByType(typeof(Item));
                        bool canDropGrid = true;
                        foreach (Item itemDropOn in items)
                        {
                            if (itemDropOn.GridLocation == GridLocation && itemDropOn.Parent != null && itemDropOn.Parent == m_container)
                            {
                                canDropGrid = false;
                                break;
                            }
                        }
                        if (canDropGrid)
                                if (m_item != null)
                                    if (World.FindItem(m_item) != null)
                                            World.FindItem(m_item).GridLocation = GridLocation;
                        else
                        {
                            bool m_sadd = true;
                            for (int i = 0; i <= items.Length; i++)
                            {
                                foreach (Item itemDropOn in items)
                                {
                                    if (itemDropOn.GridLocation == i && itemDropOn.Parent != null && itemDropOn.Parent == m_container)
                                        m_sadd = false;
                                }
                                if (m_sadd)
                                {
                                    if (m_item != null)
                                    {
                                        if (World.FindItem(m_item) != null)   
                                        {
                                            World.FindItem(m_item).GridLocation = i;
                                            break;
                                        }
                                    }
                                }
                                if (i != items.Length)
                                    m_sadd = true;
                            }
                            if (!m_sadd && (items.Length < 125))
                                World.FindItem(m_item).GridLocation = items.Length;
                        }
                    }
                    #endregion
                    from.Drop(World.FindItem(dest), loc);
                }
                else
                    from.Drop(loc);
                 
                #region GeNova: KR Support
                if (state != null)
                    state.Send(new KRDropConfirm());
                #endregion
            }
            else
            {
                pvSrc.ReadInt32(); // serial, ignored
                int x = pvSrc.ReadInt16();
                int y = pvSrc.ReadInt16();
                int z = pvSrc.ReadSByte();
                pvSrc.ReadByte(); // Grid Location?
                Serial dest = pvSrc.ReadInt32();

                Point3D loc = new Point3D(x, y, z);
                Mobile from = state.Mobile;

                if (dest.IsMobile)
                    from.Drop(World.FindMobile(dest), loc);
                else if (dest.IsItem)
                {
                    Item item = World.FindItem(dest);

                    if (item is BaseMulti && ((BaseMulti)item).AllowsRelativeDrop)
                    {
                        loc.m_X += item.X;
                        loc.m_Y += item.Y;
                        from.Drop(loc);
                    }
                    else
                    {
                        from.Drop(item, loc);
                    }
                }
                else
                    from.Drop(loc);
            }
        }
        //genova:END support uo:kr
        //

Other files were updated to make it more stable too. I'll make a new version later.
 
Thanks for making this. I've been trying to go through the code to fix these issues I'm having, any ideas?
1 - When I land as a gargoyle, sometimes I end up below the ground.
2 - GM toolbar works but I can't see the button labels.
 
An update to the DropReq6017 function :

Code:
        //
        //genova:START support uo:kr
        public static void DropReq6017(NetState state, PacketReader pvSrc)
        {       
            if (state.IsKRClient)
            {             
                Serial m_item = pvSrc.ReadInt32(); // support UO:KR
                int x = pvSrc.ReadInt16();
                int y = pvSrc.ReadInt16();
                int z = pvSrc.ReadSByte();
                int GridLocation = pvSrc.ReadByte(); // support UO:KR
                Serial dest = pvSrc.ReadInt32();
                Point3D loc = new Point3D(x, y, z);
                Mobile from = state.Mobile;
                if (dest.IsMobile)
                    from.Drop(World.FindMobile(dest), loc);
                else if (dest.IsItem)
                {
                    #region GeNova KR Support
                    if (World.FindItem(dest) is Container)
                    {
                        Container m_container = World.FindItem(dest) as Container;
                        Item[] items = m_container.FindItemsByType(typeof(Item));
                        bool canDropGrid = true;
                        foreach (Item itemDropOn in items)
                        {
                            if (itemDropOn.GridLocation == GridLocation && itemDropOn.Parent != null && itemDropOn.Parent == m_container)
                            {
                                canDropGrid = false;
                                break;
                            }
                        }
                        if (canDropGrid)
                                if (m_item != null)
                                    if (World.FindItem(m_item) != null)
                                            World.FindItem(m_item).GridLocation = GridLocation;
                        else
                        {
                            bool m_sadd = true;
                            for (int i = 0; i <= items.Length; i++)
                            {
                                foreach (Item itemDropOn in items)
                                {
                                    if (itemDropOn.GridLocation == i && itemDropOn.Parent != null && itemDropOn.Parent == m_container)
                                        m_sadd = false;
                                }
                                if (m_sadd)
                                {
                                    if (m_item != null)
                                    {
                                        if (World.FindItem(m_item) != null)   
                                        {
                                            World.FindItem(m_item).GridLocation = i;
                                            break;
                                        }
                                    }
                                }
                                if (i != items.Length)
                                    m_sadd = true;
                            }
                            if (!m_sadd && (items.Length < 125))
                                if (m_item != null)
                                    if (World.FindItem(m_item) != null)
                                        World.FindItem(m_item).GridLocation = items.Length;
                        }
                    }
                    #endregion
                    from.Drop(World.FindItem(dest), loc);
                }
                else
                    from.Drop(loc);
                 
                #region GeNova: KR Support
                if (state != null)
                    state.Send(new KRDropConfirm());
                #endregion
            }
            else
            {
                pvSrc.ReadInt32(); // serial, ignored
                int x = pvSrc.ReadInt16();
                int y = pvSrc.ReadInt16();
                int z = pvSrc.ReadSByte();
                pvSrc.ReadByte(); // Grid Location?
                Serial dest = pvSrc.ReadInt32();
 
                Point3D loc = new Point3D(x, y, z);
                Mobile from = state.Mobile;
 
                if (dest.IsMobile)
                    from.Drop(World.FindMobile(dest), loc);
                else if (dest.IsItem)
                {
                    Item item = World.FindItem(dest);
 
                    if (item is BaseMulti && ((BaseMulti)item).AllowsRelativeDrop)
                    {
                        loc.m_X += item.X;
                        loc.m_Y += item.Y;
                        from.Drop(loc);
                    }
                    else
                    {
                        from.Drop(item, loc);
                    }
                }
                else
                    from.Drop(loc);
            }
        }
        //genova:END support uo:kr
        //

I don't know about the problem with landing as a Gargoyle. I'll test it ;)

For Joeku Staff Menu, I have the same problem. I haven't tried to fix it yet. But will do.

Thx !
 
About the gargoyle thing, the enhanced client seems to be misrepresenting heights. I've attached an image where I had two gargoyles standing in a slope in haven, the red one is using the EC and the blue one is classic. Each client sees the other as being below ground, Blue's POV is the correct one. Red can walk around fine, but whenever he tries to fly or land on terrain where Blue sees him as being underground, he actually goes underground.

And I don't know much about fonts in UO but Joeku's toolbar might just be referencing a font which doesn't exist in the EC. I don't know how I would go about changing fonts other than assuming I'd have to edit Scripts\Services\Toolbar\Gumps\Toolbar.cs, so I haven't tested that.
 

Attachments

  • 3D vs 2D client.png
    3D vs 2D client.png
    1.5 MB · Views: 99
Anybody else having issues with the character sheet? When I click on the character sheet to view stats it tries to bring up the menu you get when you left click on your player and gives you the menu that includes toggling item insurance. It never brings up the character sheet. Thanks.
 
Who knows how to make faces support?
Code:
gamedata.uop KR 2.48.0.7 Facestyles.csv
ID,StringId,TileArtId,FaceName,Entitlement
1,1078533,15172,face1,0
2,1078534,15173,face2,0
3,1078535,15174,face3,0
4,1078536,15175,face4,0
5,1078537,15176,face5,0
6,1078538,15177,face6,0
7,1078539,15178,face7,0
8,1078540,15179,face8,0
9,1078541,15180,face9,0
10,1078542,15181,face10,0
11,1079794,15182,Anime,8192
12,1079795,15183,Hellian,8192
13,1079796,15184,Juka,8192
14,1079797,15185,Undead,8192
15,1079798,15186,Meer,8192
16,1079272,15187,Elder,8192
17,1015247,15188,Orc,8192
18,1078480,15189,Pirate,8192
19,1079801,15190,NativePapuan,8192
20,1079800,15191,Vampire,8192
UO Packet Guide Last Update: 28/05/2012
 
Back