/*--- 初心者向け講座 ---*/


1.簡単改造のススメ

EQのnewUIは簡単な編集で改変できるのでトライしてみましょう。
まず個人用のディレクトリ \%EverQuest%\uifiles\default を同じ \uifiles 下に
コピーして適当な名前(\myUI等)に直して下さい。
その \%EverQuest%\uifiles\myUI が改造するディレクトリです。
尚、Defaultディレクトリはパッチ対象なので変更が反映されません。


2.[xmlについて]

UIを改造する場合、大抵はxmlファイルを編集する事になります。
試しに先程作成したディリクトリ内の「EQUI_TargetWindow.xml」を開いてみましょう。
メモ帳でOKです。ウェブサイトのソースみたいだな、と思った方は鋭い。
xmlはhtmlと同じく単にタグを決めてデータを記述するだけの規格です。
ベースがhtmlなので決まり事もそれに準じています。

htmlとの違いで注意すべき点を上げると以下の通り。

・大文字小文字の違いで別物扱い
・タグは小文字限定
・終了タグの省略が出来ない
・書くべき内容が無いタグは空要素タグとして記述


3.[構造]

xmlファイルは普通にメモ帳で開けるテキストファイルです。
それらしいファイル名ですので「どれ」が「何」なのかすぐに解かると思います。

ファイル内は基本的にパーツとウインドゥの2段構成です。
便宜上パーツの事をコンポーネントと呼びます。正しい名前は知りません。
そのコンポーネントの色や形等の項目をプロパティーと呼びます。
これも正しい名前は知りません。
他にも妖しげな言葉の使い方をしていますがニュアンスで判断してください。

プロパティーに指定できる値のタイプは予め決まっています。
ここにいくつか例を上げます。

Boolean 型 → true|false。真偽どちらか。
Integer 型 → 整数値。小数点は使えない。
String 型 → 任意の文字列。
DrawTemplate 型 → ウインドゥ枠の絵柄種類。
ButtonDrawTemplate 型 → ボタンの絵柄種類。

宣言されたコンポーネント名はEQUIを通して一意である必要が有ります。
同じ名前は2箇所で使えません。

宣言されたコンポーネントが何処にも使用されなくともエラーは出ません。
自力でチェックしましょう。

EQUI_Animation.xmlで宣言されたコンポーネント
(およそ画像をコンポーネント化したもの)は全てのウインドゥから使用できます。
枠等はここで組み立てています。

画像ファイルは個別に読み込む事も出来ます。

他のxmlファイルをIncludeする事も出来ますが、
そのファイルが稼動中だとコンポーネント宣言の重複とみなされエラーとなります。

EQUI_Animation.xml以外で画像を宣言すると、
そのファイルの使用時に初めて読み込まれるようです。

詳しくは \EQ\uifiles\AboutSIDL.doc をご覧下さい。
(ってそんな事書いてないけどね)


4.[枠]

4-1.・枠のデザインを変える

ViewPointを使用してWindowを画面外に出している方が多いようです。
この場合黒マットの上に綺麗に並べたい訳ですが、
もし枠がマッチしていないと感じたなら他のスタイルに変えてみましょう。

xmlファイルを開き「Screen item(ウインドゥ本体の事)」を検索します。
例えばEQUI_Chat.xmlならば数行下にこのような文字列があると思います。
<DrawTemplate>WDT_Def</DrawTemplate>この「WDT_xxxx」が枠のスタイルです。「WDT_Inner」に変えます。
<DrawTemplate>WDT_Inner</DrawTemplate>窪んだ感じになります。

枠のスタイルは以下の5つが有ります。

WDT_Rounded 針金枠
WDT_RoundedNoTitle 針金枠タイトル無
WDT_Inner 窪み
WDT_Def 飾り枠
WDT_Def2 飾り枠タイトル無

ノーマルの窪み枠は太すぎるので、
私は該当ファイル「Windowpiece01.tga」を細工して細くしています(配布中)。

このファイルは他のウインドゥでも効果が有りますので是非差し替えて使ってください。

EQUI_Animations.xmlを細工しても同じ事が可能ですし、個人ではそうしているのですが
配布/編集/メンテの手間を考え今のような形にしています。


4-2.・タイトルを外す

「Screen item」を検索します。その数行下の<Style_Titlebar>true</Style_Titlebar>
<Style_Titlebar>false</Style_Titlebar>とします。

このままですと上辺が欠けた変なウインドゥになってしまうので
枠をタイトル無し用にします。<DrawTemplate>WDT_Rounded</DrawTemplate>
<DrawTemplate>WDT_RoundedNoTitle</DrawTemplate>とします。

4-3.・枠のサイズを変える

Window枠の大きさはファイルに書かれています。
「Screen item」を検索します。
数行下にこのような文字列があると思います。例はEQUI_TargetWindow.xmのもの。
<Size><CX>124</CX><CY>50</CY></Size>
この<124>が枠の幅、<50>が枠の高さです。ここでは枠の高さを低くしてみます。
<Size><CX>124</CX><CY>42</CY></Size>
整数値は4ピクセルずつ動かすと解かり易いと思います。
枠の大きさが可変の場合はこの値は初期値として使用され、以降無視されます。


4-4.・枠を外す

思い切って枠無しにします。
「Screen item」を検索します。その数行下の
<Style_Border>true</Style_Border>
<Style_Border>false</Style_Border>とします。
タイトル文字列が表示されてしまったら、
ウインドウスタイルを変えて外します。

枠とタイトルを外し、更にサイズ変更可とすると
移動できないウインドウになってしまいますので注意して下さい。

プロパティー表


