设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

图片标题 整合 标题流星雨

2005-10-14 00:00| 发布者: 柳柳| 查看: 10211| 评论: 0|原作者: chaochao,柳柳

摘要:    作者  chaochao,柳柳(中国大陆)  版本与更新  2005年10月更新  相关网址  范例工程 不提供  脚本功能 整合流星雨 + 动态图片标题,可以制作漂亮的片
 

 作者

 chaochao,柳柳(中国大陆)

 版本与更新

 2005年10月更新

 相关网址

 范例工程

不提供



 脚本功能

整合流星雨 + 动态图片标题,可以制作漂亮的片头效果。

 使用方法

复制全部脚本内容,在Main脚本之前按insert,插入此脚本全部内容。

然后和流星雨一样,参照脚本开头部分的注释,设置速度,选一张图片做“流星”

 相关截图


 

 脚本内容

#==============================================================================
# 本脚本来自
www.66RPG.com,使用和转载请保留此信息
# 作者:chaochao+66rpg的66
#==============================================================================

 #==============================================================================
 #■ Scene_Title
#------------------------------------------------------------------------------
#  处理标题画面的类。
#==============================================================================

class Scene_Title
  WEATHER = 4    # 使用自定义效果(0:无,1:雨,2:暴风雨,3:雪,4:自定义)
  MAXNUMBER = 18  # 天气图片数量
 
  WEATHER_FILE = "Graphics/Pictures/Title_starlong.png"
  # 自定义图片路径,这个文件可以从黑暗圣剑DEMO获得,是流星雨
 
  BLEND_TYPE = 0 # 合成方式(0:普通,1:加法,2:减法)
  WEATHER_X = 5 # X方向每回合减少象素
  WEATHER_Y = 5 # Y方向每回合减少象素
  WEATHER_OPACITY = 2 #每回合减低透明度
  START_OPACITY = 200 #出现时的透明度
  RAND_X = 1200 # 随机X范围
  RAND_Y = 600 # 随机Y范围
  HEIGHT = -600 # 出现时候的屏幕Y
  WIDTH = 100 # 出现时候的屏幕X
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
 
  def main
    if $BTEST
      battle_test
      return
    end
    $data_actors = load_data("Data/Actors.rxdata")
    $data_classes = load_data("Data/Classes.rxdata")
    $data_skills = load_data("Data/Skills.rxdata")
    $data_items = load_data("Data/Items.rxdata")
    $data_weapons = load_data("Data/Weapons.rxdata")
    $data_armors = load_data("Data/Armors.rxdata")
    $data_enemies = load_data("Data/Enemies.rxdata")
    $data_troops = load_data("Data/Troops.rxdata")
    $data_states = load_data("Data/States.rxdata")
    $data_animations = load_data("Data/Animations.rxdata")
    $data_tilesets = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system = load_data("Data/System.rxdata")
    $game_system = Game_System.new
    # 生成标题图形
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
    @ox = 0
    @oy = 0
    color1 = Color.new(255,255,255, 255)
    color2 = Color.new(255, 255, 255, 128)
    @rain_bitmap = Bitmap.new(7, 56)
    for i in 0..6
      @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
    end
    @storm_bitmap = Bitmap.new(34, 64)
    for i in 0..31
      @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
      @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
      @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
    end
    @snow_bitmap = Bitmap.new(6, 6)
    @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
    @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
    @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
    @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
    @sprites = []
    for i in 1..40
      sprite = Sprite.new
      case WEATHER
      when 1
        sprite.bitmap = @rain_bitmap
      when 2
        sprite.bitmap = @storm_bitmap
      when 3
        sprite.bitmap = @snow_bitmap
      when 4
        sprite.bitmap = Bitmap.new(WEATHER_FILE)
      end
      sprite.z = 1000
      sprite.x = -1000
      sprite.y = -1000
      sprite.visible = (i <= MAXNUMBER)
      sprite.blend_type = BLEND_TYPE
      sprite.opacity = START_OPACITY
      @sprites.push(sprite)
    end
    weather_update

    # 生成标题图形
    @sprite = [Sprite.new]
    for i in 0..6
      @sprite[i] = Sprite.new
      @sprite[i].opacity = 0
    end
    @sprite[0].bitmap = RPG::Cache.title($data_system.title_name)
    @sprite[0].opacity = 0
    #开始游戏的图片
    @sprite[1].bitmap = Bitmap.new("Graphics/Pictures/1.png")
    @sprite[2].bitmap = Bitmap.new("Graphics/Pictures/2.png")
    #继续游戏的图片
    @sprite[3].bitmap = Bitmap.new("Graphics/Pictures/3.png")
    @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/4.png")
    #结束游戏的图片
    @sprite[5].bitmap = Bitmap.new("Graphics/Pictures/5.png")
    @sprite[6].bitmap = Bitmap.new("Graphics/Pictures/6.png")
    #图片位置
    for i in 1..6
      x=465
      y=(i+1)/2*35+313
      @sprite[i].x =x
      @sprite[i].y =y
    end
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    if @continue_enabled
      @command_index = 1
    else
      @command_index = 0
      @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/3.png")
    end
    $game_system.bgm_play($data_system.title_bgm)
    Audio.me_stop
    Audio.bgs_stop
    Graphics.transition
    loop do
      Graphics.update
      #淡出背景圖形
      if @sprite[0].opacity <= 255
        @sprite[0].opacity += 15
      end
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    # 釋放圖形
    for i in 0..6
      @sprite[i].bitmap.dispose
      @sprite[i].dispose
    end
      for sprite in @sprites
      sprite.dispose
    end
    @rain_bitmap.dispose
    @storm_bitmap.dispose
    @snow_bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新天气
  #--------------------------------------------------------------------------
  def weather_update
    return if WEATHER == 0
    for i in 1..MAXNUMBER
      sprite = @sprites[i]
      if sprite == nil
        break
      end
      if WEATHER == 1
        sprite.x -= 2
        sprite.y += 16
        sprite.opacity -= 8
      end
      if WEATHER == 2
        sprite.x -= 8
        sprite.y += 16
        sprite.opacity -= 12
      end
      if WEATHER == 3
        sprite.x -= 2
        sprite.y += 8
        sprite.opacity -= 8
      end
      if WEATHER == 4
        sprite.x -= WEATHER_X
        sprite.y += WEATHER_Y
        sprite.opacity -= WEATHER_OPACITY
      end
      x = sprite.x - @ox
      y = sprite.y - @oy
      if sprite.opacity < 32 or x < -100 or x > 750 or y < -1000 or y > 500
        sprite.x = rand(RAND_X) + WIDTH + @ox
        sprite.y = rand(RAND_Y) + HEIGHT + @oy
        sprite.opacity = START_OPACITY
      end
    end
  end


  def update
  chaochaocommandchaochao
  if Input.trigger?(Input::C)
    case @command_index
      when 0
        command_new_game
      when 1
        command_continue
      when 2
        command_shutdown
      end
    end
    weather_update
  end
 
  def chaochaocommandchaochao
    if Input.trigger?(Input::UP)
      @command_index -= 1
      if @command_index < 0
        @command_index = 2
      end
      $game_system.se_play($data_system.cursor_se)
    end
    if Input.trigger?(Input::DOWN)
      @command_index += 1
      if @command_index > 2
        @command_index = 0
      end
      $game_system.se_play($data_system.cursor_se)
    end
    case @command_index
    when 0
      if @sprite[1].opacity >= 0
        @sprite[1].opacity -= 30
      end
      if @sprite[2].opacity <= 240
        @sprite[2].opacity += 30
      end
      if @sprite[3].opacity <= 210
        @sprite[3].opacity += 30
      end
      if @sprite[4].opacity >= 0
        @sprite[4].opacity -= 30
      end
      if @sprite[5].opacity <= 210
        @sprite[5].opacity += 30
      end
      if @sprite[6].opacity >= 0
        @sprite[6].opacity -= 30
      end
    when 1
      if @sprite[1].opacity <= 210
        @sprite[1].opacity += 30
      end
      if @sprite[2].opacity >= 0
        @sprite[2].opacity -= 30
      end
      if @sprite[3].opacity >= 0
        @sprite[3].opacity -= 30
      end
      if @sprite[4].opacity <= 240
        @sprite[4].opacity += 30
      end
      if @sprite[5].opacity <= 210
        @sprite[5].opacity += 30
      end
      if @sprite[6].opacity >= 0
        @sprite[6].opacity -= 30
      end
    when 2
      if @sprite[1].opacity <= 210
        @sprite[1].opacity += 30
      end
      if @sprite[2].opacity >= 0
        @sprite[2].opacity -= 30
      end
      if @sprite[3].opacity <= 210
        @sprite[3].opacity += 30
      end
      if @sprite[4].opacity >= 0
        @sprite[4].opacity -= 30
      end
      if @sprite[5].opacity >= 0
        @sprite[5].opacity -= 30
      end
      if @sprite[6].opacity <= 240
        @sprite[6].opacity += 30
      end
    end
  end
