M.W.O.史書編纂所 2010/07/02 19:37

スクリプト小ネタ素材

必要になったので作成したスクリプトをせっかくなのでおいておきます。

<利用規約みたいなの>
・細かいことは気にせず使ってください。フリー・シェア・18禁なんでもおk。
・使用時の報告、ReadMeなどへの記載も不要です。
・二次配布は不可でお願いします(つたないので恥ずかしいので)
・改造はどうぞご自由に。というか改良して僕にそっと教えてくださいww
・公開しているスクリプトを使用していかなる損害に遭っても、当方は一切の責任を負いかねます。

タイトル画面ランダム表示

タイトル画面の背景(Title1)を指定した画像の中からランダムに表示します。
低確率で出るシークレットなタイトル画面も指定できます。
前景(Title2)は通常通りに使用出来ます。


#==============================================================================
# ■ タイトル画面ランダム表示
#
# 作者         : 葦路ムラクモ
# URL     : http://ashiromurakumo.blog103.fc2.com/
#
# ●ないよう
#  タイトル画面でいくつかの画像をランダムに表示します
#  低確率で出てくるシークレット画像も作れます。
#
# ●つかいかた
#  \Graphics\Titles1 に画像を置きます。
#  ASHI_TITLEPICに画像の名前を登録します。
#  ASHI_TITLEPICLENGTHに配列の長さを登録します。
#  シークレットを使う場合も同じように登録します。
#  シークレットを使う場合はASHI_TITLEPIC_SECLETPROBを0以外に指定します
#  マイナス指定とか意地の悪いことするなよな
#
#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  タイトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Title < Scene_Base

   #通常表示するタイトル画面の画像です。
   ASHI_TITLEPICLENGTH = 5	#画像ファイル数
   ASHI_TITLEPIC = []	#画像ファイル名(Title1フォルダにある画像を指定して下さい)
   ASHI_TITLEPIC[1] = "Book"
   ASHI_TITLEPIC[2] = "Book"
   ASHI_TITLEPIC[3] = "Book"
   ASHI_TITLEPIC[4] = "Book"
   ASHI_TITLEPIC[5] = "Book"
   
   ASHI_TITLEPICLENGTH_SECLET = 5
   ASHI_TITLEPIC_SECLET = []
   ASHI_TITLEPIC_SECLET[1] = "WorldMap"
   ASHI_TITLEPIC_SECLET[2] = "WorldMap"
   ASHI_TITLEPIC_SECLET[3] = "WorldMap"
   ASHI_TITLEPIC_SECLET[4] = "WorldMap"
   ASHI_TITLEPIC_SECLET[5] = "WorldMap"
   
   #シークレットが出る確率 1/ASHI_TITLEPIC_SECLETPROB 0を指定するとシークレット
   ASHI_TITLEPIC_SECLETPROB = 0
   
  #--------------------------------------------------------------------------
  # ● 背景の作成 再定義
  #--------------------------------------------------------------------------
  def create_background
    if ASHI_TITLEPIC_SECLETPROB == 0
      @sprite1 = Sprite.new
      x = rand(ASHI_TITLEPICLENGTH) + 1
      @sprite1.bitmap = Cache.title1(ASHI_TITLEPIC[x])
      @sprite2 = Sprite.new
      @sprite2.bitmap = Cache.title2($data_system.title2_name)
      center_sprite(@sprite1)
      center_sprite(@sprite2)    
    else
      s = rand(ASHI_TITLEPIC_SECLETPROB)
      if s == 0
        @sprite1 = Sprite.new
        x = rand(ASHI_TITLEPICLENGTH_SECLET) + 1
        @sprite1.bitmap = Cache.title1(ASHI_TITLEPIC_SECLET[x])
        @sprite2 = Sprite.new
        @sprite2.bitmap = Cache.title2($data_system.title2_name)
        center_sprite(@sprite1)
        center_sprite(@sprite2)
      else
        @sprite1 = Sprite.new
        x = rand(ASHI_TITLEPICLENGTH) + 1
        @sprite1.bitmap = Cache.title1(ASHI_TITLEPIC[x])
        @sprite2 = Sprite.new
        @sprite2.bitmap = Cache.title2($data_system.title2_name)
        center_sprite(@sprite1)
        center_sprite(@sprite2)
      end
    end
  end
end

※画像ファイルは「Graphics\Titles1」に置いてください。

特定タイミングでコモンイベント実行


特定のタイミングでコモンイベントを呼び出します。

・装備を変更したとき(衣装チェンジなどに使えそう?)

呼び出すイベントで任意の変数に「$game_party.menu_actor.id」を代入すればどのアクターの装備が変わったかわかります

