アフィリエイト広告を利用しています
検索
言葉を集めて世界を旅するRPG「地図の時間〜言葉集めの冒険譚〜」
timeofmapworks_logo_2020.png
ハートフルRPG「地図の時間」

地図の時間スピンオフRPG「影泥棒と魔法の手記」

リソース管理ダンジョンRPG「琥珀の道具士」

現代SFRPG「重力ルーペ/探求リバーブ」

ドラマティックRPG「バンドワゴン」

ビジュアルノベル「日向と香水」

ノベル×ADV「ストーリーテラー」 title1_2.png
カテゴリ
プロフィール/制作環境(3)
制作記(1)
ニュース(ツクールMV)(222)
技術情報(ツクールMV)(203)
JavaScript/スクリプト(ツクールMV)(9)
プラグイン情報(ツクールMV)(11)
素材情報(ツクールMV)(15)
アップデート情報(ツクールMV)(45)
トラブル&解決情報(ツクールMV)(18)
ツクール製作品(ツクールMV)(42)
関連情報(ツクールフェス)(2)
投稿イベント情報(ツクールMV)(4)
関連情報(ラノゲツクールMV)(9)
Benchmark MV(個人作品:試作)(1)
manurpg(個人作品:試作)(2)
ブックモービル(個人作品)(10)
重力ルーペ(個人作品)(11)
そして魔女に会う(個人作品)(7)
バンドワゴン(個人作品)(1)
地図の時間(個人作品)(14)
日向と香水(個人作品)(3)
ストーリーテラー(個人作品)(1)
嘘つきのノブレスオブリージュ(2)
お役立ちツール/素材サイト(創作全般)(12)
創作アイディア(創作全般)(7)
保存用コラム(創作全般)(10)
コラム(144)
オススメ作品(8)
当ブログへのお問い合わせ(contact me)(2)
琥珀の道具士(3)
最果てのギルド(1)
読書メモ(1)
Steam展開ノウハウ(21)
RPGツクールMZ(3)
地図の時間〜名前探しの物語(1)
プラグイン情報(ツクールMZ)(1)
技術情報(ツクールMZ)(13)
国内展開ノウハウ(1)
素材情報(ツクールMZ)(4)
AI(8)
RPG Maker Unite(2)
DAW(1)
翻訳(1)
リンク集

2020年09月27日

録画したツクール作品の音ズレを直す方法

録画したツクール作品の音ズレを直す方法


使用したもの:
・ロイロゲームレコーダー
・Windowsフォト

問題点:
・ロイロゲームレコーダーで録画したデータ(.avi)が「フレームレートを固定する(ファイルサイズ増)」がチェック外れてると、可変フレームレートになり、音ズレが起こりやすい
200927_1.png

直し方:
1.Windowsフォトを起動
2.新しいビデオ→プロジェクトライブラリにロイロで作成した.aviを追加
3.「ここにプロジェクトライブラリから項目をドラッグしてください」のところに2をドラッグ&ドロップ
4.右上の「ビデオの完了」をクリック
200927_2.png

5.ビデオの画質で作品のウィンドウ解像度にあわせる
これで音ズレの修正されたmp4が完成します。

2020年08月23日

【RPGツクールMV/MZ】決まった時刻のみイベントを実行する

『地図の時間〜名前探しの物語〜』で実装した「決まった時刻のみイベントを実行する」方法についてご紹介。
https://game.nicovideo.jp/atsumaru/games/gm16052

使用したのはスクリプト(JavaScript)と条件分岐。
new DateからgetHoursで時刻を取得し、変数で条件分岐させていました。

200823_20.jpg

スクリプト部分は次の通り。
const date1 = new Date();
const date2 = date1.getHours();
$gameVariables.setValue(7,date2);//変数7番に現在時刻(n:00のn部分)を代入

くらむぼんさんがより正確な時刻取得できるプラグインを配信されていますので、あわせてご参考ください。
https://raw.githubusercontent.com/krmbn0576/rpgmakermv/master/js/plugins/ServerTime.js

2020年07月31日

RPGツクールMV コアスクリプト1.6.2不具合メモ

RPGツクールMV コアスクリプト1.6.2不具合メモ


