This commit is contained in:
alexey.min
2012-02-06 09:14:22 +00:00
parent 30ffde533a
commit 043d61633e
198 changed files with 13189 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
Server: 85 AbnormalStatusUpdate: len 25
19 00
85
02 00 // nEffects = 2
3E 14 00 00 // skillID 5182 \
01 00 // level 1 > 1
BF 1E 00 00 // duration 7871 /
E2 10 00 00 // skillID \
01 00 // level 1 > 2
42 0F 00 00 // duration 3906 /
19 00
85
02 00
3E 14 00 00 // skill
01 00
C5 1E 00 00 // 7877
E2 10 00 00
01 00
47 0F 00 00 // 3911
duration in seconds...?

View File

@@ -0,0 +1,18 @@
14 00 // len - 20
1F // ptype - Action
39 A4 00 10 // objectID 268477497 of a target
9A CB 00 00 // originX 52122
3D 2B FF FF // originY -544657
A9 F3 FF FF // originZ -3159
00 // use shift? 00 - false, 01 - true
client sends its own coordinates
(52136,-54431,-3184)
[PACKET] Client: 1F Action [268477497]
[PACKET] Server: 23 TargetSelected [268636209] -> [268477497]
my_obj_ID -> targ_obj_ID
[PACKET] Server: B9 MyTargetSelected [268477497]
targ_obj_ID

View File

@@ -0,0 +1,3 @@
Client Len 3 [Appearing]
03 00
3A // pcode Appearing

View File

@@ -0,0 +1,11 @@
Server: 39 AskJoinParty: len 23
17 00
39
41 00 6C 00 65 00 78 00 78 00 69 00 61 00 00 00 // inviter A l e x x i a
04 00 00 00 // loot type
// 0 - Finders Keepers
// 1 - Random
// 2 - Random including spoil
// 3 - by turn
// 4 - by turn including spoil

View File

@@ -0,0 +1,38 @@
Server: Len 39 [Attack]
27 00
33
6C 08 00 10 // attacker
B2 16 00 10 // target
A6 00 00 00 // damage
00 // flags
9A AC 00 00 // x
F9 A4 00 00 // y coords of attacker
5D F2 FF FF // z
00 00 // count-1
B2 16 00 10 // attacker (same)
A6 00 00 00 // damage (same)
00 // flags (same)
Flags:
if (soulshot) _flags |= 0x10 | _grade;
if (crit) _flags |= 0x20;
if (shld > 0) _flags |= 0x40;
if (miss) _flags |= 0x80;
writeC(0x33);
writeD(_attackerObjId);
writeD(_hits[0]._targetId);
writeD(_hits[0]._damage);
writeC(_hits[0]._flags);
writeD(_x);
writeD(_y);
writeD(_z);
writeH(_hits.length-1);
for (Hit temp: _hits)
{
writeD(temp._targetId);
writeD(temp._damage);
writeC(temp._flags);
}

View File

@@ -0,0 +1,9 @@
21 00 // 33 b
2B // on L2J if obfuscator (last 4 bytes) in KeyPacket are 00 00 00 00
// pcode may vary on retail!
6C 00 65 00 78 00 78 00 00 00 // account login (Unicode string)
BC C4 1C 61 // sessionKey2 part2
6A 92 28 32 // sessionKey2 part1
62 05 8C 1A // sessionKey1 part1
A7 0D 32 D9 // sessionKey1 part2
01 00 00 00 // hz

View File

