したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

技術情報交換スレ

1管理人★:2004/06/16(水) 20:44
RTXのみならずROや支援ツール全般に関する技術的な情報を交換するスレです。
コーディングに詰まった作者が他力本願的に知恵を増やす目的で設立されましたが、
それだけでなく広く情報交換に使っていただけることを願っています。

管理人の手持ちの情報は少ないですが、RTX/RoTimerの内部動作に関する
御質問などでしたら、できるだけお答えしたいと思います。

規約云々や解析手法の是非などは別スレ/別BBSへ誘導のこと。
水面下に落ちるまではsage縛りで。

129Mystle </b><font color=#FF0000>(M.B.S.4s)</font><b>:2004/12/12(日) 17:19
RTXの3D計算には新型、旧型の2種類の方法があり、用途に応じ使い分けています。
まず新型から。

ROでは地面に配置されたり除去されたりするオブジェクトが大きく分けて3種類ありまして
・キャラクタオブジェクト (PC、NPC、敵)
・スキルオブジェクト (範囲魔法で敷設されるやつ)
・アイテムオブジェクト (ドロップアイテム)

まず基底となるオブジェクトクラスがあり、ここでゲーム内座標、スクリーン描画座標、通しID
(キャラでいうアカウントID)、種別ID(キャラでいう職業ID)、スプライトナンバーなどが定義されています。

ここからキャラクタ、スキル、アイテムの各オブジェクトクラスが派生しており、例えばキャラクタオブジェクトなら
さらに、移動速度や直前の立ち位置、状態変化、髪型、詠唱バークラスへのポインタ、などなど
をメンバとして持っています。

基底クラスにはコンストラクタ/デストラクタしか無いようですが、キャラオブジェクトには移動や詠唱開始などの
メンバ関数もたくさんあります(呼ぶとアクションがみられる)。

プレイ中は、画面上に表示されているオブジェクトの数だけこれらクラスのインスタンスが生成されて
おり、そのすべてがキャラ/スキル/アイテムの3つのコンテナ(std::list)で管理されています。

RTXはこれらコンテナをダイレクトに読みに行くことで、パケットとは無関係に、任意の瞬間に画面上の
全てのオブジェクトの情報へアクセスすることを可能にしています。

これには、その瞬間におけるオブジェクトの(計算済み)描画座標も含まれており、したがって
このクラスさえ解析できれば、キャラや敵の動きに完璧に同期した描画をするのは容易です。

支援スレではVer6の4T4lYjSM氏がかなり真実に迫られています。氏の呼ばれるところの
CoordInfo なる構造体は、実はROの座標管理クラスにほかならず、例えば現パッチなら、
CoordInfo+12から前述のコンテナが置かれているのです。
(ちなみにCoordInfo+4は親ポインタ(to MapInfo)、CoordInfo+0はメンバ関数のベクタテーブル)

余談ですがPvPではこのコンテナの一部が無効化されます(=PvPで色々動かない理由)。

130Mystle </b><font color=#FF0000>(M.B.S.4s)</font><b>:2004/12/12(日) 17:20
さて、一方で、御指摘の通りRTXはオブジェクトが存在しなくても3D描画を可能としています。
こちらは任意に指定したゲーム内座標を、地道に行列変換して出しています。

オブジェクトクラスの解析に成功するまでのRTXでは、すべての3D描画がこの方法でした(=旧型)。
今では、M2Eなど地面もののみに使われています。

順番としてはアフィン変換→射影変換で、3Dで使うごく基本的なやり方しか用いていません。
アフィン行列はメモリのどこかにあります。探してみてください。
Z値(≒地形情報)はgatをメモリから読むか、自前でdata.grfから取ってください。

やっかいなのは射影変換で、問題は視錐台の適用と、アスペクト補正です。

褒められた方法ではありませんが、私はカメラの倍率制限をメモリエディタでいったん外し、
正常に描画される上限と下限の倍率を繰り返し調べ、平均値を取って測定誤差を切り落とす
ことで視錐台の前後を推定しました。

アスペクト比に関しては、ROがどんなスクリーンサイズでも上下方向のマス数は不変であるという事実を
押さえておくと、画面の横サイズから計算することができます。

このふたつがクリアできれば射影変換行列が決定されます。
適切に変換されると、Z値も正しく生成されますので、ポリゴンを描くと勝手に格好よく
陰面処理までかかります。

がんがってください。

131128:2004/12/13(月) 18:43
>>129-130
詳しい解説ありがとうございます!
新型はちょっと手に余りそうなので、旧型の方から挑戦してみます!

132人柱さん:2005/01/09(日) 18:17
rxv用のパケログ変換機を作ろうと思います。
パケログの最初にあるR0063はrtxが作成したタイムスタンプだと思いますが、
詳細はどうなっているのでしょうか。

