一括表示

記事No: 21458
タイトル一部モンスターのHP表示欄の位置を変えたい
投稿日: 2022/08/13 15:36
投稿者Tark [rerrrrrdi278(海外)]

[やりたいこと]
戦闘画面の、モンスターのHPなどが表示される欄の表示位置をモンスターごとに変更したい

[やってみたこと]
X[戦]敵キャラ_単体描画で表示位置を色々弄ってみた

[やってみた結果、どううまくいかないか]
移動自体はなんとかできたものの、グループ内のモンスター全部がまとめて動いてしまう。
モンスター別に表示位置を動かしたいのだが、どうしたらいいか判らなくて手をこまねいている状態。


記事No: 21459
タイトルRe: 一部モンスターのHP表示欄の位置を変えたい
投稿日: 2022/08/13 21:02
投稿者YADO [LerLWW459(海外)]

> [やりたいこと]
> 戦闘画面の、モンスターのHPなどが表示される欄の表示位置をモンスターごとに変更したい
>
> [やってみたこと]
> X[戦]敵キャラ_単体描画で表示位置を色々弄ってみた
>
> [やってみた結果、どううまくいかないか]
> 移動自体はなんとかできたものの、グループ内のモンスター全部がまとめて動いてしまう。
> モンスター別に表示位置を動かしたいのだが、どうしたらいいか判らなくて手をこまねいている状態。

例えばユーザーDB[9:敵キャラ個体データ]に新たな項目を2つ作る。
[変数][HP表示補正X][初期値=0]
[変数][HP表示補正Y][初期値=0]

そしてHPの表示位置を移動したい敵キャラの「HP表示補正X」「HP表示補正Y」に移動量を設定する。
「HP表示補正X」にプラス値を設定すると通常のX表示位置から右へ移動し、マイナス値を設定すると左へ移動する。
「HP表示補正Y」にプラス値を設定すると通常のY表示位置から下へ移動し、マイナス値を設定すると上へ移動する。


コモンイベント[179:X[戦]敵キャラ_単体描画]の69行目に以下のイベントを追加。

■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 10 : CSelf1[対象戦闘スロット] : 17 ] (×┏ 戦闘一時ステータス[基] : - : キャラクタ番号[1万以上は敵])
■変数操作: CSelf11[一時変数B] %= 10000 + 0
■DB読込(ユーザ): CSelf66[HP位置X] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正X ] (敵キャラ個体データ : - : 26)
■DB読込(ユーザ): CSelf67[HP位置Y] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正Y ] (敵キャラ個体データ : - : 27)
■DB読込(ユーザ): CSelf70[HPゲージX] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正X ] (敵キャラ個体データ : - : 26)
■DB読込(ユーザ): CSelf71[HPゲージY] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正Y ] (敵キャラ個体データ : - : 27)

WoditorEvCOMMAND_START
[250][5,4]<0>(10,1600001,17,4096,1600011)("","","","")
[121][4,0]<0>(1600011,10000,0,1280)()
[250][5,4]<0>(9,1600011,26,266768,1600066)("","","","HP表示補正X")
[250][5,4]<0>(9,1600011,27,266768,1600067)("","","","HP表示補正Y")
[250][5,4]<0>(9,1600011,26,266768,1600070)("","","","HP表示補正X")
[250][5,4]<0>(9,1600011,27,266768,1600071)("","","","HP表示補正Y")
WoditorEvCOMMAND_END


敵グループ単位で補正する場合は、まずユーザーDB[13:敵グループ]に以下の項目を追加。
[変数][敵1HP補正X][初期値=0]
[変数][敵1HP補正Y][初期値=0]
[変数][敵2HP補正X][初期値=0]
[変数][敵2HP補正Y][初期値=0]
[変数][敵3HP補正X][初期値=0]
[変数][敵3HP補正Y][初期値=0]
[変数][敵4HP補正X][初期値=0]
[変数][敵4HP補正Y][初期値=0]
[変数][敵5HP補正X][初期値=0]
[変数][敵5HP補正Y][初期値=0]
[変数][敵6HP補正X][初期値=0]
[変数][敵6HP補正Y][初期値=0]
[変数][敵7HP補正X][初期値=0]
[変数][敵7HP補正Y][初期値=0]


コモンイベント[179:X[戦]敵キャラ_単体描画]の69行目に以下のイベントを追加。

