スポンサーサイト

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

web拍手 by FC2   

[RGSS]エンドロール

使い方は → こちら

[RGSS]エンドロール
スタッフロールとも言うべきでしょうか。エンディング後に文字が流れるあれを作ります。
設定できる命令群を多数用意したので、ずいぶんと自由度があると思います。

スクリーンショット サムネイルクリックで拡大画像が見られます。
rgss_endroll.jpg

プログラムは続きにあります。

=begin
===============================================================================
    ☆★☆★☆★☆★ エンドロール ★☆★☆★☆★☆
=============================================================================== 

 製作・開発:STERS

  Page  http://stersblog.blog15.fc2.com/
  
  下から上へのスクロールのみです。
  
導入方法------------------------------------------------------------------

    このスクリプトを Scene_Debug より下 Main より上に
   新しく作ったセクションにコピペして入れてください。

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

これを導入することで
$scene = Scene_Ending.new
によりエンドロールを呼び出せるようになります。

使い方--------------------------------------------------------------------
1.まずはこのスクリプトを導入してください。

2.設定項目を編集してください

3.呼び出したい部分で $scene = Scene_EndRoll.new を記述すると
    エンドロール画面に変わります。
    (イベントのスクリプトからも可能。)
    
=end
class Scene_EndRoll
  #--------------------------------------------------------------------------
  # ○ 設定項目
  #--------------------------------------------------------------------------
  # 初期フォント
  DEFAULT_FONT_NAME = "MS Pゴシック" 
  # 初期フォントサイズ
  DEFAULT_FONT_SIZE = 22 

  # 一行に確保する縦の長さ
  # ( 文字列内でフォントサイズが変更された場合、
  #   初期との差が自動的に変わります。)
  LINE_HEIGHT = 32      
  
  # 背景
  BACK_PICTURE = "001-Title01"
  
  # エンディング中に鳴らすBGM
  #   拡張子つきで
  BGM = "001-battle01.mid"
  
  # エンドロールに移る際のトランジション
  TRANSITION = "006-Stripe02.png"
  
  # 初期状態での1フレーム毎のスクロール速度
  #   数値が大きいほど早い
  DEFAULT_SPEED = 1

