CraftJapanizer仕様解説:やれなかったこと

<<Questデータの圧縮>>

Questデータは、ファイルの状態で8MBくらい、Loadされると10MB↑になり、他のaddonと比べると容量が大きい。
なので、データを圧縮して、小さくしようと思っていた。
luaの標準機能には、圧縮する関数などはないので、シンプルなlzwあたりを自作して対応しようとした。(QuestHelperもlzwで圧縮している)

が、Quest 1個単位で圧縮すると、容量的には変わらないか、むしろ増えてしまうということになる。
圧縮するには、データは大きいほうがよいので、例えば100個単位とか、500個単位とかでまとめて圧縮するようにしたほうがいい。

そこで、その100個単位とか500個単位とかに分類する必要がでてきて、例えば、陣営で分けたり、Lv、エリアなど、いくつか組み合わせて分割しようと思っていたところで、開発は終了してしまった。

<<Quest受領時の判定率向上>>

QuestGiver(NPC)のIDが取れることがわかったので、これをQuestIndexに加えて、判定材料に加えれば、現状よりも向上すると思われる。
posted by Astal at 09:59| Comment(0) | CraftJapanizer | このブログの読者になる | 更新情報をチェックする

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 | このブログの読者になる | 更新情報をチェックする

2012年07月21日

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

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

Achievementの日本語訳は、GameTooltipとItemRefTooltipに追加

AchievementはItemRefTooltipの表示の際には

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

イベントが発生するため、これをhookすることで対応できる。
しかし、直接、Achievement IDを取得する手段がないため、Achievementタイトルと陣営IDで
Achievement IDを特定するようにしてある。


Achievementのウィンドウでは、そもそもマウスオーバーでGameTooltip自体が表示されないため、
上記のイベントは発生しない。
そこで、このウィンドウのLoadをhookして、原文と日本語訳を表示する対応を行っている

AchievementFrame_LoadUI

をhookして

AchievementFrameAchievementsContainer.buttons
AchievementFrameStats.buttons
AchievementFrameSummaryAchievements.buttons

のボタン全てに日本語を表示する処理を追加している


■ 備考
GameTooltip : ItemやSpellにカーソルをあわせると表示されるTooltip
ItemRefTooltip : チャットのリンクなどをクリックすると、中央下段に表示される小ウィンドウ
posted by Astal at 20:51| Comment(0) | CraftJapanizer | このブログの読者になる | 更新情報をチェックする

2012年07月19日

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

ファイル
CraftJapanizerGlyphToolTip.lua
(CraftJapanizerToolTip.lua)
CraftJapanizerTooltip.xml

Glyphの日本語訳は、CraftJapanizer独自のCraftJapanizerAssistTooltipに表示
CraftJapanizerAssistTooltipはGameTooltipTemplateを継承している

GlyphのTooltipの表示の際には、SpellのときにhookしたOnTooltipSetSpellのイベントは発生しない。(ItemのOnTooltipSetItemも発生しない)

そのため、GlyphウィンドウのLoadをhookしてイベントを追加している

GlyphFrame_LoadUI
http://wowprogramming.com/utils/xmlbrowser/live/FrameXML/UIParent.lua
のfunction GlyphFrame_LoadUI

GlyphFrameScrollFrame.buttonsから取得できるボタン全てのOnEnter/OnLeaveイベントに日本語訳の表示する処理を追加している
これは、ウィンドウ右側のリストに表示されるものの日本語表示対応。

さらに、

GlyphFrameGlyph_OnEnter
GlyphFrameGlyph_OnLeave
http://wowprogramming.com/utils/xmlbrowser/live/AddOns/Blizzard_GlyphUI/Blizzard_GlyphUI.lua

にもイベントを追加している
これは、メインウィンドウ側(Glyphをソケットに設定するところ)の日本語表示対応。

■ 余談
Glyphは、以前は、OnTooltipSetSpellかOnTooltipSetSpellかのイベントでSpell IDかItem IDが取得できたが、独自のGlyph IDというのが割り当てられるようになったっぽく、それ以降、イベントが発生しなくなった。

また、wowheadがGlyph IDには対応していなかったため、Glyph IDから原文を取得することができなかった。
(ゲーム内からがんばって取得するというのもあるけど、やらなかった)
そのため、Glyphは、Glyph名称からSpell IDと特定するという方法で対応している。
posted by Astal at 23:04| Comment(0) | CraftJapanizer | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

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