全てのアイテムを取得するプラグイン

デバッグ用で、ゲーム開始時に全てのアイテム、武器、防具を取得済みの状態で始めたかった。
探せばあるような気がするんだけど、探しても見つからなかったのでプラグインを制作した。

下記からダウンロードできます。
https://raw.githubusercontent.com/kido0617/rpgmakerMV-plugin/master/GetAlIItems/GetAllItems.js

プラグインコマンドで以下のようにして使う。
それぞれ全アイテムを99個獲得、全武器を1個獲得、全防具を10個獲得の意味。

1
2
3
GetAllItems item 99
GetAllItems weapon 1
GetAllItems armor 10

こんな感じにゲーム開始時にそれぞれ取得するように書いておけば、全所持状態から開始できる。

ライセンス

MIT
自由にご利用ください。

TweenプラグインのTorigoya_Tween.jsが便利

ウィンドウをアニメーションさせたく、updateメソッド内でちまちま動かしていた。
しかし、さすがに汎用性に欠けるし、コードが複雑になりすぎる。
jQueryのanimateメソッドみたいな、UnityでいうiTweenみたいなプラグインないかなと思っていたら、まさにそのとおりのがあった。
鳥小屋.txtさんのTorigoya_Tween.jsだ。

例えば、以下のようなスクリプトでこんな感じのアニメーションができる。

1
2
3
4
5
6
7
8
9
10
11
var height = 200;
var window = new Window_Base(0, Graphics.height, Graphics.width, height);
window.opacity = 0;
SceneManager._scene.addWindow(window);
var toY = Graphics.height - height;
Torigoya.Tween.create(window)
.to({y: toY - 20, opacity: 255}, 15, Torigoya.Tween.Easing.easeOutSine)
.to({y: toY}, 5, Torigoya.Tween.Easing.easeInSine)
.wait(60)
.to({opacity: 0}, 60, Torigoya.Tween.Easing.linear)
.start();

超便利。すばらしー。

easingがどんなのかわからないときは、ここが参考になる。

loadBitmapを使うときはsmoothに注意する

画像をスクリプトから読み込むときにImageManager.loadBitmapを使う。
これを使って、画像を表示するには以下のようなコードをスクリプトコマンドから実行すれば良い。

1
2
3
var bitmap = ImageManager.loadBitmap("img/sample/", "a");
var sprite = new Sprite(bitmap);
SceneManager._scene.addChild(sprite);

画像を表示

ここで、例えば、画像を80%で表示するとする。そういうときは、spriteのscaleをいじれば良い。
しかし、このままだと縮小された画像にジャギーが発生する。以下のコードと画像を参照。

1
2
3
4
5
var bitmap = ImageManager.loadBitmap("img/sample/", "a");
var sprite = new Sprite(bitmap);
sprite.scale.x = 0.8;
sprite.scale.y = 0.8;
SceneManager._scene.addChild(sprite);

ジャギーが発生

これを抑止するには、loadBitmapの第4引数(smooth)をtrueにすれば良い。第3引数は色相なので使わなければnull。
以下のようにコードを変更すれば、ジャギーなく表示できる。

1
2
3
4
5
var bitmap = ImageManager.loadBitmap("img/sample/", "a", null, true);
var sprite = new Sprite(bitmap);
sprite.scale.x = 0.8;
sprite.scale.y = 0.8;
SceneManager._scene.addChild(sprite);

ジャギーがない

ちなみに、内部的に何が変わるのかという話だけど、Bitmapの以下の箇所で分岐する。

1
2
3
4
5
if (this._smooth) {
this._baseTexture.scaleMode = PIXI.SCALE_MODES.LINEAR;
} else {
this._baseTexture.scaleMode = PIXI.SCALE_MODES.NEAREST;
}

PIXIのテクスチャーのscaleModeがLINEARかNEARESTの違い。
多分、バイリニア法かニアレストネイバー法使うかの差っぽい。
それぞれ検索するとどんな感じか出るのでそちらを参照

独自のデータをセーブする

はじめに

ツクールMVのセーブデータはjson。正確には以下のコードのようにLZStringライブラリを使って、Base64にしつつ圧縮している。

1
LZString.compressToBase64(json);

自分の好きなデータを保存したい場合、既にある$gameSystemとか$gameVariablesといった変数に付け足す方法がある。
デフォルトで入っているアイテム図鑑プラグインのItemBook.jsは$gameSystemを拡張して、アイテムの取得済みかどうかを保存している。以下のようにGame_System($gameSystem)に_itemBookFlagsを追加している。

1
2
3
Game_System.prototype.clearItemBook = function() {
this._ItemBookFlags = [[], [], []];
};

この方法でも問題ないが、がっつり独自のセーブデータを作った方がいいケースもある。その方法を解説する。

DataManagerを拡張

ツクールのセーブする変数は$gameで始まるのでそれにのっとる。今回は、$gameMyというのを作る。
必要なのは、初期化、セーブ、ロード、の3つ。
以下のような感じになる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(function(){
window.$gameMy = {};
var _createGameObjects = DataManager.createGameObjects;
DataManager.createGameObjects = function() {
_createGameObjects.call(this);
$gameMy = new Game_My();
};
var _makeSaveContents = DataManager.makeSaveContents;
DataManager.makeSaveContents = function() {
var contents = _makeSaveContents.call(this);
contents.gameMy = $gameMy;
return contents;
};
var _extractSaveContents = DataManager.extractSaveContents;
DataManager.extractSaveContents = function(contents) {
_extractSaveContents.call(this, contents);
$gameMy = contents.gameMy;
};
function Game_My(){
this.saveSomething = "aaa"; //自由にデータを追加できる
}
})();

これでGame_My($gameMy)を通して自由にデータを追加して保存できる。

簡易メッセージプラグイン

VX Aceに同じようなのがあったけど、MVで見つからなかったので自作した。
以下みたいな感じです。

スクリプトコマンドで以下のように指定して使います。
TickerManager.show(‘\I[5]あいうえお’);

ソースは以下です。
https://raw.githubusercontent.com/kido0617/rpgmakerMV-plugin/master/Ticker/Ticker.js

ニュースティッカー的な感じだから、Tickerという名前。

ライセンス

MIT
自由にご利用ください。