|
|
Line 8: |
Line 8: |
| | | |
| {| class="wikitable" | | {| class="wikitable" |
| + | |{{short}}||'''Operand_Count''' |
| |- | | |- |
− | |align="center" style="background:#6C86BF; color:white;"|'''SHORT'''||'''Operand_Count''' | + | |{{int}}||'''Opcode''' |
| |- | | |- |
− | |align="center" style="background:#3C548A; color:white;"|'''INT'''||'''Opcode''' | + | |{{long}}||'''ObjectID''' |
| |- | | |- |
− | |align="center" style="background:#3C4565; color:white;"|'''LONG'''||'''ObjectID''' | + | |{{short}}||'''PositionX''' |
| |- | | |- |
− | |align="center" style="background:#6C86BF; color:white;"|'''SHORT'''||'''PositionX''' | + | |{{short}}||'''PositionZ''' |
| |- | | |- |
− | |align="center" style="background:#6C86BF; color:white;"|'''SHORT'''||'''PositionZ''' | + | |{{short}}||'''PositionY''' |
| |- | | |- |
− | |align="center" style="background:#6C86BF; color:white;"|'''SHORT'''||'''PositionY''' | + | |{{int}}||'''UpdateCounter''' |
| |- | | |- |
− | |align="center" style="background:#3C548A; color:white;"|'''INT'''||'''UpdateCounter''' | + | |{{byte}}|{{unknown}} |
− | |-
| + | |
− | |align="center" style="background:#B3C0DE; color:white;"|'''BYTE'''||'''<font color=red>Unknown</font>'''
| + | |
− | |-
| + | |
− | |align="center" style="background:#B3C0DE; color:white;"|'''BYTE'''||'''Direction'''
| + | |
| |- | | |- |
| + | |{{byte}}||'''Direction''' |
| |} | | |} |
| | | |
Revision as of 10:17, 10 April 2007
Struct
SHORT
|
Operand_Count
|
INT
|
Opcode
|
LONG
|
ObjectID
|
SHORT
|
PositionX
|
SHORT
|
PositionZ
|
SHORT
|
PositionY
|
INT
|
UpdateCounter
|
BYTE
|
??
|
BYTE
|
Direction
|
Variable Descriptions
Opperand_Count = 8
Opcode = 1B24F808
- ObjectID that you are listing attributes for.
- New Position of Object. The value is transformed the following way.
(Coordinate * 4) = Position
(Position / 4) = Coordinate
This is done to utilize variable size to prevent moving anywhere outside of the map.
Range of map = 16,000
Range of SHORT = 64,000
64/16 = 4
- Number of movement updates the object has done.
- Used to distinguish new updates from potential repeats.
- Incremented by 1 each packet.
- This is the direction for the object to face after moving.
- It is calculated by (Angle / 0.0625) where angle is in radians.
- This packet needs to be sent frequently to prevent start/stop in a movement stream.
- Also, shorter distances at slower frequency will create slower speed.
- It appears the unknown byte is some sort of server-side interpolation variable.
- It doesnt have any affect on the client, as far as we can tell.
- This byte seems to be related to the 2 variances of ObjController Transform Packets
- used (23 vs 21). See them for further detail. The 23 seems to be sent
- in a Data channel signifying it being important. This byte is related to a
- count of 21's the occur between a group of 23. The 23 is assumed to be start/end
- of a chain of movement while the 21 is an update.
- TODO: Look into this byte more...
|
Tags
S→C
|
This packet originates on the server.
|
|
75%
|
This packet has been partially reversed.
|
|
|
Sample Code
Insert Code Snippet Here...
Sample Packet
Insert Sample Packet Here...