forked from SkyFire/ascent_classic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PacketResearch.txt
174 lines (120 loc) · 3.72 KB
/
PacketResearch.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/*
* Ascent MMORPG Server
* Copyright (C) 2005-2008 Ascent Team <http://www.ascentemu.com/>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* Written en maintained by Captnoord also known as Capt.
*
*
*/
Small document about packet structures.
PURPOSE OF THIS DOCUMENT:
The purpose of this document is to supply the developers with packet descriptions that are unknown
or for some reason not correct.
GLOBAL RULES REGARDING THE TYPE DEFENITIONS:
uint64 = 8 bytes
uint32 = 4 bytes
uint16 = 2 bytes
uint8 = 1 byte
float = 4 bytes
guid = Dynamic guid that can vary between 2 and 8 bytes.
COMMON GRAMMAR RULES:
Dynamic parts are indicated with the "[" and the "]" characters.
the parts regarding this dynamic content are indicated between the "{" and the "}" characters.
Unhandled and unknown packets:
opcode: SMSG_MONSTER_MOVE_TRANSPORT
Description: obviously its a addition to the SMSG_MONSTER_MOVE packet
Amount of unknown fields: 1 + DYNAMIC PART
Structure
uint64 guid; - probably monster guid
uint64 guid_unknown; - probably transport guid
float PositionX; - source positions
float PositionY;
float PositionZ;
uint32 TimeStamp;
uint8 MovementOptionModifier. ( 0 - 4 )
[ dynamic part related to the MovementOptionModifier]
{ // 0 : default
}
{ // 1 : don't move
}
{ // 2 : 3 extra floats dono what they do - location to face?
float unk1; // possible X
float unk2; // possible y
float unk3; // possible z
}
{ // 3 : there is an extra uint64 most likely a guid. - burlex: this is guid to face
uint64 unk1; // possible guid
}
{ // 4 : there is an extra float that causes the orientation to be set.
float orientation;
}
uint32 MoveFlags;
uint32 Time; // time it take to get to the next point
uint32 WaypointCount;
[ dynamic part related on the amount of way points ]
{ float toXpos, toYpos, toZpos } x waypointcount;
**************************************************************************************************************
Some un structured research.
SMSG_UNIT_UNKNOWN = 1016, //(0x03F8)
|guid|
0x3fb
GetUint64(Bufferclass, (int)&v12);
GetUint8(v4, (int)&v13);
GetUint8(v4, (int)&v14);
GetUint32(v4, (int)&a2);
GetString(v4, (int)&v16, 0x80u);
0x3f5
GetUint64(Bufferclass, (int)&v7);
GetUint32(v6, (int)&a2);
0x3f4
GetUint8(a4, (int)&v7);
0x3f3
GetUint32(Bufferclass, (int)&a2);
0x3f1
GetUint64(Bufferclass, (int)&v12);
GetUint8(v4, (int)&v13);
GetUint8(v4, (int)&v14);
GetUint32(v4, (int)&a2);
GetString(v4, (int)&v16, 0x80u);
0x3f0
GetUint64(Bufferclass, (int)&v14);
GetUint8(v4, (int)&v15);
GetUint32(v4, (int)&a2);
GetString(v4, (int)&v17, 0x80u);
0x3Ef
GetUint64(Bufferclass, (int)&v12);
GetUint8(v4, (int)&v13);
GetUint8(v4, (int)&v14);
GetUint32(v4, (int)&a2);
GetString(v4, (int)&v16, 0x80u);
0x3e2 // related to enable mic...
GetUint8(a4, (int)&v9);
0x3d3
GetUint32(Bufferclass, (int)&a2);
0x3ae
GetUint64(Bufferclass, (int)&a2);
optional GetUint8(v4, (int)&v17);
0x3ad
GetGuid(a4, (int)&v6); // packed
0x3ac
GetGuid // packed
0x3aa
GetUint64(Bufferclass, (int)&v6);
GetUint64(v5, (int)&v7);
GetUint32(v5, (int)&a2);
GetUint32(v5, (int)&v9);
GetUint32(v5, (int)&v10);