【会員制】ZeazyUO総合スレ03【shadow氏】 (111レス)
1-

1: 2011/04/10(日)00:51 ID:/zOJ49FQ0(1) AAS
ZeazyUO等Shadow氏のツールについてまったり語るスレです。
ZeazyUOはスクリプトツールです。
スクリプト投稿は会員になって本家サイトにお願いします
規約等は本家で確認してください

ZeazyUO公式サイト
外部リンク:www.kurinton.net

Q. 動きません。
A. UOHOOK5.DLLが必要です同じ場所もしくはシステムフォルダにいれてください。

Q. UOHOOK5.DLLはどこに有るの?
A. 付属していませんので各自で用意してきてください。
省2
91: 2018/05/02(水)00:17 ID:Eu1I19OQ0(1/2) AAS
結果的に動作しなかったので、自分用メモ

- EUO のソースを見ると pathfind 機能は client.exe v6.0.6.2 より前と以降との2つのタイプがある
- ZzEuo.pathfind は恐らく前者のタイプで実装されているので現在は動作しない
- 前者のタイプは 0x53,0x55,0x56,0x57 (push ebx; push ebp; push esi; push edi;) という特徴的なバイト列を持つ
- ZeazyUO.exe 内ではこのバイト列は 1ヶ所しかない
- この 4 byte を 0x90,0x90,0x90,0x90 (nop) に変えたが ZzEuo.pathfind は動作しないまま
- 多分、この場所に到達する前のどこかで動作していない
- ZzMapData.getZ も動作していないので、そっちも怪しそうだが力尽きた

ソースが無いものをバイナリ変更するより、ソースがある方を書き換えるほうが楽
爺のソースが見たいなぁ。あと FL系のソースも見たい
省5
92: 2018/05/02(水)00:31 ID:Eu1I19OQ0(2/2) AAS
デバッガでアタッチしてたら警告が出た
ビビリなのでエミュ鯖ですが・・・本番サーバーでも出るかもですね

外部リンク:www.axfc.net

爺の更新が止まっても uohook 側で機能追加していく道筋は示せたかも
93: 2018/05/13(日)11:32 ID:SFM0Iuu60(1/2) AAS
おかげさまでZeazyUOが今でも使えるようになっていますが
ZeazyUOがパケットF7に対応していないため、
HSタイプの船などでオブジェクトを認識していないようです。
(船倉のモデルやidがとれない)

パケットF7はパケットF3を複数内包している形なので、
ためしにその分を丸ごと切り出して渡してみましたが
連結されたパケットを許容していないZeazyには反映されませんでした。

どのようにしたらいいものでしょう・・・。
94
(5): 2018/05/13(日)19:06 ID:SFM0Iuu60(2/2) AAS
ZeazyUOがGuideではなくPOLに準拠した処理が原因だったようです。

uohook5.cppで
*(u16*)(p+ 9) = pf3->amount1;
*( u8*)(p+11) = 0; // ZeasyUO用にここ追加
//*(u16*)(p+11) = pf3->x |= 0x80000000; //ZUOスレ 532様のオリジナルの修正
としたら(確認した範囲では)モデルやカラーが取得できました。
ただし、やはり古いせいかモデルが0x8000以上のものでは
その値を引いたものとして扱わないといけないようです。
95
(1): 2018/05/14(月)00:09 ID:E9iIDOHE0(1/2) AAS
検証ありがとうございます。
HS を持っておらず、何が問題なのかついていけてないのですが、
F7 が来たら F3 を複数送信するようにしてみたら、UOHOOK の F3 to 1A の処理でうまくいってなさそう、
ということですか?

で、POL のこの処理を実装したら、HSタイプの船のデルやカラーが取得できました、ってことですか?

