パケットデータ

wiki

ecore/packetで詳しく解析中






パケ解析資料 2006-08-16版 By.601

★パケ操作鶴に付属の資料もお読みください。

  • 自分で使う最低限の情報しか解析していません。
  • また間違ってる部分もあるかもしれませんので気付いた方は編集お願いします。
  • 追加もお願いします。

[特殊なデータ]

  • ECOSTR: BYTE length + BYTE UTF-8unicode[length/3][3] の可変長データ

[ヘッダ部]

  • DWORD length : データ長(このデータを含まず)
  • DWORD command : 命令
  • WORD length : データ長(このデータを含まず)%%
  • WORD command : 命令%%
[プレイヤー&ペット&Mob情報]
●命令一覧( r = Recv / s = Send )
 r01ff : 自キャラ基本データ
 r020e : 他キャラ基本データ
 r0221 : 自他キャラ MAX HP/MP/SP
 r021c : 自他キャラ NOW HP/MP/SP
 r157c : 自他キャラ 各種状態&状態異常データ
 r120c : 他キャラ出現コマンド(MAX HP / NOW HP / 憑依先・憑依箇所データ)
 r1211 : 他キャラ消去コマンド

 s177a : 憑依開始コマンド(憑依先/憑依箇所データ)
 r177b : 憑依完了データ
 r1780 : 憑依解除

