Docs
This commit is contained in:
22
docs/gamepackets/AbnormalStatusUpdate.txt
Normal file
22
docs/gamepackets/AbnormalStatusUpdate.txt
Normal 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...?
|
18
docs/gamepackets/Action.txt
Normal file
18
docs/gamepackets/Action.txt
Normal 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
|
3
docs/gamepackets/Appearing.txt
Normal file
3
docs/gamepackets/Appearing.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Client Len 3 [Appearing]
|
||||
03 00
|
||||
3A // pcode Appearing
|
11
docs/gamepackets/AskJoinParty.txt
Normal file
11
docs/gamepackets/AskJoinParty.txt
Normal 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
|
38
docs/gamepackets/Attack.txt
Normal file
38
docs/gamepackets/Attack.txt
Normal 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);
|
||||
}
|
9
docs/gamepackets/AuthLogin.txt
Normal file
9
docs/gamepackets/AuthLogin.txt
Normal 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
|
76
docs/gamepackets/BuyList.txt
Normal file
76
docs/gamepackets/BuyList.txt
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
11
docs/gamepackets/ChangeMoveType.txt
Normal file
11
docs/gamepackets/ChangeMoveType.txt
Normal 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
|
46
docs/gamepackets/CharSelected_hellbound.txt
Normal file
46
docs/gamepackets/CharSelected_hellbound.txt
Normal 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
|
75
docs/gamepackets/CharSelectionInfo.txt
Normal file
75
docs/gamepackets/CharSelectionInfo.txt
Normal 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)
|
16
docs/gamepackets/CharacterCreate.txt
Normal file
16
docs/gamepackets/CharacterCreate.txt
Normal 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
|
8
docs/gamepackets/CharacterSelect_hellbound.txt
Normal file
8
docs/gamepackets/CharacterSelect_hellbound.txt
Normal 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
|
72
docs/gamepackets/CharacterSelectionInfo_final.txt
Normal file
72
docs/gamepackets/CharacterSelectionInfo_final.txt
Normal 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
|
71
docs/gamepackets/CreatureSay.txt
Normal file
71
docs/gamepackets/CreatureSay.txt
Normal 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
13
docs/gamepackets/Die.txt
Normal 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
|
78
docs/gamepackets/EnterWorld.txt
Normal file
78
docs/gamepackets/EnterWorld.txt
Normal 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
|
11
docs/gamepackets/EtcStatusUpdate.txt
Normal file
11
docs/gamepackets/EtcStatusUpdate.txt
Normal 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()
|
9
docs/gamepackets/GameGuard.txt
Normal file
9
docs/gamepackets/GameGuard.txt
Normal 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
|
10
docs/gamepackets/JoinParty.txt
Normal file
10
docs/gamepackets/JoinParty.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Server: Len 7
|
||||
07 00
|
||||
3A
|
||||
00 00 00 00 // response
|
||||
|
||||
protected final void writeImpl()
|
||||
{
|
||||
writeC(0x3a);
|
||||
writeD(_response);
|
||||
}
|
22
docs/gamepackets/KeyPacket.txt
Normal file
22
docs/gamepackets/KeyPacket.txt
Normal 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
|
||||
|
8
docs/gamepackets/Logout.txt
Normal file
8
docs/gamepackets/Logout.txt
Normal 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...
|
15
docs/gamepackets/MagicSkillUse.txt
Normal file
15
docs/gamepackets/MagicSkillUse.txt
Normal 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 // ??
|
11
docs/gamepackets/MoveToPawn.txt
Normal file
11
docs/gamepackets/MoveToPawn.txt
Normal 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
|
3
docs/gamepackets/NewCharacter.txt
Normal file
3
docs/gamepackets/NewCharacter.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Client: Len 3 [NewCharacter]
|
||||
03 00 // packet length - 3 bytes
|
||||
13 // opcode
|
28
docs/gamepackets/NewCharacterSuccess.txt
Normal file
28
docs/gamepackets/NewCharacterSuccess.txt
Normal 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
|
||||
|
117
docs/gamepackets/NpcHtmlMessage.txt
Normal file
117
docs/gamepackets/NpcHtmlMessage.txt
Normal 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
|
51
docs/gamepackets/PartySmallWindowAll.txt
Normal file
51
docs/gamepackets/PartySmallWindowAll.txt
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
49
docs/gamepackets/PrivateStoreListBuy.txt
Normal file
49
docs/gamepackets/PrivateStoreListBuy.txt
Normal 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));
|
||||
}
|
||||
}
|
67
docs/gamepackets/PrivateStoreListSell.txt
Normal file
67
docs/gamepackets/PrivateStoreListSell.txt
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
4
docs/gamepackets/PrivateStoreManageListBuy.txt
Normal file
4
docs/gamepackets/PrivateStoreManageListBuy.txt
Normal 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
|
59
docs/gamepackets/PrivateStoreManageListSell.txt
Normal file
59
docs/gamepackets/PrivateStoreManageListSell.txt
Normal 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
|
13
docs/gamepackets/PrivateStoreMsgBuy.txt
Normal file
13
docs/gamepackets/PrivateStoreMsgBuy.txt
Normal 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);
|
||||
}
|
21
docs/gamepackets/ProtocolVersion-l2emu_client_t1.txt
Normal file
21
docs/gamepackets/ProtocolVersion-l2emu_client_t1.txt
Normal 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
|
20
docs/gamepackets/ProtocolVersion_GraciaEpilogue.txt
Normal file
20
docs/gamepackets/ProtocolVersion_GraciaEpilogue.txt
Normal 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
|
20
docs/gamepackets/ProtocolVersion_GraciaPart2.txt
Normal file
20
docs/gamepackets/ProtocolVersion_GraciaPart2.txt
Normal 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
|
21
docs/gamepackets/ProtocolVersion_HellboundClient.txt
Normal file
21
docs/gamepackets/ProtocolVersion_HellboundClient.txt
Normal 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
|
4
docs/gamepackets/RecipeShopMsg.txt
Normal file
4
docs/gamepackets/RecipeShopMsg.txt
Normal 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
|
6
docs/gamepackets/RequestAutoSoulShot.txt
Normal file
6
docs/gamepackets/RequestAutoSoulShot.txt
Normal 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
|
8
docs/gamepackets/RequestBuyItem.txt
Normal file
8
docs/gamepackets/RequestBuyItem.txt
Normal 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
|
8
docs/gamepackets/RequestBypassToServer.txt
Normal file
8
docs/gamepackets/RequestBypassToServer.txt
Normal 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()
|
5
docs/gamepackets/RequestCrystallizeItem.txt
Normal file
5
docs/gamepackets/RequestCrystallizeItem.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Client: Len 11
|
||||
0B 00
|
||||
2F
|
||||
13 14 04 10 // objectID 268702739
|
||||
01 00 00 00 // count 1
|
5
docs/gamepackets/RequestDestroyItem.txt
Normal file
5
docs/gamepackets/RequestDestroyItem.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Client: Len 11 [RequestDestroyItem]
|
||||
0B 00
|
||||
60
|
||||
71 08 00 10 // objectID
|
||||
01 00 00 00 // count
|
5
docs/gamepackets/RequestDispel.txt
Normal file
5
docs/gamepackets/RequestDispel.txt
Normal 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
|
14
docs/gamepackets/RequestDropItem.txt
Normal file
14
docs/gamepackets/RequestDropItem.txt
Normal 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();
|
5
docs/gamepackets/RequestJoinParty.txt
Normal file
5
docs/gamepackets/RequestJoinParty.txt
Normal 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
|
9
docs/gamepackets/RequestOustPartyMember.txt
Normal file
9
docs/gamepackets/RequestOustPartyMember.txt
Normal 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
|
9
docs/gamepackets/RequestPrivateStoreBuy.txt
Normal file
9
docs/gamepackets/RequestPrivateStoreBuy.txt
Normal 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
|
1
docs/gamepackets/RequestPrivateStoreQuitBuy.txt
Normal file
1
docs/gamepackets/RequestPrivateStoreQuitBuy.txt
Normal file
@@ -0,0 +1 @@
|
||||
Client: Len 3 [RequestPrivateStoreQuitBuy] | 03 00 / 9C /
|
1
docs/gamepackets/RequestPrivateStoreQuitSell.txt
Normal file
1
docs/gamepackets/RequestPrivateStoreQuitSell.txt
Normal file
@@ -0,0 +1 @@
|
||||
Client: Len 3 [RequestPrivateStoreQuitSell] | 03 00 / 96 /
|
11
docs/gamepackets/RequestPrivateStoreSell.txt
Normal file
11
docs/gamepackets/RequestPrivateStoreSell.txt
Normal 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
|
6
docs/gamepackets/RequestRestart.txt
Normal file
6
docs/gamepackets/RequestRestart.txt
Normal 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
|
15
docs/gamepackets/RequestRestartPoint.txt
Normal file
15
docs/gamepackets/RequestRestartPoint.txt
Normal 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
|
7
docs/gamepackets/RequestSaveInventoryOrder.txt
Normal file
7
docs/gamepackets/RequestSaveInventoryOrder.txt
Normal 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
|
13
docs/gamepackets/RequestSellItem.txt
Normal file
13
docs/gamepackets/RequestSellItem.txt
Normal 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
|
3
docs/gamepackets/RequestSkillCoolTime.txt
Normal file
3
docs/gamepackets/RequestSkillCoolTime.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Client: Len 3
|
||||
03 00
|
||||
A6
|
4
docs/gamepackets/RequestTargetCanceld.txt
Normal file
4
docs/gamepackets/RequestTargetCanceld.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Client Len 5 [ RequestTargetCanceld]
|
||||
05 00
|
||||
48
|
||||
00 00
|
24
docs/gamepackets/RequestUserCommand.txt
Normal file
24
docs/gamepackets/RequestUserCommand.txt
Normal 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
|
4
docs/gamepackets/Revive.txt
Normal file
4
docs/gamepackets/Revive.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Server: Len 7 [Revive]
|
||||
07 00
|
||||
01
|
||||
3F 8E 05 10 // objectID?
|
56
docs/gamepackets/SellList.txt
Normal file
56
docs/gamepackets/SellList.txt
Normal 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));
|
||||
}
|
||||
}
|
26
docs/gamepackets/Selling.txt
Normal file
26
docs/gamepackets/Selling.txt
Normal file
File diff suppressed because one or more lines are too long
5
docs/gamepackets/SendBypassBuildCmd.txt
Normal file
5
docs/gamepackets/SendBypassBuildCmd.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Client: Len 13 [SendBypassBuildCmd]
|
||||
0D 00
|
||||
74
|
||||
68 00 65 00 61 00 6C 00 00 00 _command = readS();
|
||||
|
1
docs/gamepackets/SendWarehouseDepositList.txt
Normal file
1
docs/gamepackets/SendWarehouseDepositList.txt
Normal 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
|
4
docs/gamepackets/SendWarehouseWithdrawalList.txt
Normal file
4
docs/gamepackets/SendWarehouseWithdrawalList.txt
Normal 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
|
9
docs/gamepackets/SetPrivateStoreListSell.txt
Normal file
9
docs/gamepackets/SetPrivateStoreListSell.txt
Normal 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
|
6
docs/gamepackets/SetupGauge.txt
Normal file
6
docs/gamepackets/SetupGauge.txt
Normal 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
|
13
docs/gamepackets/ShortBuffStatusUpdate.txt
Normal file
13
docs/gamepackets/ShortBuffStatusUpdate.txt
Normal 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!
|
81
docs/gamepackets/Siiting_on_Craft.txt
Normal file
81
docs/gamepackets/Siiting_on_Craft.txt
Normal 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
|
||||
|
18
docs/gamepackets/StopMove.txt
Normal file
18
docs/gamepackets/StopMove.txt
Normal 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);
|
||||
}
|
13
docs/gamepackets/TeleportToLocation.txt
Normal file
13
docs/gamepackets/TeleportToLocation.txt
Normal 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);
|
81
docs/gamepackets/TradeRequest.txt
Normal file
81
docs/gamepackets/TradeRequest.txt
Normal 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
|
4
docs/gamepackets/UseItem.txt
Normal file
4
docs/gamepackets/UseItem.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
0B 00 // len 11
|
||||
19 // ptype - UseItem
|
||||
57 EA 03 10 // objectID? 268692055
|
||||
00 00 00 00 // wtf nulls?
|
18
docs/gamepackets/ValidateLocation.txt
Normal file
18
docs/gamepackets/ValidateLocation.txt
Normal 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);
|
||||
}
|
32
docs/gamepackets/ValidatePosition.txt
Normal file
32
docs/gamepackets/ValidatePosition.txt
Normal 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();
|
1
docs/gamepackets/WarehouseDepositList.txt
Normal file
1
docs/gamepackets/WarehouseDepositList.txt
Normal file
File diff suppressed because one or more lines are too long
1
docs/gamepackets/WarehouseWithdrawalList.txt
Normal file
1
docs/gamepackets/WarehouseWithdrawalList.txt
Normal file
File diff suppressed because one or more lines are too long
506
docs/gamepackets/action_useitem_1230567729.txt
Normal file
506
docs/gamepackets/action_useitem_1230567729.txt
Normal file
File diff suppressed because one or more lines are too long
4
docs/gamepackets/client_Logout_fromAUTHED.txt
Normal file
4
docs/gamepackets/client_Logout_fromAUTHED.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Client: Len 3
|
||||
|
||||
03 00
|
||||
00
|
24
docs/gamepackets/compare_gs_login_gracia_hack.txt
Normal file
24
docs/gamepackets/compare_gs_login_gracia_hack.txt
Normal 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....
|
25
docs/gamepackets/compare_gs_login_gracia_hb.txt
Normal file
25
docs/gamepackets/compare_gs_login_gracia_hb.txt
Normal 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 .......
|
19
docs/gamepackets/compare_gs_login_gracia_hbb.txt
Normal file
19
docs/gamepackets/compare_gs_login_gracia_hbb.txt
Normal 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
|
Reference in New Issue
Block a user