■変数操作: CSelf12[一時変数C] = CSelf1[対象戦闘スロット] - 10
■変数操作: CSelf12[一時変数C] *= 2 + 0
■変数操作: CSelf12[一時変数C] += 12 + 0
■DB読込(ユーザ): CSelf66[HP位置X] += ユーザDB[ 13 : 可変DB(18,72,0)[[戦闘]敵グループ番号 数値 ] : CSelf12[一時変数C] ] (敵グループ : - : -)
■DB読込(ユーザ): CSelf70[HPゲージX] += ユーザDB[ 13 : 可変DB(18,72,0)[[戦闘]敵グループ番号 数値 ] : CSelf12[一時変数C] ] (敵グループ : - : -)
■変数操作: CSelf12[一時変数C] += 1 + 0
■DB読込(ユーザ): CSelf67[HP位置Y] += ユーザDB[ 13 : 可変DB(18,72,0)[[戦闘]敵グループ番号 数値 ] : CSelf12[一時変数C] ] (敵グループ : - : -)
■DB読込(ユーザ): CSelf71[HPゲージY] += ユーザDB[ 13 : 可変DB(18,72,0)[[戦闘]敵グループ番号 数値 ] : CSelf12[一時変数C] ] (敵グループ : - : -)

WoditorEvCOMMAND_START
[121][4,0]<0>(1600012,1600001,10,4096)()
[121][4,0]<0>(1600012,2,0,768)()
[121][4,0]<0>(1600012,12,0,256)()
[250][5,4]<0>(13,1118007200,1600012,4624,1600066)("","","","")
[250][5,4]<0>(13,1118007200,1600012,4624,1600070)("","","","")
[121][4,0]<0>(1600012,1,0,256)()
[250][5,4]<0>(13,1118007200,1600012,4624,1600067)("","","","")
[250][5,4]<0>(13,1118007200,1600012,4624,1600071)("","","","")
WoditorEvCOMMAND_END

上記の設定例は、ユーザーDB[13:敵グループ]に追加した項目番号が「12〜25」の時の設定です。
追加した項目番号が「13〜26」の時には、上記の「12 + 0」の設定を「13 + 0」に変えてください。

ちなみに敵キャラごとの補正と敵グループごとの補正の両方を設定する事もできます。


記事No: 21460
タイトルRe: 一部モンスターのHP表示欄の位置を変えたい
投稿日: 2022/08/14 15:20
投稿者Tark [rerrrrrdi278(海外)]

回答ありがとうございます。
都合がいい前者のやり方で早速試してみたのですが、戦闘で殴ろうとした時点でエラーが出てしまいました。
「DB操作:データ番号がマイナスです!
処理地点:【マップEv6コモンEv250行86】もし並列処理のエラーなら地点不明です」
(コモン250なのはコピーデータ使用のため)
また、撃破時点でも同じエラーが今日88〜91まで繰り返して抜けられません。
ここでいうデータ番号がマイナスというのは何を指してるのでしょうか?
HP表示補正X,Yは0にしてもプラスにしても同じエラーが出てしまいます。


記事No: 21461
タイトルRe: 一部モンスターのHP表示欄の位置を変えたい
投稿日: 2022/08/14 18:08
投稿者YADO [LerLWW459(海外)]

> 回答ありがとうございます。
> 都合がいい前者のやり方で早速試してみたのですが、戦闘で殴ろうとした時点でエラーが出てしまいました。
> 「DB操作:データ番号がマイナスです!
> 処理地点:【マップEv6コモンEv250行86】もし並列処理のエラーなら地点不明です」
> (コモン250なのはコピーデータ使用のため)
> また、撃破時点でも同じエラーが今日88〜91まで繰り返して抜けられません。
> ここでいうデータ番号がマイナスというのは何を指してるのでしょうか?
> HP表示補正X,Yは0にしてもプラスにしても同じエラーが出てしまいます。

こんな感じに設定してみてください。

■条件分岐(変数): 【1】 CSelf1[対象戦闘スロット] が 10 以上
-◇分岐: 【1】 [ CSelf1[対象戦闘スロット] が 10 以上 ]の場合↓
|■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 10 : CSelf1[対象戦闘スロット] : 17 ] (×┏ 戦闘一時ステータス[基] : - : キャラクタ番号[1万以上は敵])
|■条件分岐(変数): 【1】 CSelf11[一時変数B] が 10000 以上
|-◇分岐: 【1】 [ CSelf11[一時変数B] が 10000 以上 ]の場合↓
| |■変数操作: CSelf11[一時変数B] %= 10000 + 0
| |■DB読込(ユーザ): CSelf66[HP位置X] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正X ] (敵キャラ個体データ : - : 26)
| |■DB読込(ユーザ): CSelf67[HP位置Y] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正Y ] (敵キャラ個体データ : - : 27)
| |■DB読込(ユーザ): CSelf70[HPゲージX] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正X ] (敵キャラ個体データ : - : 26)
| |■DB読込(ユーザ): CSelf71[HPゲージY] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正Y ] (敵キャラ個体データ : - : 27)
| |■
|◇分岐終了◇
|■
◇分岐終了◇

