FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


web拍手 by FC2
[ --/--/-- --:-- ] スポンサー広告 | コメント(-)

パワプロの栄冠ナインのように一気に仲間を入れる処理

コミックb


職業のメモ欄に<Class:Monster>、<Number:1>を入れておく。
コミック

アクターの空きを予め作っておく。
コミックa

変数1番には仲間にできる人数を入れる。ここを10などにすると一気に10人が入ります。
変数2番にはアクター番号の初期値の1を入れます。仲間の数が多ければ多いほど処理も多くなるのでその分、時間もかかります。

最初の条件分岐のスクリプトはパーティに特定のアクターがいるかどうかの判定
そのアクターがいなければ、そのidは空いているということなので仲間に加える処理をする。
$gameParty.members().contains($gameActors.actor($gameVariables.value(2)))

変数3番に職業を選別するための乱数を入れる。1を職業なしにした場合としているので2を初期値としています。職業の数だけ乱数を増やして下さい。

次は仲間のレベルを初期化してからパーティに加える処理です。
$gameActors.actor($gameVariables.value(2)).setup($gameVariables.value(2));
$gameParty.addActor($gameVariables.value(2));


次は仲間の職業をランダムで決める処理です。
$gameActors.actor($gameVariables .value(2)).changeClass($gameVariables .value(3), true);
$gameActors.actor($gameVariables .value(2)).setFaceImage($dataClasses[$gameVariables .value(3)].meta["Class"], $dataClasses[$gameVariables .value(3)].meta["Number"] -1);


$gameActors.actor($gameVariables .value(2)).changeClass($gameVariables .value(3), true);
このスクリプトは変数2番に格納されたアクターの職業をchangeClassを使って変数3番の乱数で決められた値にします。

$gameActors.actor($gameVariables .value(2)).setFaceImage($dataClasses[$gameVariables .value(3)].meta["Class"], $dataClasses[$gameVariables .value(3)].meta["Number"] -1);
このスクリプトはアクターの顔画像を職業のメモから取得するためのものです。職業に顔グラフィックを変える機能がついていないので自分で作ります。
職業のメモ欄に<Class:Monster>、<Number:1>と入れらている場合、facesフォルダに入っているMonsterというファイル名の1番の画像を読み込みます。

$gameActors.actor($gameVariables .value(2)).setCharacterImage($dataClasses[$gameVariables .value(3)].meta["Class"], $dataClasses[$gameVariables .value(3)].meta["Number"] -1);
歩行キャラの画像を変えたい場合は上記のように設定して下さい。charactersフォルダに入っているMonsterというファイル名の1番の画像を読み込みます。

$gameActors.actor($gameVariables .value(2)).setBattlerImage($dataClasses[$gameVariables .value(3)].meta["SVactor"]);
SV用の戦闘キャラ画像を変えたい場合は上記のように設定して下さい。その場合、職業のメモ欄に<SVactor:Actor1_1>を追加して下さい。デフォルトでハロルドの画像に切り替わるようになっています。ハロルドが嫌いな場合は任意のファイル名を指定して下さい。

$gamePlayer.refresh()
キャラグラフィックをスクリプトから変えた場合は必ずリフレッシュの処理をさせて下さい。じゃないとグラフィックが更新されません。

職業選択後の画像を何も変えたくない場合はこの部分は全部削除して下さい。

次は仲間の数を10人より多くしない場合の条件分岐です。
$gameParty.allMembers().length < 10
$gameVariables.value(1) > 0

その後に変数2番に+1加算をしてラベルジャンプで最初まで戻します。10人以上になっていないか、最初に決めた仲間にできる人数をオーバーしていないかの判定をします。


web拍手 by FC2
スポンサーサイト
[ 2019/04/18 06:59 ] RPGツクールMV | コメント(0)

RPGツクールMVの特殊スクリプトコマンド集

RPGツクールMVの特殊スクリプトコマンド集


パーティメンバーに特定のスキルが追加されているかどうかの条件式

$gameParty.members()[メンバーID].addedSkills().contains(スキルID)
※メンバーIDはパーティの順番、0が1番目、1が2番目と一個ずつずれているので注意。

