忍者ブログ
windowsやブラウザ のゲーム作ったりとか。

RPGツクールVX Aceのお話です。
今回は、スクリプトエディタでスクリプトをいじってみました。
その研究結果の覚書です。

課題は3つありました。
1.メニューから今回使わない項目を消す
2.フォントを変える。
3.今使ったアイテムが何だったかを取得する

1、2はヘルプやFSMさんの掲示板等のおかげで
3は半生さんのご助力により解決しました。
ありがとうございます!

------------------------------------------------------------
1.メニューから今回使わない項目を消す。

メニュー項目はデフォルトで7つ。
アイテム、スキル、装備、ステータス、並び替え、セーブ、ゲーム終了 がありますね。
その内アイテムとセーブだけを残します。

まず、スクリプトエディタの「Window_MenuCommand」のページを開きます。
44行目あたりに「● 主要コマンドをリストに追加」があるので
使わないコマンドの前に「#」を挿入してコメントアウトします。
(大体74行目くらいまでがコマンドの追加命令)

例)スキル、装備、ステータスをコメントアウトする。

  def add_main_commands
    add_command(Vocab::item,   :item,   main_commands_enabled)
    add_command(Vocab::skill,  :skill,  main_commands_enabled)
    add_command(Vocab::equip,  :equip,  main_commands_enabled)
    add_command(Vocab::status, :status, main_commands_enabled)
  end



  def add_main_commands
    add_command(Vocab::item,   :item,   main_commands_enabled)
#    add_command(Vocab::skill,  :skill,  main_commands_enabled)
#    add_command(Vocab::equip,  :equip,  main_commands_enabled)
#    add_command(Vocab::status, :status, main_commands_enabled)
  end

以上。
ちなみに、所持金のウィンドウも消したい場合は
Scene_Menuというページの「● 開始処理」から
「create_gold_window」という行をコメントアウト。
戦闘中、のコマンドを減らしたい時は
「Window_ActorCommand」の「● コマンドリストの作成」のとこです。

------------------------------------------------------------
2.フォントを変える。

一応前置きしておくと、「起動時のフォント」を変える方法です。
ゲーム中にフォントを変える方法はまだ模索中です。

「▼ メイン」と「Main」の間にページを挿入します。
挿入したページにフォントの変更命令を入れます。

    Font.default_name = "MT たれ"  #フォント変更
    Font.default_size = 18         #フォントサイズ変更
    Font.default_outline = false   #縁取り変更(デフォルトはtrueらしい)

上記以外の設定を変えたいときは
ヘルプをfontで検索するとプロパティの一覧が出てきます。

------------------------------------------------------------
3.直前に使用したアイテムのIDを取得する。

半生さんが、スクリプト素材を作ってくれました。
ありがとうございます。

ただアイテムIDを取得するだけでなく
使用されたのが、アイテムかスキルか
それを誰が使用したかまでわかるようにしてくださいました。

使い方は、「素材」の下に以下のスクリプトを挿入し
変数の指定をしている部分の変数IDを任意の番号に変更するだけです。

ご利用になる場合は、著作権は半生さんにあります。
 
 
#ここから
# 戦闘中のスキル、アイテムからコモンイベント起動するときに変数にID取得

module GetItemEventTrigger
  TRRIGER_TYPE_VAR      = 11 # 変数11 原因の種類 スキル:1, アイテム:2
  TRRIGER_ITEM_ID_VAR   = 12 # 変数12 原因のSkillID or ItemID
  TRRIGER_USER_TYPE_VAR = 13 # 変数13 使用者 アクター:1, エネミー:2
  TRRIGER_USER_ID_VAR   = 14 # 変数14 使用者のID ActorID or EnemyID
  module ExtendBattler
    def use_item(item)
      $game_variables[GetItemEventTrigger::TRRIGER_TYPE_VAR] = item.is_a?(RPG::Skill) ? 1 : 2
      $game_variables[GetItemEventTrigger::TRRIGER_ITEM_ID_VAR] = item.id
      $game_variables[GetItemEventTrigger::TRRIGER_USER_TYPE_VAR] = self.is_a?(Game_Actor) ? 1 : 2
      $game_variables[GetItemEventTrigger::TRRIGER_USER_ID_VAR] = self.is_a?(Game_Enemy) ? self.enemy_id : self.id
      super
    end
  end
end

class Game_Actor
  include GetItemEventTrigger::ExtendBattler
end

class Game_Enemy
  include GetItemEventTrigger::ExtendBattler
end
#ここまで


おしまい。
ゲーム製作に活かしたいと思います。
情報のご提供及びアドバイスくださった方々に感謝をこめて。
ありがとうございます!!

拍手[12回]

PR

RPGツクールVX Ace のお話です。
今日は、便利なスクリプトを忘れないように書き記しておこうと思います。
イベントコマンドの変数の操作や、条件分岐スクリプト欄に使えるものです。
(※スクリプトの本体が変更されていない、デフォルトの状態であることが前提です)
 他にもこんな便利な条件や変数があるよっていう情報お待ちしています!

ご利用になる場合は、引用先の利用条件に従ってください。
 
まず、SILENT ANGEL さんちにあるXP用の条件スクリプトのうち
Aceでもそのまま使えるものです。
(掲載していないものは未検証です。ぜひSILENT ANGEL さんちに行ってみましょう)

# プレイヤーが移動中の場合(イベントコマンドで移動しているときも判定してくれる)
$game_player.moving?

# アクター2がスキルを4つ覚えている場合(== 4をとれば、変数の取得時にも使える)
$game_actors[2].skills.size == 4

# セーブ禁止の場合
$game_system.save_disabled

# このマップのイベント11番のセルフスイッチBがオンのとき
#([]のなかは左からマップID,イベント番号,"スイッチ"です)

$game_self_switches[[@map_id,11,"B" ]] == true

# 主人公のX座標が10でY座標が20の場合(条件はandでつなげるんだね!)
$game_player.x == 10 and $game_player.y == 20

# 変数1が2以上5未満の場合
$game_variables[1] >= 2 and $game_variables[1] < 5

# 変数1が奇数のとき
$game_variables[1] % 2 == 1

#変数1が1で変数2が1の時
$game_variables[1] == 1 and $game_variables[2] == 1
 
# 変数1×変数2=5未満の場合
#(計算式だけど条件として使う場合は、変数1と2の数が変更されない)

$game_variables[1] * $game_variables[2] < 5

以下は、検証の結果Aceと仕様が合わなかったものを
半生さんのご助力により、使用できるようになったものです。

# ID1番のアイテムの所持数が2つ以上のとき
$game_party.item_number($data_items[1]) >= 2

#装備中のを除く所持武器が1以上の時(防具はdata_armors
$game_party.item_number($data_weapons[1]) >= 1

#パーティの誰かが武器1を装備してるか
$game_party.members_equip_include?( $data_weapons[1])

#アクター3が防具12を装備してるか
$game_actor.equips.include?(item)

# この戦闘が逃走可能な戦闘の場合
BattleManager.can_escape?

以下は、FSMさんの掲示板から。

#n番のアクターが先頭の場合
$game_party.members[0].id == n

以下は、GOREとにゃんこの桃源郷さんのブログから。

#アクターID1のアクターがパーティに居て、尚且つ生存している場合
$game_party.alive_members.include?($game_actors[1])

-----------------------------------------------------------------------

以下は、変数に代入できるスクリプトです。

# 1番目のアクターが何番目にいるかを代入。1番目にいたら0が代入される。半生さんより)
$game_actors[1].index || -1

# 変数に文字列を代入する。""で囲むと文字列になる。FSMさんの掲示板より
$game_variables[n]="文字列"

-------------------------------------------------------------------------

以下は、移動ルートの設定で使えるスクリプトです。FSMさんの掲示板より

# アニメーション1を表示
@animation_id = 1

# 主人公へアニメーション1を表示
$game_player.animation_id = 1

# イベント1へアニメーション2を表示
$game_map.events[1].animation_id = 2

---------------------------------------------------------------------------

以下はイベントコマンドの最後尾にあるスクリプトで使えるものです
FSMさんの掲示板より

# デフォルトのアイテム画面を表示 (他の画面もシーン名を変えれば可能)
SceneManager.call(Scene_Item)

おしまい。
ゲーム製作に活かしたいと思います。
情報のご提供及びアドバイスくださった方々に感謝をこめて。
ありがとうございます!!

拍手[21回]

MMF2というのは、Multimedia Fusion 2の略なのですが
海外ではすでに次のバージョン、Clickteam Fusion 2.5が発売されています。

日本語版も公式サイトの情報によると、2014/05/29発売予定との事。
楽しみですね。
最近話題のHTML5も別販売のモジュールを使用することで
書き出しできるらしいですよ。

情報サイトによると、MMF2との互換性があるので
MMF2で作ったファイルを開くことができます
エクステンションもMMF2用の物が引き続き使えます。

つまり、当家の講座もCF2.5に対応しているということです!
やったね!

拍手[1回]

そろそろ雲行きが怪しくなってまいりました。
この先は思いつきでやってみたら出来たからいいよね、っていう怪しい講座です。
なにせ初心者のやることですから、上級者から見ると
なんちゅうことやってますのんやっていう可能性も多々あることでしょう。
もし、こうした方が効率いいよとかありましたら、ご教授願えれば助かります。

というわけで、今回は壊せるブロック下方向へすり抜ける床です。
今回は、変数とフラグを使います。
予習してきましたか?

変数やフラグは、条件に使います。
フラグは有効か無効しかありませんが、変数は計算式も使えます。

<2014/03/13追記及び改変>

「ジャンプとはしご」を使った場合は
容易にアクティブオブジェクトの上に乗れる事がわかったので
「壊せるブロックの作り方」の内容を変更しました。
古い方は、「ジャンプとはしご」を使わずに作るときの方法でした。

-----------------------------------------
 
壊せるブロックを作る

①壊せるブロック用のアクティブオブジェクトを作成。
 アクションポイントは真ん中に。

②壊したとき飛び散る破片用オブジェクトを作成。
 壊せるブロックから発射された後の動作を
 イベントエディタか、オブジェクトイベントで指定。
 (今回は、オブジェクトイベントに記入しています)
 