気付いたら追記します。

rpg_core.js


WindowLayer.prototype._maskWindow = function(window, shift) {
this._windowMask._currentBounds = null;
this._windowMask.boundsDirty = true;
var rect = this._windowRect;
rect.x = this.x + shift.x + window.x;
rect.y = this.x + shift.y + window.y + window.height / 2 * (1 - window._openness / 255);

正しくはthis.y
rect.y = this.y + shift.y + window.y + window.height / 2 * (1 - window._openness / 255);

2020年07月25日

YEP_X_BattleSysSTBとBeforeCommonの競合解決のメモ

YEP_X_BattleSysSTBとBeforeCommonの競合解決のメモ


YEP_X_BattleSysSTB:Yanfly様作、バトルシステムをSTBにカスタマイズするプラグイン
YEP_BattleEngineCore必要
BeforeCommon:やな様作、スキル使用前にコモンイベントを実行するプラグイン

プラグイン管理の順番は
YEP_BattleEngineCore
YEP_X_BattleSysSTB
BeforeCommon

目的

・スキル使用時に確率でカットイン演出:BeforeCommon.js
 スキルの使用者、対象者をBeforeCommon.jsの基本機能を使い変数で引き継ぎ、戦闘行動の強制のスクリプト版でカットイン後の処理を受け継ぐ

問題

・BeforeCommonで実行したコモンイベントでは連続して行動ができてしまう(ずっと俺のターン状態)
 行動不能のステートを使うも、次回行動者に行動が移らず2人以上のPTだと使えない

原因

・this._phase = 'turn'処理がYEP_X_BattleSysSTBとBeforeCommonで異なるため

YEP_X_BattleSysSTBは一人あたりの行動終了ごとにthis._phase = 'turn'の後にYanfly.BEC.BattleManager_endAction.call(this)で終了させなければならない

BeforeCommonで呼び出したコモンイベント実行後の処理には前述の処理が含まれていなかった

解決

BeforeCommon.jsの this._phase = 'turn'; 処理の後にYEP_X_BattleSysSTBの this._phase = 'turn'; 処理の後のコードを追記する。

BeforeCommon.jsでもYEP_X_BattleSysSTBと同じ処理をしてあげる。
具体的にはこう。

this._phase = 'turn';//この下に追加
if (this._stbInstantCast) {
this._stbInstantCast = false;
return Yanfly.BEC.BattleManager_endAction.call(this);
}
if (this._subject) {
this._performedBattlers.push(this._subject);
this._subject.spriteStepBack();
this._subject.onAllActionsEnd();
this._subject.removeCurrentAction();
}
if (this._processingForcedAction) {
this._phase = this._preForcePhase;
this._processingForcedAction = false;
}
if (this.loadPreForceActionSettings()) return;
this._subject = null;
Yanfly.BEC.BattleManager_endAction.call(this);//追加処理ここまで

気付き

今回はターン終了(行動終了)の処理に絞ることができ、解決の糸口に繋がった
競合しているプラグインに見当をつけたら、次は競合している処理を探す
探し方は二つのプラグインで使われている処理内容をキーワードにコードを検索する
今回はthis._phase = 'turn'が検索キーだった

2020年07月19日

【ツクールMV】【デバッグ効率化】アイテム、武器、防具を一斉に取得する方法

【ツクールMV】【デバッグ効率化】アイテム、武器、防具を一斉に取得する方法


スクリプトで以下コマンドを実行するとアイテム、武器、防具をそれぞれ1つずつ入手できます。
作品に応じて使い分けください。

・let i = 1の1箇所が起点となるIDです
・i <= 1000 の1000が終点となるIDです

アイテムID1〜1000を1つずつ入手する

for(let i = 1; i <= 1000; i++){
$gameParty.gainItem($dataItems[i], 1);
}

武器ID1〜1000を1つずつ入手する

for(let i = 1; i <= 1000; i++){
$gameParty.gainItem($dataWeapons[i], 1, true);
}

防具ID1〜1000を1つずつ入手する

for(let i = 1; i <= 1000; i++){
$gameParty.gainItem($dataArmors[i], 1, true);
}