プロパティー説明タイプメモ
<Style_Transparent>背景透過BooleanBackGroundが透過する
<TooltipReference>チップヘルプStringカーソルを合わせると表示される文字列
<DrawTemplate>枠スタイル定数DrawTemplate{WDT_Rounded,
WDT_RoundedNoTitle,
WDT_Inner,
WDT_Def,
WDT_Def2}
<Style_Titlebar>タイトル有無Booleanタイトル文字列は<Text>
<Style_Minimizebox>最小化ボタン有無BooleanPopupMenuにも影響
<Style_Closebox>閉じボタン有無BooleanPopupMenuにも影響
<Style_Border>枠有無Boolean<Style_Sizable>と共にfalseにしない事
<Style_Sizable>枠の変形許可Boolean<Style_Border>と共にfalseにしない事


5.[ゲージ]

ゲージはEQUI_Animation.xmlにて画像と大きさを指定し、色と位置を指定して使用します。

Windowpiece01.tga -> EQUI_Animation.xml -> EQUI_xxxxx.xml
画像 形、大きさ 色、位置

5-1.・ゲージを短くする

HP等の棒グラフ(ゲージと呼びます)の長さはは100pxです。

このゲージ幅がUIデザインの基準となる場合が多いので、試しに短くしてみましょう。
EQUI_Animation.xml を開きます。

「Gauge」で検索しますと4つのコンポーネントが見つかる筈です。
それぞれの意味は以下の通り。

A_GaugeBackground 背景
A_GaugeFill ゲージ
A_GaugeLines ツヤ、目盛り
A_GaugeLinesFill 5倍副ゲージ

色の透明度はWindowpiece01.tgaで操作しますが、Photoshop等が必要です。

A_GaugeFillを例に改造します。デフォルトでは以下の通り。

<Ui2DAnimation item = "A_GaugeFill"><Cycle>true</Cycle> <br><Frames><Texture>window_pieces01.tga</Texture> <br><Location><X>110</X><Y>20</Y></Location> <br><Size><CX>100</CX><CY>8</CY></Size><Hotspot>[省略]

サイズプロパティーを以下のように編集します。
<Size><CX>80</CX> <!-- 100 --> <CY>8</CY></Size>

で括られた部分はコメントで、実行時には読み込まれませんので書かなくて構いません。
これでゲージが短くなりました。背景なども同様に短くすれば完成です。
折角ですからウインドゥの幅も揃えてあげてくださいね。
尚、使用時にいくら幅を指定しても、見える範囲が変わるだけです。


5-2.・ゲージの追加

ゲージは使い勝手が良く、名前付けにだけ気を付ければ大抵問題なく他のウインドゥに移植できます。
元となるソースをコピーして使ってみましょう。
又、ネームラベルとの位置も細かく指定できるので便利です。
ノーマルのPlayerGaugeにはしか有りませんが、も使用できます。
詳細は \EQ\uifiles\AboutSIDL.doc をご覧下さい。
ペットのゲージは少し注意が必要で、PCゲージにあまり大きく被せ過ぎると、
クリックをペットゲージが受けてしまいPCゲージがクリック出来なくなります。
いずれにせよ、ゲージや%ラベルはリソースを多く消費するのであまりたくさん載せないほうが良いと思います。


6.[ラベル]

ラベルは比較的自由に編集、追加できます。
色、文字の大きさ、透過度、文字揃えも指定できます。
追加したい場合は適当なラベルをコピーして直せば良いと思います。
但し、名前が重複しないよう気をつけて下さい。


7.[カーソル]

カーソルにはマスクが必要です。マスクの無いカーソルは何も表示されません。
マスクは透明度が指定できますから、炎なども表現しやすくなっています。
このマスクはPhotoShop等を使用しないと編集できません。
PhotoShopLEやElementで編集、保存するとマスクが消えてしまいますので注意して下さい。


8.[邪魔なコンポーネントを削除する]

「呼び出し」が有るコンポーネントは削除できないようです。
ボタンなどがその例で、消してしまうと押したことによって発生するイベントを待ち受けるコードがエラーを発生するようです。
この場合は位置を操作してウインドウから出してしまいます。
コード上邪魔な場合はエントリーだけ残して削除してしまう事も出来ます。
但しこの方法で正しいかどうかは知りません。

例)EQUI_GroupWindow.xmlのInviteボタンの非表示
<Button item = "GW_InviteButton"><ScreenID>InviteButton</ScreenID></Button>
9.[Delphiで作る]

と言ってもDelphiからウインドゥファイルが生成出来る訳では有りません。
コンポーネントの位置を検討するのに便利です。


10.[共有ファイルで効率化]

編集してEQを起動してチェック、駄目ならまたEQを終了して…の作業はとても大変です。
そこでEQを起動中にxmlを編集する方法を考えました。

サブPCをLANで繋ぐ
\EQ\uifilesを共有
サブPCから編集
/loads xxxx 1

くれぐれも私に共有化について質問しないようにして下さい。
もちろん一切の保証をしません。


11.[ActionWindowのDefaultPage]

Zoneすると必ずメインページに戻ってしまいますが、実際にはSocialなどが開いてくれていた方が便利です。
色々と検討したのですが、これに対しての対策は出来ていません。
案1.Main以外をDefaultにする
>何処にも設定が見当たりません。エントリーの順番を変えても駄目でした。

案2.Mainとその他を入れ替える
>ページを移動するとボタンがエラーを返します。

案3.Socialウインドゥを作る
>同じく元の位置から動かせません。

以上の結果からMainのボタン類を捨て、代わりにおしゃれなアイテムを載せるのがお勧めです。
ステータス等が良いでしょう。
因みに私、Actionは非表示ですので、個人的にはどうでも良かったりします。


---------------
くろゆき

戻る⇒今いたページ