Rex

Citizen
Hello,
I'm looking to get some feedback or direction on how a system like this could be created and implemented. Here are the details of how I imagine the system working.

For clarity this explanation contains 2 players. The first named himself Joseph, the second named herself Leah.

1. Each player has their own Dictionary <Mobile, string> of whatever other players they have labeled. (working via xml attachment)
2. Command to set a player name. Simply use "[NameThem Joe" and target a player, and it will remember their Mobile and the string Joe as their name. (works fine)
3. Using Single click, "Allnames", and the Ctrl-Shift "Object Handle" on that player before using the "NameThem" command should show their name as "Survivor".
4. Using Single click, "Allnames", and the Ctrl-Shift "Object Handle" on that player After using the "NameThem" command should show their stored name from the Xml attachments' dictionary.

So lets say Leah and Joseph have met, and Joseph tells Leah his name is Joe, Leah can then use the command "[NameThem Joe" to set Josephs name to "Joe". After that when she uses Single click, "Allnames", or the Ctrl-Shift "Object Handle", they should all show his name as Joe to her only, but to everyone else he should still be seen as "Survivor".

The issue I'm having is getting the stored names to show up properly according to saved entries in the xml attachment dictionary. If I want the stored name to show up by Using Single click, "Allnames", and the Ctrl-Shift "Object Handle" I think I would have to go about it in a few ways.
For Single click I'd have to change the Mobile.Name or Mobile.NameMod but then this custom name would show up to all the other players around.
Allnames and the Ctrl-Shift "Object Handle" also seem to get their data from the Mobiles name data. So this would not be a solution.
The other option I tried is just leaving the Mobiles name as a simple default of "Survivor" and when you single click them adding a PrivateOverheadMessage of the xml stored name, but I couldn't get it to work properly.

Thank you all in advance for any help or thoughts on this.
 

PyrO

Moderator
For single click and the Aos mouse over stuff, I think you could use "OnSingleClick" and "GetPropertyList" or how its called to show the name if it is in the dictionary else Survivor.

Not sure about Allnames if it is using one of the 2 function to fetch the data.

Also you may get that behaviour if you alter the packets to look at the dictionary. (I would only do that after you tried the stuff befor and it didnt work)
 

Rex

Citizen
I'm having issues getting some things to even debug properly.
i've added some simple say code to each of the OnClick actions in PlayerMobile and Mobile. OnSingleClick, OnAosSingleClick, OnDoubleClick
this.Say("pm OnSingleClick");

I'm just trying to see if the client is sending the proper clicks to the server, and trying to track them. I've tried this on my own server which is built from ForkUO and I also tried on the current ServUO build. I'm using client 7.0.15.1.
As far as I can tell the clicks are not being sent or picked up properly for OnSingleClick and OnAosSingleClick when i try to manually single click on either my own PlayerMobile or another Logged in client. OnDoubleClick seems to work fine.
this video webm file shows a single click on each character then a double click on each. ignore the map terrain.
https://dl.dropboxusercontent.com/u/5608436/Clicks.webm
https://dl.dropboxusercontent.com/u/5608436/Clicks.webm

Any thoughts? I could try a different client but there might be something else I'm overlooking. thanks!
 

Diego

Citizen
Hi Rex,
I did an UnknownName System like yours, adding Dictionaries in PlayerMobile so names are stored inside PlayerMobile (not XML).
Imagine you don't know a player.. then I have a singleclick tooltip, Paperdoll and a CTRL+SHIFT containing only his race (i.e. "Dwarf").
You can give him a name thanks to a new ContextMenu item which opens a new proper Gump (You can change the name multiple times if needed).
NPCs bypass all these new functions, so their names are always visible.

Unfortunately it's a bit complicated to explain.. because I've done a lot of edits.. even in the Core to do this.. (I don't know if others have done this in different ways).. but be careful to Incognitoes and Disguises because it was hard to manage them (imagine You give a name to a dwarf.. if he disguises you should be able to see "Dwarf" again and not the previously stored name.. moreover, You should give a name to this disguise too and remember the same name in the future if he will disguise again to the same aspect).

Oh.. and remember to consider also corpses, heads and other things.. not only live PlayerMobiles.

EDIT:
For sure to show proper knownNames I edited in PlayerMobile:
  • DisplayPaperdollTo
  • SendPropertiesTo
  • OnAosSingleClick
Then in Network/Packets (Core):
  • MobileName
  • MobileStatusCompact
  • MobileStatusExtended
  • MobileStatus
EDIT #2:
Remember to check also the PartyGump.

A general advice is that You should search each Name and NameMod occurrence in scripts and manage them properly, as You wish.
 
Last edited: