【解決済み】メモ欄の値を取り出す方法について。

ぶたどん
記事: 4
登録日時: 2017年8月21日(月) 22:22

【解決済み】メモ欄の値を取り出す方法について。

投稿記事by ぶたどん » 2017年9月11日(月) 18:18

はじめまして。ツクール製ゲームに触発されてツクール製作に手を出し始めたものです。
現在、メモ欄に設定した複数の値をコンマごとに取り出したいのですが行き詰まっています。

<test:100,500>

$gameMessage.add($dataActors[1].meta['test'][0]);
$gameMessage.add($dataActors[1].meta['test'][1]);

データベース>アクターの0001のメモ欄に①を記載。
次に適当にイベントを作成し、スクリプトに②を記述したのですが
イベントに話しかけると
1
0
と返ってきました。(てっきりコンマ区切りに値を取得できると思っていました…)
100
500
と返ってくるようにしたいのですが
どのように記述すれば良いのでしょうか。
初歩的な質問で申し訳ございませんがよろしくお願いいたします。
最後に編集したユーザー ぶたどん on 2017年9月11日(月) 19:32 [ 編集 1 回目 ]

奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: メモ欄の値を取り出す方法について。

投稿記事by 奏ねこま » 2017年9月11日(月) 18:22

meta['test'].split(',')[0]
meta['test'].split(',')[1]

こんな感じで。
アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: メモ欄の値を取り出す方法について。

投稿記事by しぐれん » 2017年9月11日(月) 18:27

metaの値は文字列型で格納されます。
<test:100,500>で必要なデータを配列アクセスしたい場合、ゲーム起動時に独自の変数を対象のオブジェクトに書き込むのが良いでしょう。
Scene_Boot.startで、対象のオブジェクトにデータを書き込むと良いです。

以下は私が以前書いたコードです。
ゲーム起動時にアイテムに対してデータを追加で書き込んでいます。
配列型にして格納したい場合、JSON.parse()を使えばよかったと思います。

コード: 全て選択

const Scene_Boot_start =Scene_Boot.prototype.start;
Scene_Boot.prototype.start= function() {
    Scene_Boot_start.apply(this,arguments);
    const len = $dataItems.length;
    for(var i =1; i < len;i+=1){
        pocketFunction.bootEachItem($dataItems[i]);
    }
};
    /**
     * @param {RPG.Item} item
     */
    bootEachItem:function(item){
        if(!canPutInPocket(item) ){
            item.maxAmount_MA =0;
            item.weight_MA =Number.MAX_SAFE_INTEGER;
            return;
        }
        const capa = item.meta[xxx.tag.maxAmount];
        if(capa){
            item.maxAmount_MA =Number(capa);
        }else{
            item.maxAmount_MA = xxx.maxAmount;
        }
        const  weight=item.meta[ xxx.tag.weight];
        if(weight){
            item.weight_MA = Number(weight);
        }else{
            item.weight_MA = xxx.weight;
        }
    },
現在、プラグイン依頼はお休み中です。
ぶたどん
記事: 4
登録日時: 2017年8月21日(月) 22:22

Re: メモ欄の値を取り出す方法について。

投稿記事by ぶたどん » 2017年9月11日(月) 19:31

お早い返信ありがとうございます。
お二人のおかげで数日の疑問が数分足らずで解決いたしました…。

奏ねこま様
ご回答ありがとうございます!
試してみたところ無事にコンマ単位で取得することができました。
split(区切り文字)で分割できるのですね…。
ツクールどころかプログラミング自体さっぱりなため考えもしませんでした。
大変助かりましたありがとうございました。

しぐれん様
ご回答ありがとうございます!
頂いたコードについて、どこに書き込んでどう使えば良いのか
まだまだ理解不足で手出しできませんが(お恥ずかしい限りです)
じっくり読んで勉強させていただきます。
また質問とは関係ありませんが
>metaの値は文字列型で格納されます。
この一文とても参考になりました。数値も文字列で格納されるのですね。
(型変換せず足し算したら100500と表示されて不思議だったので…)

丁寧な回答ありがとうございました。

“MV:質問” へ戻る