【解決済み】[VXAce]スキルダメージの計算式に関して

返信する
nall
記事: 2
登録日時: 2025年12月06日(土) 18:18

【解決済み】[VXAce]スキルダメージの計算式に関して

投稿記事 by nall »

はじめまして。

VXAceのデータベース、スキルの通常攻撃の
ダメージ計算式に関する質問となります。

式の最後に、キャラのレベルを使い
ダメージ補正を表現したいのですが、
max等を使うと小数点以下が反映されていないように見受けられます。

* [a.level / 10 , 1].max
として、レベル1~10まではダメージ補正を1倍、
レベル15であれば1.5倍、20で2倍・・のような結果を想定していたのですが、
レベル11~19までが全部1倍で計算され、
レベル20いきなり2倍になり、実質レベル19から20で
急にダメージが2倍になるような結果となりました。
※レベル20以降も同様です。

こちらですが、.max等を使用すると、
小数点以下は切り取られてしまうのでしょうか。
a.level / 10 のみの計算であれば小数点以下も拾っていそうなのですが、
その場合レベル1や2の際の補正が0.1倍等になりダメージが全然出ないため、
最低保証1倍の.maxを使用した流れとなります。
+1等を入れての解決も考えたのですが、通常より+1倍になるので、
純粋にレベルから算出できればと考えています。

本件、解決策や同様の結果になる算出方法はありますでしょうか。

ご確認の程、よろしくお願いいたします。
最後に編集したユーザー nall [ 2025年12月06日(土) 19:55 ], 累計 1 回
nall
記事: 2
登録日時: 2025年12月06日(土) 18:18

Re: [VXAce]スキルダメージの計算式に関して

投稿記事 by nall »

申し訳ございません。
詳しく過去のトピックを検索していたところ、
.to_fを加えると良いという返信を見つけまして、

試したところ無事解決しました。
こちらは解決済みとさせていただきます。
白夜||極夜
記事: 4
登録日時: 2022年11月06日(日) 19:29

Re: 【解決済み】[VXAce]スキルダメージの計算式に関して

投稿記事 by 白夜||極夜 »

解決済みではありますが技術共有でコメントしておきます。

VXAceのRGSS3はRuby1.9.2がベースになっており、今回の挙動はRubyの仕様になります。
Rubyでは計算式に整数のみが使われていた場合には計算結果も整数になるというルールがあります。そのため

* [a.level / 10 , 1].max

の場合は整数として扱われます。結果を実数(浮動小数点数)として扱いたい場合には式内に実数を使えばいいので

* [a.level / 10.0 , 1].max

としてあげれば計算結果も実数になり、今回の要求を満たせます。

なお、このことはVXAce付属ヘルプ→スクリプト入門→基礎編→数値の計算 のページにある”小数点以下の計算”の項目にも書かれています。データベースで設定するダメージ計算式はスクリプトとして処理されますので、このページのルールを覚えておくと良いかと思います。
プログラマ暦: FBasic、N88Basic、Delphi3-5、parl、php、Java6-8、Ruby
PCツクール暦: Dante98、Dante98II、だんだんダンジョン、VXAce
コンシューマエディタ暦: 絵描衛門、SuperDante、ツクールアドバンス
2022現在、VXAceで開発中。Ruby(RGSS3)面白い。
phpBB運営経験あり。
名前の || はor演算子です。名前を呼ぶ時は白夜と極夜のどちらでも良いという意味です。
返信する

“VX / Ace:質問”に戻る