・戦闘終了時(使い道不明)
・隊列変更時(メンバーを変数で管理したいときなどに使えそう?)
・セーブデータをロードしたとき

※注意※
文章や選択肢の表示、ウェイトを伴うイベントの移動などは行わないでください。
変数やスイッチの切り替えなどには活用できると思います。

ちょっと動作が怪しいのでご利用の際はご注意下さい。


#==============================================================================
# ■ 特定のタイミングでコモンイベント
#
# 作者         : 葦路ムラクモ
# URL     : http://mwo-historiographic.b.dlsite.net/
#
# 特定の操作を行ったときに指定したコモンイベントを発生させます。
#    ・装備を変えたとき
#    ・セーブデータをロードしたとき
#    ・戦闘終了時
#    ・並び順を変更したとき
#    
#==============================================================================

module Ashimura
  module Ashimura_MenuCommon
    #--------------------------------------------------------------------------
    # ● コモンイベントIDの指定
    #--------------------------------------------------------------------------
    
    #発生させたいコモンイベントを指定してください。(0はなにもしない)
    CE_ID_EQUIP = 0     #装備終了時のコモンイベントID
    CE_ID_LOAD = 0      #ロード時のコモンイベントID
    CE_ID_BATTLE = 0    #戦闘終了時のコモンイベントID
    CE_ID_FORMATION = 0 #並び替え変更時のコモンイベントID
  end
end

#==============================================================================
# ■ Scene_Equip
#------------------------------------------------------------------------------
#  装備画面の処理を行うクラスです。
#==============================================================================

class Scene_Equip < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● スロット[決定]
  #--------------------------------------------------------------------------
  def on_item_ok
    Sound.play_equip
    @actor.change_equip(@slot_window.index, @item_window.item)
    @slot_window.activate
    @slot_window.refresh
    @item_window.unselect
    @item_window.refresh
    if Ashimura::Ashimura_MenuCommon::CE_ID_EQUIP != 0
      interpreter = Scene_Menu::Game_Interpreter.new
      interpreter.setup($data_common_events[Ashimura::Ashimura_MenuCommon::CE_ID_EQUIP].list)
      interpreter.update while interpreter.running?
    end
  end
end

#==============================================================================
# ■ Scene_Load
#------------------------------------------------------------------------------
#  ロード画面の処理を行うクラスです。
#==============================================================================

class Scene_Load < Scene_File
  #--------------------------------------------------------------------------
  # ● ロード成功時の処理
  #--------------------------------------------------------------------------
  def on_load_success
    Sound.play_load
    fadeout_all
    $game_system.on_after_load
    SceneManager.goto(Scene_Map)
    if Ashimura::Ashimura_MenuCommon::CE_ID_LOAD != 0
      interpreter = Scene_Menu::Game_Interpreter.new
      interpreter.setup($data_common_events[Ashimura::Ashimura_MenuCommon::CE_ID_LOAD].list)
      interpreter.update while interpreter.running?
    end
  end
end

#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
#  バトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_spriteset
    @info_viewport.dispose
    RPG::ME.stop
    if Ashimura::Ashimura_MenuCommon::CE_ID_BATTLE != 0
      interpreter = Scene_Menu::Game_Interpreter.new
      interpreter.setup($data_common_events[Ashimura::Ashimura_MenuCommon::CE_ID_BATTLE].list)
      interpreter.update while interpreter.running?
    end
  end
end

#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
#  メニュー画面の処理を行うクラスです。
#==============================================================================

class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 並び替え[決定]
  #--------------------------------------------------------------------------
  def on_formation_ok
    if @status_window.pending_index >= 0
      $game_party.swap_order(@status_window.index,
                             @status_window.pending_index)
      @status_window.pending_index = -1
      @status_window.redraw_item(@status_window.index)
    else
      @status_window.pending_index = @status_window.index
    end
    @status_window.activate
    if Ashimura::Ashimura_MenuCommon::CE_ID_FORMATION != 0
      interpreter = Scene_Menu::Game_Interpreter.new
      interpreter.setup($data_common_events[Ashimura::Ashimura_MenuCommon::CE_ID_FORMATION].list)
      interpreter.update while interpreter.running?
    end
  end
end

スキル使用者非表示

スキルの使用者を非表示にします。
・使用者メッセージが未記入の場合、メッセージを表示しません。
・スキルのメモ欄に「使用者非表示」と記入してある場合、使用者を表示せずにメッセージ1を表示します。


