2012年07月22日

CraftJapanizer仕様解説:Questの日本語の表示

<<QuestLogの日本語の表示:標準>>

ファイル
CraftJapanizerQuestLog.lua
(CraftJapanizerQuest.lua)
CraftJapanizerQuestLog.xml
(CraftJapanizerTemplate.xml)

QuestLogのQuest情報の表示は

QuestLogTitleButton_OnClick
http://wowprogramming.com/utils/xmlbrowser/live/FrameXML/QuestLogFrame.lua
のfunction QuestLogTitleButton_OnClick

をhookすることで、イベントを捕捉できるため、これをhookし、
日本語訳を表示する対応を行っている。

<<QuestLogの日本語の表示:QuestGuru対応>>

基本は、上記QuestLogと同じ。

QuestGuruのversion 1.xまでは、QuestLogウィンドウをオリジナルのものに
差し替えていたため、イベント処理を変更している。
version 2.x以降は、標準のQuestLogを使用しているので、特に対応なし。

version 1.xまでは

QuestGuru_QuestLogTitle数値

というボタンに、QuestTitleを表示して、このボタンをクリックすることで、
Questを表示するという動作をしていたため、このボタンのOnClickをhookし、
Questを表示するようにしてある

<<QuestLogの日本語の表示:Carbonite対応>>

基本は、上記QuestLogと同じ。

Carboniteは、かなり手癖が悪く、オリジナルのQuestLogTitleButton_OnClickを
独自のものに置き換えているため、QuestLogTitleButton_OnClickをhookすることができない。

そこで

QuestInfo_Display
http://wowprogramming.com/utils/xmlbrowser/live/FrameXML/QuestInfo.lua
のfunction QuestInfo_Display

をhookすることで、対応している。

<<WoldMapのQuestの日本語の表示>>

ファイル
CraftJapanizerWorldMapQuest.lua
(CraftJapanizerQuest.lua)
CraftJapanizerWorldMapQuest.xml

WorldMapに進行中のQuestが表示されるようになり、CraftJapanizerでは

WorldMapFrame_SelectQuestFrame
http://wowprogramming.com/utils/xmlbrowser/live/FrameXML/WorldMapFrame.lua
のfunction WorldMapFrame_SelectQuestFrame

をhookして、日本語を表示するようにしている。

<<Quest受領時、完了時の日本語の表示>>

ファイル
CraftJapanizerQuestGossip.lua
(CraftJapanizerQuest.lua)
CraftJapanizerQuestGossip.xml
(CraftJapanizerTemplate.xml)

QuestGiver(NPC)からQuest受領時、完了時に日本語を表示しているが、
表示されるFrameから、どの状態か判断できる

受領時:QuestFrameDetailPanel
完了時:QuestFrameRewardPanel

これらのFrameのOnShowをhookして、日本語表示の処理を行うのだが、QuestLogやWorldMapのときと違い、
Quest IDを直接取得する手段が存在しない。(Questタイトルを取得することは可能)

そこで、CraftJapanizerでは、以下のような方法で、QuestタイトルからQuest IDを特定している。

受領時
CraftJapanizerのQuest用の独自Indexを使用して、タイトルからQuest IDを特定している。
しかし、同名のQuestタイトルが複数ある場合は、陣営IDとobjectiveのキーワードを使用して、判定を行うが、100%判定可能ではない。
おそらく、1-2割くらいは、判定できないものがあると思われる(要検討課題)

完了時
QuestLogのデータから同名のQuestタイトルを探し出して、Quest IDを取得する。
同名のタイトルがある場合や、(おそらくないと思うが)QuestLogから同名のタイトルのQuestが取得できなかった場合などは、受領時と同様に、独自Indexを使用した解決を行う。

備考
QuestGiver(NPC)に話しかけたときに、受領時、完了時以外だと

QuestFrameGreetingPanel
QuestFrameProgressPanel

というFrameが表示される。
CraftJapanizerでは、表示済みの日本語訳ウィンドウがあった場合は、閉じている。

<<ItemRefTooltipの日本語の表示>>

ファイル
CraftJapanizerItemRefTooltip.lua
(CraftJapanizerToolTip.lua)

チャット欄にQuestのリンクをはることが可能で、それをクリックすると、ItemRefTooltipが表示される。

OnTooltipSetQuest
http://wowprogramming.com/docs/scripts/OnTooltipSetQuest

のイベントが発生するので、これをhookすることで、日本語訳を表示している。
しかし、Achievement同様、直接、Quest IDを取得することはできない。

Quest完了時同様の方法で、Quest IDを特定している。

備考
Questの日本語訳データは、QuestLogの日本語訳ウィンドウに表示することをベースに考えられているため、
ItemやSpellのデータのように、ToolTipに表示することを考慮して改行を適宜入れた形にはなっていない。
そのため、ItemRefTooltipへそのまま表示すると、やたら横長のウィンドウになってしまうため、
適当に改行をいれるロジックを含めてある(かなり適当だが、マルチバイト文字の途中に改行が入らないように考慮してある)

<<NPC(3D)ウィンドウ対応>>

ファイル
CraftJapanizerQuestLog.lua
CraftJapanizerQuestGossip.lua


Questによっては、探すNCPや、倒す敵などの3D映像の小ウィンドウが表示される場合がある。
CraftJapanizerのウィンドウの表示位置と同じ位置であるため、ウィンドウがかぶってしまうため、
この3Dウィンドウを、CraftJapanizerの横に移動している。

該当のウィンドウは

QuestNPCModel

というウィンドウなので、これを移動している。

posted by Astal at 00:36| Comment(0) | CraftJapanizer | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。