【会員制】ZeazyUO総合スレ03【shadow氏】 (111レス)
【会員制】ZeazyUO総合スレ03【shadow氏】 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: 名も無きチーター [sage] ZeazyUO等Shadow氏のツールについてまったり語るスレです。 ZeazyUOはスクリプトツールです。 スクリプト投稿は会員になって本家サイトにお願いします 規約等は本家で確認してください ZeazyUO公式サイト http://www.kurinton.net/~shadow/ Q. 動きません。 A. UOHOOK5.DLLが必要です同じ場所もしくはシステムフォルダにいれてください。 Q. UOHOOK5.DLLはどこに有るの? A. 付属していませんので各自で用意してきてください。 Q. 〇〇のスプリクトください A. 会員になって本家で手に入れるか、自作してください、作れないなら諦めましょう。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/1
91: 名も無きチーター [sage] 結果的に動作しなかったので、自分用メモ - 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系のソースも見たい [参考] EUO の pathfind の実装 ttps://github.com/EUOCheffe/easyuo/blob/master/uo/uoevents.pas#L379 UOInterface の pathfind の実装 ttps://github.com/jaryn-kubik/UOInterface/blob/master/UOHooks/OtherHooks.cpp#L66 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/91
92: 名も無きチーター [sage] デバッガでアタッチしてたら警告が出た ビビリなのでエミュ鯖ですが・・・本番サーバーでも出るかもですね ttps://www.axfc.net/u/3907468 爺の更新が止まっても uohook 側で機能追加していく道筋は示せたかも http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/92
93: 名も無きチーター [sage] おかげさまでZeazyUOが今でも使えるようになっていますが ZeazyUOがパケットF7に対応していないため、 HSタイプの船などでオブジェクトを認識していないようです。 (船倉のモデルやidがとれない) パケットF7はパケットF3を複数内包している形なので、 ためしにその分を丸ごと切り出して渡してみましたが 連結されたパケットを許容していないZeazyには反映されませんでした。 どのようにしたらいいものでしょう・・・。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/93
94: 名も無きチーター [sage] ZeazyUOがGuideではなくPOLに準拠した処理が原因だったようです。 uohook5.cppで *(u16*)(p+ 9) = pf3->amount1; *( u8*)(p+11) = 0; // ZeasyUO用にここ追加 //*(u16*)(p+11) = pf3->x |= 0x80000000; //ZUOスレ 532様のオリジナルの修正 としたら(確認した範囲では)モデルやカラーが取得できました。 ただし、やはり古いせいかモデルが0x8000以上のものでは その値を引いたものとして扱わないといけないようです。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/94
95: 名も無きチーター [sage] 検証ありがとうございます。 HS を持っておらず、何が問題なのかついていけてないのですが、 F7 が来たら F3 を複数送信するようにしてみたら、UOHOOK の F3 to 1A の処理でうまくいってなさそう、 ということですか? で、POL のこの処理を実装したら、HSタイプの船のデルやカラーが取得できました、ってことですか? If (Graphic & 0x8000) BYTE Increment Counter (increment graphic by this #) あと、質問ばかりですみませんが、↓はスクリプト内での話ですか? >ただし、やはり古いせいかモデルが0x8000以上のものでは >その値を引いたものとして扱わないといけないようです。 ZeazyUO 本体は POL 準拠というのが分かったのはとても有用です POL 準拠の上記処理を入れることは可能です http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/95
96: 名も無きチーター [sage] 連投すみません > *( u8*)(p+11) = 0; // ZeasyUO用にここ追加 ↑は、パケット 1A に一つフィールドを追加したってことですよね で、F7 to F3 to 1A のときは、multi だから 0 をセットしても、たまたま動いたってことでしょうか? multi 以外で model_id が 0x8000 を超えた時に、何の値セットすればよいのか不明で、ちょっと困ってしまいました ちなみに Razor は model_id & 0x7FFF としていて、フィールドを追加することはないようです(見てるソースが古いかもですが) http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/96
97: 94 [sage] >>95 >ZeazyUOがGuideではなくPOLに準拠した処理が原因だったようです。 すみません、私の勘違いです。 よく読んだらGuideもPOLも表現が違うだけで、同じでした。 今回の発端はアクセスできるオブジェクトのモデルIDに 0x8000以上の値をもつものが追加されていたことによるものです。 (簡単に見た限りでは徳之島船の「船倉」が0x916F~0x9177) そのため、ZeazyUO側の解釈ではフラグビットが立っているとみなされ、 正常なパケット扱いされずにオブジェクトの登録がされなかったようです。 対処としてF7パケットに対してはなにもせずスルーのまま、 convert F3 to 1Aのところで上記条件の場合にフィールド追加 という形で認識が正常に行われるようになりました。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/97
98: 94 [sage] 追加部分に書き込むべき内容については全く不明です。 クライアント(ZeazyUO)側へのものであることから>>94では とりあえず0を入れてみた感じです。 https://www.axfc.net/u/3910789?key=1a としたのが現状で、確認した狭い範囲の中では特に異常はなさそうです。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/98
99: 94 [sage] 訂正: 変更部分ミスってます。構造体の配置間違ってる http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/99
100: 名も無きチーター [sage] 未確認なため、これらはすべて妄想です 修正案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; ※全角空白注意 何れにせよ、スクリプト内では モデルID から 0x8000 を引いた値として認識されるなら、固定長で扱える分、修正案1 が良さそうです ちなみに、532様のすごいところは、全てのフラグを立てることでパケットを常に固定長として扱えるようにしているところ [仮説] - art.mul 内では同じモデルでも、向きや色毎に異なるモデルID を持っているが、クライアント内ではそれらは同一のモデルID(基本モデルID と便宜的に呼ぶ) として扱われている - 基本モデルID から art.mul 内の向き別・色別モデルID を求めるために、1A の追加フィールド (pf3->direction フィールド) が存在する - 爺本体がこの追加フィールドを使用していないのであれば、修正案2 と修正案3 はどちらであっても違いはない。(描画のために必要な値で、爺では使用していない可能性が高い) [制限事項] - 0x8000 以上のモデルID を持つモデルは、スクリプト内では 0x8000 を引いた値として認識される 例) MODEL.TokunoSensou = 0x916F - 0x8000 - スクリプト内では、本当の 0x116F と 0x916F とを区別できない http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/100
101: 名も無きチーター [sage] >98 がリンク切れだったのですが、>100 は、その意図を汲み取ってると思ってます ちなみに、0x8000 を引いたモデルとして認識されてるなら、アイテム名も変わってしまうんでしょうか? 自分で試せって感じですが… http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/101
102: 94 [sage] >>100 修正案1にならってMSBを常時1ないしは0にしてみたところ、 サイズさえあわせておけばとりあえずトラブルはなさそうです。 ざっくり調べたところ、0x8000以上のモデルIDは結構使われているようです。 見た感じUOHS以降に追加されたものがそれにあてはまり、 今現在は0xA12Dまでが使用(準備)されているかと思われます。 なので、特定のオブジェクトを検索する際にはモデルIDだけでは よろしくない場合もあることを念頭におく必要があるかもしれません。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/102
103: 94 [sage] 寝ぼけてたようで>>102の修正です。 件の1バイトはどうやらMultiオブジェクトにのみ関わるようです http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/103
104: 名も無きチーター [sage] 検証ありがとうございます。とても助かります。 当方でも試したところ 修正案1 (追加フィールド無し)は、 - ルナ場内の Moonstone Crystal も徳之島船の船倉 cargo hold も認識しなかった 修正案2 と修正案3 (追加フィールドあり)は、 - 両方ともルナ場内の Moonstone Crystal を 0x9CBB ではなく 0x1CBB としてを認識した - 両方とも徳之島船の船倉 cargo hold を 0x916F ではなく 0x116F として認識した - ただ、ヘイブンの徳之島船の船倉は時々うまく検索にヒットしなかった の結果となりました。94様とは修正案1 の結果が異なるようですが、修正案2 か 3 が無難かもです 別の検証で、pilow (緑地に金色のハート) は、バックパック内では 0x9E1D として認識しますが、 地面に置くと、0x1E1D として認識されます この辺の違いも考慮してスクリプト書く必要がありそうです 理想は、爺本体のバイナリ書き換えたいですが大変そう… あと、0x8000 を超えるモデルID については、当方でも画像を作りましたので参考まで ttps://dotup.org/uploda/dotup.org1533922.jpg.html ttps://dotup.org/uploda/dotup.org1533923.jpg.html ttps://dotup.org/uploda/dotup.org1533924.jpg.html http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/104
105: 名も無きチーター [sage] 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様のおかけです http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/105
106: 名も無きチーター [sage] >>105様によるZeazyUO.exe書換え情報のおかげで、 モデルIDの取得・判別はうまくいくようになりました。 ありがとうございます。 なお、パケットF6を受信してもZeazyがスルーしているため、 船の移動時に自身ないしは同乗しているオブジェクトの位置情報が 更新されないという不具合もあったりします。 ただこれはZzInfo.getXYFromMemoryをオンにしてやれば 追従してくれるので問題はなさそうです。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/106
107: 名も無きチーター [sage] 報告ありがとうございます。動いているようでよかったです。 F6 については 爺もハンドリングしてませんし、uohook 側での対応も難しそうそうなので >106 の対処法が良いように思います。 (船の座標が変わった後、サーバーからプレイヤーの座標更新パケットが来るわけではなく パケットのやり取り無しに、クライアント内部でプレイヤーの座標を再計算しているぽい?) (爺内の座標とクライアント内の座標がずれたときは、何でもいいのでパケット受信すれば、 同期される作りになっています。なので、open paperdoll とか open status とか適当に 送信するのでもいけそうですが、それより >106 の方法が簡単ですね) 話変わって、パケット 78 についても潜在的には 1A と同じ問題を抱えていて 装備品やペットで 0x8000 以上のモデルID の場合 0x8000 を引いた値で認識される気がします。 まあ、今は問題起きてないようなので、その時が来れば修正する感じですかね http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/107
108: 名も無きチーター [sage] パケットを、使って直接ログインさせたいのですが、何か参考になる情報は無いでしょうか。 爺の公式が健在な頃に落としたスクリプトは、クライアント上でID PASを入力する方式でした。 色々思案してるのですが、解決できません。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/108
109: 名も無きチーター [sage] 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 パケットが時々流れるらしい * 下記リンク先を参考にしただけで、実際に試したわけではないので誤っている可能性があります * Razor でパケット記録して観察するとよいと思います ttps://sites.google.com/site/ultimaonlineoldpackets/protocol/login-server ttps://sites.google.com/site/ultimaonlineoldpackets/protocol/game-server-login http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/109
110: 名も無きチーター [sage] >>109 ありがとうございます。 頂いた情報を元に、トライして見ます。 http://jbbs.shitaraba.net/bbs/read.cgi/game/39652/1302364293/110
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 1 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.141s*