【解決】変数で指定した変数IDの変数の値を代入する方法

厨二少年
記事: 60
登録日時: 2017年3月14日(火) 00:08

【解決】変数で指定した変数IDの変数の値を代入する方法

投稿記事by 厨二少年 » 2020年12月31日(木) 20:02

皆様いつもお世話になっております……!!
基本的な質問で申し訳ないのですが、どなたかタイトルの通り変数で指定した変数の値を代入する方法について教えていただけないでしょうか?
以下のようなスクリプトを試してみたのですが、値を取得してくれませんでした。
変数ID259で指定した変数IDの値を変数ID258に代入するということがしたいのですが、なにか解決策はありますでしょうか……?

$gameVariables.setValue($gameVariables.value(258), $gameVariables.value( $gameVariables.value(259)));

一応力技で条件分岐を入れば求めた挙動はできるのですが、作業量の関係から設定箇所を少なくしたいと思っています。
いつも申し訳ありませんが、どうかお知恵をお貸しいただければと思います……!
最後に編集したユーザー 厨二少年 on 2020年12月31日(木) 21:07 [ 編集 1 回目 ]

アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 【質問】変数で指定した変数IDの変数の値を代入する方法

投稿記事by WTR » 2020年12月31日(木) 20:37

なんかややこしいけど代入する変数は ID258 で固定なのですよね?
であれば以下でいけるはず。

コード: 全て選択

$gameVariables.setValue(258, $gameVariables.value($gameVariables.value(259)));


もとのスクリプトだと代入する先も変数で指定になっているので説明の通りに動かないのだと思います。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
厨二少年
記事: 60
登録日時: 2017年3月14日(火) 00:08

Re: 【質問】変数で指定した変数IDの変数の値を代入する方法

投稿記事by 厨二少年 » 2020年12月31日(木) 21:07

ありがとうございます!!
希望通りの動作になりました!
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 【解決】変数で指定した変数IDの変数の値を代入する方法

投稿記事by ムノクラ » 2020年12月31日(木) 21:32

厨二少年 さんが書きました:皆様いつもお世話になっております……!!
基本的な質問で申し訳ないのですが、どなたかタイトルの通り変数で指定した変数の値を代入する方法について教えていただけないでしょうか?
以下のようなスクリプトを試してみたのですが、値を取得してくれませんでした。
変数ID259で指定した変数IDの値を変数ID258に代入するということがしたいのですが、なにか解決策はありますでしょうか……?

$gameVariables.setValue($gameVariables.value(258), $gameVariables.value( $gameVariables.value(259)));

一応力技で条件分岐を入れば求めた挙動はできるのですが、作業量の関係から設定箇所を少なくしたいと思っています。
いつも申し訳ありませんが、どうかお知恵をお貸しいただければと思います……!


イベントコマンドで普通に指定できますが、スクリプトが必須なんでしょうか?
SS07.png
SS07.png (32.81 KiB) 閲覧数: 4111 回
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 【解決】変数で指定した変数IDの変数の値を代入する方法

投稿記事by WTR » 2020年12月31日(木) 22:21

変数 259 の値を 変数 258 に代入するのではなく
変数 259 でさらに別の変数を指定し、その値を代入したいと読めましたので。

変数 259 = 200
変数 200 = 1

のときであれば、変数 258 には 1 が入るのが期待なのかな、と。
なぜそれが必要なのかは不明ですが…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 【解決】変数で指定した変数IDの変数の値を代入する方法

投稿記事by ムノクラ » 2020年12月31日(木) 22:35

WTR さんが書きました:変数 259 の値を 変数 258 に代入するのではなく
変数 259 でさらに別の変数を指定し、その値を代入したいと読めましたので。

変数 259 = 200
変数 200 = 1

のときであれば、変数 258 には 1 が入るのが期待なのかな、と。
なぜそれが必要なのかは不明ですが…


なるほど、そのように読めますね。
それで、条件分岐を減らしたいと…

WTR氏の回答、ごもっともです。

WTR氏も感じていらっしゃるとは思いますが、このようなややこしい実装が必要な時点で、手前のロジックが(必要以上に)複雑になってしまっているケースが多いですよね。

いきなり、方法を聞くよりも、
1.やりたいこと
2.やろうとして試したこと
を書くと、より良い回答が得られると思います。

今回は2.のみの質問だったので、WTR氏の回答が直線的ですね。
余計な口出し、失礼いたしました。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
厨二少年
記事: 60
登録日時: 2017年3月14日(火) 00:08