end

# ————————————————————————————————————
# 本脚本来自
www.66rpg.com,转载请保留此信息
# ————————————————————————————————————

class Interpreter
 
  BOOK_READING = 50 # 默认打开50开关后进入读书系统
 
  #--------------------------------------------------------------------------
  # ● 显示文章
  #--------------------------------------------------------------------------
  def command_101
    # 另外的文章已经设置过 message_text 的情况下
    if $game_temp.message_text != nil
      # 结束
      return false
    end
    # 设置信息结束后待机和返回调用标志
    @message_waiting = true
    $game_temp.message_proc = Proc.new { @message_waiting = false }
    # message_text 设置为 1 行
    $game_temp.message_text = @list[@index].parameters[0] + "\n"
    line_count = 1
    # 循环
    loop do
      # 下一个事件指令为文章两行以上的情况
      if $game_switches[BOOK_READING] and @list[@index+1].code == 101#阅读书刊报纸
        unless $game_temp.in_battle
          $scene.message_window.height = 320
          $scene.message_window.contents = Bitmap.new($scene.message_window.width - 32, $scene.message_window.height - 32)
          $scene.message_window.contents.font.size = 20
          $game_temp.message_text += @list[@index+1].parameters[0] +"\n"
          line_count+=1
          @index+=1
        end
      end
      if $game_switches[BOOK_READING]==false
        unless $game_temp.in_battle
          if $scene.message_window.height == 320
            $scene.message_window.height = 160
            $scene.message_window.contents = Bitmap.new($scene.message_window.width - 32, $scene.message_window.height - 32)
            $scene.message_window.contents.font.size = 22
          end
        end
      end
      if @list[@index+1].code == 401
        # message_text 添加到第 2 行以下
        $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
        line_count += 1
      # 事件指令不在文章两行以下的情况
      else
        # 下一个事件指令为显示选择项的情况下
        if @list[@index+1].code == 102
          # 如果选择项能收纳在画面里
          if @list[@index+1].parameters[0].size <= 4 - line_count
            # 推进索引
            @index += 1
            # 设置选择项
            $game_temp.choice_start = line_count
            setup_choices(@list[@index].parameters)
          end
        # 下一个事件指令为处理输入数值的情况下
        elsif @list[@index+1].code == 103
          # 如果数值输入窗口能收纳在画面里
          if line_count < 4
            # 推进索引
            @index += 1
            # 设置输入数值
            $game_temp.num_input_start = line_count
            $game_temp.num_input_variable_id = @list[@index].parameters[0]
            $game_temp.num_input_digits_max = @list[@index].parameters[1]
          end
        end
        # 继续
        return true
      end
      # 推进索引
      @index += 1
    end
  end
end

class Scene_Map
  attr_accessor :message_window
end

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


 

脚本使用的通用说明

约定:本脚本来源于网络,任何人不得随意将本脚本应用于商业用途,如需转载,必须保留所有版权信息,如果是国内作者,最好征求作者同意——否则发生任何后果,66RPG不予负责。使用此脚本表示您默认接受上述约定。

说明:不同脚本之间、尤其是不同作者脚本之间会有冲突,本站会对已知脚本冲突进行简单说明。测试新脚本请下载本站提供的测试文件或者新建工程测试。脚本不要贪多,否则可能会互相冲突对您的游戏造成未知的影响。如果脚本内或者本站内提供了解释,请务必完全看完解释后再使用,如有问题,请到论坛讨论。


鲜花

刚表态过的朋友 (0 人)

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-26 05:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部