●各コマンド詳細
  ヘッダのオフセットからのバイト数です。

 [r01ff] 自キャラ詳細データ
  004 - 007 byte目 : DWORD  : 自キャラID ( < 9999)
 012 - nnn byte目 : ECOSTR : 自キャラ名
  (後、自キャラ名の次のByteからのオフセット値)
  020 - 021 byte目 : WORD   : MAX HP ( FF FF の時もあるので注意 )
  028 - 029 byte目 : WORD   : MAX MP ( FF FF の時もあるので注意 )
  036 - 037 byte目 : WORD   : MAX SP ( FF FF の時もあるので注意 )
  117 - 120 byte目 : DWORD  : ヘッド装備アイテムNo
  121 - 124 byte目 : DWORD  :
  125 - 128 byte目 : DWORD  :
  129 - 132 byte目 : DWORD  : 胸アクセサリ装備アイテムNo
 133 - 136 byte目 : DWORD  : 上半身装備アイテムNo
  137 - 140 byte目 : DWORD  :
 141 - 144 byte目 : DWORD  :
  145 - 148 byte目 : DWORD  : 右手装備アイテムNo
 他にステータス、補正値、所持Gなどが載ってるっぽい

 [r020e] 他キャラ詳細データ
  004 - 007 byte目 : DWORD  : 他キャラID (1-9999 PC / 10000-19999 PET / 20000- MOB)
 012 - nnn byte目 : ECOSTR : 他キャラ名
 他に外見構成に必要な装備品ID、(表示してなくても)露店コメントがデータとして載ってる

  [r0221] 自他キャラ MAX HP/MP/SP
  004 - 007 byte目 : DWORD  : 他キャラID (1-9999 PC / 10000-19999 PET / 20000- MOB)
  011 - 012 byte目 : WORD   : MAX HP
  015 - 016 byte目 : WORD   : MAX MP
 019 - 020 byte目 : WORD   : MAX SP
  本来、このデータは自分とPTメンバーのものしか流れてこないはずだが、他の人のデータも時々流れてくる。
 (流れてくるときは濁流のように同じデータを何度も送りつけてくるので注意)
  ↑パケ操作鶴のバグの可能性だった場合もあり

  [r021c] 自他キャラ NOW HP/MP/SP
  004 - 007 byte目 : DWORD  : 他キャラID (1-9999 PC / 10000-19999 PET / 20000- MOB)
  011 - 012 byte目 : WORD   : Now HP
  015 - 016 byte目 : WORD   : Now MP
 019 - 020 byte目 : WORD   : Now SP
 出現してから動いてないキャラの情報は送られてこない。
 動いていても、ある程度の時間、画面内にいないと拾えないことも多い。
 %ではなく生データで、通常は見えない MPやSPもみれて、MAXは容易に推測可能
  
  [r157c] 自他キャラ 各種状態&状態異常
  004 - 007 byte目 : DWORD  : 他キャラID (1-9999 PC / 10000-19999 PET / 20000- MOB)
  007 - 027 byte目 : BYTE   : ステータスデータ(※1)
  まだ解析が進んでいないが、状態異常は解析するつもり。

  [r120c] 他キャラ出現コマンド
  004 - 007 byte目 : DWORD  : 他キャラID (1-9999 PC / 10000-19999 PET / 20000- MOB)
  013 - 016 byte目 : DWORD  : 憑依先キャラID(未憑依:FF FF FF FF)
 017       byte目 : BYTE   : 憑依箇所(0:右手 1:左手 2:胸 3:鎧) (未憑依:FF)
  020 - 021 byte目 : WORD   : NowHP
  024 - 025 byte目 : WORD   : MaxHP
 これが来たら画面に現れる。
 ただし、このデータがこのIDの一番最初に来るとは限らないので注意
 これより先にr157cやr021cが来ることもある。
 出現前に憑依していてもこのデータに憑依先、憑依箇所が載ってくるので、
 憑依装備の中の人が丸分かりです(中の人がログアウトしてたらわからない)
  
  [r1211] 他キャラ消去コマンド
  004 - 007 byte目 : DWORD  : 他キャラID (1-9999 PC / 10000-19999 PET / 20000- MOB)
 このコマンドで画面から消える。この後、またそのキャラが近づいてくるまでデータは送られてこない。
 ただし、次に現れたときに全てのデータを取得できるとは限らないので
 他のコマンドで取得したこのキャラのデータはサーバー移動するかログアウトするかまで保持する事。

 [s177a] 自憑依開始コマンド (Send Data)
  004 - 007 byte目 : DWORD  : 憑依先ID (1-9999 PC)
 008       byte目 : BYTE   : 憑依箇所(0:右手 1:左手 2:胸 3:鎧) 
 このデータは自分が他人に対して憑依するときにクライアントから発行される。

  [r177b] 自他憑依完了
  004 - 007 byte目 : DWORD  : 憑依者ID (1-9999 PC)
 008 - 011 byte目 : DWORD  : 憑依先ID (1-9999 PC)(憑依失敗: FF FF FF FF)
 012       byte目 : BYTE   : 憑依箇所(0:右手 1:左手 2:胸 3:鎧)
 自分が他人に対しての憑依の場合、注意しなければいけないのは、
 失敗のデータの後に成功したかのようなダミーデータが送られてくる。
 ダミーデータを回避するには、s177aの処理で憑依開始フラグなどを立てるなどして対処すること。
 他人が他人に憑依しようとして失敗した場合は何もデータは送られてこない。
 このデータで憑依失敗が送られてくるのは、憑依者IDが自分の場合のみです。
  
 [r1780] 憑依解除
  004 - 007 byte目 : DWORD  : 憑依者ID (1-9999 PC)

※1各種状態&状態異常の詳細
 全てのORを取った値がセットされるので、Andで抽出できる。
  00 10 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : お座り状態
  00 00 04 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : 憑依中
  00 00 00 00  00 20 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : ソードDC
  00 00 00 00  00 00 00 00  00 08 00 00  00 00 00 00  00 00 00 00 : ホーリーシールド
  00 00 00 00  00 02 00 00  00 00 00 00  00 70 00 00  00 00 00 00 : ホーリーフェザー
  00 00 00 00  00 00 00 00  00 00 00 00  4c 00 00 00  00 00 00 00 : ラウズメンタル
  00 00 00 00  00 00 00 00  00 00 00 00  32 00 00 00  00 00 00 00 : ラウズボディ
  00 00 04 08  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : 睡眠
  00 00 04 80  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : 氷化
  00 00 04 40  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : 混乱
  00 00 04 02  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : 石化
  00 00 00 10  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : 静寂
  00 00 00 01  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : 毒
  00 05 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 : スタン
  00 20 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 08 : 鈍足&ASPD↓
 13バイト目は、下位2ビット目から、
 STR DEX INT VIT AGI MAG の順で、ステータスアップ状態。