If (Graphic & 0x8000)
BYTE Increment Counter (increment graphic by this #)

あと、質問ばかりですみませんが、↓はスクリプト内での話ですか?

>ただし、やはり古いせいかモデルが0x8000以上のものでは
>その値を引いたものとして扱わないといけないようです。
省2
96: 2018/05/14(月)00:46 ID:E9iIDOHE0(2/2) AAS
連投すみません

> *( u8*)(p+11) = 0; // ZeasyUO用にここ追加

↑は、パケット 1A に一つフィールドを追加したってことですよね
で、F7 to F3 to 1A のときは、multi だから 0 をセットしても、たまたま動いたってことでしょうか?

multi 以外で model_id が 0x8000 を超えた時に、何の値セットすればよいのか不明で、ちょっと困ってしまいました
ちなみに Razor は model_id & 0x7FFF としていて、フィールドを追加することはないようです(見てるソースが古いかもですが)
97: 94 2018/05/14(月)07:25 ID:wZKjVyD20(1/3) AAS
>>95
>ZeazyUOがGuideではなくPOLに準拠した処理が原因だったようです。
すみません、私の勘違いです。
よく読んだらGuideもPOLも表現が違うだけで、同じでした。

今回の発端はアクセスできるオブジェクトのモデルIDに
0x8000以上の値をもつものが追加されていたことによるものです。
(簡単に見た限りでは徳之島船の「船倉」が0x916F~0x9177)

そのため、ZeazyUO側の解釈ではフラグビットが立っているとみなされ、
正常なパケット扱いされずにオブジェクトの登録がされなかったようです。

対処としてF7パケットに対してはなにもせずスルーのまま、
省2
98
(1): 94 2018/05/14(月)08:02 ID:wZKjVyD20(2/3) AAS
追加部分に書き込むべき内容については全く不明です。
クライアント(ZeazyUO)側へのものであることから>>94では
とりあえず0を入れてみた感じです。

外部リンク:www.axfc.net
としたのが現状で、確認した狭い範囲の中では特に異常はなさそうです。
99: 94 2018/05/14(月)08:05 ID:wZKjVyD20(3/3) AAS
訂正:
変更部分ミスってます。構造体の配置間違ってる
100
(2): 2018/05/14(月)14:03 ID:qrIgXOJ60(1/2) AAS
未確認なため、これらはすべて妄想です

修正案1
  *(u16*)(p+7) = pf3->model_id & 0x7FFF;

修正案2
  if (pf3->model_id & 0x8000)
    *(u16*)(p+11) = pf3->direction;

修正案3
  if (pf3->model_id & 0x8000)
    *(u16*)(p+11) = 0;

※全角空白注意
省10
101: 2018/05/14(月)14:06 ID:qrIgXOJ60(2/2) AAS
>98 がリンク切れだったのですが、>100 は、その意図を汲み取ってると思ってます

ちなみに、0x8000 を引いたモデルとして認識されてるなら、アイテム名も変わってしまうんでしょうか?
自分で試せって感じですが…
102
(1): 94 2018/05/15(火)00:28 ID:20T89R.c0(1/2) AAS
>>100
修正案1にならってMSBを常時1ないしは0にしてみたところ、
サイズさえあわせておけばとりあえずトラブルはなさそうです。

ざっくり調べたところ、0x8000以上のモデルIDは結構使われているようです。
見た感じUOHS以降に追加されたものがそれにあてはまり、
今現在は0xA12Dまでが使用(準備)されているかと思われます。
なので、特定のオブジェクトを検索する際にはモデルIDだけでは
よろしくない場合もあることを念頭におく必要があるかもしれません。
103: 94 2018/05/15(火)00:40 ID:20T89R.c0(2/2) AAS
寝ぼけてたようで>>102の修正です。
件の1バイトはどうやらMultiオブジェクトにのみ関わるようです
104: 2018/05/15(火)02:07 ID:JTc0QdvE0(1) AAS
検証ありがとうございます。とても助かります。
当方でも試したところ

修正案1 (追加フィールド無し)は、
- ルナ場内の Moonstone Crystal も徳之島船の船倉 cargo hold も認識しなかった

修正案2 と修正案3 (追加フィールドあり)は、
- 両方ともルナ場内の Moonstone Crystal を 0x9CBB ではなく 0x1CBB としてを認識した
- 両方とも徳之島船の船倉 cargo hold を 0x916F ではなく 0x116F として認識した
- ただ、ヘイブンの徳之島船の船倉は時々うまく検索にヒットしなかった

の結果となりました。94様とは修正案1 の結果が異なるようですが、修正案2 か 3 が無難かもです

別の検証で、pilow (緑地に金色のハート) は、バックパック内では 0x9E1D として認識しますが、
省7
105
(1): 2018/05/16(水)02:08 ID:b/fPLQPA0(1) AAS
ZeazyUO.exe のバイナリ変更

66 25 FF 7F 66 89 43 0C 66 3D 06 20
でバイナリサーチすると(爺のバージョンによらず) 1ヶ所に絞れると思う
そこを下記のように書き換え (FF 7F を FF FF)
66 25 FF FF 66 89 43 0C 66 3D 06 20

意味は eax &= 0x7FFF を eax &= 0xFFFF に変更
この変更と uohook5.cpp ソースの修正案2 か 3 の変更とを合わせると
地面のアイテムも 0x8000 引いた値とならず、元のモデルID で認識されました

解析結果は別途あげるかも
ほんと、94様のおかけです
106
(1): 2018/05/20(日)20:08 ID:dYAM8.eM0(1) AAS
>>105様によるZeazyUO.exe書換え情報のおかげで、
モデルIDの取得・判別はうまくいくようになりました。
ありがとうございます。

なお、パケットF6を受信してもZeazyがスルーしているため、
船の移動時に自身ないしは同乗しているオブジェクトの位置情報が
更新されないという不具合もあったりします。
ただこれはZzInfo.getXYFromMemoryをオンにしてやれば
追従してくれるので問題はなさそうです。
107: 2018/05/23(水)02:33 ID:mCrbBH6c0(1) AAS
報告ありがとうございます。動いているようでよかったです。

F6 については 爺もハンドリングしてませんし、uohook 側での対応も難しそうそうなので
>106 の対処法が良いように思います。

(船の座標が変わった後、サーバーからプレイヤーの座標更新パケットが来るわけではなく
パケットのやり取り無しに、クライアント内部でプレイヤーの座標を再計算しているぽい?)

(爺内の座標とクライアント内の座標がずれたときは、何でもいいのでパケット受信すれば、
同期される作りになっています。なので、open paperdoll とか open status とか適当に
送信するのでもいけそうですが、それより >106 の方法が簡単ですね)

話変わって、パケット 78 についても潜在的には 1A と同じ問題を抱えていて
装備品やペットで 0x8000 以上のモデルID の場合 0x8000 を引いた値で認識される気がします。
省1
108: 2019/09/18(水)17:12 ID:/PTDBW8w0(1) AAS
パケットを、使って直接ログインさせたいのですが、何か参考になる情報は無いでしょうか。

爺の公式が健在な頃に落としたスクリプトは、クライアント上でID PASを入力する方式でした。
色々思案してるのですが、解決できません。
109
(1): 2019/09/19(木)01:24 ID:5jET.t2A0(1) AAS
C->S: 0x80: Account Login Request (Login Request)
S->C: 0xA8: Servers List (Game Server List)
C->S: 0xA0: Play Server (Select Server)
S->C: 0x8C: Play Server Accept (Connect To Game Server)

* ここまでの接続先IPはログインサーバー、次からの接続先IPはゲームサーバー

C->S: 0x91: Game Server Login
S->C: 0xA9: Characters List (Characters / Starting Locations)
C->S: 0x5D: Play Character (Login Character)

* C = Client, S = Server.
* 0x73 の Ping パケットが時々流れるらしい
省4
110: 2019/09/19(木)14:26 ID:lgHvX2bM0(1) AAS
>>109
ありがとうございます。

頂いた情報を元に、トライして見ます。
1-
あと 1 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.073s*