③イベントエディタか、オブジェクトイベントを開き
 アタリ判定とブロックのが衝突した時と、さらに
 同じ行に条件として、アタリ判定の位置のY座標が
 ブロックの下のY座標以上の時を設定。
 (条件の概要:壊れるブロックに接触した時、ブロックより下にいた

オブジェクトの位置データを取得するには
計算式のダイアログが表示された時に
オブジェクトからデータを抽出」をクリック。
「壊れるブロック」⇒「位置」⇒「下端のY座標」を選択。


 壊れるブロックと交差するマスに、破片オブジェクトの発射命令と
 オブジェクトの破壊命令を入れる。

④新しい条件をクリックし、壊れるブロックと衝突したときを指定。

 壊れるブロックと交差するマスに動作の「停止」を入れる。
 
 
このブロックを複数配置したい場合は
オブジェクトを「複製」するだけでOK。

-----------------------------------------

動く床を作る


アクティブオブジェクトに乗ればよいだけので
後は好きなように、オブジェクトを動かせばよろしいですね。
必要な命令は↓コレだけです。
 

-----------------------------------------

 下へすり抜けるブロックを作る

①アクティブオブジェクトを新規作成し、編集で任意の画像に。
 「開始時に表示」のチェックを外しておく。
 すり抜けたいブロックの上部に配置。(重ねないよ)

②イベントエディタを開く。
 条件に、「すり抜け床下用オブジェクトとアタリ判定が重なった時
 と、「移動キー 下 が押された時」を指定。
 アタリ判定と交差するマスで、「フラグ」→「有効に設定」
 番号は任意でよいが、今回は「0」番で。

③新しい条件を右クリックし「変数」→「フラグ」の順に選択
 「内部フラグ0が有効の時」を条件に指定。
 アタリ判定と交差するマスで、アタリ判定の位置を任意の数字分
 下へ移動させる命令を入れる。
 同じマスに、「変数」→「増加する」で「変数A」を先ほどの
 任意の数字分追加する。

④新しい条件を右クリック、アタリ判定の「変数A」が
 移動させたい距離(1ブロックならアタリ判定の大きさ分)以上に指定。
 アタリ判定と交差するマスで、内部フラグ0を無効にし
 変数Aを0に戻しておく。
 

⑤講座の一番最初に設定した
 「背景とアタリ判定が接触したら、停止する」命令の行で
 条件に「アタリ判定の内部フラグ0が無効の時」を追加。
 

複数配置したい場合は、オブジェクトを「複製」するだけでOK。

今日の講座のサンプルをダウンロード

いかがでしょうか。
変数やフラグが出てきたので、ちょっと難しくなりましたね。

というわけで、この講座の内容を使えば
このようなゲームもサクサク作れちゃうわけですね。


そんなわけで、講座は一応終わりです。
え、敵の作り方ですか?
ここまでできれば、もうどうすればよいかはわかるはず。
あなたならできる!
ていうわけで、頑張ってくださいね!


拍手[2回]

今回は、画面のスクロールと画面の端に来たときの処理です。
この先は、他にも色々なやり方がありますが
一番簡単だなーと思うものを紹介していきますね。

まず、キャラクターの移動にあわせて、画面をスクロールさせる方法から。

①プロジェクトのプロパティ「ウインドウ」タブを開き
 ゲーム画面のサイズを任意の大きさに指定する。
 
 ここで決めたサイズが動作領域のサイズになります。

 親フレームというのは
 

②ステージ用フレームのプロパティの「設定」にある「サイズ」を
 任意の大きさに指定する。

③イベントエディタを開き、新しい条件「常に実行」を指定。
 ストーリーボードと交差するマスを右クリックし
 「スクローリング」から「全方向にスクロール」を選択。
 「関連」にチェックし、アタリ判定用オブジェクトを選択。

以上、簡単ですね。

強制スクロールにしたい場合は、キャラに合わせるのではなく
X、Y座標を変数やカウンターオブジェクトの数値で指定する等が考えられます。


次は、画面(動作領域)の左右の端に来たら、それ以上進めなくする方法。

 イベントエディタを開き、新しい条件をクリック。
 アタリ判定を右クリックし、「位置」→「位置を判定」
 の順に選び、方向を選択。
 アタリ判定オジュジェクトと交差するマスに、「停止」を指定。


端っこではなく、特定の座標に来たときにしたいという場合は少し複雑ですが
現在の位置を変数などに取得して、比較するなどが考えられます。


最後に、画面から下の端に来たら、開始位置に戻る方法。

 イベントエディタを開き、新しい条件に「位置を判定」
 で、任意の方向を選択。
 アタリ判定と交差するマスに、「破壊」を指定。
 「新規オブジェクトを作成」と交差するマスを右クリック。
 「アタリ判定」を選択し、座標を指定する。

単純に、アタリ判定オジュジェクトの位置を変更するだけでも良いのですが
「はしご」に接触している状態で位置を変更すると、少し問題が発生するので
ややこしいけれど、こちらの方法がおすすめです。
(はしごから離れているのに、はしごに接触したままの状態になり
 向きやアニメーションが変えられない他、重力も働きません)

ライフも減らしたい・・・という方は、チュートリアルブロック崩しを参照してください。

今回の講座のサンプルをダウンロード

参考になる動画を見る(Mr.Grotesque さんの講座動画です)
 
次回は・・・壊せるブロック、上から下へすり抜けられるブロックの作り方です。
オブジェクトのフラグや変数を使うので、予習しておいてね。(グローバル変数は使いません)
 
予習になる動画を見る(Mr.Grotesque さんの講座動画です)


拍手[1回]

前のページ      次のページ
広告枠
アクセス解析

ATOM  
ATOM 
RSS  
RSS 


ソフトウェア制作講座





Copyright ©   YUWAKA'S SOFT   All Rights Reserved
Design by MMIT / TemplateB3  Powered by NINJA TOOLS
忍者ブログ [PR]