RPG作る人のブログ -7ページ目

RPG作る人のブログ

RPGゲームを作りたい人のブログです。

ツクールMVのスクリプトでラベルの設定・ラベルジャンプを行う方法

スクリプトでラベルの設定とラベルジャンプを行おうとするとツクールの性質上、上手くいかない部分が出てきます。

詳細は以下で記述します。

ラベル設定

this._list[this._index].parameters = ["ラベル名"]


ラベルジャンプ

var labelName = "ラベル名";
for (var i = 0; i < this._list.length; i++) {
var command = this._list[i];
if (command.code === 355 && command.parameters[0] === labelName) {
this.jumpTo(i);
}
}


サンプルコード(labelというラベルを設定)

this._list[this._index].parameters = ["label"]


サンプルコード(labelというラベルへジャンプ)

var labelName = "label";
for (var i = 0; i < this._list.length; i++) {
var command = this._list[i];
if (command.code === 355 && command.parameters[0] === labelName) {
this.jumpTo(i);
}
}


このようにラベル・ラベルジャンプを設定できるのですが、ラベルの設定をラベルジャンプより後に持ってくるとジャンプが実行されず、イベントをもう一度起動すると意図した通りに実行されます。

これはRPGツクールがcommand118(ラベルの設定)ではイベントコード実行前にコードが118であるコードを先に実行するようプログラムされていると思われるのですが、スクリプトだとそれが実行されないために起こると推測されます。

つまり、スクリプトではラベルジャンプが実行された後にラベル名が設定されるのでラベルジャンプが起こらないということです。

また、ラベルの設定をスクリプトで行い、ラベルジャンプをイベントコマンドで行うとこれもエラーになる原因になります。

結局、スクリプトでラベルの設定をイベントコマンドでして、ラベルのジャンプをスクリプトで行うときのみどんな場面でも問題なく上手くいくということになります。

それ以外では使い方に制限がついてしまいます。

ツクールMVスクリプトリファレンスwikiへ戻る

にほんブログ村 ゲームブログ RPG・ロールプレイングゲームへ
にほんブログ村

ツクールMVのスクリプトでループ・ループの中断を行う方法

ツクールMVのループ処理をスクリプトで行う方法ですが、javascirptにはrubyのようにloopという繰り返し処理は無いため、ツクールMVでスクリプトで繰り返しをするときはforかwhile、またはdo..whileで繰り返すことになります。

ループという意味ではwhile文の方が近いかもしれませんね。

ここではその繰り返しについて紹介します。

for文で繰り返し

for(var 変数名 = 初期値; 繰り返し終了条件; 変数の増減法){
処理
}


サンプルコード(繰り返し番号をメッセージに表示)

for(var i = 0; i <= 10; i++){
$gameMessage.add(i + "番目の繰り返し")
}


while文で繰り返し

初期条件
while(繰り返し終了条件){
処理
変数の増減
}


while文を使うときは変数の増減法を{}の中に書く必要があります。

サンプルコード(繰り返し番号をメッセージに表示)

var i = 0
while(i <= 10){
$gameMessage.add(i + "番目の繰り返し")
i++
}


do..while文はwhile文と似ていますが、先に終了条件を書いてその後に処理を書くか、先に処理を書いてその後に終了条件を書くかという違いがあります。

javascriptを使いこなしている方にとってはより深い意味があるのでしょうが、自分としては好みの問題だと思っています。

初期条件
do{
処理
変数の増減
}
while(繰り返し終了条件)


サンプルコード(繰り返し番号をメッセージに表示)

var i = 0
do{
$gameMessage.add(i + "番目の繰り返し")
i++
}
while(i <= 10)



ツクールMVスクリプトリファレンスwikiへ戻る

にほんブログ村 ゲームブログ RPG・ロールプレイングゲームへ
にほんブログ村

ツクールMVのスクリプトで移動ルートの設定を行う方法

ツクールMVのスクリプトで移動ルートの設定を行うには以下の通りです