Re: 【解決】変数で指定した変数IDの変数の値を代入する方法

投稿記事by 厨二少年 » 2021年1月01日(金) 14:12

お二方ともご指摘とご指導ありがとうございます!

今回やりたかったこととしては、アクターごとに管理している変数(各キャラごとの疲労度、武器経験値といった独自の変数。以降キャラ変数)を操作するコモンイベントをできる限り簡略化したい、という旨での質問でした。
アクターが現時点で24キャラおり各キャラごとに割り振られている変数があるため、条件分岐でイベントを書くと大変な作業量になってしまいます。(…というか別イベントでやって心が折れました。)

そのため、
①何らかの方法でアクターIDを取得する。(パーティ選択プラグインなど)
②アクターIDをもとにそのキャラ変数の変数IDを算出する。(今回の変数ID259の値がキャラ変数のID)
③一度別の変数(今回の変数ID258)に変数ID259で指定したIDのキャラ変数の値を格納する。
④変数の操作にて値を増減させる。
⑤ ④で増減させた値をキャラ変数に代入する。

という処理を行うつもりでした。今回質問したのは③の過程です。回りくどくなっているのは重々承知だったので技術的な質問だけに絞るつもりでしたが、余計にわかりにくくしてしまって申し訳ありませんでした。
以降は何がしたいのか、という部分まで明示するようにします。
お二方とも、この度は本当にありがとうございました!
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 【解決】変数で指定した変数IDの変数の値を代入する方法

投稿記事by ムノクラ » 2021年1月01日(金) 15:38

厨二少年 さんが書きました:お二方ともご指摘とご指導ありがとうございます!

今回やりたかったこととしては、アクターごとに管理している変数(各キャラごとの疲労度、武器経験値といった独自の変数。以降キャラ変数)を操作するコモンイベントをできる限り簡略化したい、という旨での質問でした。
アクターが現時点で24キャラおり各キャラごとに割り振られている変数があるため、条件分岐でイベントを書くと大変な作業量になってしまいます。(…というか別イベントでやって心が折れました。)

そのため、
①何らかの方法でアクターIDを取得する。(パーティ選択プラグインなど)
②アクターIDをもとにそのキャラ変数の変数IDを算出する。(今回の変数ID259の値がキャラ変数のID)
③一度別の変数(今回の変数ID258)に変数ID259で指定したIDのキャラ変数の値を格納する。
④変数の操作にて値を増減させる。
⑤ ④で増減させた値をキャラ変数に代入する。

という処理を行うつもりでした。今回質問したのは③の過程です。回りくどくなっているのは重々承知だったので技術的な質問だけに絞るつもりでしたが、余計にわかりにくくしてしまって申し訳ありませんでした。
以降は何がしたいのか、という部分まで明示するようにします。
お二方とも、この度は本当にありがとうございました!


流れを下記のように解釈しました。

1.アクターIDを(仮に)変数1に入れる。
2.キャラユニーク変数を変数1から割り出す。(一定数を加算と予想)結果が変数259。
3.変数258に変数259を代入。
4.変数258を増減(増減値をどこから?仮に変数2)。
5.変数259に変数258を代入。

1.2.は良いのですが、3.4.がなくても、下記の処理で済むように読めましたが、何か読み違えていますか?

1.アクターIDを(仮に)変数1に入れる。
2.キャラユニーク変数を変数1から割り出す。(一定数を加算と予想)結果が変数259。
3.変数259を増減(増減値をどこから?仮に変数2)。

元の3.4.で別変数に代入しないといけない理由があるのでしょうか?
別の判定に使用するにしても、変数2の値を流用すれば済むように見えます。

結果が同じロジックの場合、複雑化すると不具合が起きやすいです。
思考を整理してみるのが良さそうに感じました。

欲しい結果のために過程の手段だけを求められると「ドリルを売るには穴を売れ」という書籍タイトルがよく例に出されるのを思い出します。(未読)
穴が必要だから、ドリル(方法)が欲しくなるのです。
欲しい穴(目的)の規模によっては、ドリルではなくスコップの方が妥当であったり、削岩機が必要な場合もあるというような話です。



以下、蛇足
偉そうに書いてますけど、自分も似たようなロジックエラーの経験は多いので…
紙でフローチャート書いたりすると思考が整理しやすいです。


ダメな回答例
https://forum.tkool.jp/index.php?threads/4413/

頭を冷やして作り直した例
https://fungamemake.com/archives/12104