#-----------------------------------------------------------------------------
# 以下、表示する内容の指定になります。
#-----------------------------------------------------------------------------
# 特殊な指定について
#    表示位置や色、サイズ、フォントなどは改行されるとリセットされます。
#    ()内の[]は省略可能の印です。
#
#    \\\\ : \ の表示
#
#    [center] : 行全体を中央に表示
#    [left]   : 行全体を左詰めで表示
#    [right]  : 行全体を右詰めで表示
#
#    [pic(ファイル名[,横幅][,縦幅][,不透明度])]
#       Picturesフォルダにある画像を表示
#
#    [battler(ファイル名,色相変化値[,横幅][,縦幅][,不透明度])]
#       Battlersフォルダにある画像を表示
#
#    [val(ID)]    : ID番の変数の値を表示
#    [swi(ID)]    : ID番のスイッチの値を表示
#
#    [gold]       : 所持金の表示
#    [act(ID)]    : ID番のアクターの名前の表示
#    [cla(ID)]    : ID番のクラスの名前の表示
#    [ski(ID)]    : ID番のスキルの名前の表示
#    [ite(ID)]    : ID番のアイテムの名前の表示
#    [wea(ID)]    : ID番の武器の名前の表示
#    [arm(ID)]    : ID番の防具の名前の表示
#    [ene(ID)]    : ID番のエネミーの名前の表示
#    [tro(ID)]    : ID番のトループの名前の表示
#    [sta(ID)]    : ID番のステートの名前の表示
#    [ani(ID)]    : ID番のアニメーションの名前の表示
#    [ele(ID)]    : ID番の属性の名前の表示
#
#    [fname(文字列)]: フォントの変更。
#    [c(R,G,B[,A])] : 色の変更。Red,Green,Blue[,Alpha]
#    [s(数値)]      : フォントサイズの変更
#    [b]            : ボールド(太字)
#    [i]            : イタリック(斜字)
#    [tab(数値)]    : 全角スペースで数値分の空白を作る。
#    [stab(文字列)] : 文字列分の空白を作る。
#    [line(文字列)] : 文字列で左端から右端まで埋め、改行します。
#
#    [speed(数値)]  : この部分が最下部に現れた瞬間スクロール速度を変更します。
#    [wait(数値)]   : この部分が最下部に現れた瞬間、
#                    指定したフレーム数の間そこで一時停止します。
#
#    [newbgm(文字列)]: この部分が最下部に現れた瞬間指定されたBGMを再生します。
#    [bgmfade(数値)] : この部分が最下部に現れた瞬間再生中のBGMを指定した
#                      フレーム数でフェードアウトします。
#    [bgmstop]       : この部分が最下部に現れた瞬間再生中のBGMを停止します。
#
#    [newback(文字列,数値)]:この部分が最下部に現れた瞬間指定された背景に
#                           指定したフレーム数でフェードして変更します。
#
#    [noent] : この行の末尾の改行を無視します。
#
#    [gotitle] : タイトル画面へ移動します。
#-----------------------------------------------------------------------------
STRINGS =<<-EOS
[line(==#)]
[center][s(50)][c(255,0,0,255)]Sample
[center][s(50)][c(255,0,0,255)]Project
[left]TEST[right]Varsion
[line(|-#-)]
[center]40フレーム待つ[wait(40)]
[center]スクロール速度5[speed(5)]
[line(|-#-)]
[fname(HGP行書体)]HGP行書体
[fname(HGP創英角ポップ体)]HGP創英角ポップ体
[fname(HGP明朝E)]HGP明朝E
[fname(HGPゴシックM)]HGPゴシックE
[line(-)]
[battler(001-Fighter01,0,160,120,255)]
[battler(001-Fighter01,0,320,240,150)]
[battler(001-Fighter01,0,640,480,50)]
[line(-)]
[pic(test.png)]
[line(-)]
[center]スクロール速度1[speed(1)]
[line(-)]
[tab(10)]●
[stab(あいうえおかきくけこ)]●
あいうえおかきくけこ●
[line(-)]
[noent][bgmfade(40)][wait(40)]
Actor1:[act(1)]
[noent][newbgm(064-Slow07)]
Class1:[cla(1)]
Skill1:[ski(1)]
Item1:[ite(1)]
Weapon1:[wea(1)]
Armor1:[arm(1)]
Enemy1:[ene(1)]
Troop1:[tro(1)]
State1:[sta(1)]
Animation1:[ani(1)]
Element1:[ele(1)]
[line(-)]
[speed(1)][newback(title,40)][wait(40)]

[center][s(50)]THE END


[wait(40)]
[gotitle]
EOS
#↑削除禁止
  
#==============================================================================
# ■ Scene_Ending
#------------------------------------------------------------------------------
#  エンディング処理を行うクラスです。
#==============================================================================
  def main
    @text_copy = []
    @text_copy2 = [""]
    @x = @y = @lines = 0
    @align = 0
    @pics = []
    @now_speed = DEFAULT_SPEED
    @wait = 0
    @change_point = {}
    @back_ch = nil
    @no_ent = false
    s = strings_exchange
    Graphics.freeze
    @back = Sprite.new
    @back.bitmap = RPG::Cache.title(BACK_PICTURE)
    @back2 = Sprite.new
    @back2.z = @back.z - 1
    h = @text_copy.size * LINE_HEIGHT * 3
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(640,h)
    @sprite.bitmap.font.name = DEFAULT_FONT_NAME
    @sprite.bitmap.font.size = DEFAULT_FONT_SIZE
    @sprite.y = 480
    draw_strings(s)
    Audio.bgm_play("Audio/BGM/"+BGM)
    Graphics.transition(30, "Graphics/Transitions/"+TRANSITION)
    update
    Graphics.freeze
    Audio.bgm_stop
    @sprite.bitmap.dispose rescue 0
    @sprite.dispose rescue 0
    @back.bitmap.dispose rescue 0
    @back.dispose rescue 0
    @back2.bitmap.dispose rescue 0
    @back2.dispose rescue 0
    @pics.each{|p|
      p.bitmap.dispose rescue 0
      p.dispose rescue 0
    }
  end
  def update
    loop do
      Graphics.update 
      Input.update
      @pics.each{|p| p.update }
      scroll
      break if $scene != self
    end
  end
  def scroll
    if @back_ch != nil
      @back.opacity -= 255 / @back_ch
      @back2.opacity += 255 / @back_ch
      if @back.opacity <= 0
        @back.bitmap = @back2.bitmap.dup
        @back2.bitmap.dispose
        @back.opacity = 255
        @back2.opacity = 0
        @back_ch = nil
      end
    end
    @change_point.each{|a,b|
      if a.split("@")[1].to_i >= @sprite.y
        case a.split("@")[0]
        when "speed"
          @now_speed = b
        when "wait"
          @wait = b
        when "back"
          @back_ch = b.split("@")[1].to_i <= 0 ? 1 : b.split("@")[1].to_i
          @back2.bitmap = RPG::Cache.title(b.split("@")[0])
        when "bgm"
          Audio.bgm_play(b)
        when "bgmfade"
          Audio.bgm_fade(b)
        when "bgmstop"
          Audio.bgm_stop
        when "title"
          $scene = Scene_Title.new
        end
        @change_point.delete(a)
        break
      end
    }
    if @wait > 0
      @wait -= 1
      return
    end
    @sprite.y -= @now_speed
    @pics.each{|p| p.y -= @now_speed }
  end
  def strings_exchange
    s = STRINGS
    s.gsub!(/\\\\/){"\000"}
    s.gsub!(/\[[Cc]enter\]/) { "\001" }
    s.gsub!(/\[[Ll]eft\]/) { "\002" }
    s.gsub!(/\[[Rr]ight\]/) { "\003" }
    s.gsub!(/\[[Pp]ic\((.*?)(\,*?[0-9]*?)(\,*?[0-9]*?)(\,*?[0-9]*?)\)\]/) { "\004[#{$1}#{$2}#{$3}#{$4}]" }
    s.gsub!(/\[[Bb]attler\((.*?)\,([0-9]*?)(\,*?[0-9]*?)(\,*?[0-9]*?)(\,*?[0-9]*?)\)\]/) { "\005[#{$1},#{$2}#{$3}#{$4}#{$5}]" }
    s.gsub!(/\[[Vv]al\(([0-9]+?)\)\]/) { $game_variables[$1.to_i] rescue "" }
    s.gsub!(/\[[Ss]wi\(([0-9]+?)\)\]/) { $game_switches[$1.to_i] == true ? "ON":"OFF" rescue "" }
    s.gsub!(/\[[Gg]old\]/) { $game_party.gold rescue "" }
    s.gsub!(/\[[Aa]ct\(([0-9]+?)\)\]/) { $data_actors[$1.to_i].name rescue "" }
    s.gsub!(/\[[Cc]la\(([0-9]+?)\)\]/) { $data_classes[$1.to_i].name rescue "" }
    s.gsub!(/\[[Ss]ki\(([0-9]+?)\)\]/) { $data_skills[$1.to_i].name rescue "" }
    s.gsub!(/\[[Ii]te\(([0-9]+?)\)\]/) { $data_items[$1.to_i].name rescue "" }
    s.gsub!(/\[[Ww]ea\(([0-9]+?)\)\]/) { $data_weapons[$1.to_i].name rescue "" }
    s.gsub!(/\[[Aa]rm\(([0-9]+?)\)\]/) { $data_armors[$1.to_i].name rescue "" }
    s.gsub!(/\[[Ee]ne\(([0-9]+?)\)\]/) { $data_enemies[$1.to_i].name rescue "" }
    s.gsub!(/\[[Tt]ro\(([0-9]+?)\)\]/) { $data_troops[$1.to_i].name rescue "" }
    s.gsub!(/\[[Ss]ta\(([0-9]+?)\)\]/) { $data_states[$1.to_i].name rescue "" }
    s.gsub!(/\[[Aa]ni\(([0-9]+?)\)\]/) { $data_animations[$1.to_i].name rescue "" }
    s.gsub!(/\[[Ee]le\(([0-9]+?)\)\]/) { $data_system.elements[$1.to_i].name rescue "" }
    s.gsub!(/\[[Cc]\(([0-9]+?)\,([0-9]+?)\,([0-9]+?)(\,*?[0-9]*?)\)\]/) { "\020[#{$1},#{$2},#{$3}#{$4}]" }
    s.gsub!(/\[[Ss]\(([0-9]+?)\)\]/) { "\021[#{$1}]" }
    s.gsub!(/\[[Bb]\]/) { "\022" }
    s.gsub!(/\[[Ii]\]/) { "\023" }
    s.gsub!(/\[[Tt]ab\(([0-9]+?)\)\]/) { "\024[#{$1}]" }
    s.gsub!(/\[[Ss]tab\((.+?)\)\]/) { "\025[#{$1}]" }
    s.gsub!(/\[[Ff]name\((.+?)\)\]/) { "\026[#{$1}]" }
    s.gsub!(/\[[Ll]ine\((.+?)\)\]/) { "\027[#{$1}]" }
    s.gsub!(/\[[Ss]peed\(([0-9]+?)\)\]/) { "\016[#{$1}]" }
    s.gsub!(/\[[Ww]ait\(([0-9]+?)\)\]/) { "\017[#{$1}]" }
    s.gsub!(/\[[Nn]ewbgm\((.+?)\)\]/) { "\031[#{$1}]" }
    s.gsub!(/\[[Bb]gmfade\(([0-9]+?)\)\]/) { "\032[#{$1}]" }
    s.gsub!(/\[[Bb]gmstop\]/) { "\033" }
    s.gsub!(/\[[Nn]ewback\((.+?)\,([0-9]+?)\)\]/) { "\034[#{$1},#{$2}]" }
    s.gsub!(/\[[Nn]oent\]/) { "\035" }
    s.gsub!(/\[[Gg]otitle\]/) { "\036" }
    @text_copy = s.gsub(/(.\[.*?\]|\001|\002|\003|\022|\023|\033|\035|\036)/,"").split("\n")
    return s
  end
  def draw_strings(s)
    max_y = 0
    while true
      break if (c = s.slice!(/./m)) == nil
      c = "\\" if c == "\000"
      if c == "\001"
        @align = 1
        re_align
        next
      end
      if c == "\002"
        @align = 0
        re_align
        next
      end
      if c == "\003"
        @align = 2
        re_align
        next
      end
      if c == "\004"
        s.sub!(/\[(.*?)(\,*?[0-9]*?)(\,*?[0-9]*?)(\,*?[0-9]*?)\]/, "")
        o = Sprite.new
        begin
          b = RPG::Cache.picture($1)
        rescue
          w = @sprite.bitmap.text_size("Error:ピクチャファイル[#{$1}]が見つかりません。").width
          @sprite.bitmap.draw_text(4+@x, @y, w, line_height_get, "Error:ピクチャファイル[#{$1}]が見つかりません。")
          @x += w
          max_y = max_y > line_height_get ? may_y : line_height_get
          next
        end
        o.bitmap = Bitmap.new($2 == "" ? b.width : $2.to_i,
                              $3 == "" ? b.height : $3.to_i)
        o.x = @x
        o.y = @y
        o.bitmap.stretch_blt(
          Rect.new(0,0,o.bitmap.width,o.bitmap.height),
            b,Rect.new(0,0,b.width,b.height),$4 == "" ? 255 : $4.to_i)
        @pics.push(o)
        max_y = max_y > o.bitmap.height+5 ? may_y : o.bitmap.height+5
        next
      end
      if c == "\005"
        s.sub!(/\[(.*?)\,([0-9]+?)\,*?([0-9]*?)\,*?([0-9]*?)\,*?([0-9]*?)\]/, "")
        o = Sprite.new
        begin
          b = RPG::Cache.battler($1,$2.to_i)
        rescue
          w = @sprite.bitmap.text_size("Error:バトラーファイル[#{$1}]が見つかりません。").width
          @sprite.bitmap.draw_text(4+@x, @y, w, line_height_get, "Error:バトラーファイル[#{$1}]が見つかりません。")
          @x += w
          max_y = max_y > line_height_get ? may_y : line_height_get
          next
        end
        o.bitmap = Bitmap.new($3 == "" ? b.width : $3.to_i,
                                $4 == "" ? b.height : $4.to_i)
        o.x = @x
        o.y = @y + 480
        o.bitmap.stretch_blt(
          Rect.new(0,0,o.bitmap.width,o.bitmap.height),
            b,Rect.new(0,0,b.width,b.height),$5 == "" ? 255 : $5.to_i)
        @pics.push(o)
        max_y = max_y > o.bitmap.height+5 ? may_y : o.bitmap.height+5
        next
      end
      if c == "\016"
        s.sub!(/\[([0-9]+?)\]/, "")
        @change_point["speed@#{480-@y}"] = $1.to_i
        next
      end
      if c == "\017"
        s.sub!(/\[([0-9]+?)\]/, "")
        @change_point["wait@#{480-@y}"] = $1.to_i
        next
      end
      if c == "\020"
        s.sub!(/\[([0-9]*?)\,([0-9]*?)\,([0-9]*?)\,*?([0-9]*?)\]/, "")
        o = $4 == "" ? 255 : $4.to_i
        @sprite.bitmap.font.color = 
          Color.new($1.to_i, $2.to_i, $3.to_i, o)
        next
      end
      if c == "\021"
        s.sub!(/\[([0-9]+?)\]/, "")
        @sprite.bitmap.font.size = $1.to_i
        re_align
        next
      end
      if c == "\022"
        @sprite.bitmap.font.bold = !@sprite.bitmap.font.bold
        re_align
        next
      end
      if c == "\023"
        @sprite.bitmap.font.italic = !@sprite.bitmap.font.italic
        re_align
        next
      end
      if c == "\024"
        s.sub!(/\[([0-9]+?)\]/, "")
        if @align == 0
          @x += @sprite.bitmap.text_size(" " * $1.to_i).width
        end
        next
      end
      if c == "\025"
        s.sub!(/\[(.*?)\]/, "")
        if @align == 0
          @x += @sprite.bitmap.text_size($1).width
        end
        next
      end
      if c == "\026"
        s.sub!(/\[(.+?)\]/, "")
        @sprite.bitmap.font.name = $1
        re_align
        next
      end
      if c == "\027"
        s.sub!(/\[(.+?)\]/, "")
        w = @sprite.bitmap.text_size($1).width
        cc = $1 * (640 / w + 1).truncate
        w = @sprite.bitmap.text_size(cc).width
        max_y = max_y > line_height_get ? may_y : line_height_get
        @sprite.bitmap.draw_text(0, @y, w, line_height_get, cc)
        next
      end
      if c == "\031"
        s.sub!(/\[(.+?)\]/, "")
        @change_point["bgm@#{480-@y}"] = "Audio/BGM/#{$1}"
        next
      end
      if c == "\032"
        s.sub!(/\[([0-9]+?)\]/, "")
        @change_point["bgmfade@#{480-@y}"] = $1.to_i
        next
      end
      if c == "\033"
        @change_point["bgmstop@#{480-@y}"] = 0
        next
      end
      if c == "\034"
        s.sub!(/\[(.+?)\,([0-9]+?)\]/, "")
        @change_point["back@#{480-@y}"] = "#{$1}@#{$2}"
        next
      end
      if c == "\035"
        @no_ent = true
        next
      end
      if c == "\036"
        @change_point["title@#{480-@y}"] = 0
        next
      end
      if c == "\n"
        @lines += 1
        @y += max_y if @no_ent == false
        @x = @align = 0
        re_align
        @sprite.bitmap.font = Font.new
        max_y = line_height_get
        @text_copy2.push("")
        @no_ent = false
        next
      end
      next if c == ""
      max_y = max_y > line_height_get ? may_y : line_height_get
      @sprite.bitmap.draw_text(4+@x, @y, 40, line_height_get, c)
      @x += @sprite.bitmap.text_size(c).width
      @text_copy2[@lines] += c
    end
  end
  def line_height_get
    y = LINE_HEIGHT
    y += @sprite.bitmap.font.size - DEFAULT_FONT_SIZE
    return y
  end
  def re_align
    case @align
    when 0
      @x = 0
    when 1
      s = @text_copy[@lines]
      s.sub!(/#{@text_copy2[@lines]}/,"")
      @x = 320 - @sprite.bitmap.text_size(s).width / 2
    when 2
      s = @text_copy[@lines].sub(/#{@text_copy2[@lines]}/,"")
      @x = 632 - @sprite.bitmap.text_size(s).width
    end
  end
end

web拍手 by FC2   

コメントの投稿


非公開コメント

コメント

STERS's Development Room

STERSの開発室っぽい何か。


プロフィール

Name:STERS
Unity3D/C#/PHP/js/C++/VB
などを勉強中です

[STERS's Room]
[ファイル置き場]

カテゴリー
最近の記事
最近のコメント
カレンダー
06 ≪│2017/07│≫ 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
RSSリンクの表示
ブログ内Google検索
Google
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。