#==============================================================================
# ■ バトルログ 使用者非表示
#
# 作者         : 葦路ムラクモ
# URL     : http://mwo-historiographic.b.dlsite.net/
#
# ●つかいかた
#  ・メッセージ1に「何も表示したくない」場合
#   そのスキルの使用者メッセージ1(上側)を空文字にしてください。
#  ・メッセージ1をメッセージ2のようにメッセージだけで使いたい場合
#   そのスキルのメモ欄に「使用者非表示」を記入してください。
#   スキルの使用者メッセージ1を空文字以外にしてください。
#
#==============================================================================
# ■ Window_BattleLog
#------------------------------------------------------------------------------
#  戦闘の進行を実況表示するウィンドウです。枠は表示しませんが、便宜上ウィンド
# ウとして扱います。
#==============================================================================

class Window_BattleLog < Window_Selectable
  
  MESSAGE1_INVISIBLE = "使用者非表示"
  #--------------------------------------------------------------------------
  # ● スキル/アイテム使用の表示 再定義
  #--------------------------------------------------------------------------
  def display_use_item(subject, item)
    if item.is_a?(RPG::Skill)
      flag = 0
      
      #メッセージが空でないか判断
      unless item.message1.empty?
        flag = 2
      end
      
      #メッセージが空でないのでメモ欄を判断
      if flag == 2
        memo = item.note.scan(MESSAGE1_INVISIBLE)
        unless memo == nil or memo.empty?
          flag = 1
        end
      end      
     
      #キーワードあり/メッセージあり
      if flag == 1
        add_text(item.message1)
      #キーワードなし/メッセージあり
      elsif flag == 2
        add_text(subject.name + item.message1)
      end
      #メッセージが空の場合なにもしない
      
      unless item.message2.empty?
        wait
        add_text(item.message2)
      end
    else
      add_text(sprintf(Vocab::UseItem, subject.name, item.name))
    end
  end
end

ピクチャスクリプト変数指定

ピクチャの移動コマンドで、拡大率、ウェイトに変数を利用できるようにするスクリプトです。


#==============================================================================
# ■ ピクチャ移動変数指定
#
# 作者         : 葦路ムラクモ
# URL     : http://mwo-historiographic.b.dlsite.net/
#
# ピクチャの移動コマンドで変数指定できないものを変数指定で行います。
#    ・拡大率X、Y
#    ・ウェイト 
#    ※作者が使わないので透明度は変数指定にしていません。
#    ※難しくないので必要なら追加して下さい
#==============================================================================

module Ashimura
  module Ashimura_Moveval
    #--------------------------------------------------------------------------
    # ● 変数IDの指定
    #--------------------------------------------------------------------------
    
    #座標に指定する変数IDを指定して下さい
    MOVEVAL_ID_X = 808     #X座標
    MOVEVAL_ID_Y = 809     #Y座標
    MOVEVAL_ID_ZOOMX = 816     #拡大率X
    MOVEVAL_ID_ZOOMY = 817     #拡大率Y
    MOVEVAL_ID_WAIT = 818     #ウェイト 
  end  
end

#==============================================================================
# ■ Game_Picture
#------------------------------------------------------------------------------
#  ピクチャを扱うクラスです。このクラスは Game_Pictures クラスの内部で、特定
# の番号のピクチャが必要になったときだけ作成されます。
#==============================================================================

class Game_Picture
  #--------------------------------------------------------------------------
  # ● ピクチャの移動
  #--------------------------------------------------------------------------
  def move_v(origin, opacity, blend_type)
    @origin = origin
    @target_x = $game_variables[Ashimura::Ashimura_Moveval::MOVEVAL_ID_X].to_f
    @target_y = $game_variables[Ashimura::Ashimura_Moveval::MOVEVAL_ID_Y].to_f
    @target_zoom_x = $game_variables[Ashimura::Ashimura_Moveval::MOVEVAL_ID_ZOOMX].to_f
    @target_zoom_y = $game_variables[Ashimura::Ashimura_Moveval::MOVEVAL_ID_ZOOMY].to_f
    @target_opacity = opacity.to_f
    @blend_type = blend_type
    @duration = $game_variables[Ashimura::Ashimura_Moveval::MOVEVAL_ID_WAIT]
  end
end

呼び出す時はイベントコマンドのスクリプトで以下の内容を設定してください。
screen.pictures[i].move_v(1,255,0)

原点(左上:0 中心:1)、不透明度、合成方法(通常:0 加算:1 減算:2)は引数で直接指定します。

同時に複数のピクチャを動かすときはスクリプトコマンドを下記のように設定して
コモンイベントを作成しておくと便利です。(例では変数778、779)
start=$game_variables[778] last=$game_variables[779] for i in start..last screen.pictures[i].move_v(1,255,0) end wait($game_variables[818])

スクリプトを書いたイベントの前に変数をセットし、こんな感じで呼び出します。
画像移動中にウェイトをさせたい場合は末尾にウェイトを指定したウェイト時間変数で呼べばOK。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索