こんちにわ。いつもお世話になっております。
ローグライクのように歩行するとアクターのHPが1ずつ自動回復する方法を探しております。
可能であればHPが1ずつ自動回復する歩行数はアクター別に設定出来ればありがたいです。
良い方法をご助言いただければ、助かります。よろしくお願いいたします。
マップ上を歩行するとアクターが自動回復する方法について
Re: マップ上を歩行するとアクターが自動回復する方法について
ネクロノ蜜柑 さんが書きました:こんちにわ。いつもお世話になっております。
ローグライクのように歩行するとアクターのHPが1ずつ自動回復する方法を探しております。
可能であればHPが1ずつ自動回復する歩行数はアクター別に設定出来ればありがたいです。
良い方法をご助言いただければ、助かります。よろしくお願いいたします。
こんな並列処理で可能です。
コード: 全て選択
◆変数の操作:#0001 = 歩数
◆条件分岐:#0001 ≠ #0002
◆変数の操作:#0001 %= 4
◆条件分岐:#0001 = 0
◆HPの増減:ハロルド, + 1
◆文章:なし, ウィンドウ, 下
: :ハロルド回復
◆変数の操作:#0002 = 歩数
◆
:分岐終了
◆
:分岐終了
上記では4歩毎にハロルドのHPが1回復します。
剰余(%=)は割り算した余りの値を代入します。
(1歩毎となると、この処理ではできないとは思いますが)
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: マップ上を歩行するとアクターが自動回復する方法について
横から失礼します。
1歩ごとに設定するなら、
変数0001を0002で減算して1であれば、という条件にすればムノクラ さんがご提示された方法で可能かと思います
追記
間違えた。現在の歩数 - 取得時点の歩数なので、-1ですね。
1歩ごとに設定するなら、
変数0001を0002で減算して1であれば、という条件にすればムノクラ さんがご提示された方法で可能かと思います
追記
間違えた。現在の歩数 - 取得時点の歩数なので、-1ですね。
最後に編集したユーザー sally on 2021年5月03日(月) 21:07 [ 編集 1 回目 ]
Re: マップ上を歩行するとアクターが自動回復する方法について
ムノクラ さんが書きました:ネクロノ蜜柑 さんが書きました:こんちにわ。いつもお世話になっております。
ローグライクのように歩行するとアクターのHPが1ずつ自動回復する方法を探しております。
可能であればHPが1ずつ自動回復する歩行数はアクター別に設定出来ればありがたいです。
良い方法をご助言いただければ、助かります。よろしくお願いいたします。
こんな並列処理で可能です。コード: 全て選択
◆変数の操作:#0001 = 歩数
◆条件分岐:#0001 ≠ #0002
◆変数の操作:#0001 %= 4
◆条件分岐:#0001 = 0
◆HPの増減:ハロルド, + 1
◆文章:なし, ウィンドウ, 下
: :ハロルド回復
◆変数の操作:#0002 = 歩数
◆
:分岐終了
◆
:分岐終了
SS02.png
上記では4歩毎にハロルドのHPが1回復します。
剰余(%=)は割り算した余りの値を代入します。
(1歩毎となると、この処理ではできないとは思いますが)
ムノクラ様
ご返信ありがとうございます_(._.)_ムノクラ様の仰る通りにイベントを組むとHP回復しました!アクターごとに組んでも各アクター分しっかり回復しました。ありがとうございます!!
可能であれば結構なのですが、回復する対象を先頭のアクターのみ設定可能でしょうか?
例えばアクター2が先頭の場合、アクター2の歩行回数でアクター2のみ回復。
アクター3が先頭の場合、アクター3の歩行回数でアウター3のみ回復。後列のパーティーは回復しないようなイメージです。よろしくお願い致します。
-
- 記事: 468
- 登録日時: 2018年12月23日(日) 13:55
Re: マップ上を歩行するとアクターが自動回復する方法について
こんばんは。
横から失礼します。
きちんとテストしてませんが、下記の方法でできるかと思います。
1.アクターのメモ欄に、回復する歩数間隔を設定するメタを記載する。
この例では、<HealDuration:x> (x は任意の整数) というメタタグを記述するようにしています。
2.ゲーム開始時に、自動回復を管理するための設定をするイベントを作る。
イベント内容は以下の通り
1ページ目:
出現条件: なし
トリガー: 自動実行
実行内容:
2ページ目:
出現条件: セルフスイッチ A
トリガー: 決定ボタン
実行内容: なし
3.自動回復を管理するコモンイベントを作成する。
イベント内容は以下の通り
トリガー: 並列処理
スイッチ: 0001 自動回復管理
実行内容:
以上、
適当に作った上に、テストもしっかりしていないので、不具合があるかもしれませんが、
ご参考までに。
横から失礼します。
ネクロノ蜜柑 さんが書きました:ローグライクのように歩行するとアクターのHPが1ずつ自動回復する方法を探しております。
可能であればHPが1ずつ自動回復する歩行数はアクター別に設定出来ればありがたいです。
良い方法をご助言いただければ、助かります。よろしくお願いいたします。
ネクロノ蜜柑 さんが書きました:可能であれば結構なのですが、回復する対象を先頭のアクターのみ設定可能でしょうか?
例えばアクター2が先頭の場合、アクター2の歩行回数でアクター2のみ回復。
アクター3が先頭の場合、アクター3の歩行回数でアウター3のみ回復。後列のパーティーは回復しないようなイメージです。よろしくお願い致します。
きちんとテストしてませんが、下記の方法でできるかと思います。
1.アクターのメモ欄に、回復する歩数間隔を設定するメタを記載する。
この例では、<HealDuration:x> (x は任意の整数) というメタタグを記述するようにしています。
2.ゲーム開始時に、自動回復を管理するための設定をするイベントを作る。
イベント内容は以下の通り
1ページ目:
出現条件: なし
トリガー: 自動実行
実行内容:
コード: 全て選択
◆注釈:パーティメンバー1番のアクターのID(=先頭アクターのID)を取得し 変数ID 0004 先頭アクターのID に代入。
◆変数の操作:#0004 先頭アクターのID = パーティメンバー1番のアクターID
◆注釈:歩数を取得し、変数ID 0005 現在の歩数、変数ID 0006 HP回復までの歩数 に代入。
◆変数の操作:#0005..0006 = 歩数
◆注釈:自動回復管理(監視)用のコモンイベントを有効にするためのスイッチを ON に
: :自動回復を有効にするスイッチを OFF にしておく。
◆スイッチの操作:#0001 自動回復管理 = ON
◆スイッチの操作:#0002 自動回復有効フラグ = OFF
◆条件分岐:先頭アクターのID > 0
◆注釈:先頭アクターが存在している場合
◆注釈:先頭アクターのメモ欄を参照し、<HealDuration> の値を取得し、
: :変数 ID 0007 回復間隔 に代入。
: :記述がない場合、数値以外が入っていた場合、0 を代入する。
◆変数の操作:#0007 回復間隔 = Number($gameActors.actor($gameVariables.value(4)).actor().meta['HealDuration']) || 0
◆条件分岐:回復間隔 > 0
◆注釈:回復間隔に有効な値が代入されている
◆スイッチの操作:#0002 自動回復有効フラグ = ON
◆変数の操作:#0006 HP回復までの歩数 += 回復間隔
◆
:分岐終了
◆
:分岐終了
◆セルフスイッチの操作:A = ON
2ページ目:
出現条件: セルフスイッチ A
トリガー: 決定ボタン
実行内容: なし
3.自動回復を管理するコモンイベントを作成する。
イベント内容は以下の通り
トリガー: 並列処理
スイッチ: 0001 自動回復管理
実行内容:
コード: 全て選択
◆注釈:歩数を取得し、変数ID 0005 現在の歩数に代入。
◆変数の操作:#0005 現在の歩数 = 歩数
◆注釈:変数ID 0004 先頭アクターのID の内容を 変数ID 0008 旧先頭アクターのID に代入。
◆変数の操作:#0008 旧先頭アクターのID = 先頭アクターのID
◆注釈:パーティメンバー1番のアクターのID(=先頭アクターのID)を 変数ID 0004 先頭アクターのIDに代入。
◆変数の操作:#0004 先頭アクターのID = パーティメンバー1番のアクターID
◆条件分岐:先頭アクターのID < 1
◆注釈:先頭アクターが存在しない場合
◆注釈:回復スイッチをOFFにして、イベントを中断する。
◆スイッチの操作:#0002 自動回復有効フラグ = OFF
◆イベント処理の中断
◆
:分岐終了
◆条件分岐:先頭アクターのID ≠ 旧先頭アクターのID
◆注釈:先頭のアクターが変更されていた場合
◆注釈:先頭アクターのメモ欄を参照し、<HealDuration> の値を取得、
: :変数ID 0007 回復間隔 に代入。
: :記述がなかったり、数値以外が入っていた場合は 0 を代入。
◆変数の操作:#0007 回復間隔 = Number($gameActors.actor($gameVariables.value(4)).actor().meta['HealDuration']) || 0
◆条件分岐:回復間隔 < 1
◆注釈:記述が無かった、もしくは、数値以外が入っていた場合
◆注釈:回復スイッチを OFF にして、イベントを中断。
◆スイッチの操作:#0002 自動回復有効フラグ = OFF
◆イベント処理の中断
◆
:分岐終了
◆注釈:設定を変更して、イベントを中断。
◆変数の操作:#0006 HP回復までの歩数 = 現在の歩数
◆変数の操作:#0006 HP回復までの歩数 += 回復間隔
◆スイッチの操作:#0002 自動回復有効フラグ = ON
◆イベント処理の中断
◆
:分岐終了
◆注釈:回復処理
◆条件分岐:現在の歩数 ≥ HP回復までの歩数
◆HPの増減:{先頭アクターのID}, + 1
◆注釈:回復までの歩数を更新する。
◆変数の操作:#0006 HP回復までの歩数 += 回復間隔
◆
:分岐終了
以上、
適当に作った上に、テストもしっかりしていないので、不具合があるかもしれませんが、
ご参考までに。
Re: マップ上を歩行するとアクターが自動回復する方法について
ecf5DTTzl6h6lJj02 さんが書きました:こんばんは。
横から失礼します。ネクロノ蜜柑 さんが書きました:ローグライクのように歩行するとアクターのHPが1ずつ自動回復する方法を探しております。
可能であればHPが1ずつ自動回復する歩行数はアクター別に設定出来ればありがたいです。
良い方法をご助言いただければ、助かります。よろしくお願いいたします。ネクロノ蜜柑 さんが書きました:可能であれば結構なのですが、回復する対象を先頭のアクターのみ設定可能でしょうか?
例えばアクター2が先頭の場合、アクター2の歩行回数でアクター2のみ回復。
アクター3が先頭の場合、アクター3の歩行回数でアウター3のみ回復。後列のパーティーは回復しないようなイメージです。よろしくお願い致します。
きちんとテストしてませんが、下記の方法でできるかと思います。
1.アクターのメモ欄に、回復する歩数間隔を設定するメタを記載する。
この例では、<HealDuration:x> (x は任意の整数) というメタタグを記述するようにしています。
2.ゲーム開始時に、自動回復を管理するための設定をするイベントを作る。
イベント内容は以下の通り
1ページ目:
出現条件: なし
トリガー: 自動実行
実行内容:コード: 全て選択
◆注釈:パーティメンバー1番のアクターのID(=先頭アクターのID)を取得し 変数ID 0004 先頭アクターのID に代入。
◆変数の操作:#0004 先頭アクターのID = パーティメンバー1番のアクターID
◆注釈:歩数を取得し、変数ID 0005 現在の歩数、変数ID 0006 HP回復までの歩数 に代入。
◆変数の操作:#0005..0006 = 歩数
◆注釈:自動回復管理(監視)用のコモンイベントを有効にするためのスイッチを ON に
: :自動回復を有効にするスイッチを OFF にしておく。
◆スイッチの操作:#0001 自動回復管理 = ON
◆スイッチの操作:#0002 自動回復有効フラグ = OFF
◆条件分岐:先頭アクターのID > 0
◆注釈:先頭アクターが存在している場合
◆注釈:先頭アクターのメモ欄を参照し、<HealDuration> の値を取得し、
: :変数 ID 0007 回復間隔 に代入。
: :記述がない場合、数値以外が入っていた場合、0 を代入する。
◆変数の操作:#0007 回復間隔 = Number($gameActors.actor($gameVariables.value(4)).actor().meta['HealDuration']) || 0
◆条件分岐:回復間隔 > 0
◆注釈:回復間隔に有効な値が代入されている
◆スイッチの操作:#0002 自動回復有効フラグ = ON
◆変数の操作:#0006 HP回復までの歩数 += 回復間隔
◆
:分岐終了
◆
:分岐終了
◆セルフスイッチの操作:A = ON
2ページ目:
出現条件: セルフスイッチ A
トリガー: 決定ボタン
実行内容: なし
3.自動回復を管理するコモンイベントを作成する。
イベント内容は以下の通り
トリガー: 並列処理
スイッチ: 0001 自動回復管理
実行内容:コード: 全て選択
◆注釈:歩数を取得し、変数ID 0005 現在の歩数に代入。
◆変数の操作:#0005 現在の歩数 = 歩数
◆注釈:変数ID 0004 先頭アクターのID の内容を 変数ID 0008 旧先頭アクターのID に代入。
◆変数の操作:#0008 旧先頭アクターのID = 先頭アクターのID
◆注釈:パーティメンバー1番のアクターのID(=先頭アクターのID)を 変数ID 0004 先頭アクターのIDに代入。
◆変数の操作:#0004 先頭アクターのID = パーティメンバー1番のアクターID
◆条件分岐:先頭アクターのID < 1
◆注釈:先頭アクターが存在しない場合
◆注釈:回復スイッチをOFFにして、イベントを中断する。
◆スイッチの操作:#0002 自動回復有効フラグ = OFF
◆イベント処理の中断
◆
:分岐終了
◆条件分岐:先頭アクターのID ≠ 旧先頭アクターのID
◆注釈:先頭のアクターが変更されていた場合
◆注釈:先頭アクターのメモ欄を参照し、<HealDuration> の値を取得、
: :変数ID 0007 回復間隔 に代入。
: :記述がなかったり、数値以外が入っていた場合は 0 を代入。
◆変数の操作:#0007 回復間隔 = Number($gameActors.actor($gameVariables.value(4)).actor().meta['HealDuration']) || 0
◆条件分岐:回復間隔 < 1
◆注釈:記述が無かった、もしくは、数値以外が入っていた場合
◆注釈:回復スイッチを OFF にして、イベントを中断。
◆スイッチの操作:#0002 自動回復有効フラグ = OFF
◆イベント処理の中断
◆
:分岐終了
◆注釈:設定を変更して、イベントを中断。
◆変数の操作:#0006 HP回復までの歩数 = 現在の歩数
◆変数の操作:#0006 HP回復までの歩数 += 回復間隔
◆スイッチの操作:#0002 自動回復有効フラグ = ON
◆イベント処理の中断
◆
:分岐終了
◆注釈:回復処理
◆条件分岐:現在の歩数 ≥ HP回復までの歩数
◆HPの増減:{先頭アクターのID}, + 1
◆注釈:回復までの歩数を更新する。
◆変数の操作:#0006 HP回復までの歩数 += 回復間隔
◆
:分岐終了
以上、
適当に作った上に、テストもしっかりしていないので、不具合があるかもしれませんが、
ご参考までに。
ecf5DTTzl6h6lJj02様
ご返信ありがとうございます。
ecf5DTTzl6h6lJj02様が仰る通りに自分なりにイベントを入力してみたのですが、添付画像のようなエラーが発生します。お手数をおかけしますが見て頂いてもよろしいでしょうか?イベント画像と変数等も添付しております。変数とスイッチだけ500~から取得していますのでそれが関係しているかもしれません_(._.)_
よろしくお願い致します。
-
- 記事: 468
- 登録日時: 2018年12月23日(日) 13:55
Re: マップ上を歩行するとアクターが自動回復する方法について
こんにちは。
回復間隔を取得するために、アクターのメモ欄を取得してくる部分
のスクリプトですが、
となっている部分で、先頭アクターのID の値を取得しています。
私の例では、変数ID 0004 に先頭アクターのID が入っているので 4 を指定しています。
ネクロノ蜜柑さんの場合は 変数ID 0501 に入っていますので、501 を指定してください。
回復間隔を取得するために、アクターのメモ欄を取得してくる部分
コード: 全て選択
◆変数の操作:#0007 回復間隔 = Number($gameActors.actor($gameVariables.value(4)).actor().meta['HealDuration']) || 0
のスクリプトですが、
コード: 全て選択
$gameVariables.value(4)
となっている部分で、先頭アクターのID の値を取得しています。
私の例では、変数ID 0004 に先頭アクターのID が入っているので 4 を指定しています。
ネクロノ蜜柑さんの場合は 変数ID 0501 に入っていますので、501 を指定してください。
Re: マップ上を歩行するとアクターが自動回復する方法について
ecf5DTTzl6h6lJj02 さんが書きました:こんにちは。
回復間隔を取得するために、アクターのメモ欄を取得してくる部分コード: 全て選択
◆変数の操作:#0007 回復間隔 = Number($gameActors.actor($gameVariables.value(4)).actor().meta['HealDuration']) || 0
のスクリプトですが、コード: 全て選択
$gameVariables.value(4)
となっている部分で、先頭アクターのID の値を取得しています。
私の例では、変数ID 0004 に先頭アクターのID が入っているので 4 を指定しています。
ネクロノ蜜柑さんの場合は 変数ID 0501 に入っていますので、501 を指定してください。
ecf5DTTzl6h6lJj02様
ご返信ありがとうございます。
変数IDを501に変更しましたらエラーも発生せず、先頭アクターのみ回復もしました!
この度は対応して頂きありがとうございました!助かりました_(._.)_