this.character(キャラクターID).forceMoveRoute({
"list":[{"code":コードID",parameters":パラメータ"}
{"code":コードID",parameters":パラメータ"}],
//ルート入力終了 *必須
{"code":0}],
//動作を繰り返す
"repeat":true か false,
//移動できない場合は飛ばす
"skippable":true か false,
//完了までウェイト
"wait":true か false})


キャラクターIDは「-1」などの負の数でプレイヤー、「0」でこのイベント、正の数でイベントIDを指定します。

コードIDについては以下の通りに対応しています。

ルートエンド = 0;
下に移動 = 1;
左に移動 = 2;
右に移動 = 3;
上に移動 = 4;
左下に移動 = 5;
右下に移動 = 6;
左上に移動 = 7;
右上に移動 = 8;
ランダムに移動 = 9;
プレイヤーに近づく = 10;
プレイヤーから遠ざかる = 11;
一歩前進 = 12;
一歩後退 = 13;
ジャンプ = 14;
ウェイト = 15;
下を向く = 16;
左を向く = 17;
右を向く = 18;
上を向く = 19;
右に90度回転 = 20;
左に90度回転 = 21;
180度回転 = 22;
右か左に90度回転 = 23;
ランダムに方向転換 = 24;
プレイヤーの方を向く = 25;
プレイヤーの逆を向く = 26;
スイッチON = 27;
スイッチOFF = 28;
移動速度の変更 = 29;
移動頻度の変更 = 30;
歩行アニメON = 31;
歩行アニメOFF = 32;
足踏みアニメON = 33;
足踏みアニメOFF = 34;
向き固定ON = 35;
向き固定OFF = 36;
すり抜けON = 37;
すり抜けOFF = 38;
透明化ON = 39;
透明化OFF = 40;
画像の変更 = 41;
不透明度の変更 = 42;
合成方法の変更 = 43;
SEの演奏 = 44;
スクリプト = 45;

ルート入力の最後には{"code":0}を必ず入れてください。

サンプルコード(キャラクターIDが1のキャラの移動ルートに下に移動、60フレーフウェイト、x方向に1・y方向に2ジャンプ、SEの演奏を設定、繰り返しはoff、飛ばさない、完了までウェイトする)

this.character(1).forceMoveRoute({
"list":[{"code":1},
{"code":15,"parameters":[60]},
{"code":14,"parameters":[1,2]},
{"code":44,"parameters":[{"name":"Applause1","volume":90,"pitch":100,"pan":0}],"indent":null},
{"code":0}],
"repeat":false,
"skippable":true,
"wait":true})


ツクールMVスクリプトリファレンスwikiへ戻る

にほんブログ村 ゲームブログ RPG・ロールプレイングゲームへ
にほんブログ村

ツクールMVのスクリプトでイベントの位置設定を行う方法

ツクールMVのスクリプトでイベントの位置設定を行うには以下の通りです。

character = this.character(キャラクターID)
character.locate(X座標, Y座標)
character.setDirection(方向)


キャラクターIDは「-1」などの負の数でプレイヤー、「0」でこのイベント、正の数でイベントIDを指定します。

方向はテンキー対応しています。
0:そのまま
2:下
4:左
6:右
8:上

サンプルコード(イベントIDが1のイベントをマップ(2,4)へ左向きに設定)

character = this.character(1)
character.locate(2, 4)
character.setDirection(4)


ツクールMVスクリプトリファレンスwikiへ戻る

にほんブログ村 ゲームブログ RPG・ロールプレイングゲームへ
にほんブログ村

ツクールMVのスクリプトでスキルの増減を行う方法

ツクールMVのスクリプトでスキルの増減を行う方法です。

//スキルを覚えさせる
$gameActors.actor(アクターID).learnSkill(スキルID)
//スキルを忘れさせる
$gameActors.actor(アクターID).forgetSkill(スキルID)



サンプルコード(アクターIDが1のアクター(ハロルド)にファイアを覚えさせて忘れさせる)

$gameActors.actor(1).learnSkill(9)
$gameActors.actor(1).forgetSkill(9)


ツクールMVスクリプトリファレンスwikiへ戻る

にほんブログ村 ゲームブログ RPG・ロールプレイングゲームへ
にほんブログ村
あけましておめでとうございます!

去年はブログを始めてから様々な方からの反応を頂き、実りの多い年になりました。

ペタ、いいね、コメント、メッセージありがとうございました!

今年、まずは現在製作しているゲーム「サイコロジカルダイビング(仮)」を完成させたいと思います。

当初の予定では3か月で完成させる予定でしたが、ストーリー、心理世界を考えたり、parallax mappingという技法の使ったマップを製作したり、パズルゲームのプログラミングをしたりするとどんどん時間がかかっていってしまい、完成はまだまだ先になりそうです。

時間はかかりますが、途中を端折って自分の中で中途半端な状態の作品を作ってもすぐに世間様に見抜かれ売れない!ので自分が納得できるレベルまでこだわろうと思います。

どこまでやるかはいいとこで区切りを付けないといけませんが…

極論を言えば自分がやっていることは自己満足の世界のことですからね。



去年はPCゲームからソーシャルゲームまで様々なゲームをしたり、見ました。

当てた時の一発が大きいのはパズドラをはじめとしたソーシャルゲームなのでしょうが、自分が作りたい、こだわりを持って作れるのは「彼女は最後にそういった」、「ib」、「魔女の家」のようなストーリーや演出で魅せるゲームだと感じます。

せっかくマップにもこだわりをもって作っているので場面場面が絵になるようなマップもどんどん作っていきたい。

暇を潰せるゲームではなく、子供はもちろん、大人が前向きになれるようなゲームを作りたい!というのは去年から続く、自分のゲームを作る時の大きな指針です。

今年もこの指針に沿ってストーリーを考え、ゲームを作っていこうと思います。



また、RGSSスクリプトレファレンス、ツクールMVスクリプトリファレンスなどのゲームプログラミングのサポートも最近は大きくなってきました。

プログラミング関連のワード・リンクで検索エンジン、twitter、はてなブックマークなどからいらっしゃる方も多いようです。

今年はスクリプト素材などを作り、プログラミング面でのサポートも拡げていきたいです。



ゲーム製作を始めたばかりのビギナーではございますが、今年もよろしくお願いします!

ツクールMVのスクリプトで戦闘行動の強制を行う方法

敵キャラの出現はデータベースの敵グループにて「途中から出現」に設定した敵を出現させるイベントです。

ツクールMVのスクリプトで敵キャラの出現を行うなら以下の通りです。

this.iterateBattler(敵キャラかアクターか, 対象ID, function(battler) {
if (!battler.isDeathStateAffected()) {
battler.forceAction(スキルID, 対象)
BattleManager.forceAction(battler)
this.setWaitMode('action')
}
}.bind(this));


「!battler.isDeathStateAffected()」で対象が戦闘不能かどうかを確認しています。

敵キャラかアクターかは0で敵キャラ、1でアクターを対象にします。

対象IDについては0から始まり、番号順になります。

スキルIDはデフォルトで1で攻撃、2で防御、以下番号順に対応しています。

対象は値が-2でラストターゲット、-1でランダム、0からインデックス1というようになります。

サンプルコード(敵キャラでID2の敵にスキルIDが10のスキル(スパーク)をラストターゲットを対象にした戦闘行動を強制)

this.iterateBattler(0, 1, function(battler) {
if (!battler.isDeathStateAffected()) {
battler.forceAction(10, -2)
BattleManager.forceAction(battler)
this.setWaitMode('action')
}
}.bind(this));


ツクールMVスクリプトリファレンスwikiへ戻る

にほんブログ村 ゲームブログ RPG・ロールプレイングゲームへ
にほんブログ村


ツクールMVのスクリプトで戦闘アニメーションの表示を行う方法

ツクールMVにのスクリプトで戦闘アニメーションの表示を行うには以下の通りです。

this.iterateEnemyIndex(敵ID, function(enemy) {
if (enemy.isAlive()) {
enemy.startAnimation(アニメーションID, ミラー, 遅延);
}
}.bind(this));


敵IDは「0」でこのイベント、-1などの負の数で敵全体が対象となります。

ミラーとはアニメーションを左右反対にするかどうかを決めるパラメータです。

true/falseで入力し、trueでアニメーションを左右反対にします。

遅延はコードを実行してからアニメーションを表示するまでの時間を表します。

フレーム数で入力します。

サンプルコード(敵IDが5の敵にアニメーションIDが6(斬撃/物理のアニメーション)のアニメーションを表示、ミラーはしない、1秒(60フレーム)遅延)

this.iterateEnemyIndex(1, function(enemy) {
if (enemy.isAlive()) {
enemy.startAnimation(6, false, 60);
}
}.bind(this));


ツクールMVスクリプトリファレンスwikiへ戻る

にほんブログ村 ゲームブログ RPG・ロールプレイングゲームへ
にほんブログ村

ツクールMVのスクリプトで敵キャラの変身を行う方法

ツクールMVのスクリプトで敵キャラの変身を行うなら以下の通りです。

this.iterateEnemyIndex(変身させる敵ID, function(enemy) {
enemy.transform(変身後の敵キャラID)
$gameTroop.makeUniqueNames()
}.bind(this))


敵IDについては負の数で敵全体が対象となり、0から1番目の敵IDとなります。

「$gameTroop.makeUniqueNames()」は敵の名前を設定するモジュールです。

サンプルコード(敵IDが2の敵を敵キャラ3(オーク)に変身させる)

this.iterateEnemyIndex(1, function(enemy) {
enemy.transform(3)
$gameTroop.makeUniqueNames()
}.bind(this))


ツクールMVスクリプトリファレンスwikiへ戻る

にほんブログ村 ゲームブログ RPG・ロールプレイングゲームへ
にほんブログ村