133Mystle </b><font color=#FF0000>(M.B.S.4s)</font><b>:2005/01/13(木) 21:21
>>132
タイムスタンプと、パケログの正規性チェック(MD5のさらにダイジェスト)の双方を兼ねています。
性質上詳細は公開されていませんが、別になくとも動きますので御安心ください(´・ω・`)

134人柱さん:2005/01/14(金) 01:39
>>133
どうもありがとうございます。無しでやってみようと思います。

135人柱さん:2005/01/18(火) 18:05
recvフックのことで質問があります
いまさらながら19系の解析やってるんですが
ragexeのrecv書き換え→外されたらIAT書き換え→外されたら次回から(?)エクスポートT書き換え
の最低三段重ねまでは間違いないと思うんですが
逆ったの元に自分でコード起こすとですね、IATまでは再現できるんです
でもOSがMeだとエクスポートTだけが書き換わらない
もっとゆうとDLLがシステム領域で保護かかってて書き換えられない
でもRTXではちゃんと書き換わってるんですよね
どこがまずいんでしょう ヒントでもいいから教えてほしいです

136Mystle </b><font color=#FF0000>(M.B.S.4s)</font><b>:2005/01/20(木) 17:38
>>135
DLLのExport Table書き換えの話ですね。

Windows 9x系ではシステムDLLが2G-3G(共有領域)にあり、書き込み可能属性にするのに
VirtualProtect() を投げても、レジストされてしまいます。

とはいっても相手は 9x ですから迂回策は色々あるわけで。ring-0 入ったりとかね。

RTX では VxD Service Call (VMM_PageModifyPermissions) を呼ぶことで
保護属性を強制的に書き換えています。
インラインアセンブラを使っているので、逆汗では解りづらかったかもしれません。

137本刷れより:2005/03/14(月) 08:24:38
自分のツールにちゅぺるぶれいかーを付けたいのですが
キスはどうやって出してるんでしょうか?

138</b><font color=#FF0000>(M.B.S.4s)</font><b>:2005/03/14(月) 23:20:31
エモーション受信OP <R00C0> を捏造して自分に喰わせてます。
OPの諸元と受信OPの喰わせ方は調べてみてください。

よりスマートな方法としてはキャラクタオブジェクトのメンバ関数として直接エモ関数をコールする、という
のがあります(現exeならvPtrの22つ目かな?)。
テーブル上の関数位置が頻繁に変わるので、自動解析必須です。

139人柱さん:2005/04/05(火) 16:13:32
>>議論スレ4-895
背景画像はRTX-FAQのColor Simulatorから拝借してもいいかな…と思いつつ。
「指定SSに重ねる」というのは、人によって異なるようなウィンドウサイズ・
チャット窓の大きさ・各種ウィンドウの位置・状態アイコンやミニMAP(これは固定か)
との兼ね合いを見れるようにという意味だったんだ。
考えてみれば、コンパスは(位置確認のため)ここに重ねなければならないし、
M2Eはマウスドラッグできる四角い枠をここに用意すればいいとも思った。
M2Eスキル毎のチェックボックス用意して、チェックしたスキルの色の枠を
表示させるっていうのが自分のイメージ。そうすれば重なりもチェックできるし。
大きさは、小さすぎなければ適当で。

コンパスサイズはズーム率と連動して大きさ変わるから、適当でよさそう。

透過処理は…GDI+ならそのままできたと思う。
VB6はさっぱりわからん…。Winアプリ自体ニガテだけど。
ttp://www.vbaccelerator.com/home/VB/Type_Libraries/GDIPlus_Type_Library/article.asp

あと細かいところ。
>ALL_REDEMO
「赤エモタイマー」

>M2E設定
スキル名をゲーム内表記に。

>ビデオ録画設定
>有効/無効
「RoVideo再生設定」「再生中タイマー表示」

140〜=□○0 </b><font color=#FF0000>(d5YL6IWA)</font><b>:2005/04/06(水) 15:14:21
>>139
スキル オオスギ カイハツ マンドクセ('A`)

現状の最新版はこちらから
ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/6346/1093533016/898

最優先で修正・実装して欲しいモノってなぁに?


現状報告
FixedTimer・MinSec・BitFlag・対人M2E部分のスキル定義中
FixedTimerのスキル単位設定に取り掛かる。しかしスキル定義がまだ終わってない罠
モウダメポ lliorz=3

需要がある限り、作らねばと思っている
(`・ω・´)がんばるよ!




しかし・・・Now仕事中(・3・)

141|ω・`) </b><font color=#FF0000>(d5YL6IWA)</font><b>:2005/04/08(金) 09:07:19
質問です
FixedTimer・MinSec・M2E・BitFlag・対人M2E
それぞれに反映されるスキルって何でしょう?
いらないスキルを省いていきたいので・・・orz


例:
 ノービス:基本スキル>いらない
 マジシャン:FW>FixedTimer・M2E・(MinSec)


・・・てな具合に、誰か列挙きぼんぬ (;´Д`)人オナガイシマス




掲示板管理者へ連絡 無料レンタル掲示板