WoditorEvCOMMAND_START
[111][4,0]<0>(1,1600001,10,1)()
[401][1,0]<0>(1)()
[250][5,4]<1>(10,1600001,17,4096,1600011)("","","","")
[111][4,0]<1>(1,1600011,10000,1)()
[401][1,0]<1>(1)()
[121][4,0]<2>(1600011,10000,0,1280)()
[250][5,4]<2>(9,1600011,26,266768,1600066)("","","","HP表示補正X")
[250][5,4]<2>(9,1600011,27,266768,1600067)("","","","HP表示補正Y")
[250][5,4]<2>(9,1600011,26,266768,1600070)("","","","HP表示補正X")
[250][5,4]<2>(9,1600011,27,266768,1600071)("","","","HP表示補正Y")
[0][0,0]<2>()()
[499][0,0]<1>()()
[0][0,0]<1>()()
[499][0,0]<0>()()
WoditorEvCOMMAND_END


記事No: 21462
タイトルRe: 一部モンスターのHP表示欄の位置を変えたい
投稿日: 2022/08/15 16:44
投稿者Tark [rerrrrrdi278(海外)]

追記、ありがとうございます。
おかげでエラーは出なくなりました。

ただ、前回もですがどうも表示位置X・Yの数値が反映されないようです。
固体データの参照値も変えてみましたが同様でした。

教えていただいたスクリプトのコピペした場所をずらしてみるくらいでしか対処は無いでしょうか。


記事No: 21463
タイトルRe: 一部モンスターのHP表示欄の位置を変えたい
投稿日: 2022/08/15 21:01
投稿者YADO [LerLWW459(海外)]

> 追記、ありがとうございます。
> おかげでエラーは出なくなりました。
>
> ただ、前回もですがどうも表示位置X・Yの数値が反映されないようです。
> 固体データの参照値も変えてみましたが同様でした。
>
> 教えていただいたスクリプトのコピペした場所をずらしてみるくらいでしか対処は無いでしょうか。

ダウンロードしたウディタに設定すると指定した敵キャラのHPの表示位置が変わるので、ユーザーDBの設定やイベントコードの設定には問題無さそうです。

確認ですが、コモンイベント[179:X[戦]敵キャラ_単体描画]の69行目にイベントコードの貼り付けたあとの設定は以下のようになっていますか?

61|■変数操作: CSelf81[HP・SPゲージ長] = 20 + 0
62|■変数操作: CSelf80[全ゲージ太さ] = 1 + 0
63|■変数操作: CSelf66[HP位置X] = 0 + 0
64|■変数操作: CSelf67[HP位置Y] = -14 + 0
65|■変数操作: CSelf70[HPゲージX] = CSelf81[HP・SPゲージ長] * -1
66|■変数操作: CSelf70[HPゲージX] /= 2 + 0
67|■変数操作: CSelf71[HPゲージY] = -10 + 0
68|■変数操作: CSelf87[ゲージアニメフラグ] = 0 + 0
69|■条件分岐(変数): 【1】 CSelf1[対象戦闘スロット] が 10 以上
70|-◇分岐: 【1】 [ CSelf1[対象戦闘スロット] が 10 以上 ]の場合↓
71| |■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 10 : CSelf1[対象戦闘スロット] : 17 ] (×┏ 戦闘一時ステータス[基] : - : キャラクタ番号[1万以上は敵])
72| |■条件分岐(変数): 【1】 CSelf11[一時変数B] が 10000 以上
73| |-◇分岐: 【1】 [ CSelf11[一時変数B] が 10000 以上 ]の場合↓
74| | |■変数操作: CSelf11[一時変数B] %= 10000 + 0
75| | |■DB読込(ユーザ): CSelf66[HP位置X] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正X ] (敵キャラ個体データ : - : 26)
76| | |■DB読込(ユーザ): CSelf67[HP位置Y] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正Y ] (敵キャラ個体データ : - : 27)
77| | |■DB読込(ユーザ): CSelf70[HPゲージX] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正X ] (敵キャラ個体データ : - : 26)
78| | |■DB読込(ユーザ): CSelf71[HPゲージY] += ユーザDB[ 9 : CSelf11[一時変数B] : HP表示補正Y ] (敵キャラ個体データ : - : 27)
79| | |■
80| |◇分岐終了◇
81| |■
82|◇分岐終了◇
83|▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

処理としては、63〜67行目で通常のHP表示位置を設定し、69〜82行目で表示位置を補正しています。
処理の順番としては「通常の表示位置→補正設定」となります。

しかし63〜67行目より前に何らかの追加設定がある場合、例えば「10行追加」になっている場合は、63〜67行目にあった設定が73〜77行目になるため、
「10行追加」の状態で69行目にイベントコードを貼り付けると「補正設定→通常の表示位置」の順番になってしまい、補正設定が有効にはなりません。


記事No: 21465
タイトルRe: 一部モンスターのHP表示欄の位置を変えたい
投稿日: 2022/08/20 23:56
投稿者Tark [rerrrrrdi278(海外)]

返事遅くなりましてすみません。

うぅん…
追加要素を加えていたため、ご指摘どおり補正設定が上書きされていたのだと思います。
素のデータでならば問題なく表示できたのですが、残念なことにどうしても外せないので…
せっかく教えていただいたのに恐縮ですが、この件はここでクローズにさせていただきたいと思います。
長々とお付き合いいただき、ありがとうございました。