●プレイヤー&ペット&Mob情報の注意点
 まわりのキャラクタのデータも保持したいなら、
 色々なパケットに色々なデータが分散して載せられていて、さらにどのデータが先にくるか
 わからないので、まだ出現してないような知らないIDのデータも保持しておく必要がある。
 PTメンバーのMAX HP/MP/SPなど、そのサーバーにいる間に1度しか送られてこないデータもあるので
 一度保持したデータはそのサーバーからログアウトするまで保持しておく必要がある。
 自分の情報だけ保持してたいなら、この注意点は考えなくて良い。

 憑依中のキャラのr1211(他キャラ消去コマンド)は送られてこない事があるが
 憑依中なので、憑依主の状況をみて判断すればよい。

 Sendパケを自作して送信するなどの危険行為を回避するのであれば、一度取得したデータを破棄した
 後、再び同じ状況で同じデータを取得できると考えないほうが無難。できるだけデータは保持すべき
 破棄しても確実に再びデータが取得できるのは、サーバー変更後のみ

 名前の部分がUTF-8 UnicodeなのでUnicodeに変換するのは簡単だが、Shift-Jisにするのは
 かなり骨の折れる作業になるので、そこらに転がってる変換LibやDLLを使うことをお勧めします。
[インベントリ&装備品情報]
●命令一覧( r = Recv / s = Send )
 r0203 : 全アイテム更新
  r09e3 : アイテム移動(かばん→かばん)
  r09cf : アイテム個数更新
  r09ce : アイテム消去
  r09d4 : アイテム発生
  r09e8 : アイテム移動(かばん→装備)

●各コマンド詳細
  ヘッダのオフセットからのバイト数です。

 [r0203] 全アイテム更新
 006 - 009 : DWORD : インベントリID
  010 - 011 : DWORD : アイテムID
  018       : BYTE  : かばん場所 or 装備箇所(※1)
  030 - 031 : WORD  : 個数
 これを所持してるアイテムの種類分繰り返す。

  [r09e3] アイテム移動(かばん→かばん)
  004 - 007 : DWORD : インベントリID
 009       : BYTE  : 移動先(※1)

  [r09cf] アイテム個数更新
  004 - 007 : DWORD : インベントリID
  008 - 009 : WORD  : 新しい個数

  [r09ce] アイテム消去
  004 - 007 : DWORD : インベントリID
  全てなくなったら送られてくる

  [r09d4] アイテム発生
  005 - 008 : DWORD : インベントリID
  009 - 012 : DWORD : アイテムID
 017       : BYTE  : かばん場所 or 装備箇所(※1)
  029 - 030 : WORD  : 個数

  [r09e8] アイテム移動(かばん→装備)
  004 - 007 : DWORD : インベントリID
 008       : BYTE  : 装備箇所(※1)

※1入ってる場所情報について
 場所とコードの対応は下記のとおり
 かばん
  体 02 / 右手 03 / 左手 04 / 背中 05
  装備中
  胸ア 0a / 右手 0e / 背中 0d / 上半身 0b / 靴 10 
  頭ア 07 / Pet 12 / 左手 0f / 顔ア 08 / 靴下 11 / 下半身 0c

●インベントリ&装備品の注意点
 r0203で情報が送られてきた後、全ての変更はインベントリIDで送られてくる。
 再びアイテムIDが取得できるのは、r09d4のアイテム発生時に発生したアイテムの情報だけですので
 全てのデータを保持し、上記のコマンドを元に変更をしてください。
 サーバー間移動でアイテムリセット、r0203にて新たに取得しなおし。

[スキル使用情報] ※解析途中だけど、攻SUもってないのでこれ以上解析しない。BOT作る気もないし。

●命令一覧( r = Recv / s = Send )

 s1387 : スキル使用
 r1389 : スキル使用の成否
 r1392 : スキル使用結果1 r1389成功時のみ(ヒール/単体攻撃/ラウズはこっち)対象は1人だけ?
 r1397 : スキル使用結果2 r1389成功時のみ(HFはこっち)複数対象?