そんなわけで、下記のような質問方法を提案しています。
自分も質問文章を下書きしているうちに、「アレ試してないんじゃない?」とか思い出して、自分で解決できたりするので、人に説明するように質問文を下書きするのはお勧めです。

▼返信がもらいやすい質問の仕方
https://fungamemake.com/archives/8079
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
厨二少年
記事: 60
登録日時: 2017年3月14日(火) 00:08

Re: 【解決】変数で指定した変数IDの変数の値を代入する方法

投稿記事by 厨二少年 » 2021年1月01日(金) 16:45

ムノクラ さんが書きました:
厨二少年 さんが書きました:流れを下記のように解釈しました。

1.アクターIDを(仮に)変数1に入れる。
2.キャラユニーク変数を変数1から割り出す。(一定数を加算と予想)結果が変数259。
3.変数258に変数259を代入。
4.変数258を増減(増減値をどこから?仮に変数2)。
5.変数259に変数258を代入。

1.2.は良いのですが、3.4.がなくても、下記の処理で済むように読めましたが、何か読み違えていますか?

1.アクターIDを(仮に)変数1に入れる。
2.キャラユニーク変数を変数1から割り出す。(一定数を加算と予想)結果が変数259。
3.変数259を増減(増減値をどこから?仮に変数2)。

元の3.4.で別変数に代入しないといけない理由があるのでしょうか?
別の判定に使用するにしても、変数2の値を流用すれば済むように見えます。

結果が同じロジックの場合、複雑化すると不具合が起きやすいです。
思考を整理してみるのが良さそうに感じました。



改善点の提案ありがとうございます!
実は改善チャートの3番のところがネックになっておりまして、3の時点に変数259に格納されているのはユニーク変数の「ID」であってユニーク変数の「値」では無いのです……。
なので、変数259の「値」を変えてキャラ変数に代入しても、ユニーク変数の「ID」をもとにした数値が代入されることになってしまいます。

※例えば、ユニーク変数ID201に「800」という値があり、そこに固定値「500」を加算する、という処理の場合、
ユニーク変数ID201には「1300」が代入されるのが求める挙動ですが、改善チャートだと変数ID259の値=ユニーク変数のIDである「201」に「500」が加算された「701」が代入されてしまいます。

そのため、少し手間にはなってしまいましたが一度変数ID259で指定したユニーク変数IDの「値」を適当な変数(今回は変数258)に格納し、数値の増減処理を行ってから、変数ID259で指定したユニーク変数IDに代入する、という形をとっておりました。

質問の仕方についてはとても参考になったので、次回から実践させていただきます!
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 【解決】変数で指定した変数IDの変数の値を代入する方法

投稿記事by ムノクラ » 2021年1月01日(金) 20:46

厨二少年 さんが書きました:改善点の提案ありがとうございます!
実は改善チャートの3番のところがネックになっておりまして、3の時点に変数259に格納されているのはユニーク変数の「ID」であってユニーク変数の「値」では無いのです……。
なので、変数259の「値」を変えてキャラ変数に代入しても、ユニーク変数の「ID」をもとにした数値が代入されることになってしまいます。

※例えば、ユニーク変数ID201に「800」という値があり、そこに固定値「500」を加算する、という処理の場合、
ユニーク変数ID201には「1300」が代入されるのが求める挙動ですが、改善チャートだと変数ID259の値=ユニーク変数のIDである「201」に「500」が加算された「701」が代入されてしまいます。

そのため、少し手間にはなってしまいましたが一度変数ID259で指定したユニーク変数IDの「値」を適当な変数(今回は変数258)に格納し、数値の増減処理を行ってから、変数ID259で指定したユニーク変数IDに代入する、という形をとっておりました。

質問の仕方についてはとても参考になったので、次回から実践させていただきます!


あぁ、そうでしたね…

1.アクターIDを(仮に)変数1に入れる。
2.キャラユニーク変数を変数1から割り出す。結果が変数A。(変数Aの値の出し方が不明)
3.変数Bの値の数をIDとする変数C(今回は259)を代入。
4.変数258に変数B(今回は259)を代入。
5.変数258を増減(増減値をどこから?仮に変数Z)。
6.変数B(今回は259)に変数258を代入。

ということでしたね。
大変失礼いたしました。

厨二少年氏はご納得されているようなので、これ以上は控えますが、やはり、変数xの値の出し方が分かれば簡易な方法があるように思いました。

老婆心でお邪魔いたしました。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。

“MZ:質問” へ戻る