ページ 1 / 1
【解決済み】アイテムを一旦全て他のところに保存しておく
Posted: 2017年5月14日(日) 21:31
by yaiyai
お世話になっております。
今作っているゲームで、あるパーティーAが冒険を終えた後、別視点パーティーBに移って新たな旅が始まるとします。
そのとき、パーティーAが今持っているアイテムを全て保存しておき、パーティーBでは何も持っていない状態からスタートしたいのです。
また、後で2つのパーティーが合流したときに、パーティーAの持っていたアイテムが再び手に入るようにしたいです。
どのように作るのが楽でしょうか?
Re: アイテムを一旦全て他のところに保存しておく
Posted: 2017年5月14日(日) 22:17
by 奏ねこま
とりあえず、スクリプトを使ったやり方を。
それぞれ目的のスクリプトを、イベントコマンド「スクリプト」で実行してください。
コード: 全て選択
// アイテムリストを変数#0001に保存
$gameVariables.setValue(1, JsonEx.makeDeepCopy($gameParty._items));
// 武器リストを変数#0002に保存
$gameVariables.setValue(2, JsonEx.makeDeepCopy($gameParty._weapons));
// 防具リストを変数#0003に保存
$gameVariables.setValue(3, JsonEx.makeDeepCopy($gameParty._armors));
// アイテムリストをクリア
$gameParty._items = {};
// 武器リストをクリア
$gameParty._weapons = {};
// 防具リストをクリア
$gameParty._armors = {};
// アイテム・武器・防具をまとめてクリア
$gameParty.initAllItems();
// 変数#0001に保存したアイテムリストを復元
$gameParty._items = JsonEx.makeDeepCopy($gameVariables.value(1));
// 変数#0002に保存した武器リストを復元
$gameParty._weapons = JsonEx.makeDeepCopy($gameVariables.value(2));
// 変数#0003に保存した防具リストを復元
$gameParty._armors = JsonEx.makeDeepCopy($gameVariables.value(3));
// 変数#0001に保存したアイテムリストを、現在のアイテムリストに合成
var items = $gameVariables.value(1);
Object.keys(items).forEach(function(id) {
$gameParty.gainItem($dataItems[id], items[id]);
});
// 変数#0002に保存した武器リストを、現在の武器リストに合成
var weapons = $gameVariables.value(2);
Object.keys(weapons).forEach(function(id) {
$gameParty.gainItem($dataWeapons[id], weapons[id]);
});
// 変数#0003に保存した防具リストを、現在の防具リストに合成
var armors = $gameVariables.value(3);
Object.keys(armors).forEach(function(id) {
$gameParty.gainItem($dataArmors[id], armors[id]);
});
Re: アイテムを一旦全て他のところに保存しておく
Posted: 2017年5月16日(火) 00:14
by yaiyai
リストをそのまま変数に代入する方法があるとは、知りませんでした。
勉強になります。ありがとうございました。