2010-06-05

統合後のエラー対策

統合されてキャラクター数が増えたことで、使っているアドオンのうち2つでエラーが出ていた。

一つは Inventory Viewer で、再配布できないのでやり方だけ。



まずは GUI (InventoryViewer.xml) から。


キャラクタータブは最大数分、あらかじめ作られていて必要なければ隠れている。
これを8キャラ分増やす。
そのまま右に並べるとえらいことになってしまうので、上に2段目を追加して対応する。

なお、最初から9キャラ分のタブがあるが、最後の1つはキャラクターを作り直したときなど、9キャラ目のデータが出来てしまったときのための緊急避難用。
右端に飛び出して表示されるので17 キャラ目として再利用する。


ここから修正内容。

1.まずはフレーム全体 (IVFrame) の高さをタブ1段分増やす。数字は割と適当。

593行目:
            <AbsDimension x="743" y="575"/>
修正後:
            <AbsDimension x="743" y="595"/>


2.Inventory Viewer の GUI は タブ (実際はボタン) とその下の盛り上がって見える表示枠部分がそれぞれ別で作られている。盛り上がって見える表示枠部分 (IVFrameBackdropFrame) を1段分下へずらす。

633行目~:
<AbsDimension x="0" y="80"/>
修正後:
<AbsDimension x="0" y="100"/>


3.左上のアカウントID表示部分がなぜか表示枠からの相対位置指定になっていて、表示枠と一緒に動いてしまうので、表示枠を下げた分だけ上へ戻す。

648行目:
                            <AbsDimension x="0" y="-48"/>
修正後:
                            <AbsDimension x="0" y="-68"/>


4.既存のキャラクタータブの上に2段目を追加する。

884行目~:
            <Button name="IVFrameCharTab1" inherits="IVFrameCharTabTemplate" text="Character1" id="1">

(中略)
            <Button name="IVFrameCharTab8" inherits="IVFrameCharTabTemplate" text="Character8" id="8">
                <Anchors>
                    <Anchor point="LEFT" relativeTo="$parentCharTab7" relativePoint="RIGHT">
                        <Offset>
                            <AbsDimension x="-2" y="0"/>
                        </Offset>
                    </Anchor>
                </Anchors>
            </Button>

まで、ずらっと並んでいるのをコピーしてそれぞれ 1~8を9~16に変える。
relativeTo のところは1つ前の番号。

元の9番は右端にはみ出して表示されるので、あえてコピーせず、17番に変更して使用する。


サンプル(8→16):
            <Button name="IVFrameCharTab16" inherits="IVFrameCharTabTemplate" text="Character16" id="16">
                <Anchors>
                    <Anchor point="LEFT" relativeTo="$parentCharTab15" relativePoint="RIGHT">
                        <Offset>
                           <AbsDimension x="-2" y="0"/>
                        </Offset>
                    </Anchor>
                </Anchors>
           </Button>

1からコピーして作った9だけはOffsetも上へずらす必要があるので <AbsDimension x="2" y="-12"/> くらいにする。


あとはスクリプト側 (InventoryViewer.lua) で17キャラ目まで表示できるようにすればOK。


サーバのキャラクター数上限はファイル先頭に定義してあるので17に直す。

29行目:
local IV_MAX_CHARS_PER_REALM = 9;
修正後:
local IV_MAX_CHARS_PER_REALM = 17;

ただ、これだけではちゃんと表示されないみたい。
直接数値を入れてるところがあったのでそれっぽいところを直す。

328 行目:
                    if ( NextAvailDisplayOrderNum > 8 ) then
修正後:
                    if ( NextAvailDisplayOrderNum > IV_MAX_CHARS_PER_REALM-1 ) then


3727行目:
    if ( not ( g_MoveSrcCharId > 0 and g_MoveSrcCharId < 9 and InsertPos > 0 and InsertPos < 9 ) ) then
修正後:
    if ( not ( g_MoveSrcCharId > 0 and g_MoveSrcCharId < IV_MAX_CHARS_PER_REALM
               and InsertPos > 0 and InsertPos < IV_MAX_CHARS_PER_REALM ) ) then


これで動く…はず。16キャラいっぱいまでは確認してないけど。


おまけ
elseif ( GetLanguage() == "JP" ) then の中で IV_ACCOUNT_SHOP, GCF_TEXT_BAG, GOODSPACK に適当な名前を割り当てると、それぞれ アイテムモール, アイテムウィンドウ, 有料アイテムウィンドウ が置き換わります。(Inventory Viewer内だけ)
デフォルトのままだと長すぎるんで適当な名前に変えてしまうと少しすっきり。

0 件のコメント:

コメントを投稿