Project1

标题: 关于滚动字幕的脚本 [打印本页]

作者: zcr91    时间: 2010-8-17 19:11
标题: 关于滚动字幕的脚本
有以下脚本,但貌似只能在游戏中使用一个滚动字幕。
能不能做成随用随插的形式?

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

#——————————————————————————————————————
# Scene_Credit 制作人员名单
#——————————————————————————————————————


#——使用注意:默认会返回地图,如果需要返回开头,请将本脚本中的
#return_scene = Scene_Map.new改为return_scene = Scene_Title.new

class Scene_Credit
  CREDIT=<<_END_
-----Cast------

制作工具:RPG Maker XP

先帝创业未半而中道崩殂
今天下三分,益州疲弊
此诚危急存亡之秋也
然侍卫之臣不懈于内,忠志之士忘身于外者
盖追先帝之殊遇,欲报之于陛下也
诚宜开张圣听,以光先帝遗德,恢弘志士之气
不宜妄自菲薄,引喻失义,以塞忠谏之路也

宫中府中,俱为一体,陟罚臧否,不宜异同
若有作奸犯科及为忠善者
宜付有司论其刑赏,以昭陛下平明之理
不宜偏私,使内外异法也。
侍中侍郎郭攸之、费祎、董允等
此皆良实,志虑忠纯,是以先帝简拔以遗陛下
愚以为宫中之事,事无大小,悉以咨之,然后施行
必能裨补阙漏,有所广益。


_END_
end

class Scene_Credit

  def initialize(return_scene = nil)
    if return_scene.nil?
      return_scene = Scene_Map.new
    end
    @return_scene = return_scene
  end
  
  def scene_start
    credit_lines = CREDIT.split(/\n/)
    credit_bitmap = Bitmap.new(640,32 * credit_lines.size)
    credit_lines.each_index do |i|
      line = credit_lines
      credit_bitmap.draw_text(0,i * 32,640,32,line,1)
    end
    @credit_sprite = Sprite.new(Viewport.new(0,50,640,380))
    @credit_sprite.bitmap = credit_bitmap
    @credit_sprite.oy = -430
    @frame_index = 0
    @last_flag = false
  end

  def scene_end
    @credit_sprite.dispose
  end
  
  def last?
    return (@frame_index >= @credit_sprite.bitmap.height + 480)
  end
  
  def last
    if not @last_flag
      Audio.bgm_fade(10000)
      @last_flag = true
      @last_count = 0
    else
      @last_count += 1
    end
    if @last_count >= 300
      $scene = @return_scene
    end
  end
  
  def update
    @frame_index += 1
    return if cancel?
    last if last?
    @credit_sprite.oy += 1
  end

  def cancel?
    if Input.trigger?(Input::B)
      $scene = @return_scene
      return true
    end
    return false
  end

  def main
    scene_start
    # 过渡
    Graphics.transition
    # 主循环
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    scene_end
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

作者: zcr91    时间: 2010-8-17 19:17
啊,对了……不知为何使用时会卡……貌似这个脚本用不成的事说
作者: tyrpg    时间: 2010-8-17 20:08
本帖最后由 tyrpg 于 2010-8-17 20:23 编辑

