ToolTip (Sequence)

From SWGANH Wiki
Jump to: navigation, search

every time the player opens up the inventory the client sends the server a list with the itemnumbers of the objects in the inventory as unicode string. If this list is not send, then every time the player goes with the mouse over an item in his inventory the client sends a packet with the itemnumber as unicode string to ask the server for what Data he should display.

This list is usually large enough to get send as a 00 0D Packet.

Itemnumber as Unicodestring means : that the dezimal (!) Itemnumber gets encoded as Unicodestring.

Example :

So if an Item has the number 00 00 00 18 aa aa aa aa this is in decimal 105942526634. This Item number would then be encoded by the client as 31 00 30 00 35 00 39 00 34 00 32 00 35 00 32 00 36 00 36 00 33 00 34 00 Please note that ALL Item numbers are send by the client in ONE Unicodestring. Each Item Nr is separated through a space (20). Item IDs are signed, so a minus (-) in front of a number actually has its significance. EVERY Item ID is followed by a [space] (20 00) to mark its end.

Packet: Client --> Server
[UINT16] 05 00

[UINT32] 46 5E CE 80           ObjControllerMessage

[UINT32] 23 00 00 00           INT 1

[UINT32] 16 01 00 00           INT 2

[UINT64] ID                    Player ID

[UINT64] 00

[UINT32] EF 50 45 16           getattributesbatch

[UINT64] 00

[UINT32] length                length of the Unicodestring

[UNICODE STRING]               see Notes above

On receiving this packet the server in response sends a packet with the elements the tooltip (and examine window - more on that later) has to display and its values. Every Information-Item has its string code send as plain ASCII Text, followed by its value as unicode string. In some cases the send value is not the unicodestring that will be displayed but an unicode string that consists of a directoryname, a filename and a stringname that describe a string stored in a stringtable that is to be displayed. The one case known to me at this point is for description of the resource class. The proper ASCII handler is "resource_class" which is followed by the unicode string "@kb/kb_resources_d:fungi". @ In this case stands for string/en/. Please note that directories have changed throughout the publishes. So it is possible (likely) that the proper string is not found where the NGE say that he should be.


Packet: Server --> Client

[UINT16] 05 00

[UINT32] 2a 2f f1 f3           Opcode AttributeListMessage

[UINT64] ID                    ID of the item for which the Info is send

[UINT32] Count                 Nr of Elements send to describe the item / res

[UINT16] length String         This is the descriptor for the Information that follows
[ASCII String]