@@ -0,0 +1,76 @@
Server: Len 2765 [BuyList] |
CD 0A
07
C7 55 35 00 // money 3495367
90 00 00 00 // list ID 144
2B 00 // items count 43
04 00 // item type 1 0-weapon/ring/earring/necklace 1-armor/shield 4-item/questitem/adena
00 00 00 00 // objectID
2B 07 00 00 // itemID 1835 Soulshot no grade
00 00 00 00 // current count
05 00 // item type2 0-weapon 1-shield/armor 2-ring/earring/necklace 3-questitem 4-adena 5-item
00 00 // ??
00 00 00 00 // bodypart (for armor)
00 00 // enchant level
00 00 00 00 // ??
07 00 00 00 // price (=7)
FE FF FF FF // atk attribute type (-2) \\
00 00 00 00 // atk attribute value \\
00 00 00 00 // fire def \\
00 00 00 00 // water def || element attributes
00 00 00 00 // wind def ||
00 00 00 00 // earth def //
00 00 00 00 // holy def //
00 00 00 00 // unholy def //
protected final void writeImpl()
{
writeC(0x07);
writeD(_money); // current money
writeD(_listId);
writeH(_list.size());
for (L2TradeItem item : _list)
{
if (item.getCurrentCount() > 0 || !item.hasLimitedStock())
{
writeH(item.getTemplate().getType1()); // item type1
writeD(0x00); //objectId
writeD(item.getItemId());
writeD(item.getCurrentCount() <0 ? 0 : item.getCurrentCount());
writeH(item.getTemplate().getType2()); // item type2
writeH(0x00); // ?
if (item.getTemplate().getType1() != L2Item.TYPE1_ITEM_QUESTITEM_ADENA)
{
writeD(item.getTemplate().getBodyPart());
writeH(0x00); // item enchant level
writeH(0x00); // ?
writeH(0x00);
}
else
{
writeD(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
}
if (item.getItemId() >= 3960 && item.getItemId() <= 4026)//Config.RATE_SIEGE_GUARDS_PRICE-//'
writeD((int)(item.getPrice() * Config.RATE_SIEGE_GUARDS_PRICE * (1 + _taxRate)));
else
writeD((int)(item.getPrice() * (1 + _taxRate)));
// T1
for (byte i = 0; i < 8; i++)
{
writeD(0x00);
}
}
}
}

View File

@@ -0,0 +1,11 @@
Server: Len 15 [ChangeMoveType]
0F 00
28
B2 16 00 10 // object id
00 00 00 00 // 0 - walk, 1 - run
00 00 00 00 // ??
writeC(0x28);
writeD(_charObjId);
writeD(_running ? RUN : WALK);
writeD(0); //c2

View File

@@ -0,0 +1,46 @@
Server: Len 284
1C 01
0B // CharSelected
4E 00 69 00 72 00 61 00 65 00 6C 00 00 00 // char name
7A 0B 03 00 // char id?
00 00 // title
FA B6 BA AF // session id
00 00 00 00 // clan id
00 00 00 00 // always 0
01 00 00 00 // sex
01 00 00 00 // race
17 00 00 00 // class id
01 00 00 00 // 1 - active?
F4 40 02 00 // x
7F 31 FF FF // y
3A F5 FF FF // z
00 00 00 00 00 0A A8 40 // cur Hp
58 A8 35 CD 3B EC 99 40 // cur mp
FF CA 53 00 // sp
5A B6 E2 31 00 00 00 00 // exp
4B 00 00 00 // level
00 00 00 00 // karma
00 00 00 00 // const 0x00
17 00 00 00 // int
28 00 00 00 // str
1E 00 00 00 // con
1A 00 00 00 // men
24 00 00 00 // dex
0E 00 00 00 // wit
00 00 00 00 00 00 00 00 // const
00 00 00 00 // class id...? O_o
00 00 00 00 // 00 1
00 00 00 00 // 00
00 00 00 00 // 00
00 00 00 00 // 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 E1 1A 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00
wtf dunno end of packet

View File

@@ -0,0 +1,75 @@
S->C Len 317
3D 01 // length (example 317)
09 // packet code
01 00 00 00 // number of chars
07 00 00 00 // max chars on server?
00 // always 0x00
// repeated block unknown length, because of var-length strings
// minimum length must be 281 bytes (not sure)
46 00 6C 00 61 00 6D 00 65 00 64 00 53 00 6F 00 75 00 6C 00 00 00 // char name (Unicode)
37 0B 0E 00 // char ID
6C 00 65 00 78 00 78 00 68 00 75 00 6C 00 65 00 00 00 // login name
0D FE 0F 00 // sessionID (playOkId1)
4E 2A 00 00 // clanID
00 00 00 00 // L2J says it's always 00 00 00 00; as I saw, on retail also
01 00 00 00 // sex
00 00 00 00 // race
0A 00 00 00 // character base class ID
01 00 00 00 // active? (c) L2J // useless >_<
9F B1 FF FF \
32 E4 01 00 | (( x ,y ,z )) ?
00 F3 FF FF /
B8 1E 85 EB 51 F8 79 40 // HP cur
C2 F5 28 5C 8F 92 78 40 // MP cur
85 51 00 00 // SP
0C BA 0D 00 00 00 00 00 // Exp
14 00 00 00 // Level
00 00 00 00 // karma
00 00 00 00 // PK kills
00 00 00 00 // PVP kills
00 00 00 00 \
00 00 00 00 \
00 00 00 00 | some 7 zero dwords
00 00 00 00 |
00 00 00 00 /
00 00 00 00 /
00 00 00 00 /
00 00 00 00 // itemID hair all
4E 03 00 00 // itemID r ear
4E 03 00 00 // itemID l ear
8D 03 00 00 // necklace
6E 03 00 00 // r finger
6E 03 00 00 // l finger
2C 00 00 00 // head
37 01 00 00 // r hand
71 02 00 00 // l hand
33 00 00 00 // gloves
4D 04 00 00 // chest
50 04 00 00 // legs
27 00 00 00 // feet
00 00 00 00 // back
00 00 00 00 // LR hand
00 00 00 00 // hair
00 00 00 00 // hair 2
00 00 00 00 // R bracelet
00 00 00 00 // L bracelet
00 00 00 00 \
00 00 00 00 \
00 00 00 00 | some 6 null dwords
00 00 00 00 |
00 00 00 00 /
00 00 00 00 /
02 00 00 00 // hair style
03 00 00 00 // hair color
00 00 00 00 // face
B8 1E 85 EB 51 F8 79 40 // HP max
C2 F5 28 5C 8F 92 78 40 // MP max
00 00 00 00 // deleteDays; if != 0 then char is inactive
0A 00 00 00 // classID
01 00 00 00 // 0x00000001 if last used char, 0x00000000 otherwise
00 // enchantEffect (<=127)
00 00 // Augmentation ID
00 00 // something also for augment
00 00 00 00 // transformation ID
// (but on retail you cannot see transform on char select screen)

View File

@@ -0,0 +1,16 @@
Client: Len 63 [CharacterCreate]
3F 00
0C // opcode
41 00 65 00 72 00 69 00 6E 00 00 00 // name
01 00 00 00 // race
01 00 00 00 // sex
19 00 00 00 // class id
1C 00 00 00 // INT
27 00 00 00 // STR
1E 00 00 00 // CON
1B 00 00 00 // MEN
23 00 00 00 // DEX
0B 00 00 00 // WIT
00 00 00 00 // hair style
00 00 00 00 // hair color
00 00 00 00 // face

View File

@@ -0,0 +1,8 @@
Client: Len 21
15 00
12
00 00 00 00 // charslot
00 00 00 00 // rest are constant
00 00 00 00
00 00 00 00
00 00

View File

@@ -0,0 +1,72 @@
Server: Len 313 [CharacterSelectionInfo]
39 01
09
01 00 00 00 // num chars
07 00 00 00 // server max chars
00 // 00
41 00 6C 00 65 00 78 00 78 00 69 00 61 00 00 00 // name
7A 0B 03 00 // oid
6D 00 69 00 6E 00 6C 00 65 00 78 00 78 00 00 00 // acc
46 8D 2A 54 /// play ok 1
00 00 00 00 /// clan id
00 00 00 00 // 0x00
01 00 00 00 // sex
00 00 00 00 // race
10 00 00 00 // base cls
01 00 00 00 // 0x01 - active
E8 AA 00 00 \
58 42 FF FF > x,y,z
E8 FC FF FF /
00 00 00 00 00 06 A6 40 // hp cur
00 00 00 00 00 98 AC 40 // mp cur
39 B9 56 00 // sp
A6 8E F5 0B 00 00 00 00 // exp
3F 00 00 00 // level 63
00 00 00 00 // karma
00 00 00 00 // pk
02 00 00 00 // pvp
00 00 00 00 \
00 00 00 00
00 00 00 00
00 00 00 00 > 7 zero dwords
00 00 00 00
00 00 00 00
00 00 00 00 /
70 25 00 00 \ HAIRALL
39 30 00 00 REAR
32 30 00 00 LEAR
30 30 00 00 NECK
31 30 00 00 RFINGER
31 30 00 00 LFINGER
00 02 00 00 HEAD
C2 2E 00 00 RHAND
00 00 00 00 LHAND
87 16 00 00 GLOVES
67 09 00 00 CHEST
00 00 00 00 LEGS
93 16 00 00 FEET
00 00 00 00 BACK
00 00 00 00 LRHAND
F4 22 00 00 HAIR
00 00 00 00 HAIR2
75 25 00 00 RBRACELET
00 00 00 00 LBRACELET
00 00 00 00 DECO1
00 00 00 00 2
00 00 00 00 3
00 00 00 00 4
00 00 00 00 5
00 00 00 00 6
00 00 00 00 BELT
02 00 00 00 hStyle
03 00 00 00 hColor
00 00 00 00 face
00 00 00 00 00 06 A6 40 HP max
00 00 00 00 00 98 AC 40 MP max
00 00 00 00 del secs
10 00 00 00 classId
01 00 00 00 1 - last used char
00 enchantEffect
00 00 00 00 aug Id
00 00 00 00 transform id

View File

@@ -0,0 +1,71 @@
Server: 4A CreatureSay: len 255
FF 00
4A
00 00 00 00 0A 00 00 00 00 00 1D 04 30 04 47 04 J 0 G
30 04 3B 04 41 04 4F 04 20 00 4D 04 32 04 35 04 0 A O M 2 5
3D 04 42 04 20 00 27 00 43 00 6F 00 66 00 66 00 B C o f f
65 00 72 00 20 00 6F 00 66 00 20 00 53 00 68 00 e r o f S h
61 00 64 00 6F 00 77 00 73 00 27 00 2E 00 20 00 a d o w s
1F 04 3E 04 34 04 40 04 3E 04 31 04 3D 04 3E 04 4 1
41 04 42 04 38 04 20 00 3C 04 3E 04 36 04 3D 04 A B 8 6
3E 04 20 00 43 04 37 04 3D 04 30 04 42 04 4C 04 C 7 0 B L
20 00 43 04 20 00 4F 00 6D 00 65 00 67 00 61 00 C O m e g a
27 00 73 00 20 00 43 00 61 00 74 00 2C 00 20 00 s C a t
3A 04 3E 04 42 04 3E 04 40 04 3E 04 33 04 3E 04 B 3
20 00 12 04 4B 04 20 00 41 04 3C 04 3E 04 36 04 K A 6
35 04 42 04 35 04 20 00 3D 04 30 04 39 04 42 04 5 B 5 0 9 B
38 04 20 00 32 04 20 00 31 04 3B 04 38 04 36 04 8 2 1 8 6
30 04 39 04 48 04 35 04 3C 04 20 00 33 04 3E 04 0 9 H 5 3
40 04 3E 04 34 04 35 04 2E 00 00 00
FF 00 // len 255
4A
00 00 00 00 // objectID
0A 00 00 00 // text Type
00 00 // char name - empty here
1D 04 30 04 47 04
30 04 3B 04 41 04 4F 04 20 00 4D 04 32 04 35 04 0 A O M 2 5
3D 04 42 04 20 00 27 00 43 00 6F 00 66 00 66 00 B C o f f
65 00 72 00 20 00 6F 00 66 00 20 00 53 00 68 00 e r o f S h
61 00 64 00 6F 00 77 00 73 00 27 00 2E 00 20 00 a d o w s
1F 04 3E 04 34 04 40 04 3E 04 31 04 3D 04 3E 04 4 1
41 04 42 04 38 04 20 00 3C 04 3E 04 36 04 3D 04 A B 8 6
3E 04 20 00 43 04 37 04 3D 04 30 04 42 04 4C 04 C 7 0 B L
20 00 43 04 20 00 4F 00 6D 00 65 00 67 00 61 00 C O m e g a
27 00 73 00 20 00 43 00 61 00 74 00 2C 00 20 00 s C a t
3A 04 3E 04 42 04 3E 04 40 04 3E 04 33 04 3E 04 B 3
20 00 12 04 4B 04 20 00 41 04 3C 04 3E 04 36 04 K A 6
35 04 42 04 35 04 20 00 3D 04 30 04 39 04 42 04 5 B 5 0 9 B
38 04 20 00 32 04 20 00 31 04 3B 04 38 04 36 04 8 2 1 8 6
30 04 39 04 48 04 35 04 3C 04 20 00 33 04 3E 04 0 9 H 5 3
40 04 3E 04 34 04 35 04 2E 00 00 00
[++] Server: 4A CreatureSay: len 93
5D 00
4A
00 00 00 00 0A 00 00 00 54 00 58 00 77 00 6B 00 J T X w k
61 00 00 00 14 04 3E 04 31 04 40 04 3E 04 20 00 a 1
3F 04 3E 04 36 04 30 04 3B 04 3E 04 32 04 30 04 6 0 2 0
42 04 4C 04 20 00 3D 04 30 04 20 00 41 04 35 04 B L 0 A 5
40 04 32 04 35 04 40 04 20 00 4E 00 4C 00 20 00 2 5 N L
78 00 31 00 30 00 2E 00 00 00
[++] Server: 4A CreatureSay: len 81
51 00
4A
00 00 00 00 0A 00 00 00 00 00 1D 04 30 04 47 04 J 0 G
30 04 3B 04 41 04 4F 04 20 00 4D 04 32 04 35 04 0 A O M 2 5
3D 04 42 04 20 00 27 00 54 00 68 00 65 00 20 00 B T h e
46 00 61 00 6C 00 6C 00 20 00 48 00 61 00 72 00 F a l l H a r
76 00 65 00 73 00 74 00 27 00 2E 00 00 00
[++] Server: 4A CreatureSay: len 99
63 00
4A
00 00 00 00 0A 00 00 00 00 00 1D 04 30 04 47 04 J 0 G
30 04 3B 04 41 04 4F 04 20 00 4D 04 32 04 35 04 0 A O M 2 5
3D 04 42 04 20 00 27 00 4C 00 32 00 20 00 4D 00 B L 2 M
65 00 64 00 61 00 6C 00 20 00 43 00 6F 00 6C 00 e d a l C o l
6C 00 65 00 63 00 74 00 69 00 6F 00 6E 00 20 00 l e c t i o n
45 00 76 00 65 00 6E 00 74 00 27 00 2E 00 00 00 E v e n t

13
docs/gamepackets/Die.txt Normal file
View File

@@ -0,0 +1,13 @@
Server: Len 35 [Die]
23 00
00
3F 8E 05 10 // objectID?
01 00 00 00 // 1 - can resurrect to nearest village
00 00 00 00 // 1 - can res to CH
01 00 00 00 // 1 - can res to castle
00 00 00 00 // 1 - can res to siege HQ
also possible that next will follow:
00 00 00 00 // sweepable (blue glow)
00 00 00 00 // allow fixed res
00 00 00 00 // to fortress

View File

@@ -0,0 +1,78 @@
Java server ignores all EnterWorld content, parsing unknown :(
Client: Len 107
6B 00
11
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
C9 BC F2 A7
66 5A 0B 98
36 A5 BD 89
ED 7F E4 D7
6B 49 E2 9F
EF 76 EB CE
A3 FA F4 BF
0C 64 A3 B4
A4 CE DC C6
08 3E 6E EA
45 CA D3 FE
88 13 87 B8
06 2C 96 F0
9B 1E 8E BC
C6 9B 98 C8
63 16 CF D0
29 00 00 00
0A E1 74 17
0A 08 00 08
5C 32 BD E1
5C 32 BE 01
5C 32 BE 22
same char as above:
Client: Len 107
6B 00
11
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
C9 BC F2 A7
66 5A 0B 98
36 A5 BD 89
ED 7F E4 D7
6B 49 E2 9F
EF 76 EB CE
A3 FA F4 BF
0C 64 A3 B4
A4 CE DC C6
08 3E 6E EA
45 CA D3 FE
88 13 87 B8
06 2C 96 F0
9B 1E 8E BC
C6 9B 98 C8
63 16 CF D0
29 00 00 00
0A E1 74 17
0A 08 00 08
5C 32 BD E1
5C 32 BE 01
5C 32 BE 22
different acc, different char:
Client: Len 107
6B 00
11
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C9 BC F2 A7 66 5A 0B 98 36 A5 BD 89 ED 7F E4 D7
6B 49 E2 9F EF 76 EB CE A3 FA F4 BF 0C 64 A3 B4
A4 CE DC C6 08 3E 6E EA 45 CA D3 FE 88 13 87 B8
06 2C 96 F0 9B 1E 8E BC C6 9B 98 C8 63 16 CF D0
29 00 00 00 0A E1 74 17 0A 08 00 08 5C 32 BD E1
5C 32 BE 22 5E 19 03 41
last 2 D's are different, depend on char and/or account

View File

@@ -0,0 +1,11 @@
Server: F9 EtcStatusUpdate: len 35
23 00
F9
00 00 00 00 // 1-7 increase force, lvl
00 00 00 00 // 1-4 weight penalty, lvl (1=50%, 2=66.6%, 3=80%, 4=100%)
00 00 00 00 // 1 = block all chat
00 00 00 00 // 1 = danger area
00 00 00 00 // 1 = grade penalty
00 00 00 00 // 1 = charm of courage (allows resurrection on the same spot upon death on the siege battlefield)
00 00 00 00 // 1-15 death penalty, lvl (combat ability decreased due to death)
00 00 00 00 // _activeChar.getSouls()

View File

@@ -0,0 +1,9 @@
Server: Len 19 [GameGuardQuery]
13 00
74
D9 3D 53 27 1D A5 72 2E 8B 03 17 20 A3 1E 5B C3
Client: Len 19 [GameGuardReply]
13 00
CB
7F 97 F0 78 04 3C E6 D6 71 0C F6 89 DD 9E 06 70

View File

@@ -0,0 +1,10 @@
Server: Len 7
07 00
3A
00 00 00 00 // response
protected final void writeImpl()
{
writeC(0x3a);
writeD(_response);
}

View File

@@ -0,0 +1,22 @@
===================================
L2J
19 00 // p.len 25
2E // pcode
01 // always const
42 55 77 8F C3 05 69 87 // xorkey first part
01 00 00 00 // always const
01 // possible Game Server ID // on L2J always 01
00 00 00 00 // always NULLs
00 00 00 00 // in L2J always NULLs - no obfuscation
==========================================
Retail NCSoft
19 00 // p.len 25
2E // pcode
01 // always const
42 55 77 8F C3 05 69 87 // xorkey first part
01 00 00 00 // always const
01 // possible Game Server ID - depends on game server ID
00 00 00 00 // always NULLs
XX XX XX XX // always different, non-nulls: opcode obfuscator

View File

@@ -0,0 +1,8 @@
Client: Len 3
03 00
00
send when IN_GAME mode, to disconnect and close client
if restart possible server responds with 0x84 LeaveWorld from IN_GAME mode
from character selection screen, whe client sends this packet, server just disconencts... TODO: check...

View File

@@ -0,0 +1,15 @@
Server: Len 49 [MagicSkillUse]
31 00
48
6C 08 00 10 // objectId
AC 16 00 10 // targetObjectId
79 05 00 00 // skillID 1401 - Major HEal
0A 00 00 00 // skillLevel level 10
57 07 00 00 // hitTime cast time 1879 ms
CF 08 00 00 // reuseDelay 2255 reuse delay
5B AD 00 00 // x
E5 A4 00 00 // y
5D F2 FF FF // z
00 00 00 00 // ??
00 00 00 00 // ??
00 00 // ??

View File

@@ -0,0 +1,11 @@
Server: Len 27 [MoveToPawn]
1B 00
72 // MoveToPawn
6C 08 00 10 // _charObjId // 6C080010 objectID who is moving (can be user at least)
B2 16 00 10 // _targetId // B2160010 is target object id, to which he moves to
39 00 00 00 // _distance wtf is 57?..
C7 AC 00 00 // x
0A A6 00 00 // y dunno if it is user coordinates or mob coordinates
5D F2 FF FF // z
possible these are target's coordinates

View File

@@ -0,0 +1,3 @@
Client: Len 3 [NewCharacter]
03 00 // packet length - 3 bytes
13 // opcode

View File

@@ -0,0 +1,28 @@
Server: Len 967 [NewCharacterSuccess]
C7 03
0D // opcode
0C 00 00 00 // number of templates
// [ for each template ]
00 00 00 00 // race
00 00 00 00 // class id
46 00 00 00 // 0x46
28 00 00 00 // base STR
0A 00 00 00 // 0x0A
46 00 00 00 // 0x46
1E 00 00 00 // base DEX
0A 00 00 00
46 00 00 00
2B 00 00 00 // base CON
0A 00 00 00
46 00 00 00
15 00 00 00 // base INT
0A 00 00 00
46 00 00 00
0B 00 00 00 // base WIT
0A 00 00 00
46 00 00 00
19 00 00 00 // base MEN
0A 00 00 00

View File

@@ -0,0 +1,117 @@
Server: Len 1503 [NpcHtmlMessage]
DF 05
19
AC 16 00 10 // npcObjectID
3C 00 68 00 ... 3E 00 00 00 // html
00 00 00 00 // itemID
writeC(0x19);
writeD(_npcObjId);
writeS(_html);
writeD(_itemId);
/**
*
* the HTML parser in the client knowns these standard and non-standard tags and attributes
* VOLUMN
* UNKNOWN
* UL
* U
* TT
* TR
* TITLE
* TEXTCODE
* TEXTAREA
* TD
* TABLE
* SUP
* SUB
* STRIKE
* SPIN
* SELECT
* RIGHT
* PRE
* P
* OPTION
* OL
* MULTIEDIT
* LI
* LEFT
* INPUT
* IMG
* I
* HTML
* H7
* H6
* H5
* H4
* H3
* H2
* H1
* FONT
* EXTEND
* EDIT
* COMMENT
* COMBOBOX
* CENTER
* BUTTON
* BR
* BODY
* BAR
* ADDRESS
* A
* SEL
* LIST
* VAR
* FORE
* READONL
* ROWS
* VALIGN
* FIXWIDTH
* BORDERCOLORLI
* BORDERCOLORDA
* BORDERCOLOR
* BORDER
* BGCOLOR
* BACKGROUND
* ALIGN
* VALU
* READONLY
* MULTIPLE
* SELECTED
* TYP
* TYPE
* MAXLENGTH
* CHECKED
* SRC
* Y
* X
* QUERYDELAY
* NOSCROLLBAR
* IMGSRC
* B
* FG
* SIZE
* FACE
* COLOR
* DEFFON
* DEFFIXEDFONT
* WIDTH
* VALUE
* TOOLTIP
* NAME
* MIN
* MAX
* HEIGHT
* DISABLED
* ALIGN
* MSG
* LINK
* HREF
* ACTION
*
*
* @version $Revision: 1.3.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $
*/
// html code must not exceed 8192 bytes

View File

@@ -0,0 +1,51 @@
Server: Len 75
4B 00
4E
6C 08 00 10 // party leader object id
00 00 00 00 // party loot type
01 00 00 00 // number of members (except you)
6C 08 00 10 // member oobject id
41 00 65 00 72 00 69 00 6E 00 00 00 // member name
CD 06 00 00 // current cp
CD 06 00 00 // max cp
61 0D 00 00 // current hp
61 0D 00 00 // max hp
7B 0A 00 00 // current mp
7B 0A 00 00 // max mp
50 00 00 00 // level
1E 00 00 00 // class id
00 00 00 00 // constant 00 00 00 00
01 00 00 00 // race
00 00 00 00 // constant 00 00 00 00
protected final void writeImpl()
{
writeC(0x4e);
writeD(_partyMembers.get(0).getObjectId()); // c3 party leader id
writeD(_partyMembers.get(0).getParty().getLootDistribution());//c3 party loot type (0,1,2,....)
writeD(_partyMembers.size()-1);
for(L2PcInstance member: _partyMembers)
{
if (member != _exclude)
{
writeD(member.getObjectId());
writeS(member.getName());
writeD((int) member.getCurrentCp()); //c4
writeD(member.getMaxCp()); //c4
writeD((int) member.getCurrentHp());
writeD(member.getMaxHp());
writeD((int) member.getCurrentMp());
writeD(member.getMaxMp());
writeD(member.getLevel());
writeD(member.getClassId().getId());
writeD(0);//writeD(0x01); ??
writeD(member.getRace().ordinal());
writeD(0);
}
}
}

View File

@@ -0,0 +1,49 @@
Server: Len 81 [PrivateStoreListBuy]
51 00
BE
CE 09 00 10 // buyer oid
EA B0 0B 00 // cur.user adena
01 00 00 00 // sell items count
// for each item
C7 09 00 10 // item oid
F4 25 00 00 // item itemID
00 00 // enchant
02 00 00 00 // count
00 00 00 00 // reference price
00 00 // 00
00 00 00 00 // body part
05 00 // type2
01 00 00 00 // buyers price
02 00 00 00 // ma buy amount
FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // attributes
writeC(0xbe);
writeD(_objId); // buyer
writeD(_playerAdena);
writeD(_items.length);
for (TradeList.TradeItem item : _items)
{
writeD(item.getObjectId());
writeD(item.getItem().getItemId());
writeH(item.getEnchant());
writeD(item.getCount()); //give max possible sell amount
writeD(item.getItem().getReferencePrice());
writeH(0);
writeD(item.getItem().getBodyPart());
writeH(item.getItem().getType2());
writeD(item.getPrice());//buyers price
writeD(item.getCount()); // maximum possible tradecount
// T1
writeD(item.getAttackElementType());
writeD(item.getAttackElementPower());
for (byte i = 0; i < 6; i++)
{
writeD(item.getElementDefAttr(i));
}
}

View File

@@ -0,0 +1,67 @@
Server: Len 85 [PrivateStoreListSell]
55 00
A1
CE 09 00 10 // seller oid
00 00 00 00 // is package sale
EB B0 0B 00 // cur.user adena
01 00 00 00 // sell items count
/// for each item
05 00 00 00 // type2
D0 09 00 10 // item oid
F4 25 00 00 // item itemID
01 00 00 00 // item count
00 00 // 00
00 00 // enchant
00 00 // 00
00 00 00 00 // body part
01 00 00 00 // sell price
00 00 00 00 // reference price (original price)
FE FF FF FF // atk attr type
00 00 00 00 // atk attr val
00 00 00 00 // def fire
00 00 00 00 // def water
00 00 00 00 // def wind
00 00 00 00 // def earth
00 00 00 00 // def holy
00 00 00 00 // def dark
// player's private shop
public PrivateStoreListSell(L2PcInstance player, L2PcInstance storePlayer)
{
_objId = storePlayer.getObjectId();
_playerAdena = player.getAdena();
_items = storePlayer.getSellList().getItems();
_packageSale = storePlayer.getSellList().isPackaged();
}
@Override
protected final void writeImpl()
{
writeC(0xa1);
writeD(_objId);
writeD(_packageSale ? 1 : 0);
writeD(_playerAdena);
writeD(_items.length);
for (TradeList.TradeItem item : _items)
{
writeD(item.getItem().getType2());
writeD(item.getObjectId());
writeD(item.getItem().getItemId());
writeD(item.getCount());
writeH(0x00);
writeH(item.getEnchant());
writeH(0x00);
writeD(item.getItem().getBodyPart());
writeD(item.getPrice()); //your price
writeD(item.getItem().getReferencePrice()); //store price
// T1
writeD(item.getAttackElementType());
writeD(item.getAttackElementPower());
for (byte i = 0; i < 6; i++)
{
writeD(item.getElementDefAttr(i));
}
}
}

View File

@@ -0,0 +1,4 @@
Server: Len 451 [PrivateStoreManageListBuy]
C3 01
BD // pcode
D1 73 02 10 C5 97 06 00 08 00 00 00 E0 02 00 00 00 00 01 00 00 00 90 01 00 00 00 00 00 00 00 00 05 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 27 00 00 00 00 01 00 00 00 74 0E 00 00 00 00 00 00 00 00 05 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 25 04 00 00 00 00 6E 00 00 00 4A 01 00 00 00 00 00 00 00 00 05 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6D 0F 00 00 00 00 E8 01 00 00 5A 00 00 00 00 00 00 00 00 00 05 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 07 00 00 00 00 04 00 00 00 B4 00 00 00 00 00 00 00 00 00 05 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B8 05 00 00 00 00 BC 0E 00 00 0F 00 00 00 00 00 00 00 00 00 05 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F4 25 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3A 11 00 00 00 00 41 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

View File

@@ -0,0 +1,59 @@
/**
* 3 section to this packet
* 1)playerinfo which is always sent
* 2)list of items which can be added to sell
* 3)list of items which have already been setup
*/
Server: Len 2255 [PrivateStoreManageListSell]
CF 08
A0 // pcode
// section 1
09 A5 04 10 // player (user) objectID
00 00 00 00 // is package sale
87 C1 00 00 // player (user) adena
// section 2
24 00 00 00 // items count in section 2
[[ for each item ]]
05 00 00 00 // type2
39 D6 05 10 // objectID
B2 05 00 00 // itemID
2E 00 00 00 // count
00 00 // 00
00 00 // enchant
00 00 // 00
00 00 00 00 // body part
8A 02 00 00 // store price
FE FF FF FF // atk attr type
00 00 00 00 // atk attr val
00 00 00 00 // fire def
00 00 00 00 // water def
00 00 00 00 // wind def
00 00 00 00 // earth def
00 00 00 00 // holy def
00 00 00 00 // dark def
// section 2
00 00 00 00 // items count in section 3
D // type2
D // oid
D // itemID
D // cnt
H // 0
H // ench
H // 0
D // b.part
D // your price
D // referencePrice (store price)
FE FF FF FF // atk attr type
00 00 00 00 // atk attr val
00 00 00 00 // fire def
00 00 00 00 // water def
00 00 00 00 // wind def
00 00 00 00 // earth def
00 00 00 00 // holy def
00 00 00 00 // dark def

View File

@@ -0,0 +1,13 @@
Server: Len 45 [PrivateStoreMsgBuy]
2D 00
BF
99 73 06 10 // objectID
6B 00 61 00 ... 00 00 // store msg
protected final void writeImpl()
{
writeC(0xbf);
writeD(_objId);
writeS(_storeMsg);
}

View File

@@ -0,0 +1,21 @@
C->S
0B 01 // len
0E // p.code ProtocolVersion
3C 03 00 00 // protocol - 828
09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02
55 56 00 51 00 53 57 04 07 55 08 54 01 07 01 53
00 56 55 56 01 06 05 04 51 03 08 51 08 51 56 04
54 06 55 08 02 09 51 56 01 53 06 55 04 53 00 56
56 53 01 09 02 09 01 51 54 51 09 55 56 09 03 04
07 05 55 04 06 55 04 06 09 04 51 01 08 08 06 05
52 06 04 01 07 54 03 06 52 55 06 55 55 51 01 02
04 54 03 55 54 01 57 51 55 05 52 05 54 07 51 51
55 07 02 53 53 00 52 05 52 07 01 54 00 03 05 05
08 06 05 05 06 03 00 0D 08 01 07 09 03 51 03 07
53 09 51 06 07 54 0A 50 56 02 52 04 05 55 51 02
53 00 08 54 04 52 56 06 02 09 00 08 03 53 56 01
05 00 55 06 08 56 04 0D 06 07 52 06 07 04 0A 06
01 04 54 04 00 05 02 04 54 00 09 52 53 05 04 01
04 05 05 01 52 51 52 0D 06 51 08 09 54 53 00 0D
01 02 03 54 53 01 05 03 08 56 54 07 02 54 0B 06
8D 71 5F 08

View File

@@ -0,0 +1,20 @@
0B 01 // len
0E
92 00 00 00
09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02
55 56 00 51 00 53 57 04 07 55 08 54 01 07 01 53
00 56 55 56 01 06 05 04 51 03 08 51 08 51 56 04
54 06 55 08 02 09 51 56 01 53 06 55 04 53 00 56
56 53 01 09 02 09 01 51 54 51 09 55 56 09 03 04
07 05 55 04 06 55 04 06 09 04 51 01 08 08 06 05
52 06 04 01 07 54 03 06 52 55 06 55 55 51 01 02
04 54 03 55 54 01 57 51 55 05 52 05 54 07 51 51
55 07 02 53 53 00 52 05 52 07 01 54 00 03 05 05
08 06 05 05 06 03 00 0D 08 01 07 09 03 51 03 07
53 09 51 06 07 54 0A 50 56 02 52 04 05 55 51 02
53 00 08 54 04 52 56 06 02 09 00 08 03 53 56 01
05 00 55 06 08 56 04 0D 06 07 52 06 07 04 0A 06
01 04 54 04 00 05 02 04 54 00 09 52 53 05 04 01
04 05 05 01 52 51 52 0D 06 51 08 09 54 53 00 0D
01 02 03 54 53 01 05 03 08 56 54 07 02 54 0B 06
A6 23 F4 FE

View File

@@ -0,0 +1,20 @@
0B 01
0E
0C 00 00 00
09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02
55 56 00 51 00 53 57 04 07 55 08 54 01 07 01 53
00 56 55 56 01 06 05 04 51 03 08 51 08 51 56 04
54 06 55 08 02 09 51 56 01 53 06 55 04 53 00 56
56 53 01 09 02 09 01 51 54 51 09 55 56 09 03 04
07 05 55 04 06 55 04 06 09 04 51 01 08 08 06 05
52 06 04 01 07 54 03 06 52 55 06 55 55 51 01 02
04 54 03 55 54 01 57 51 55 05 52 05 54 07 51 51
55 07 02 53 53 00 52 05 52 07 01 54 00 03 05 05
08 06 05 05 06 03 00 0D 08 01 07 09 03 51 03 07
53 09 51 06 07 54 0A 50 56 02 52 04 05 55 51 02
53 00 08 54 04 52 56 06 02 09 00 08 03 53 56 01
05 00 55 06 08 56 04 0D 06 07 52 06 07 04 0A 06
01 04 54 04 00 05 02 04 54 00 09 52 53 05 04 01
04 05 05 01 52 51 52 0D 06 51 08 09 54 53 00 0D
01 02 03 54 53 01 05 03 08 56 54 07 02 54 0B 06
EB EF 3D E6

View File

@@ -0,0 +1,21 @@
C->S Len 267
0B 01 // len
0E // p. code
3F 03 00 00 // protocol - 831 (Hellbound?)
09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02
55 56 00 51 00 53 57 04 07 55 08 54 01 07 01 53
00 56 55 56 01 06 05 04 51 03 08 51 08 51 56 04
54 06 55 08 02 09 51 56 01 53 06 55 04 53 00 56
56 53 01 09 02 09 01 51 54 51 09 55 56 09 03 04
07 05 55 04 06 55 04 06 09 04 51 01 08 08 06 05
52 06 04 01 07 54 03 06 52 55 06 55 55 51 01 02
04 54 03 55 54 01 57 51 55 05 52 05 54 07 51 51
55 07 02 53 53 00 52 05 52 07 01 54 00 03 05 05
08 06 05 05 06 03 00 0D 08 01 07 09 03 51 03 07
53 09 51 06 07 54 0A 50 56 02 52 04 05 55 51 02
53 00 08 54 04 52 56 06 02 09 00 08 03 53 56 01
05 00 55 06 08 56 04 0D 06 07 52 06 07 04 0A 06
01 04 54 04 00 05 02 04 54 00 09 52 53 05 04 01
04 05 05 01 52 51 52 0D 06 51 08 09 54 53 00 0D
01 02 03 54 53 01 05 03 08 56 54 07 02 54 0B 06
FB 87 B9 4A

View File

@@ -0,0 +1,4 @@
Server: Len 43 [RecipeShopMsg]
2B 00
E1
86 C5 01 10 2D 00 3D 00 3D 00 3D 00 44 00 45 00 4C 00 41 00 79 00 20 00 43 00 41 00 4D 00 3D 00 3D 00 3D 00 2D 00 00 00

View File

@@ -0,0 +1,6 @@
Client Len 13 [RequestAutoSoulShot]
0D 00
D0
0D 00
6F 0F 00 00 // itemID
01 00 00 00 // 1 - on, 0 - off

View File

@@ -0,0 +1,8 @@
Client: Len 19 [RequestBuyItem]
13 00
40
90 00 00 00 // list ID
01 00 00 00 // count
[[ for each item ]]
25 04 00 00 // itemID
64 00 00 00 // count

View File

@@ -0,0 +1,8 @@
Client: Len 45 [RequestBypassToServer]
2D 00
23
6E 00 70 00 63 00 5F 00 32 00 36 00 38 00 34 00
33 00 37 00 39 00 39 00 30 00 5F 00 43 00 68 00
61 00 74 00 20 00 31 00 00 00
_command = readS()

View File

@@ -0,0 +1,5 @@
Client: Len 11
0B 00
2F
13 14 04 10 // objectID 268702739
01 00 00 00 // count 1

View File

@@ -0,0 +1,5 @@
Client: Len 11 [RequestDestroyItem]
0B 00
60
71 08 00 10 // objectID
01 00 00 00 // count

View File

@@ -0,0 +1,5 @@
Client: Len 13 [RequestDispel]
0D 00
D0 4E 00 // D0:004E RequestDispel
4B 05 00 00 // skillID 1355 (PoWater?)
01 00 00 00 // skillLvl lvl 1

View File

@@ -0,0 +1,14 @@
Client: Len 23 [RequestDropItem]
17 00
17
E4 09 00 10 // objectID
01 00 00 00 // count
F4 AA 00 00 // x
2F A4 00 00 // y
43 F2 FF FF // z
_objectId = readD();
_count = readD();
_x = readD();
_y = readD();
_z = readD();

View File

@@ -0,0 +1,5 @@
Client: Len 15
0F 00
42
6C 00 6F 00 6C 00 00 00 // target char name
00 00 00 00 // loot type, item distribution

View File

@@ -0,0 +1,9 @@
protected void readImpl()
{
_name = readS();
}
Client: Len 13
0D 00
45
4C 00 65 00 78 00 78 00 00 00

View File

@@ -0,0 +1,9 @@
Client: Len 23 [RequestPrivateStoreBuy]
17 00
83 // pcode
CE 09 00 10 // seller player oid
01 00 00 00 // count
// for each item
D0 09 00 10 // item oid
01 00 00 00 // count
01 00 00 00 // price

View File

@@ -0,0 +1 @@
Client: Len 3 [RequestPrivateStoreQuitBuy] | 03 00 / 9C /

View File

@@ -0,0 +1 @@
Client: Len 3 [RequestPrivateStoreQuitSell] | 03 00 / 96 /

View File

@@ -0,0 +1,11 @@
Client: Len 31 [RequestPrivateStoreSell]
1F 00
9F // pcode
CE 09 00 10 // seller oid
01 00 00 00 // count
C7 09 00 10 // oid
F4 25 00 00 // iid
00 00 00 00 // ?? 0x00000000
02 00 00 00 // cnt
01 00 00 00 // price

View File

@@ -0,0 +1,6 @@
Client: Len 3
03 00
57
send when IN_GAME mode, to character select screen.
if restart possible server responds with 0x57 RestartResponse

View File

@@ -0,0 +1,15 @@
Client: Len 7 [RequestRestartPoint]
07 00
7D
00 00 00 00 // 00 - to village
case 1: // to clanhall
case 2: // to castle
case 3: // to fortress
case 4: // to siege HQ
case 5: // Fixed or Player is a festival participant
after successful restart point server sends TeleportToLocation
then client send Appearing
then server sends Revive

View File

@@ -0,0 +1,7 @@
Client Len 49 [RequestSaveInventoryOrder]
31 00
D0
24 00
05 00 00 00 6E 08 00 10 00 00 00 00 6F 08 00 10 01 00
00 00 70 08 00 10 02 00 00 00 EC 09 00 10 03 00
00 00 F5 0C 00 10 04 00 00 00

View File

@@ -0,0 +1,13 @@
Client: Len 59 [RequestSellItem]
3B 00
37 // pcode
00 00 00 00 // list ID (0 - to NPC?)
04 00 00 00 // count
[[ for each item ]]
1D 21 01 10 // objectID
F0 0F 00 00 // itemID
01 00 00 00 // count
B4 20 01 10 F9 0F 00 00 01 00 00 00
A5 1C 01 10 03 10 00 00 02 00 00 00
05 23 01 10 F8 0F 00 00 01 00 00 00

View File

@@ -0,0 +1,3 @@
Client: Len 3
03 00
A6

View File

@@ -0,0 +1,4 @@
Client Len 5 [ RequestTargetCanceld]
05 00
48
00 00

View File

@@ -0,0 +1,24 @@
Client Len 7 [ RequestUserCommand]
07 00
B3
00 00 00 00 // command ID
================================
Decimal command numbers:
0 - /loc
52 - /unstuck (Escape)
61 - /Mount
62 - /DisMount
77 - /time
81 - /partyinfo
88 - /AttackList
89 - /underattacklist
90 - /warlist
93 - /ChannelDelete
96 - /ChannelLeave
97 - /ChannelListUpdate
100 - /ClanPenalty
109 - /OlympiadStat
114 - /InstanceZone

View File

@@ -0,0 +1,4 @@
Server: Len 7 [Revive]
07 00
01
3F 8E 05 10 // objectID?

View File

@@ -0,0 +1,56 @@
Server: Len 1357 [SellList]
4D 05
06
6F A5 34 00 // cur money
00 00 00 00 // lease npcID ? O_o wtf
15 00 // items count
[ for each item ]
04 00 // type1
C4 40 07 10 // objectID
E0 02 00 00 // itemID
0B 00 00 00 // count
05 00 // type2
00 00 // ??
00 00 00 00 // body part
00 00 // enchant level
00 00 00 00 // ??
C8 00 00 00 // sell price
FE FF FF FF // atk attrib type
00 00 00 00 // atk attrib val
00 00 00 00 // def attr fire
00 00 00 00 // -- water
00 00 00 00 // -- wind
00 00 00 00 // -- earth
00 00 00 00 // -- holy
00 00 00 00 // -- unholy
L2J WriteImpl
writeC(0x06);
writeD(_money);
writeD(_lease == null ? 0x00 : 1000000 + _lease.getTemplate().npcId);
writeH(_selllist.size());
for (L2ItemInstance item : _selllist)
{
writeH(item.getItem().getType1());
writeD(item.getObjectId());
writeD(item.getItemId());
writeD(item.getCount());
writeH(item.getItem().getType2());
writeH(0x00);
writeD(item.getItem().getBodyPart());
writeH(item.getEnchantLevel());
writeH(0x00);
writeH(0x00);
writeD(item.getItem().getReferencePrice()/2);
// T1
writeD(item.getAttackElementType());
writeD(item.getAttackElementPower());
for (byte i = 0; i < 6; i++)
{
writeD(item.getElementDefAttr(i));
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
Client: Len 13 [SendBypassBuildCmd]
0D 00
74
68 00 65 00 61 00 6C 00 00 00 _command = readS();

View File

@@ -0,0 +1 @@
Client: Len 111 [ SendWareHouseDepositList] | 6F 00 / 3B / 0D 00 00 00 53 20 01 10 02 00 00 00 D2 0C 02 10 10 00 00 00 26 1E 01 10 1F 00 00 00 8B 1D 01 10 37 00 00 00 29 1D 01 10 06 00 00 00 9A 1B 01 10 04 00 00 00 83 1B 01 10 0F 00 00 00 70 FC 00 10 18 00 00 00 F9 0C 08 10 02 00 00 00 E2 51 06 10 02 00 00 00 41 53 07 10 0E 00 00 00 94 4D 07 10 07 00 00 00 45 4D 07 10 27 00 00 00

View File

@@ -0,0 +1,4 @@
Client: Len 103 [SendWareHouseWithDrawList]
67 00
3C
0C 00 00 00 60 72 08 10 01 00 00 00 5E 72 08 10 01 00 00 00 61 72 08 10 01 00 00 00 5C 72 08 10 01 00 00 00 5D 72 08 10 01 00 00 00 E5 6E 07 10 01 00 00 00 E1 6E 07 10 01 00 00 00 F9 6E 07 10 01 00 00 00 03 6F 07 10 01 00 00 00 E2 6E 07 10 01 00 00 00 D0 60 07 10 01 00 00 00 B5 BB 07 10 7E 05 00 00

View File

@@ -0,0 +1,9 @@
Client: Len 23 [SetPrivateStoreListSell]
17 00
31 // pcode
00 00 00 00 // package?
01 00 00 00 // count
2D 9A 06 10 // obj ID
DC 13 00 00 // count
0E 00 00 00 // price

View File

@@ -0,0 +1,6 @@
Server: Len 15 [SetupGauge]
0F 00
6B
00 00 00 00 // color 0-blue 1-red 2-cyan 3-
57 07 00 00 // skill cast time 1879, ms
57 07 00 00

View File

@@ -0,0 +1,13 @@
protected final void writeImpl()
{
writeC(0xfa);
writeD(_skillId);
writeD(_skillLvl);
writeD(_duration); // in seconds!
}
0D 00
FA
XX XX XX XX
XX XX XX XX
XX XX XX XX // in seconds!

View File

@@ -0,0 +1,81 @@
Client: Len 12 [RequestActionUse] | 0C 00 / 56 / 25 00 00 00 00 00 00 00 00
Server: Len 183 [RecipeShopManageList]
B7 00
DE // pcode
09 A5 04 10 // seller oid
D4 A1 1E 00 // seller adena
00 00 00 00 // isCommonCraft; 0 - dwarven, 1 - common
14 00 00 00 // section 2 count
14 00 00 00 // recipe ID
01 00 00 00 // seq.number
15 00 00 00 02 00 00 00
19 00 00 00 03 00 00 00
1A 00 00 00 04 00 00 00
1B 00 00 00 05 00 00 00
1C 00 00 00 06 00 00 00
1D 00 00 00 07 00 00 00
1E 00 00 00 08 00 00 00
1F 00 00 00 09 00 00 00
20 00 00 00 0A 00 00 00
21 00 00 00 0B 00 00 00
22 00 00 00 0C 00 00 00
23 00 00 00 0D 00 00 00
24 00 00 00 0E 00 00 00
25 00 00 00 0F 00 00 00
26 00 00 00 10 00 00 00
27 00 00 00 11 00 00 00
43 01 00 00 12 00 00 00
44 01 00 00 13 00 00 00
60 02 00 00 14 00 00 00
00 00 00 00 // section 3 count
XX XX XX XX // recipe id
00 00 00 00 // 0x00
XX XX XX XX // cost
Client: Len 25 [RequestRecipeShopMessageSet]
19 00
BA // pcode
63 00 72 00 61 00 66 00 74 00 20 00 66 00 72 00 65 00 65 00 00 00 // unicode str
Client: Len 31 [RequestRecipeShopListSet]
1F 00
BB // pcode
03 00 00 00 // count
[ for each recipe ]
44 01 00 00 // recipe ID
01 00 00 00 // price
// server makes client sit down
Server: Len 23 [ChangeWaitType] | 17 00 / 29 / 09 A5 04 10 00 00 00 00 F2 40 01 00 F5 D2 00 00 24 FA FF FF
//
Server: Len 29 [RecipeShopMsg]
1D 00
E1
09 A5 04 10 // oid?
63 00 72 00 61 00 66 00 74 00 20 00 66 00 72 00 65 00 65 00 00 00 // message str
.........
Client: Len 3 [RequestRecipeShopManageQuit] | 03 00 / BC /
Recipe ID ==>> item ID conversion from sql table.... or some other
Client: Len 31 [RequestRecipeShopListSet]
1F 00
BB
03 00 00 00
14 00 00 00 // ssd (20)
01 00 00 00
15 00 00 00 // ssc (21)
02 00 00 00
44 01 00 00 // bssc (324)
03 00 00 00

View File

@@ -0,0 +1,18 @@
Server: Len 23 [StopMove]
17 00
47 // StopMove
6C 08 00 10 // objectID of char who stopped
9A AC 00 00 // x
F9 A4 00 00 // y
5D F2 FF FF // z
45 B9 00 00 // heading
protected final void writeImpl()
{
writeC(0x47);
writeD(_objectId);
writeD(_x);
writeD(_y);
writeD(_z);
writeD(_heading);
}

View File

@@ -0,0 +1,13 @@
Server: Len 19 [TeleportToLocation]
13 00
22
6D 08 00 10 // oid 268437613
3F 1D 01 00 // x 73023
DC CE 01 00 // y 118492
9D F1 FF FF // z -3683
writeC(0x22);
writeD(_targetObjId);
writeD(_x);
writeD(_y);
writeD(_z);

View File

@@ -0,0 +1,81 @@
Trading (requester sends):
Client: Len 7 [TradeRequest] | 07 00
1A // pcode
C5 09 00 10 // objectID of partner
Trade receiver recieves:
Server: Len 7 [SendTradeRequest]
07 00
70 // pcode
CE 09 00 10 // object ID of person who wants to trade to you
Trade receiver responds:
Client: Len 7 [AnswerTradeRequest]
07 00
55 // pcode
01 00 00 00 // 1 - ok, 0 - cancel
// then both (requester and receiver) receive
Server: Len 189 [TradeStart]
BD 00
14 // pcode
C5 09 00 10 // partner objectID
03 00 // items count (your inv)
/// for each item
04 00 // item type1
CF 09 00 10 // item oid
D4 15 00 00 // item iid
01 00 00 00 // item count
05 00 // item type2
00 00 // 00
00 00 00 00 // body part
00 00 // enchant
00 00 00 00 // 0000
FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // attribs
Server: Len 65 [TradeOtherAdd]
41 00
1B // pcode
01 00 // item cnt
04 00 // type1
C0 09 00 10 // oid
39 00 00 00 // iid
0D 00 00 00 // cnt
04 00 // type2
00 00 // 00
00 00 00 00 // b.part
00 00 // enchatnt
00 00 00 00 // 00 ??
FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // attribs
Client: Len 15 [AddTradeItem]
0F 00
1B // pcode
01 00 00 00 // tradeId? O_o wtf L2J ignores this
D1 09 00 10 // objectID
01 00 00 00 // count
Server: Len 65 [TradeOwnAdd]
41 00
1A // pcode
01 00 // count
04 00 // type1
D1 09 00 10 // oid
9A 29 00 00 // iid
01 00 00 00 // cnt
05 00 // type2
00 00 // 00
00 00 00 00 // b.part
00 00 // enchant
00 00 00 00 // 00
FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // attribs
Client: Len 7 [TradeDone]
07 00
1C // pcode
01 00 00 00 // num; 1 - confirm, 0 - cancel trade
Server: Len 7 [TradeDone]
07 00
1C // pcode
01 00 00 00 // num; 1 - confirm, 0 - cancel trade

View File

@@ -0,0 +1,4 @@
0B 00 // len 11
19 // ptype - UseItem
57 EA 03 10 // objectID? 268692055
00 00 00 00 // wtf nulls?

View File

@@ -0,0 +1,18 @@
Server: Len 23 [ValidateLocation]
17 00
79
B2 16 00 10 // mob/npc objectID
91 AC 00 00 // x
C5 A4 00 00 // y
5D F2 FF FF // z
FA C5 00 00 // heading
protected final void writeImpl()
{
writeC(0x79);
writeD(_charObjId);
writeD(_x);
writeD(_y);
writeD(_z);
writeD(_heading);
}

View File

@@ -0,0 +1,32 @@
Client: Len 23 [ValidatePosition]
17 00
59
B3 A5 00 00 // x 42419
39 A4 00 00 // y 42041
5B F2 FF FF // z -3493
E2 24 00 00 // heading 9442
00 00 00 00 // wtf data? L2J ignores
After TeleportToLocation client sends ValidatePosition twice.
First is above
Second below:
Both coordinates x,y,z are coords BEFORE teleport.
Client: Len 23 [ValidatePosition]
17 00
59
B3 A5 00 00 // x,y,z are the same
39 A4 00 00
5B F2 FF FF
00 00 00 00 // client changes heading to 0
00 00 00 00
Then client sends Appearing (trigger).
After that server sends UserInfo with all info, icluding new coords.
ValidatePosition L2J:
_x = readD();
_y = readD();
_z = readD();
_heading = readD();
_data = readD();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
Client: Len 3
03 00
00

View File

@@ -0,0 +1,24 @@
ProtocolVersion - MyChanged
0030 0b 01 0e 53 03 00 00 09 07 54 ..B.....S.....TV
0040 56 03 09 0b 01 07 02 54 54 56 07 00 02 55 56 00 ......TTV...UV.Q
0050 51 00 53 57 04 07 55 08 54 01 07 01 53 00 56 55 .SW..U.T...S.VUV
0060 56 01 06 05 04 51 03 08 51 08 51 56 04 54 06 55 ....Q..Q.QV.T.U.
0070 08 02 09 51 56 01 53 06 55 04 53 00 56 56 53 01 ..QV.S.U.S.VVS..
0080 09 02 09 01 51 54 51 09 55 56 09 03 04 07 05 55 ...QTQ.UV.....U.
0090 04 06 55 04 06 09 04 51 01 08 08 06 05 52 06 04 .U....Q.....R...
00a0 01 07 54 03 06 52 55 06 55 55 51 01 02 04 54 03 .T..RU.UUQ...T.U
00b0 55 54 01 57 51 55 05 52 05 54 07 51 51 55 07 02 T.WQU.R.T.QQU..S
00c0 53 53 00 52 05 52 07 01 54 00 03 05 05 08 06 05 S.R.R..T........
00d0 05 06 03 00 0d 08 01 07 09 03 51 03 07 53 09 51 .........Q..S.Q.
00e0 06 07 54 0a 50 56 02 52 04 05 55 51 02 53 00 08 .T.PV.R..UQ.S..T
00f0 54 04 52 56 06 02 09 00 08 03 53 56 01 05 00 55 .RV......SV...U.
0100 06 08 56 04 0d 06 07 52 06 07 04 0a 06 01 04 54 .V....R.......T.
0110 04 00 05 02 04 54 00 09 52 53 05 04 01 04 05 05 ....T..RS.......
0120 01 52 51 52 0d 06 51 08 09 54 53 00 0d 01 02 03 RQR..Q..TS.....T
0130 54 53 01 05 03 08 56 54 07 02 54 0b 06 df b8 3b S....VT..T....;T
0140 54
RequestGSAuthLogin - MyChanged
0030 00 bc 6c 00 65 00 78 00 78 00 ........l.e.x.x.
0040 68 00 75 00 6c 00 65 00 00 00 0d fe 0f 00 12 eb h.u.l.e.........
0050 01 00 0d fe 0f 00 30 28 fc 55 01 00 00 00 ......0(.U....

View File

@@ -0,0 +1,25 @@
ProtocolVersion - Gracia
0030 0b 01 0e 53 03 00 00 09 07 54 ...b.....S.....T
0040 56 03 09 0b 01 07 02 54 54 56 07 00 02 55 56 00 V......TTV...UV.
0050 51 00 53 57 04 07 55 08 54 01 07 01 53 00 56 55 Q.SW..U.T...S.VU
0060 56 01 06 05 04 51 03 08 51 08 51 56 04 54 06 55 V....Q..Q.QV.T.U
0070 08 02 09 51 56 01 53 06 55 04 53 00 56 56 53 01 ...QV.S.U.S.VVS.
0080 09 02 09 01 51 54 51 09 55 56 09 03 04 07 05 55 ....QTQ.UV.....U
0090 04 06 55 04 06 09 04 51 01 08 08 06 05 52 06 04 ..U....Q.....R..
00a0 01 07 54 03 06 52 55 06 55 55 51 01 02 04 54 03 ..T..RU.UUQ...T.
00b0 55 54 01 57 51 55 05 52 05 54 07 51 51 55 07 02 UT.WQU.R.T.QQU..
00c0 53 53 00 52 05 52 07 01 54 00 03 05 05 08 06 05 SS.R.R..T.......
00d0 05 06 03 00 0d 08 01 07 09 03 51 03 07 53 09 51 ..........Q..S.Q
00e0 06 07 54 0a 50 56 02 52 04 05 55 51 02 53 00 08 ..T.PV.R..UQ.S..
00f0 54 04 52 56 06 02 09 00 08 03 53 56 01 05 00 55 T.RV......SV...U
0100 06 08 56 04 0d 06 07 52 06 07 04 0a 06 01 04 54 ..V....R.......T
0110 04 00 05 02 04 54 00 09 52 53 05 04 01 04 05 05 .....T..RS......
0120 01 52 51 52 0d 06 51 08 09 54 53 00 0d 01 02 03 .RQR..Q..TS.....
0130 54 53 01 05 03 08 56 54 07 02 54 0b 06 df b8 3b TS....VT..T....;
0140 54 T
RequestGSAuthLogin - Gracia
0030 31 00 3e c0 a3 ab da ed 20 49 ..>g..1.>..... I
0040 81 ce 5d 29 88 88 b9 4b e4 76 15 75 fa ba 77 00 ..])...K.v.u..w.
0050 21 07 94 98 c7 a4 95 4d cc 2d 00 6c 1d 52 9f be !......M.-.l.R..
0060 ab f1 0c 01 a0 cc fd .......

View File

@@ -0,0 +1,19 @@
ProtocolVersion - Hellbound
0030 0b 01 0e 3f 03 00 00 09 07 54 .........?.....T
0040 56 03 09 0b 01 07 02 54 54 56 07 00 02 55 56 00 V......TTV...UV.
0050 51 00 53 57 04 07 55 08 54 01 07 01 53 00 56 55 Q.SW..U.T...S.VU
0060 56 01 06 05 04 51 03 08 51 08 51 56 04 54 06 55 V....Q..Q.QV.T.U
0070 08 02 09 51 56 01 53 06 55 04 53 00 56 56 53 01 ...QV.S.U.S.VVS.
0080 09 02 09 01 51 54 51 09 55 56 09 03 04 07 05 55 ....QTQ.UV.....U
0090 04 06 55 04 06 09 04 51 01 08 08 06 05 52 06 04 ..U....Q.....R..
00a0 01 07 54 03 06 52 55 06 55 55 51 01 02 04 54 03 ..T..RU.UUQ...T.
00b0 55 54 01 57 51 55 05 52 05 54 07 51 51 55 07 02 UT.WQU.R.T.QQU..
00c0 53 53 00 52 05 52 07 01 54 00 03 05 05 08 06 05 SS.R.R..T.......
00d0 05 06 03 00 0d 08 01 07 09 03 51 03 07 53 09 51 ..........Q..S.Q
00e0 06 07 54 0a 50 56 02 52 04 05 55 51 02 53 00 08 ..T.PV.R..UQ.S..
00f0 54 04 52 56 06 02 09 00 08 03 53 56 01 05 00 55 T.RV......SV...U
0100 06 08 56 04 0d 06 07 52 06 07 04 0a 06 01 04 54 ..V....R.......T
0110 04 00 05 02 04 54 00 09 52 53 05 04 01 04 05 05 .....T..RS......
0120 01 52 51 52 0d 06 51 08 09 54 53 00 0d 01 02 03 .RQR..Q..TS.....
0130 54 53 01 05 03 08 56 54 07 02 54 0b 06 fb 87 b9 TS....VT..T.....
0140 4a J