Quote:
Originally Posted by Zaela
[You must be logged in to view images. Log in or Register.]
When you do "/who all guild", the client effectively inserts your guild name in place of "guild", so what the server sees is equivalent to if you did "/who all Terminus".
However...
In the EQEmu code, there is a field in the who all packet (Who_All_Struct) for Titanium that is listed as "unknown". The who all packet for Secrets of Faydwer is identical to Titanium's except for having one extra field at the end, but it has the field that is "unknown" for Titanium listed as "guildid".
Some quick tests suggest that this field does get filled in with your actual guild id when you do "/who all guild" from the Titanium client. When you do a different who all, it gets filled with 0xffffffff, like other fields in that packet when they aren't being used (like level range restrictions on the search).
So... it should be possible to check against the actual guild id rather than the guild name, when that field is not 0xffffffff. That would fix this issue. The function that handles all of this in EQEmu's code is a bit of a clusterfuck, but it shouldn't be too hard for someone to fit in the extra logic (and p99's code might be cleaned up, since the /who all guild### sounds custom). It's ClientList::SendWhoAll() in world/clientlist.cpp.
|
Thank you, Zaela, that makes perfect sense. So, I brute-forced from 1 upward and found that our guild ID is 315, but now it gets interesting!
Nobody from <Terminus Est> is on right now, but
both <Terminus> and <Terminus Rising> are showing up under ID 315 which looks to me as if "guild315" is simply translated by the server into a guild name ("Terminus"), and then the server executes a substring search, just as if I had entered "/who all Terminus" from the start.
The corroborating fact for the above is the fact that guild ID 612 seems to translate server-side to "Rip" as three different people (none in a guild named <Rip>) show up in the listing ("Riptite" in <Fires of Heaven>, "Riptorage" (no guild), and "Ripecloaca" in <Azure Guard>). Perhaps members of <Rip> have long ago gotten fed up with the problem and given up their guild?
Anyway, no joy, except now I have a really sore wrist from hitting shift-up and backspace over 600 times. Somewhere beyond that, a number will translate to "Terminus Est" and "Terminus Rising", but <Terminus> is struck holding the brown & sticky end of that stick.
[You must be logged in to view images. Log in or Register.]
In any case, I'll have a look at clientlist.cpp, and see if I can make enough sense of it to devise some solution. I agree that the guild# trick seems to be custom, so it ought to be possible to improve it to where it works as I should hope it was intended.