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

Project1

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

VX屏幕提示信息(仿传说系列Skit)

2008-5-25 01:36| 发布者: 御灵| 查看: 3238| 评论: 0|原作者: oceary|来自: 点此进入发布帖

摘要:   #==============================================================================# vx屏幕提示信息v1.0   by oce 2008年5月7日#------------------------------------------------------------------------------# 在屏幕左下方显示信
 



#==============================================================================
# vx屏幕提示信息v1.0   by oce 2008年5月7日
#------------------------------------------------------------------------------
# 在屏幕左下方显示信息标题
# 按shift键(游戏中的A键,建议将游戏默认加速键改到C键上 - -)可以呼出对应的内容
# 可关闭信息提示窗口的显示
# PS:本脚本借用了<<叶子的详尽任务显示界面 v2.1 改版 by snstar2006>>中的文本显示.

 

$不显示skit窗口=1   #设置控制开关(默认为开关1)
$进程变量=1         #设置进程变量(默认为变量1)
$间隔步数=5         #信息出现的间隔(默认为5步。当然,改成随机数可能会好一点)

class Game_Party
  #--------------------------------------------------------------------------
  # ● 设置屏幕信息资料
  #
  #@skit[]:存储信息,进程变量为i时,显示@skit[i]中定义的内容
  #格式:@skit[进程变量] =["信息类型1,信息标题1:信息内容1","信息类型2,信息标题2:信息内容1",...]  
  #
  #信息类型  1:地图信息
  #          2:短信息
  #          3:普通对话
  #          4.系统信息
  #               
 
  #--------------------------------------------------------------------------
  def get_skit
   @skit= []
   @skit[0]= [
"4,按下SHIFT键吧:\\c[6]现在你看到的是信息窗口了.

\\c[4]信息分为\\i[153]地图信息,\\i[148]短信息,\\i[115]普通对话,\\i[133]系统信息四类

如果听到叮的一声的话,就按下Shift键来查看吧~~

有没有觉得很方便呢?~",
"1,全部都是高山?:如果不能找出不同点的话就没办法离开这里了,到底是哪里不同呢?

莫非是那棵小树?"]
  
   @skit[1]= [
"3,太奇怪了吧?:\\c[6]\\n[1]:太奇怪了吧?这个作者肯定不会画地图,乱七八糟的!
\\c[5]\\n[2]:没错啦!怎么会突然出现房子嘛~
               ",
"4,远方的来信:\\c[2]哈哈哈,你知道吗?
在世界的某处正发生着可怕的事情呢!"]
  end
 
 

   def skit
    if @skit.nil?
      get_skit
    end
    return @skit
  end
 
 
end

# ■ Window_Skit
#============================================================================

class Window_Skit< Window_Base
  def initialize
    super(0,360,200,WLH+32)
    $temp2=-1 if $temp2.nil?
    $temp3=0 if $temp3.nil?
    $sound=0 if $sound.nil?
         refresh
       end
      
  def refresh
      $skit_id=0 if $skit_id.nil? or $game_variables[$进程变量]!=$temp1
      self.contents.clear
      self.contents.font.size=16
      @NAME = $game_party.skit[$game_variables[$进程变量]][$skit_id].split(/:/)[0]
      @name = @NAME.split(/,/)[1].to_s
      @type = @NAME.split(/,/)[0].to_i
     
      case @type   #定义不同类型对应的图标(图标编号为图标在IconSet里的顺序)    
      when 1
        @icon=153
      when 2
        @icon=148
      when 3
        @icon=115
      when 4
        @icon=133
      end

      if $game_switches[$不显示skit窗口]==false
         if $game_party.steps-$temp3>=$间隔步数 or $temp2==$skit_id 
            self.opacity  = 150
            draw_icon(@icon,0,0,true)
            self.contents.draw_text(32,0,576,24,@name,0)
               if ($sound==0 or $skit==0) and $temp2!=$skit_id 
                  Audio.se_play("Audio/SE/Chime2",80,100)
                  $sound = 1
               end
               if Input.trigger?(Input::A)
                  $sound = 0
                  $scene=Scene_Skit_info.new
               end
         
      else
          self.opacity = 0
        end
      else
         self.opacity = 0
        end
  end
end

# ■ Window_Skit_info
#============================================================================

 

class Window_Skit_info < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(200, 0, 344, 416)
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 刷新内容
  #--------------------------------------------------------------------------
  def refresh
    self.oy = 0
    self.visible = true
    self.contents.font.color = normal_color
     @INFO = $game_party.skit[$game_variables[$进程变量]][$skit_id].split(/:/)[1].to_s
     chenge_special_character(@INFO)
    end
end

# ■ Scene_Skit

# 处理对话内容画面的类。
#============================================================================

class Scene_Skit_info < Scene_Base
 
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def start
     @skit_info_window = Window_Skit_info.new
     @screen = Spriteset_Map.new
  end
  def terminate
     @skit_info_window.dispose
     @screen.dispose
  end
  def update
     @skit_info_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $temp2=$skit_id                      #记录当前id
      $temp1=$game_variables[$进程变量]    #记录当前进程
      $temp3=$game_party.steps             #记录当前步数
      $skit_id+=1  if not($game_party.skit[$game_variables[$进程变量]][$skit_id+1].nil?)
      $scene = Scene_Map.new
     end
end
end

#重定义Scene_Map
#============================================================================
class Scene_Map < Scene_Base
  alias new_start start
  def start
    new_start
    @skit_window = Window_Skit.new
  end
  alias new_update update
  def update
    new_update
    @skit_window.refresh  
  end
  alias new_terminate terminate
  def terminate
    @skit_window.dispose
    new_terminate
  end

end


# ■ chenge_special_character

#引用<<叶子的详尽任务显示界面 v2.1 改版 by snstar2006>>中的文本显示部分

#\\v[n] 显示n号变量
#\\c[n] 改变字体颜色。n 为窗口外观图片中所设定的颜色,可为0-31
#
#   \\c[HRRGGBB]设定字体颜色为RRGGBB色, RRGGBB 为16进位颜色代码
#   \\n[i] 显示i号角色名字
#   \\i[图标编号] 显示图标,图标编号为图标在IconSet里的顺序
#   \\p[文件名] 显示图片
#============================================================================
class Window_Base < Window
  def chenge_special_character(text, x=0, y=0)
    # 记录换行时y坐标最小加值
    min_y = 0
    # 限制文字处理
    begin
      last_text = text.clone
      text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
    end until text == last_text
    text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
      $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
    end
    # 为了方便、将 "\\\\" 变换为 "\000"
    text.gsub!(/\\\\/) { "\000" }
    # "\C" 变为 "\001"
    text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/)  { "\001[#{$1}]" }
    # "\I" 变为 "\002"
    text.gsub!(/\\[Ii]/) { "\002" }
    # "\P" 变为 "\003"
    text.gsub!(/\\[Pp]/) { "\003" }
    # c 获取 1 个字 (如果不能取得文字就循环)
    while ((c = text.slice!(/./m)) != nil)
      # \\ 的情况下
      if c == "\000"
        # 还原为本来的文字
        c = "\\"
      end
      # \C[n] 的情況下
      if c == "\001"
        # 更改文字色
        text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
        # 如果是设定RGB颜色
        if $1[0,1]=="H"
          # 先拷贝一下文字
          c=$1.dup
          # 分3段分别取出R,G,B颜色
          c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
          # 设定文字颜色
          self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
        else
          color = $1.to_i
          if color >= 0 and color <= 31
            self.contents.font.color = text_color(color)
          elsif color == 32
            self.contents.font.color = disabled_color
          elsif color == 33
            self.contents.font.color = system_color
          end
        end
        # 下面的文字
        next
      end
      # 图标的情况下
      if c == "\002"
        icon_name = ''
        while ((cha = text.slice!(/./m)) != ']')
          next if cha == '['
          icon_name += cha
        end
        if x + 24 > self.contents.width
          x = 0
          y += [WLH, min_y].max
          min_y = 0
        end
        draw_icon(icon_name.to_i, x+4, y, true)
        x += 28
        next
      end
      # 图片的情况下
      if c == "\003"
        pic_name = ''
        while ((cha = text.slice!(/./m)) != ']')
          next if cha == '['
          pic_name += cha
        end
        pic = Cache.picture(pic_name)
        if x + pic.width > self.contents.width
          x = 0
          y += [WLH, min_y].max
          min_y = 0
        end
        self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
        x += pic.width
        min_y = [pic.height, WLH].max
        next
      end
      # 另起一行文字的情况下
      if c == "\n"
        y += [WLH, min_y].max
        min_y = 0
        x = 0
        # 下面的文字
        next
      end
      # 自动换行处理
      if x + self.contents.text_size(c).width > self.contents.width-8
        y += [WLH, min_y].max
        min_y = 0
        x = 0
      end
      # 描绘文字
          self.contents.font.size = 16
          self.contents.draw_text(4 + x, y, 40, WLH, c)
      # x 为要描绘文字的加法运算
      x += self.contents.text_size(c).width
    end
  end
end

>点击下载范例工程
http://bbs.66rpg.com/UP_PIC/200801/屏幕信息_90551742.rar

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

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

GMT+8, 2024-11-25 11:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部