第一部分
很简单的 把脚本改为
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #——————————————————————————————————————
  5. # Scene_Credit 制作人员名单
  6. #——————————————————————————————————————


  7. #——使用注意:默认会返回地图,如果需要返回开头,请将本脚本中的
  8. #return_scene = Scene_Map.new改为return_scene = Scene_Title.new

  9. class Scene_Credit
  10.   CREDIT=$CREDIT_WZ
  11. end

  12. class Scene_Credit

  13.   def initialize(return_scene = nil)
  14.     if return_scene.nil?
  15.       return_scene = Scene_Map.new
  16.     end
  17.     @return_scene = return_scene
  18.   end
  19.   
  20.   def scene_start
  21.     credit_lines = CREDIT.split(/\n/)
  22.     credit_bitmap = Bitmap.new(640,32 * credit_lines.size)
  23.     credit_lines.each_index do |i|
  24.       line = credit_lines
  25.       credit_bitmap.draw_text(0,i * 32,640,32,line,1)
  26.     end
  27.     @credit_sprite = Sprite.new(Viewport.new(0,50,640,380))
  28.     @credit_sprite.bitmap = credit_bitmap
  29.     @credit_sprite.oy = -430
  30.     @frame_index = 0
  31.     @last_flag = false
  32.   end

  33.   def scene_end
  34.     @credit_sprite.dispose
  35.   end
  36.   
  37.   def last?
  38.     return (@frame_index >= @credit_sprite.bitmap.height + 480)
  39.   end
  40.   
  41.   def last
  42.     if not @last_flag
  43.       Audio.bgm_fade(10000)
  44.       @last_flag = true
  45.       @last_count = 0
  46.     else
  47.       @last_count += 1
  48.     end
  49.     if @last_count >= 300
  50.       $scene = @return_scene
  51.     end
  52.   end
  53.   
  54.   def update
  55.     @frame_index += 1
  56.     return if cancel?
  57.     last if last?
  58.     @credit_sprite.oy += 1
  59.   end

  60.   def cancel?
  61.     if Input.trigger?(Input::B)
  62.       $scene = @return_scene
  63.       return true
  64.     end
  65.     return false
  66.   end

  67.   def main
  68.     scene_start
  69.     # 过渡
  70.     Graphics.transition
  71.     # 主循环
  72.     loop do
  73.       Graphics.update
  74.       Input.update
  75.       update
  76.       if $scene != self
  77.         break
  78.       end
  79.     end
  80.     # 准备过渡
  81.     Graphics.freeze
  82.     scene_end
  83.   end
  84. end

  85. #==============================================================================
  86. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  87. #==============================================================================
复制代码

作者: tyrpg    时间: 2010-8-17 20:16
本帖最后由 tyrpg 于 2010-8-17 20:24 编辑

第2部分

在创建个脚本位
复制进去:
  1. class Scene_wenzidingyi
  2. #1号字幕
  3. if $zmwzdy = 1
  4. $CREDIT_WZ=<<_END_
  5. 这里输入你要的内容
  6. _END_
  7. end
  8. #2号字幕
  9. if $zmwzdy = 2
  10. $CREDIT_WZ=<<_END_
  11. 这里输入你要的内容
  12. _END_
  13. end
  14. $scene = Scene_map.new
  15. end
复制代码
如果还要设置第3字幕
只需在倒数第2行前插入
  1. #3号字幕
  2. if $zmwzdy = 3
  3. $CREDIT_WZ=<<_END_
  4. 这里输入你要的内容
  5. _END_
  6. end
复制代码
如果还要设置第4字幕 就在倒数第2行前插入
  1. #4号字幕
  2. if $zmwzdy = 4
  3. $CREDIT_WZ=<<_END_
  4. 这里输入你要的内容
  5. _END_
  6. end
复制代码
可以发现这些只是第2行的代码不同 根据此规律 爱设置几个字幕就设置几个了
作者: tyrpg    时间: 2010-8-17 20:23
本帖最后由 tyrpg 于 2010-8-17 20:24 编辑

第3部分
下面说调用  例如 我们要调用1号字幕的内容
在事件中就插入 脚本 $zmwzdy = 1
                          脚本 $scene = Scene_wenzidingyi.new
                          脚本 $scene = Scene_Credit.new
这样就可以了
记得给分啊
作者: zcr91    时间: 2010-8-18 11:52
回复 tyrpg 的帖子
谢谢……不过,貌似出错了





   
作者: zcr91    时间: 2010-8-18 11:54
回复 tyrpg 的帖子
谢谢……不过,貌似出错了





   
作者: tyrpg    时间: 2010-8-18 12:09
今天测试了一下 可以很负责任的告诉你 你那脚本本来就是错的
作者: tyrpg    时间: 2010-8-18 12:28
我束手无策了 高人近来指点
作者: hongqizhen    时间: 2010-8-18 13:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: zcr91    时间: 2010-8-18 18:10
呜呜……大家都好强……
作者: zcr91    时间: 2010-8-18 18:18
那么还有解决方法吗?
作者: 123831778    时间: 2010-10-10 10:15
= =|原来这题目一直无解!!!!!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1