1
1
using ArcheAge . ArcheAge . Holders ;
2
2
using ArcheAge . ArcheAge . Network . Connections ;
3
+ using ArcheAge . ArcheAge . Network . Packets . Server . Utils ;
3
4
using ArcheAge . ArcheAge . Structuring ;
4
5
using LocalCommons . Network ;
5
6
using System . Collections . Generic ;
7
+ using LocalCommons . Utilities ;
6
8
7
- namespace ArcheAge . ArcheAge . Network
9
+ namespace ArcheAge . ArcheAge . Network . Packets . Server
8
10
{
9
11
public sealed class NP_CharacterListPacket_0x0039 : NetPacket
10
12
{
11
- /*private void WriteItem(int itemId)
12
- {
13
- ns.Write((int)itemId);
14
- if (itemId <= 0)
15
- {
16
- return;
17
- }
18
-
19
- ns.Write((int)0x01);
20
- for (int i = 0; i < 6; i++)
21
- {
22
- ns.Write((byte)0x00);
23
- }
24
-
25
- ns.Write((byte)0x01);
26
- for (int i = 0; i < 3; i++)
27
- {
28
- ns.Write((byte)0x00);
29
- }
30
-
31
- ns.Write((byte)0x01);
32
- for (int i = 0; i < 4; i++)
33
- {
34
- ns.Write((byte)0x00);
35
- }
36
-
37
- ns.Write((byte)0x55);
38
- for (int i = 0; i < 62; i++)
39
- {
40
- ns.Write((byte)0x00);
41
- }
42
-
43
- ns.Write((byte)0x0B);
44
- for (int i = 0; i < 16; i++)
45
- {
46
- ns.Write((byte)0x00);
47
- }
48
- }*/
49
- private void WriteItem ( int itemId )
50
- {
51
- ns . Write ( ( int ) itemId ) ;
52
- switch ( itemId )
53
- {
54
- case 0 :
55
- break ;
56
- default :
57
- ns . Write ( ( long ) Program . ObjectUid . Next ( ) ) ; //id[1] Q //TODO: сделать у вещей постоянные UID
58
- ns . Write ( ( byte ) 0 ) ; //type[1] c
59
- ns . Write ( ( byte ) 0 ) ; //flags[1] c
60
- ns . Write ( ( int ) 0x01 ) ; //stackSize[1] d
61
- byte detailType = 1 ;
62
- ns . Write ( ( byte ) detailType ) ; //detailType c
63
- switch ( detailType )
64
- {
65
- case 0 :
66
- break ;
67
- case 1 :
68
- ns . WriteHex ( "000000005500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" ) ; //detail 51 b
69
- break ;
70
- case 2 :
71
- ns . WriteHex ( "0000000000000000000000000000000000000000000000000000000000" ) ; //detail 29 b
72
- break ;
73
- case 3 :
74
- ns . WriteHex ( "000000000000" ) ; //detail 6 b
75
- break ;
76
- case 4 :
77
- ns . WriteHex ( "000000000000000000" ) ; //detail 9 b
78
- break ;
79
- case 5 :
80
- ns . Write ( ( long ) 0 ) ; //type d
81
- ns . Write ( ( long ) 0 ) ; //x Q
82
- ns . Write ( ( long ) 0 ) ; //y Q
83
- ns . Write ( ( float ) 0 ) ; //z f
84
- break ;
85
- case 6 :
86
- ns . WriteHex ( "00000000000000000000000000000000" ) ; //detail 16 b
87
- break ;
88
- case 7 :
89
- ns . WriteHex ( "00000000000000000000000000000000" ) ; //detail 16 b
90
- break ;
91
- case 8 :
92
- ns . WriteHex ( "0000000000000000" ) ; //detail 8 b
93
- break ;
94
- }
95
-
96
- ns . Write ( ( long ) 0 ) ; //creationTime[1] Q
97
- ns . Write ( ( int ) 0 ) ; //lifespanMins[1] d
98
- ns . Write ( ( int ) 0 ) ; //type[1] d
99
- ns . Write ( ( byte ) 0x0b ) ; //worldId c"
100
- ns . Write ( ( long ) 0 ) ; //unsecureDateTime Q
101
- ns . Write ( ( long ) 0 ) ; //unpackDateTime Q
102
- break ;
103
- }
104
- }
105
-
106
13
/// <summary>
107
14
/// пакет для входа в Лобби
108
15
/// CharacterListPacket01_0x0039
@@ -137,7 +44,7 @@ public NP_CharacterListPacket_0x0039(ClientConnection net, int num, int last) :
137
44
CharacterHolder . LoadWeaponsData ( chr , chr . NewbieWeaponPackId ) ; //дополнительно прочитать Weapon,WeaponExtra,WeaponRanged,Instrument из таблицы equip_pack_weapons
138
45
CharacterHolder . LoadCharacterBodyCoord ( chr , chr . CharRace , chr . CharGender ) ; //дополнительно прочитать body, x, y, z из таблицы charactermodel
139
46
CharacterHolder . LoadZoneFaction ( chr , chr . CharRace , chr . CharGender ) ; //дополнительно прочитать FactionId,StartingZoneId из таблицы characters
140
-
47
+
141
48
ns . Write ( ( int ) chr . CharacterId ) ; //type d
142
49
ns . WriteUTF8Fixed ( chr . CharName , chr . CharName . Length ) ; //name S
143
50
ns . Write ( ( byte ) chr . CharRace ) ; //CharRace c
@@ -152,139 +59,28 @@ public NP_CharacterListPacket_0x0039(ClientConnection net, int num, int last) :
152
59
//-----------------------------
153
60
ns . Write ( ( int ) 0x00 ) ; //type d
154
61
ns . Write ( ( int ) 0x00 ) ; //family d
155
- //------------------------------------
156
- // инвентарь персонажа
157
- //------------------------------------
158
- // 1.костюм
159
- // 2.Шлем (ткань, кожа, латы)
160
- // 3.Нагрудник (ткань, кожа, латы)
161
- // 4.Пояс (ткань, кожа, латы)
162
- // 5.Наручи (ткань, кожа, латы)
163
- // 6.Перчатки (ткань, кожа, латы)
164
- // 7.Накидка
165
- // 8.Поножи (ткань, кожа, латы)
166
- // 9.Обувь (ткань, кожа, латы)
167
- //10.Ожерелье
168
- //11.Серьга
169
- //12.Серьга
170
- //13.Кольцо
171
- //14.Кольцо
172
- //15.Оружие
173
- //16.Дополнительное оружие
174
- //17.Лук
175
- //18.Муз. инструмент (струнный, духовой, ударный)
176
- //19.Груз (глайдер, торговый груз, местный товар)
177
- //for (int i = 0; i < 19; i++)
178
- //{
179
- //equip_slot
180
- WriteItem ( chr . Head ) ; //ES_HEAD
181
- WriteItem ( 0 ) ; //ES_NECK
182
- WriteItem ( chr . Chest ) ; //ES_CHEST Нагрудник (ткань, кожа, латы) 23387
183
- WriteItem ( 0 ) ; //ES_WAIST
184
- WriteItem ( chr . Legs ) ; //ES_LEGS Поножи (ткань, кожа, латы) 23388
185
- WriteItem ( chr . Gloves ) ; //ES_HANDS
186
- WriteItem ( chr . Feet ) ; //ES_FEET Обувь (ткань, кожа, латы) 23390
187
- WriteItem ( 0 ) ; //ES_ARMS
188
- WriteItem ( 0 ) ; //ES_BACK
189
- WriteItem ( 0 ) ; //ES_EAR_1
190
- WriteItem ( 0 ) ; //ES_EAR_2
191
- WriteItem ( 0 ) ; //ES_FINGER_1
192
- WriteItem ( 0 ) ; //ES_FINGER_2
193
- WriteItem ( 0 ) ; //ES_UNDERSHIRT
194
- WriteItem ( 0 ) ; //ES_UNDERPANTS
195
- WriteItem ( chr . Weapon ) ; //ES_MAINHAND Оружие
196
- WriteItem ( chr . WeaponExtra ) ; //ES_OFFHAND Дополнительное оружие
197
- WriteItem ( chr . WeaponRanged ) ; //ES_RANGED Лук
198
- WriteItem ( chr . Instrument ) ; //ES_MUSICAL Муз. инструмент (струнный, духовой, ударный)
199
- //}
200
- //for (int i = 0; i < 7; i++)
201
- //{
202
- ns . Write ( ( int ) chr . Type [ 0 ] ) ; //type[somehow_special] d 19839 face
203
- ns . Write ( ( int ) chr . Type [ 1 ] ) ; //type[somehow_special] d 25372 hair_id
204
- ns . Write ( ( int ) chr . Type [ 2 ] ) ; //type[somehow_special] d
205
- ns . Write ( ( int ) chr . Type [ 3 ] ) ; //type[somehow_special] d
206
- ns . Write ( ( int ) chr . Type [ 4 ] ) ; //type[somehow_special] d
207
-
208
- ns . Write ( ( int ) chr . CharBody ) ; //type[somehow_special] d 539 body
209
- ns . Write ( ( int ) chr . Type [ 6 ] ) ; //type[somehow_special] d
210
- //}
211
-
212
- //for (int i = 0; i < 2; i++)
213
- //{
214
- //equip_slot
215
- WriteItem ( 0 ) ; //ES_BACKPACK
216
- WriteItem ( 0 ) ; //ES_COSPLAY
217
- //}
62
+ //<!-- same as in character packets -->
63
+ /*
64
+ * инвентарь персонажа
65
+ */
66
+ CharacterInfo . WriteItemInfo ( net , chr ) ;
67
+ //<!-- same as in character packets ends-->
218
68
219
69
//for (int i = 0; i < 3; i++)
220
70
//{
221
71
ns . Write ( ( byte ) chr . Ability [ 0 ] ) ; //специализация: 1-FIGHTER нападение, 7-MAGIC волшебство, 6-WILD исцеление,
222
72
//10-LOVE преследование, 5-DEATH мистицизм, 8-VOCATION скрытность
223
73
ns . Write ( ( byte ) chr . Ability [ 1 ] ) ; //эффект класса 1
224
74
ns . Write ( ( byte ) chr . Ability [ 2 ] ) ; //эффект класса 2
225
- //}
75
+ //}
226
76
//position
227
- //ns.WriteHex("00000000A8B7CF03");
228
- ns . Write ( ( int ) 0 ) ;
229
- ns . Write ( ( float ) 867.27 ) ; //x Q 03cfb7a8 00000000 = 0.0
230
- //ns.WriteHex("000000006090A603");
231
- ns . Write ( ( int ) 0 ) ;
232
- ns . Write ( ( float ) 779.11 ) ; //y Q 03a69060 00000000 =
233
- //ns.WriteHex("EFFC1043");
234
- ns . Write ( ( float ) 247.8 ) ; //z f 4310fcef = 144.988
235
-
236
- ns . Write ( ( byte ) chr . Ext ) ; //ext c
237
- switch ( chr . Ext )
238
- {
239
- case 0 :
240
- break ;
241
- case 1 :
242
- ns . Write ( ( int ) chr . Type [ 7 ] ) ; //type d
243
- break ;
244
- case 2 :
245
- ns . Write ( ( int ) chr . Type [ 7 ] ) ; //type d
246
- ns . Write ( ( int ) chr . Type [ 8 ] ) ; //type d
247
- ns . Write ( ( int ) chr . Type [ 9 ] ) ; //type d
248
- break ;
249
- default :
250
- ns . Write ( ( int ) chr . Type [ 7 ] ) ; //type d 4299 hair_color_id
251
- ns . Write ( ( int ) chr . Type [ 8 ] ) ; //type d 4 skin_color_id
252
- ns . Write ( ( int ) chr . Type [ 9 ] ) ; //type d 0
253
- ns . Write ( ( int ) chr . Type [ 10 ] ) ; //type d 0
254
- ns . Write ( ( float ) chr . Weight [ 10 ] ) ; //weight f 1
255
- ns . Write ( ( float ) chr . Scale ) ; //scale f 1
256
- ns . Write ( ( float ) chr . Rotate ) ; //rotate f 0
257
- ns . Write ( ( short ) chr . MoveX ) ; //moveX h 0
258
- ns . Write ( ( short ) chr . MoveY ) ; //moveY h 0
259
- //for (int i = 11; i < 15; i++)
260
- //{
261
- //ns.Write((int)chr.Type[i]); //type d
262
- //ns.Write((float)chr.Weight[i]); //weight f
263
- ns . Write ( ( int ) chr . Type [ 11 ] ) ; //type d 0 face_fixed_decal_asset_0_id
264
- ns . Write ( ( float ) chr . Weight [ 11 ] ) ; //weight f 1 face_fixed_decal_asset_0_weight
265
- ns . Write ( ( int ) chr . Type [ 12 ] ) ; //type d 444 face_fixed_decal_asset_1_id
266
- ns . Write ( ( float ) chr . Weight [ 12 ] ) ; //weight f 1 face_fixed_decal_asset_1_weight
267
- ns . Write ( ( int ) chr . Type [ 13 ] ) ; //type d 170 face_fixed_decal_asset_2_id
268
- ns . Write ( ( float ) chr . Weight [ 13 ] ) ; //weight f 1 face_fixed_decal_asset_2_weight)
269
- ns . Write ( ( int ) chr . Type [ 14 ] ) ; //type d 0 face_fixed_decal_asset_3_id
270
- ns . Write ( ( float ) chr . Weight [ 14 ] ) ; //weight f 0.71 face_fixed_decal_asset_3_weight
271
- //}
77
+ ns . Write ( ( long ) Helpers . ConvertLongX ( chr . Position . X ) ) ; //x Q
78
+ ns . Write ( ( long ) Helpers . ConvertLongY ( chr . Position . Y ) ) ; //y Q
79
+ ns . Write ( ( float ) chr . Position . Z ) ; //z f
272
80
273
- ns . Write ( ( int ) chr . Type [ 15 ] ) ; //type d 0
274
- ns . Write ( ( int ) chr . Type [ 16 ] ) ; //type d 0 face_normal_map_id
275
- ns . Write ( ( int ) chr . Type [ 17 ] ) ; //type d 0
276
- ns . Write ( ( float ) chr . Weight [ 17 ] ) ; //weight f 1
277
- ns . Write ( ( int ) chr . Lip ) ; //lip d 0
278
- ns . Write ( ( int ) chr . LeftPupil ) ; //leftPupil d left_pupil_color
279
- ns . Write ( ( int ) chr . RightPupil ) ; //rightPupil d right_pupil_color
280
- ns . Write ( ( int ) chr . Eyebrow ) ; //eyebrow d eyebrow_color
281
- ns . Write ( ( int ) chr . Decor ) ; //decor d deco_color
282
- //следующая инструкция пишет: len.stringHex
283
- //---ns.Write((short)0x00); //modifiers_len h
284
- string subString = chr . Modifiers . Substring ( 0 , 256 ) ; //надо отрезать в конце два символа \0\0
285
- ns . WriteHex ( subString , subString . Length ) ; //modifiers b"
286
- break ;
287
- }
81
+ //<!-- same as in character packets (2) -->
82
+ CharacterInfo . WriteStaticData ( net , chr ) ;
83
+ //<!-- same as in character packets (2) ends -->
288
84
289
85
ns . Write ( ( short ) 0x36 ) ; //laborPower h //очки работы = 5000
290
86
ns . Write ( ( long ) 0x532F427F ) ; //lastLaborPowerModified Q
0 commit comments