スキルを覚えているかではなくて、装備によってスキルが追加されている必要があるのでレベルアップで覚えたスキルはこの条件分岐では作動しない。

パーティの先頭に限っては以下のスクリプトでも可能。
$gameParty.leader().addedSkills().contains(スキルID)



ボタンを押したときの条件式

ボタンを押している間ずっと
Input.isPressed('key')
※マップ上で溜め撃ち攻撃などをしたいときはこっち。

ボタンを押したときに一回だけ
Input.isTriggered('key')
※連射イベントを作りたい場合はこっち。

keyにはいろんな値を指定できる。
決定 ok
キャンセル cancel
シフト shift
下 down
左 left
右 right
上 up
ページアップ pageup
ページダウン pagedown

※この他にもキーボードのボタンにも対応できる。



プレイヤーに対するイベントの当たり判定の条件式(スクウェアタイプ)

if((this.character(0).x +0.0) >= this.character(-1).x
&& (this.character(0).y +0.0) >= this.character(-1).y
&& (this.character(0).x -0.0) <= this.character(-1).x
&& (this.character(0).y -0.0) <= this.character(-1).y){
実行内容
}

※スクリプトに入力して使います。ここで指定している0.0というのはどれくらい拡張するのかという意味です。1.0を入れると倍(96px)になります。
上から順に右範囲、下範囲、左範囲、上範囲の座標を拡大する。

実行内容には直接指定してもいいですが規定の行数ではおそらく足りないのでコモンイベントを指定する方法をとった方がいいです。その場合は実行内容に↓のスクリプトを入れます。
this.setupChild($dataCommonEvents[コモンイベントid].list, this._eventId)



プレイヤーに対するイベントの当たり判定の条件式(サークルタイプ)

if(Math.sqrt(Math.pow(this.character(-1)._x - this.character(this._eventId)._x,2) + Math.pow(this.character(-1)._y - this.character(this._eventId)._y,2)) < 1.0){
実行内容
}

円形での当たり判定を作ります。円形のオブジェクトに対しての範囲を使う機会はほとんどないでしょう。例えばマップ上で敵が円形の魔法を唱えてその範囲内に入ったらダメージを食らうといった処理くらいですね。設定した半径よりも当たり判定が大きく感じるのは目の錯覚です。スクウェアタイプは直線上で範囲が決まるので目線のごまかしが効かないのですが、サークルタイプは外周に沿うタイプなので錯覚が起こりやすいです。



マップのリフレッシュをしない変数の入力

$gameVariables._data[変数番号] = n;
nはセットする値
※マップのリフレッシュをしないのでデータ上で扱うだけの場合に使います。
 ここで変更された場合はイベントの出現条件などをスルーします。



プレイヤーの移動速度を変更する

$gamePlayer._moveSpeed = n;
移動速度は移動ルートの設定の数値と同じ。一応、0も指定できる。

イベントの移動速度を変更することもできる。
$gameMap.event(イベントID)._moveSpeed = n;
イベントIDが1のとき1番のイベント、イベントIDが2のとき2番のイベント。わかりやすくて使い勝手が良いタイプです。
イベントIDにthis._eventIdを入力することによって【このイベント】という条件をつけることもできる。

$gameMap.events()[id]._moveSpeed = n;
id:0が1番のイベント、id:1が2番のイベント。ずれていくので間違いやすい方式。
this._eventIdを使うことはできないので上記の式の劣化版です。



持っているアイテムの個数を調べる

$gameParty.numItems($dataItems[アイテムID])

条件分岐にも使えます。
$gameParty.numItems($dataItems[アイテムID]) == 5;



隊列のフォロワーを先頭メンバーの位置に集める

$gamePlayer.gatherFollowers();
瞬時に集まるわけではなく、にゅるっと集まる。




web拍手 by FC2
[ 2019/04/14 20:45 ] RPGツクールMV | コメント(0)

ツクールMVでスクリプト条件判定いろいろ

■指定イベントの前方のマスが通行設定○ならtrue
$gameMap.events()[0].canPass(this.character(0).x, this.character(0).y, this.character(0).direction())

web拍手 by FC2
[ 2018/05/13 07:57 ] RPGツクールMV | コメント(0)


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。