●各コマンド詳細

 ヘッダのオフセットからのバイト数です。
 [s1387] スキル使用チャレンジデータ(Send Packet)
 004 - 005 : WORD  :スキルID ※1
 006 - 009 : DWORD :ターゲットのキャラクタID
 012 - 012 : BYTE  :スキルLv
 MPとかSPとか足りなくても送られる。
 [r1389] スキル使用の成否
 004 - 005 : WORD  : スキルID ※1
 007 - 010 : DWORD : スキル使用キャラクタID
 015 - 018 : DWORD : ターゲットキャラクタID(失敗時は FF FF FF FF)
 021 - 021 : BYTE  : スキルLv
 [r1392] スキル使用結果 r1389成功時のみ(ヒール/単体攻撃/ラウズはこっち)対象は1人だけ?
 004 - 005 : WORD  : スキルID ※1
 008 - 011 : DWORD : スキル使用キャラクタID
 012 - 015 : DWORD : ターゲットキャラクタID
 013 - 013 : BYTE  : 対象のキャラクタ数
 014 - 017 : DWORD : 対象キャラクタID × キャラクタ数
 (対象キャラクタIDリストの次からのオフセット)
 003 - 003 : BYTE  : 対象のキャラクタ数
 004 - 005 : WORD  : ダメージ × キャラクタ数
 (ダメージリストの次からのオフセット)
 000 - 000 : BYTE  : 対象キャラクタ数
 001 - 002 : WORD  : 不明2 × キャラクタ数
 (不明2リストの次からのオフセット)
 000 - 000 : BYTE  : 対象キャラクタ数
 001 - 002 : WORD  : 不明3 × キャラクタ数
 (不明3リストの次からのオフセット)
 000 - 000 : BYTE  : 対象キャラクタ数
 001 - 002 : DWORD : 不明4 × キャラクタ数
 (不明4リストの次からのオフセット)
 000 - 000 : BYTE  : スキルLv
 攻撃魔法やヒール等が処理されるっぽい。単体処理用のようだけど、人数とかあるし不明。

 回復系は、マイナスダメージとして処理される。  符号なしで処理するなら、(ダメージ xor 0xffff) + 1 = 回復量 となる。

 [r1397] スキル使用結果 r1389成功時のみ(HFはこっち)複数対象?
 004 - 005 : WORD  : スキルID ※1
 006 - 006 : BYTE  : 対象キャラクタ数?
 007 - 007 : BYTE  : 不明1 × キャラクタ数
 (不明1リストの次からのオフセット)
 000 - 003 : DWORD : スキル使用キャラクタID
 004 - 004 : BYTE  : 対象キャラクタ数
 005 - 008 : DWORD : 対象キャラクタID × キャラクタ数
 (対象キャラクタIDリストの次からのオフセット)
 003 - 003 : BYTE  : 対象キャラクタ数
 004 - 005 : WORD  : 不明2 × キャラクタ数
 (不明2リストの次からのオフセット)
 000 - 000 : BYTE  : 対象キャラクタ数
 001 - 002 : WORD  : 不明3 × キャラクタ数
 (不明3リストの次からのオフセット)
 000 - 000 : BYTE  : 対象キャラクタ数
 001 - 002 : WORD  : 不明4 × キャラクタ数
 (不明4リストの次からのオフセット)
 000 - 000 : BYTE  : 対象キャラクタ数
 001 - 002 : DWORD : 不明5 × キャラクタ数
 (不明5リストの次からのオフセット)
 000 - 000 : BYTE  : スキルLv
 HFなどの全体系魔法が処理されるっぽい。複数用っぽい。

  ※1スキルIDについて。.sspファイル?を参照

 0b ee : 3054 : ヒール
 0b f0 : 3056 : ホーリーフェザー
 0c 01 : 3073 : ホーリーライト
 0c 04 : 3076 : ホーリーシールド
 0c 4a : 3146 : アレス
 0c b9 : 3257 : ラウズ・ボディ
 0c ba : 3258 : ラウズ・メンタル

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-07-14 (日) 04:26:20 (1927d)