Project1

标题: 为什么自动执行事件中加了独立开关还一直显示文章 [打印本页]

作者: wkhfh    时间: 2011-8-14 10:56
标题: 为什么自动执行事件中加了独立开关还一直显示文章
初步这个判断和这个脚本有关,可是不能不用,请教……
#==============================================================================
#
#    呼出对话框 ver. 1.31 By パラ犬(日)
#  来自 http://rpg.para.s3p.net/
#
#  汉化修改 66RPG bbschat(2006.1.5)
#    来自 http://www.66RPG.com/
#
#    脚本更新:by KKME◎66RPG.com,2007年2月
#
#==============================================================================
#    ●准备工作-窗口Skin
#
#    首先,确认自己使用的对话框窗口Skin,(数据库-系统-窗口外观图形)
#    然后根据该窗口Skin制作对话框尾部使用的两个箭头图形
#    尾部箭头图形命名方式:“窗口skin名-top”,“窗口skin名-under”
#    将该图形文件存放在“Graphics/Windowskins”文件夹下。
#
#    本演示游戏内置2套窗口和箭头图形,
#    一套是游戏默认的“001-Blue01”,一套是定制的“fk”
#    玩家可以根据自己的需要参照样本定制自己的呼出对话框窗口Skin。
#
#  ★●使用方法 edit by KKME◎66RPG.com
#
#    方法一:传统方法:输入脚本:chat(事件编号, "角色姓名")。这样就可以正常显示。
#            这种方法虽然使用麻烦,但是有时候也会用到(比如不显示姓名的对话)。这种方法比方法二优先度高。
#            当不需要这种对话功能时候,直接输入一个脚本:chat,就能全部清空。
#
#    方法二:新方法:直接输入对话,会自动读取人名。
#            举例:首先将事件NPC命名,比如命名为“王小二”
#            则输入对话:
#               王小二:
#               今天天气真好啊。
#    这样就能直接将对话显示在这个NPC头上。如果姓名是我方队员则可自动显示在主角头上。
#    这种方法对于我方队员的情况支持 \n[1]这样的效果。如
#               \n[1]:
#               明天听说要下雨。
#    也能正确显示。对于一般的游戏制作这样已经足够了,如果还有特殊需求——小生是
#    知道有可能需要什么特殊需求的:),其实也设置了接口可以满足,不过需要你自己研究一下。
#            
#
#  ★●角色名字窗口使用角色图片的方法(汉化特别追加功能,原脚本只能使用文字)
#   
#    如果能在对应文件夹中找到文件名和角色名字相同的图片,   
#    则角色名字窗口显示角色头像图片,角色图片最好能包括角色的名字。
#    默认头像图片保存目录为“Graphics/Heads/”,玩家可自行修改。
#
#    如果不想使用角色名字直接作为头像文件名。可以使用下面在 Game_Temp 类里增加的namebmp属性。
#    重新设定角色名字与文件名的对应关系。
#
#  KKME注:这里修改了原有算法,可以支持中文名。小生以为不再需要Game_Temp类了。
#          这里小生知道也会有特殊需求,也是设置好接口了的。如果需要再自己研究或问我吧。不然说多了容易误导。  
#
#    ●信息表示速度的变更方法
#
#    在事件命令行使用[脚本]将数值代入[$mes_speed]
#    速度为 0 即瞬间显示全部信息,数字越大,信息表示速度越慢。
#   (举例:$mes_speed=1)
#
#    ●其他设置
#
#    请参照下面的注释
#==============================================================================
module FUKI
  # 头像图片保存目录的设定
  HEAD_PIC_DIR = "Graphics/Heads/"
  # 是否显示尾部图标
  TAIL_SHOW = true
  
  # Skin的设定
  # 使用数据库默认窗口Skin情况下这里使用[""]
  FUKI_SKIN_NAME = "001-Blue01"   # 呼出对话框用Skin
  NAME_SKIN_NAME = "001-Blue01"   # 角色名字窗口用Skin
  TX_SKIN_NAME = "touxiang"
  
  # 字体大小
  MES_FONT_SIZE = 22    # 呼出对话框
  NAME_FONT_SIZE = 14   # 角色名字窗口
  
  # 字体颜色
  #(设定为 Color.new(0, 0, 0, 0) 表示使用普通文字色)
  FUKI_COLOR = Color.new(255, 255, 255, 255)  # 呼出对话框
  NAME_COLOR = Color.new(255, 255, 255, 255)  # 角色名字窗口
  
  # 窗口透明度
  # 如修改窗口透明度请同时修改尾部箭头图形内部的透明度
  FUKI_OPACITY = 255    # 呼出对话框
  MES_OPACITY = 255     # 默认信息窗口
  NAME_OPACITY = 255    # 角色名字窗口
  
  # 角色名字窗口的相对位置
  NAME_SHIFT_X = 0      # 横坐标
  NAME_SHIFT_Y = 16     # 纵坐标
  
  # 窗口表示时是否根据画面大小自动检查窗口出现的位置,
  # 自动改变位置( true / false )
  # 设置成 true 在某些变态情况下可能出现箭头图标颠倒的问题 <- bbschat <= KKME
  POS_FIX = false
  # 在画面最边缘表示时的稍微挪动
  # 使用圆形Skin的角和方框的角重合的情况下为 true
  CORNER_SHIFT = false
  SHIFT_PIXEL = 4   # true 时挪动的象素
  
  # 角色高度尺寸
  CHARACTOR_HEIGHT = 48
  # 呼出对话框的相对位置(纵坐标)
  POP_SHIFT_TOP = 0         # 表示位置为上的时候
  POP_SHIFT_UNDER = 0       # 表示位置为下的时候
  
  # 信息的表示速度(数字越小速度越快,0为瞬间表示)
  # 游戏中 可随时用数字代入 $mes_speed 来改变消息表示速度。
  MES_SPEED = 1

end

#==============================================================================
# 初始化两个变量,不要动(by KKME◎66RPG.com)
#==============================================================================
$mes_name = ""
$mes_id = nil

#==============================================================================
# 方便用户同时设置2个常用参数而使用的函数
#==============================================================================
def chat(id = nil,name = "")
  $mes_name = name
  $mes_id = id
  
end
#==============================================================================
# □ Game_Temp
#==============================================================================
class Game_Temp
  attr_accessor  :namebmp              #保存头像图片的Hash表
  alias initialize_fuki initialize
  def initialize
    initialize_fuki
    # 如果不想使用角色名字直接作为头像文件名
    # 可在这里重新设定角色名字与文件名的对应关系
    @namebmp ={"玩家"=>"维斯特"}
  end
end
#==============================================================================
# □ Window_Message
#==============================================================================
class Window_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化状态
  #--------------------------------------------------------------------------
  def initialize
    super(80, 304, 480, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.z = 9998
    @fade_in = false
    @fade_out = false
    @contents_showing = false
    @cursor_width = 0
    @kkme_name = ""
    self.active = false
    self.index = -1
    @w = 0
    @h = 0
    @wait = 0
    @dx = 0
    @dy = 0
    $mes_speed = FUKI::MES_SPEED
  end
  
  #--------------------------------------------------------------------------
  # ○ 决定窗口尺寸并生成窗口
  #--------------------------------------------------------------------------
  def refresh_create
    @kkme_name = ""
    begin
      @kkme_name = $game_temp.message_text.split(":")[0] if $game_temp.message_text.split(":")[1] != nil
      $game_temp.message_text = $game_temp.message_text[@kkme_name.size + 4,$game_temp.message_text.size] if @kkme_name != ""
    rescue
    end
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.font.size = FUKI::MES_FONT_SIZE
    # 取得窗口尺寸
    get_windowsize
    w = @w + 32 + 8
    h = @h * (self.contents.font.size + 10) + 26
    # 生成呼出窗口
    set_fukidasi(self.x, self.y, w, h)
    # 生成角色名字窗口
    set_namewindow
    # 初始化信息表示使用的变量
    @dx = @dy = 0
    @cursor_width = 0
    @contents_drawing = true
    # 瞬间表示的情况下
    if $mes_speed == 0
      # 循环信息描绘处理
      while $game_temp.message_text != ""
        draw_massage
      end
      draw_opt_text
      @contents_showing_end = true
      @contents_drawing = false
    else
      # 一个一个描绘文字
      refresh_drawtext
    end
  end
  
  #--------------------------------------------------------------------------
  # ○ 一个一个描绘文字
  #--------------------------------------------------------------------------
  def refresh_drawtext
    if $game_temp.message_text != nil
      if @wait > 0
        @wait -= 1
      elsif @wait == 0
        # 描绘处理
        draw_massage
        @wait = $mes_speed
      end
    end
    # 描绘结束
    if $game_temp.message_text == ""
      draw_opt_text
      @contents_showing_end = true
      @contents_drawing = false
    end
  end
  
  #--------------------------------------------------------------------------
  # ○ 取得窗口尺寸
  #--------------------------------------------------------------------------
  def get_windowsize
    x = y = 0
    @h = @w = 0
    @cursor_width = 0
    # 有选择项的话,处理字的缩进
    if $game_temp.choice_start == 0
      x = 16
    end
    # 有等待显示的文字的情况下
    if $game_temp.message_text != nil
    text = $game_temp.message_text.clone
      # 限制文字处理
      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
      # 为了方便、将 "[url=]\\\\[/url]" 变换为 "\000"
      text.gsub!(/\\\\/) { "\000" }
      # "\\C" 变为 "\001" 、"\\G" 变为 "\002"
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001" }
      text.gsub!(/\\[Gg]/) { "\002" }
      # c 获取 1 个字 (如果不能取得文字就循环)
      while ((c = text.slice!(/./m)) != nil)
        # \\ 的情况下
        if c == "\000"
          # 还原为本来的文字
          c = "\\"
        end
        # \C[n] 或者 \G 的情况下
        if c == "\001" or c == "\002"
          # 下面的文字
          next
        end
        # 另起一行文字的情况下
        if c == "\n"
          # y 累加 1
          y += 1
          # 取得纵横尺寸
          @h = y
          @w = x > @w ? x : @w
          if y >= $game_temp.choice_start
            @w = x + 8 > @w ? x + 8 : @w
          end
          x = 0
          # 移动到选择项的下一行
          if y >= $game_temp.choice_start
            x = 8
          end
          # 下面的文字
          next
        end
        # x 为要描绘文字的宽度加法运算
        x += self.contents.text_size(c).width
      end
    end
    # 输入数值的情况
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @h += 1
      x = digits_max * self.contents.font.size + 16
      @w = x > @w ? x : @w
    end
  end
  
  #--------------------------------------------------------------------------
  # ○ 描绘信息处理
  #--------------------------------------------------------------------------
  def draw_massage
    # 有等待显示的文字的情况下
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      # 限制文字处理
      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
      # 为了方便、将 "[url=]\\\\[/url]" 变换为 "\000"
      text.gsub!(/\\\\/) { "\000" }
      # "\\C" 变为 "\001"、"\\G" 变为 "\002"
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      # c 获取 1 个字
      if ((c = text.slice!(/./m)) != nil)
        # 选择项的情况
        if @dy >= $game_temp.choice_start
          # 处理字的缩进
          @dx = 8
          # 描绘文字
          self.contents.draw_text(4 + @dx, 32 * @dy, 40, 32, c)
          # x 为要描绘文字宽度的加法运算
          @dx += self.contents.text_size(c).width
          # 循环
          while ((c = text.slice!(/./m)) != "\n")
            # 描绘文字
            self.contents.draw_text(4 + @dx, 32 * @dy, 40, 32, c)
            # x 为要描绘文字宽度的加法运算
            @dx += self.contents.text_size(c).width
          end
          if c == "\n"
            # 更新光标宽度
            @cursor_width = [@cursor_width, @dx].max
            # dy 累加 1
            @dy += 1
            @dx = 0
          end
          return
        end
        # \\ 的情况下
        if c == "\000"
          # 还原为本来的文字
          c = "\\"
        end
        #\C[n] 的情况下
        if c == "\001"
          # 更改文字色
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
        end
        # \G 的情况下
        if c == "\002"
          # 生成金钱窗口
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end
        end
        # 另起一行文字的情况下
        if c == "\n"
          # dy 累加 1
          @dy += 1
          @dx = 0
        end
        # 描绘文字
        self.contents.font.size = FUKI::MES_FONT_SIZE
        font_size = self.contents.font.size
         if c == "\001" or c == "\002" or c == "\003" or c == "\n"
        c = ""
      else
        self.contents.draw_text(4+@dx, (font_size+10)*@dy, font_size, font_size, c)
      end
        # dx 为要描绘文字的宽度加法运算
        @dx += self.contents.text_size(c).width
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # ○ 选择项和输入数值的情况下
  #--------------------------------------------------------------------------
  def draw_opt_text
    # 选择项的情况下
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    # 输入数值的情况下
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end
  
  #--------------------------------------------------------------------------
  # ○ 设置呼出对话框
  #--------------------------------------------------------------------------
  def set_fukidasi(x, y, width, height)
    begin
      # 不显示暂停标志
      self.pause = false
      # 取得对话框位置
      pos = get_fuki_pos(width, height)
      x = pos[0]
      y = pos[1]
      skin = FUKI::FUKI_SKIN_NAME != "" ? FUKI::FUKI_SKIN_NAME : $game_system.windowskin_name
      # 生成呼出对话框
      self.windowskin = RPG::Cache.windowskin(skin)
      self.x = x
      self.y = y
      self.height = height
      self.width = width
      self.contents.dispose
      self.contents = Bitmap.new(width - 32, height - 32)
      self.back_opacity = FUKI::FUKI_OPACITY
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.font.size = FUKI::MES_FONT_SIZE
      # 描绘尾部图标
      if $game_system.message_frame == 0
        # 取得位置
        tale_pos = get_tale_pos
        @tale = Sprite.new
        # 是否显示尾部图标 <- bbschat
        if FUKI::TAIL_SHOW == true
          case @message_position
            when 0  # 上
              @tale.bitmap = RPG::Cache.windowskin(skin + "-top")
              @tale.x = tale_pos[0]
              @tale.y = tale_pos[1]
              @tale.z = self.z + 1
            when 1  # 中
              @tale.dispose
              @tale = nil
            when 2  # 下
              @tale.bitmap = RPG::Cache.windowskin(skin + "-under")
              @tale.x = tale_pos[0]
              @tale.y = tale_pos[1]
              @tale.z = self.z + 1
          end
        end
      end
    rescue
      del_fukidasi
      reset_window(width, height)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 新功能:根据输入文章计算呼出对话框的位置
  #--------------------------------------------------------------------------
  def get_character_KKME
    if @kkme_name == "" or @kkme_name == nil
      return nil
    else
      @kkme_name.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      $mes_name = @kkme_name
      for ev in $game_map.events.values
        if ev.name == @kkme_name
          return ev
        end
      end
      for actor in $game_party.actors
        if actor.name == @kkme_name
          return $game_player
        end
      end
      return nil
    end
  end
   
  
  #--------------------------------------------------------------------------
  # ○ 计算呼出对话框的位置
  #--------------------------------------------------------------------------
  def get_fuki_pos(width, height)
   
    # 取得角色
    if $mes_id != nil
      @character = get_character($mes_id)
    else
      @character = get_character_KKME
    end
    if @character == nil
      # 角色不存在的情况下使用默认信息框
      del_fukidasi
      reset_window(width, height)
      return
    end
    # 处理坐标
    x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - (width / 2)
    # 为尽量显示在画面内而移动横坐标
    if x + width > 640
      x = 640 - width
    elsif x < 0
      x = 0
    end
    # 决定窗口位置
    case $game_system.message_position
      when 0  # 上
        y = (@character.real_y - $game_map.display_y + 64) * 32 / 128 - height - FUKI::CHARACTOR_HEIGHT + FUKI::POP_SHIFT_TOP
      when 1  # 中
        y = (480 - height) / 2
        x = (640 - width) / 2
      when 2  # 下
        y =  (@character.real_y - $game_map.display_y + 64) * 32 / 128 + 32 + FUKI::POP_SHIFT_UNDER
    end
    # 纪录文章显示位置
    @message_position = $game_system.message_position
    # 如果选择自动修正,则如果文章会显示到画面外则自动改变窗口的尺寸(高度)
    if FUKI::POS_FIX
      case @message_position
        when 0  # 上
          if y <= 0
            @message_position = 2
            y =  (@character.real_y - $game_map.display_y + 64) * 32 / 128 + 32 + FUKI::POP_SHIFT_UNDER
          end
        when 2  # 下
          if y + height >= 480
            @message_position = 0
            y = (@character.real_y - $game_map.display_y + 64) * 32 / 128 - height - FUKI::CHARACTOR_HEIGHT + FUKI::POP_SHIFT_TOP
          end
      end
    end
    return [x,y]
   
  end
  
  #--------------------------------------------------------------------------
  # ○ 计算尾部图标的位置
  #--------------------------------------------------------------------------
  def get_tale_pos
    case @message_position
      when 0  # 上
        # 处理坐标
        x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - 16
        # 画面边缘的话则移动位置
        if FUKI::CORNER_SHIFT
          if x == 0
            x = FUKI::SHIFT_PIXEL
          elsif x == 640 - 32
            x = 640 - 32 - FUKI::SHIFT_PIXEL
          end
        end
        y = self.y + self.height - 16
      when 1  # 中
        x = nil
        y = nil
      when 2  # 下
        # 处理坐标
        x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - 16
        # 画面边缘的话则移动位置
        if FUKI::CORNER_SHIFT
          if x == 0
            x = FUKI::SHIFT_PIXEL
          elsif @tale.x == 640 - 32
            x = 640 - 32 - FUKI::SHIFT_PIXEL
          end
        end
        y = self.y - 16
    end
    return [x,y]
  end
  #--------------------------------------------------------------------------
  # ○ 计算名字窗口的位置
  #--------------------------------------------------------------------------
  def get_name_pos
    case @face_pic_txt
      when 0  # 文字
        x = self.x + FUKI::NAME_SHIFT_X
        y = self.y - FUKI::NAME_FONT_SIZE - 16 + FUKI::NAME_SHIFT_Y
      when 1  # 图片
        if self.x >= @pic_width + 5
          # 默认头像显示在对话框左边
          x = self.x-@pic_width-5
        else
          # 对话框左边放不下时头像显示在右边
          x = self.x + self.width
        end
        y = self.y+self.height/2 - (@pic_height + 5)/2
      end
    return [x,y]
  end
  
  #--------------------------------------------------------------------------
  # ○ 设置角色名字窗口
  #--------------------------------------------------------------------------
  def set_namewindow
   
    # $mes_name为空时不显示角色名字窗口
    if $mes_name == nil or $mes_name == ""
      return
    else
      # 设定变量
      mes_name = $mes_name
      skin = FUKI::TX_SKIN_NAME != "" ? FUKI::TX_SKIN_NAME : $game_system.windowskin_name
      skin2 = FUKI::NAME_SKIN_NAME != "" ? FUKI::NAME_SKIN_NAME : $game_system.windowskin_name
      
      #判断名称是否有对应的图片"Graphics/heads/" +
      if $game_temp.namebmp[mes_name] == nil then
        sFile = "Graphics/heads/" + mes_name + ".png"
      else
        sFile = "Graphics/heads/" + $game_temp.namebmp[mes_name] + ".png"
      end
      
      #if FileTest.exist?(sFile) == true then
      begin
        
        @face_pic_txt = 1                       #名字窗口使用头像<- bbschat
        
        # 生成头像
        bmp = Bitmap.new(sFile)
        @pic_width = bmp.width
        @pic_height = bmp.height
        
        self.y >= @pic_height - 0
          # 默认头像显示在对话框上边
          name_y = self.y-@pic_height+155
        name_x = self.x+self.width/1 - (@pic_width + 0)/2
        
        # 生成角色头像窗口
        @name_win = Window_Base.new(name_x, name_y, @pic_width + 5, @pic_height + 5)
        @name_win.windowskin = RPG::Cache.windowskin(skin)
        @name_win.back_opacity =0     
        @name_win.z = self.z + 1
        
        @name_contents = Sprite.new
        @name_contents.x = name_x + 2
        @name_contents.y = name_y + 2
        @name_contents.bitmap = bmp
        @name_contents.z = @name_win.z + 2     #这个用了似乎效果不好<- bbschat
        
      rescue
        
        @face_pic_txt = 0                       #名字窗口使用文字<- bbschat
        # 生成名字
        name_width = mes_name.size / 2 * FUKI::NAME_FONT_SIZE
        name_height = FUKI::NAME_FONT_SIZE
        name_x = self.x + FUKI::NAME_SHIFT_X
        name_y = self.y - name_height - 16 + FUKI::NAME_SHIFT_Y
        # 生成角色名字窗口(只有边框)
        @name_win = Window_Base.new(name_x, name_y, name_width + 16, name_height + 16)
        @name_win.windowskin = RPG::Cache.windowskin(skin2)
        @name_win.back_opacity = FUKI::NAME_OPACITY
        @name_win.z = self.z + 1
        
        # 为了使空白比Windows类限定的更小使用双重结构
        @name_contents = Sprite.new
        @name_contents.x = name_x + 12
        @name_contents.y = name_y + 8
        @name_contents.bitmap = Bitmap.new(name_width, name_height)
        @name_contents.z = @name_win.z + 2
        
        # 设定文字色
        nil_color = Color.new(0,0,0,0)
        if FUKI::NAME_COLOR != nil_color
          @name_contents.bitmap.font.color = FUKI::NAME_COLOR
        else
          @name_contents.bitmap.font.color = normal_color
        end
        @name_contents.bitmap.font.size = FUKI::NAME_FONT_SIZE
        # 调整窗口尺寸
        rect = @name_contents.bitmap.text_size(mes_name)
        @name_win.width = rect.width + 32
        # 描画名字
        @name_contents.bitmap.draw_text(rect, mes_name)
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # ○ 释放呼出对话框和角色名字窗口
  #--------------------------------------------------------------------------
  def del_fukidasi
    if @tale != nil
      @tale.dispose
      @tale = nil
    end
    if @name_win != nil
      @name_win.dispose
      @name_win = nil
      @name_contents.dispose
      @name_contents = nil
    end
    self.opacity = 0
    self.x = 80
    self.width = 480
    self.height = 160
    self.contents.dispose
    self.contents = Bitmap.new(width - 32, height - 32)
    self.pause = true
  end
  
  #--------------------------------------------------------------------------
  # ○ 取得角色
  #     parameter : 参数
  #--------------------------------------------------------------------------
  def get_character(parameter)
    # 参数分歧
    case parameter
    when -1  # 玩家
      return $game_player
    when 0   # 该事件
      events = $game_map.events
      return events == nil ? nil : events[$active_event_id]
    else     # 特定事件
      events = $game_map.events
      return events == nil ? nil : events[parameter]
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 设定窗口位置和不透明度
  #--------------------------------------------------------------------------
  def reset_window(width = nil, height = nil)
    if $game_temp.in_battle
      self.y = 16
    else
      case $game_system.message_position
      when 0  # 上
        self.y = 16
      when 1  # 中
        if height != nil and width != nil
          self.y = (480 - height) / 2 - 32
          self.x = (640 - width) / 2
          self.width = width
          self.height = height
          self.contents.dispose
          self.contents = Bitmap.new(width - 32, height - 32)
        else
          self.y = 160
        end
      when 2  # 下
        self.y = 304
      end
    end
    if $game_system.message_frame == 0
      self.opacity = 255
    else
      self.opacity = 0
    end
    self.back_opacity = FUKI::MES_OPACITY
  end
  
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
    # 呼出模式下跟随事件移动
    if @tale != nil
      pos = get_fuki_pos(self.width, self.height)
      self.x = pos[0]
      self.y = pos[1]
      tale_pos = get_tale_pos
      @tale.x = tale_pos[0]
      @tale.y = tale_pos[1]
      
      if @name_win != nil
        name_pos = get_name_pos
        @name_win.x = name_pos[0]
        @name_win.y = name_pos[1]
        case @face_pic_txt
          when 0  # 文字
            @name_contents.x = @name_win.x + 12
            @name_contents.y = @name_win.y + 8
          when 1  # 图片
            @name_contents.x = @name_win.x + 2
            @name_contents.y = @name_win.y + 2
          end
      end
    end
   
    # 渐变的情况下
    if @fade_in
      self.contents_opacity += 24
      if @name_win != nil
        @name_win.opacity += 24
      end
      if @tale != nil
        @tale.opacity += 24
      end
      if @input_number_window != nil
        @input_number_window.contents_opacity += 24
      end
      if self.contents_opacity == 255
        @fade_in = false
      end
      return
    end
    # 显示信息中的情况下
    if @contents_drawing
      refresh_drawtext
      return
    end
    # 输入数值的情况下
    if @input_number_window != nil
      @input_number_window.update
      # 确定
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        $game_variables[$game_temp.num_input_variable_id] =
          @input_number_window.number
        $game_map.need_refresh = true
        # 释放输入数值窗口
        @input_number_window.dispose
        @input_number_window = nil
        terminate_message
      end
      return
    end
    # 显示信息结束的情况下
    if @contents_showing_end
      # 不是显示选择项且不是呼出对话模式则显示暂停标志
      if $game_temp.choice_max == 0 and @tale == nil
        self.pause = true
      else
        self.pause = false
      end
      # 取消
      if Input.trigger?(Input::B)
        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
          $game_system.se_play($data_system.cancel_se)
          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
          terminate_message
        end
      end
      # 确定
      if Input.trigger?(Input::C)
        if $game_temp.choice_max > 0
          $game_system.se_play($data_system.decision_se)
          $game_temp.choice_proc.call(self.index)
        end
        terminate_message
        # 释放呼出窗口
        del_fukidasi
      end
      return
    end
    # 在渐变以外的状态下有等待显示的信息与选择项的场合
    if @fade_out == false and $game_temp.message_text != nil
      @contents_showing = true
      $game_temp.message_window_showing = true
      reset_window
      refresh_create
      if @name_win != nil
        @name_win.opacity = 0
      end
      if @tale != nil
        @tale.opacity = 0
      end
      Graphics.frame_reset
      self.visible = true
      self.contents_opacity = 0
      if @input_number_window != nil
        @input_number_window.contents_opacity = 0
      end
      @fade_in = true
      return
    end
    # 没有可以显示的信息、但是窗口为可见的情况下
    if self.visible
      @fade_out = true
      self.opacity -= 48
      if @name_win != nil
        @name_win.opacity -= 48
      end
      if @tale != nil
        @tale.opacity -= 48
      end
      if self.opacity == 0
        self.visible = false
        @fade_out = false
        $game_temp.message_window_showing = false
        del_fukidasi
      end
      return
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    terminate_message
    $game_temp.message_window_showing = false
    if @input_number_window != nil
      @input_number_window.dispose
    end
    super
  end
  
  #--------------------------------------------------------------------------
  # ● 信息结束处理
  #--------------------------------------------------------------------------
  def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    self.contents.clear
    # 清除显示中标志
    @contents_showing = false
    @contents_showing_end = false
    unless @kkme_name == "" or @kkme_name == nil
      $mes_name = ""
      @kkme_name = ""
    end
    # 呼叫信息调用
    if $game_temp.message_proc != nil
      $game_temp.message_proc.call
    end
    # 清除文章、选择项、输入数值的相关变量
    $game_temp.message_text = nil
    $game_temp.message_proc = nil
    $game_temp.choice_start = 99
    $game_temp.choice_max = 0
    $game_temp.choice_cancel_type = 0
    $game_temp.choice_proc = nil
    $game_temp.num_input_start = 99
    $game_temp.num_input_variable_id = 0
    $game_temp.num_input_digits_max = 0
    # 释放金钱窗口
    if @gold_window != nil
      @gold_window.dispose
      @gold_window = nil
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 刷新光标矩形
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(8, n * 32, @cursor_width, 32)
    else
      self.cursor_rect.empty
    end
  end
  #--------------------------------------------------------------------------
  # ● 取得普通文字色
  #--------------------------------------------------------------------------
  def normal_color
    nil_color = Color.new(0,0,0,0)
    if FUKI::FUKI_COLOR != nil_color
      color = FUKI::FUKI_COLOR
    else
      color = super
    end
    return color
  end
end

#==============================================================================
# ■ Window_InputNumber
#==============================================================================
class Window_InputNumber < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     digits_max : 位数
  #--------------------------------------------------------------------------
  def initialize(digits_max)
    @digits_max = digits_max
    @number = 0
    # 从数字的幅度计算(假定与 0~9 等幅)光标的幅度
    dummy_bitmap = Bitmap.new(32, 32)
    dummy_bitmap.font.size = FUKI::MES_FONT_SIZE
    @cursor_width = dummy_bitmap.text_size("0").width + 8
    dummy_bitmap.dispose
    super(0, 0, @cursor_width * @digits_max + 32, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = FUKI::MES_FONT_SIZE
    self.z += 9999
    self.opacity = 0
    @index = 0
    refresh
    update_cursor_rect
  end
end
#===========================================================================
# Game_Map,把events变量公开
#===========================================================================
class Game_Map
  attr_reader   :events
end
#===========================================================================
# 便于返回姓名
#===========================================================================
class Game_Event < Game_Character
  def name
    return @event.name
  end
  def name=(na)
    @event.name = na
  end
end
#===========================================================================
# 增加变量$active_event_id,用于在“本事件”显示对话
#===========================================================================
class Interpreter
#--------------------------------------------------------------------------
# ● 设置事件
#     event_id : 事件 ID
#--------------------------------------------------------------------------
alias setup_fuki setup
def setup(list, event_id)
   setup_fuki(list, event_id)
   # 如果不是战斗中
   if !($game_temp.in_battle)
     # 记录事件 ID
     $active_event_id = event_id
   end
end
end
dsu_plus_rewardpost_czw
作者: sun1007    时间: 2011-8-14 17:42
本帖最后由 sun1007 于 2011-8-14 17:43 编辑

先打开“上蜀山”开关,然后打开独立开关A
作者: orzfly    时间: 2011-8-14 22:52
本帖最后由 orzfly 于 2011-8-14 22:56 编辑

事件第二页只要一个独立开关A=on就够了。

另外可以试试把独立开关=ON放到对话前面。
像这种自动执行的事件我一般都是最开始把它禁用掉,然后再写事件内容。


orzfly于2011-8-14 22:54补充以下内容:
哦对了,楼主下次贴脚本请用代码标签~在工具栏上有~
就像这样

  1. #==============================================================================
  2. #
  3. #    呼出对话框 ver. 1.31 By パラ犬(日)
  4. #  来自 http://rpg.para.s3p.net/
  5. #
  6. #  汉化修改 66RPG bbschat(2006.1.5)
  7. #    来自 http://www.66RPG.com/
  8. #
  9. #    脚本更新:by KKME◎66RPG.com,2007年2月
  10. #
  11. #==============================================================================
  12. #    ●准备工作-窗口Skin
  13. #
  14. #    首先,确认自己使用的对话框窗口Skin,(数据库-系统-窗口外观图形)
  15. #    然后根据该窗口Skin制作对话框尾部使用的两个箭头图形
  16. #    尾部箭头图形命名方式:“窗口skin名-top”,“窗口skin名-under”
  17. #    将该图形文件存放在“Graphics/Windowskins”文件夹下。
  18. #
  19. #    本演示游戏内置2套窗口和箭头图形,
  20. #    一套是游戏默认的“001-Blue01”,一套是定制的“fk”
  21. #    玩家可以根据自己的需要参照样本定制自己的呼出对话框窗口Skin。
  22. #
  23. #  ★●使用方法 edit by KKME◎66RPG.com
  24. #
  25. #    方法一:传统方法:输入脚本:chat(事件编号, "角色姓名")。这样就可以正常显示。
  26. #            这种方法虽然使用麻烦,但是有时候也会用到(比如不显示姓名的对话)。这种方法比方法二优先度高。
  27. #            当不需要这种对话功能时候,直接输入一个脚本:chat,就能全部清空。
  28. #
  29. #    方法二:新方法:直接输入对话,会自动读取人名。
  30. #            举例:首先将事件NPC命名,比如命名为“王小二”
  31. #            则输入对话:
  32. #               王小二:
  33. #               今天天气真好啊。
  34. #    这样就能直接将对话显示在这个NPC头上。如果姓名是我方队员则可自动显示在主角头上。
  35. #    这种方法对于我方队员的情况支持 \n[1]这样的效果。如
  36. #               \n[1]:
  37. #               明天听说要下雨。
  38. #    也能正确显示。对于一般的游戏制作这样已经足够了,如果还有特殊需求——小生是
  39. #    知道有可能需要什么特殊需求的:),其实也设置了接口可以满足,不过需要你自己研究一下。
  40. #            
  41. #
  42. #  ★●角色名字窗口使用角色图片的方法(汉化特别追加功能,原脚本只能使用文字)
  43. #   
  44. #    如果能在对应文件夹中找到文件名和角色名字相同的图片,   
  45. #    则角色名字窗口显示角色头像图片,角色图片最好能包括角色的名字。
  46. #    默认头像图片保存目录为“Graphics/Heads/”,玩家可自行修改。
  47. #
  48. #    如果不想使用角色名字直接作为头像文件名。可以使用下面在 Game_Temp 类里增加的namebmp属性。
  49. #    重新设定角色名字与文件名的对应关系。
  50. #
  51. #  KKME注:这里修改了原有算法,可以支持中文名。小生以为不再需要Game_Temp类了。
  52. #          这里小生知道也会有特殊需求,也是设置好接口了的。如果需要再自己研究或问我吧。不然说多了容易误导。  
  53. #
  54. #    ●信息表示速度的变更方法
  55. #
  56. #    在事件命令行使用[脚本]将数值代入[$mes_speed]
  57. #    速度为 0 即瞬间显示全部信息,数字越大,信息表示速度越慢。
  58. #   (举例:$mes_speed=1)
  59. #
  60. #    ●其他设置
  61. #
  62. #    请参照下面的注释
  63. #==============================================================================
  64. module FUKI
  65.   # 头像图片保存目录的设定
  66.   HEAD_PIC_DIR = "Graphics/Heads/"
  67.   # 是否显示尾部图标
  68.   TAIL_SHOW = true
  69.   
  70.   # Skin的设定
  71.   # 使用数据库默认窗口Skin情况下这里使用[""]
  72.   FUKI_SKIN_NAME = "001-Blue01"   # 呼出对话框用Skin
  73.   NAME_SKIN_NAME = "001-Blue01"   # 角色名字窗口用Skin
  74.   TX_SKIN_NAME = "touxiang"
  75.   
  76.   # 字体大小
  77.   MES_FONT_SIZE = 22    # 呼出对话框
  78.   NAME_FONT_SIZE = 14   # 角色名字窗口
  79.   
  80.   # 字体颜色
  81.   #(设定为 Color.new(0, 0, 0, 0) 表示使用普通文字色)
  82.   FUKI_COLOR = Color.new(255, 255, 255, 255)  # 呼出对话框
  83.   NAME_COLOR = Color.new(255, 255, 255, 255)  # 角色名字窗口
  84.   
  85.   # 窗口透明度
  86.   # 如修改窗口透明度请同时修改尾部箭头图形内部的透明度
  87.   FUKI_OPACITY = 255    # 呼出对话框
  88.   MES_OPACITY = 255     # 默认信息窗口
  89.   NAME_OPACITY = 255    # 角色名字窗口
  90.   
  91.   # 角色名字窗口的相对位置
  92.   NAME_SHIFT_X = 0      # 横坐标
  93.   NAME_SHIFT_Y = 16     # 纵坐标
  94.   
  95.   # 窗口表示时是否根据画面大小自动检查窗口出现的位置,
  96.   # 自动改变位置( true / false )
  97.   # 设置成 true 在某些变态情况下可能出现箭头图标颠倒的问题 <- bbschat <= KKME
  98.   POS_FIX = false
  99.   # 在画面最边缘表示时的稍微挪动
  100.   # 使用圆形Skin的角和方框的角重合的情况下为 true
  101.   CORNER_SHIFT = false
  102.   SHIFT_PIXEL = 4   # true 时挪动的象素
  103.   
  104.   # 角色高度尺寸
  105.   CHARACTOR_HEIGHT = 48
  106.   # 呼出对话框的相对位置(纵坐标)
  107.   POP_SHIFT_TOP = 0         # 表示位置为上的时候
  108.   POP_SHIFT_UNDER = 0       # 表示位置为下的时候
  109.   
  110.   # 信息的表示速度(数字越小速度越快,0为瞬间表示)
  111.   # 游戏中 可随时用数字代入 $mes_speed 来改变消息表示速度。
  112.   MES_SPEED = 1

  113. end

  114. #==============================================================================
  115. # 初始化两个变量,不要动(by KKME◎66RPG.com)
  116. #==============================================================================
  117. $mes_name = ""
  118. $mes_id = nil

  119. #==============================================================================
  120. # 方便用户同时设置2个常用参数而使用的函数
  121. #==============================================================================
  122. def chat(id = nil,name = "")
  123.   $mes_name = name
  124.   $mes_id = id
  125.   
  126. end
  127. #==============================================================================
  128. # □ Game_Temp
  129. #==============================================================================
  130. class Game_Temp
  131.   attr_accessor  :namebmp              #保存头像图片的Hash表
  132.   alias initialize_fuki initialize
  133.   def initialize
  134.     initialize_fuki
  135.     # 如果不想使用角色名字直接作为头像文件名
  136.     # 可在这里重新设定角色名字与文件名的对应关系
  137.     @namebmp ={"玩家"=>"维斯特"}
  138.   end
  139. end
  140. #==============================================================================
  141. # □ Window_Message
  142. #==============================================================================
  143. class Window_Message < Window_Selectable
  144.   #--------------------------------------------------------------------------
  145.   # ● 初始化状态
  146.   #--------------------------------------------------------------------------
  147.   def initialize
  148.     super(80, 304, 480, 160)
  149.     self.contents = Bitmap.new(width - 32, height - 32)
  150.     self.visible = false
  151.     self.z = 9998
  152.     @fade_in = false
  153.     @fade_out = false
  154.     @contents_showing = false
  155.     @cursor_width = 0
  156.     @kkme_name = ""
  157.     self.active = false
  158.     self.index = -1
  159.     @w = 0
  160.     @h = 0
  161.     @wait = 0
  162.     @dx = 0
  163.     @dy = 0
  164.     $mes_speed = FUKI::MES_SPEED
  165.   end
  166.   
  167.   #--------------------------------------------------------------------------
  168.   # ○ 决定窗口尺寸并生成窗口
  169.   #--------------------------------------------------------------------------
  170.   def refresh_create
  171.     @kkme_name = ""
  172.     begin
  173.       @kkme_name = $game_temp.message_text.split(":")[0] if $game_temp.message_text.split(":")[1] != nil
  174.       $game_temp.message_text = $game_temp.message_text[@kkme_name.size + 4,$game_temp.message_text.size] if @kkme_name != ""
  175.     rescue
  176.     end
  177.     self.contents.clear
  178.     self.contents.font.color = normal_color
  179.     self.contents.font.size = FUKI::MES_FONT_SIZE
  180.     # 取得窗口尺寸
  181.     get_windowsize
  182.     w = @w + 32 + 8
  183.     h = @h * (self.contents.font.size + 10) + 26
  184.     # 生成呼出窗口
  185.     set_fukidasi(self.x, self.y, w, h)
  186.     # 生成角色名字窗口
  187.     set_namewindow
  188.     # 初始化信息表示使用的变量
  189.     @dx = @dy = 0
  190.     @cursor_width = 0
  191.     @contents_drawing = true
  192.     # 瞬间表示的情况下
  193.     if $mes_speed == 0
  194.       # 循环信息描绘处理
  195.       while $game_temp.message_text != ""
  196.         draw_massage
  197.       end
  198.       draw_opt_text
  199.       @contents_showing_end = true
  200.       @contents_drawing = false
  201.     else
  202.       # 一个一个描绘文字
  203.       refresh_drawtext
  204.     end
  205.   end
  206.   
  207.   #--------------------------------------------------------------------------
  208.   # ○ 一个一个描绘文字
  209.   #--------------------------------------------------------------------------
  210.   def refresh_drawtext
  211.     if $game_temp.message_text != nil
  212.       if @wait > 0
  213.         @wait -= 1
  214.       elsif @wait == 0
  215.         # 描绘处理
  216.         draw_massage
  217.         @wait = $mes_speed
  218.       end
  219.     end
  220.     # 描绘结束
  221.     if $game_temp.message_text == ""
  222.       draw_opt_text
  223.       @contents_showing_end = true
  224.       @contents_drawing = false
  225.     end
  226.   end
  227.   
  228.   #--------------------------------------------------------------------------
  229.   # ○ 取得窗口尺寸
  230.   #--------------------------------------------------------------------------
  231.   def get_windowsize
  232.     x = y = 0
  233.     @h = @w = 0
  234.     @cursor_width = 0
  235.     # 有选择项的话,处理字的缩进
  236.     if $game_temp.choice_start == 0
  237.       x = 16
  238.     end
  239.     # 有等待显示的文字的情况下
  240.     if $game_temp.message_text != nil
  241.     text = $game_temp.message_text.clone
  242.       # 限制文字处理
  243.       begin
  244.         last_text = text.clone
  245.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  246.       end until text == last_text
  247.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  248.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  249.       end
  250.       # 为了方便、将 "[url=]\\\\[/url]" 变换为 "\000"
  251.       text.gsub!(/\\\\/) { "\000" }
  252.       # "\\C" 变为 "\001" 、"\\G" 变为 "\002"
  253.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001" }
  254.       text.gsub!(/\\[Gg]/) { "\002" }
  255.       # c 获取 1 个字 (如果不能取得文字就循环)
  256.       while ((c = text.slice!(/./m)) != nil)
  257.         # \\ 的情况下
  258.         if c == "\000"
  259.           # 还原为本来的文字
  260.           c = "\\"
  261.         end
  262.         # \C[n] 或者 \G 的情况下
  263.         if c == "\001" or c == "\002"
  264.           # 下面的文字
  265.           next
  266.         end
  267.         # 另起一行文字的情况下
  268.         if c == "\n"
  269.           # y 累加 1
  270.           y += 1
  271.           # 取得纵横尺寸
  272.           @h = y
  273.           @w = x > @w ? x : @w
  274.           if y >= $game_temp.choice_start
  275.             @w = x + 8 > @w ? x + 8 : @w
  276.           end
  277.           x = 0
  278.           # 移动到选择项的下一行
  279.           if y >= $game_temp.choice_start
  280.             x = 8
  281.           end
  282.           # 下面的文字
  283.           next
  284.         end
  285.         # x 为要描绘文字的宽度加法运算
  286.         x += self.contents.text_size(c).width
  287.       end
  288.     end
  289.     # 输入数值的情况
  290.     if $game_temp.num_input_variable_id > 0
  291.       digits_max = $game_temp.num_input_digits_max
  292.       number = $game_variables[$game_temp.num_input_variable_id]
  293.       @h += 1
  294.       x = digits_max * self.contents.font.size + 16
  295.       @w = x > @w ? x : @w
  296.     end
  297.   end
  298.   
  299.   #--------------------------------------------------------------------------
  300.   # ○ 描绘信息处理
  301.   #--------------------------------------------------------------------------
  302.   def draw_massage
  303.     # 有等待显示的文字的情况下
  304.     if $game_temp.message_text != nil
  305.       text = $game_temp.message_text
  306.       # 限制文字处理
  307.       begin
  308.         last_text = text.clone
  309.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  310.       end until text == last_text
  311.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  312.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  313.       end
  314.       # 为了方便、将 "[url=]\\\\[/url]" 变换为 "\000"
  315.       text.gsub!(/\\\\/) { "\000" }
  316.       # "\\C" 变为 "\001"、"\\G" 变为 "\002"
  317.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  318.       text.gsub!(/\\[Gg]/) { "\002" }
  319.       # c 获取 1 个字
  320.       if ((c = text.slice!(/./m)) != nil)
  321.         # 选择项的情况
  322.         if @dy >= $game_temp.choice_start
  323.           # 处理字的缩进
  324.           @dx = 8
  325.           # 描绘文字
  326.           self.contents.draw_text(4 + @dx, 32 * @dy, 40, 32, c)
  327.           # x 为要描绘文字宽度的加法运算
  328.           @dx += self.contents.text_size(c).width
  329.           # 循环
  330.           while ((c = text.slice!(/./m)) != "\n")
  331.             # 描绘文字
  332.             self.contents.draw_text(4 + @dx, 32 * @dy, 40, 32, c)
  333.             # x 为要描绘文字宽度的加法运算
  334.             @dx += self.contents.text_size(c).width
  335.           end
  336.           if c == "\n"
  337.             # 更新光标宽度
  338.             @cursor_width = [@cursor_width, @dx].max
  339.             # dy 累加 1
  340.             @dy += 1
  341.             @dx = 0
  342.           end
  343.           return
  344.         end
  345.         # \\ 的情况下
  346.         if c == "\000"
  347.           # 还原为本来的文字
  348.           c = "\\"
  349.         end
  350.         #\C[n] 的情况下
  351.         if c == "\001"
  352.           # 更改文字色
  353.           text.sub!(/\[([0-9]+)\]/, "")
  354.           color = $1.to_i
  355.           if color >= 0 and color <= 7
  356.             self.contents.font.color = text_color(color)
  357.           end
  358.         end
  359.         # \G 的情况下
  360.         if c == "\002"
  361.           # 生成金钱窗口
  362.           if @gold_window == nil
  363.             @gold_window = Window_Gold.new
  364.             @gold_window.x = 560 - @gold_window.width
  365.             if $game_temp.in_battle
  366.               @gold_window.y = 192
  367.             else
  368.               @gold_window.y = self.y >= 128 ? 32 : 384
  369.             end
  370.             @gold_window.opacity = self.opacity
  371.             @gold_window.back_opacity = self.back_opacity
  372.           end
  373.         end
  374.         # 另起一行文字的情况下
  375.         if c == "\n"
  376.           # dy 累加 1
  377.           @dy += 1
  378.           @dx = 0
  379.         end
  380.         # 描绘文字
  381.         self.contents.font.size = FUKI::MES_FONT_SIZE
  382.         font_size = self.contents.font.size
  383.          if c == "\001" or c == "\002" or c == "\003" or c == "\n"
  384.         c = ""
  385.       else
  386.         self.contents.draw_text(4+@dx, (font_size+10)*@dy, font_size, font_size, c)
  387.       end
  388.         # dx 为要描绘文字的宽度加法运算
  389.         @dx += self.contents.text_size(c).width
  390.       end
  391.     end
  392.   end
  393.   
  394.   #--------------------------------------------------------------------------
  395.   # ○ 选择项和输入数值的情况下
  396.   #--------------------------------------------------------------------------
  397.   def draw_opt_text
  398.     # 选择项的情况下
  399.     if $game_temp.choice_max > 0
  400.       @item_max = $game_temp.choice_max
  401.       self.active = true
  402.       self.index = 0
  403.     end
  404.     # 输入数值的情况下
  405.     if $game_temp.num_input_variable_id > 0
  406.       digits_max = $game_temp.num_input_digits_max
  407.       number = $game_variables[$game_temp.num_input_variable_id]
  408.       @input_number_window = Window_InputNumber.new(digits_max)
  409.       @input_number_window.number = number
  410.       @input_number_window.x = self.x + 8
  411.       @input_number_window.y = self.y + $game_temp.num_input_start * 32
  412.     end
  413.   end
  414.   
  415.   #--------------------------------------------------------------------------
  416.   # ○ 设置呼出对话框
  417.   #--------------------------------------------------------------------------
  418.   def set_fukidasi(x, y, width, height)
  419.     begin
  420.       # 不显示暂停标志
  421.       self.pause = false
  422.       # 取得对话框位置
  423.       pos = get_fuki_pos(width, height)
  424.       x = pos[0]
  425.       y = pos[1]
  426.       skin = FUKI::FUKI_SKIN_NAME != "" ? FUKI::FUKI_SKIN_NAME : $game_system.windowskin_name
  427.       # 生成呼出对话框
  428.       self.windowskin = RPG::Cache.windowskin(skin)
  429.       self.x = x
  430.       self.y = y
  431.       self.height = height
  432.       self.width = width
  433.       self.contents.dispose
  434.       self.contents = Bitmap.new(width - 32, height - 32)
  435.       self.back_opacity = FUKI::FUKI_OPACITY
  436.       self.contents.clear
  437.       self.contents.font.color = normal_color
  438.       self.contents.font.size = FUKI::MES_FONT_SIZE
  439.       # 描绘尾部图标
  440.       if $game_system.message_frame == 0
  441.         # 取得位置
  442.         tale_pos = get_tale_pos
  443.         @tale = Sprite.new
  444.         # 是否显示尾部图标 <- bbschat
  445.         if FUKI::TAIL_SHOW == true
  446.           case @message_position
  447.             when 0  # 上
  448.               @tale.bitmap = RPG::Cache.windowskin(skin + "-top")
  449.               @tale.x = tale_pos[0]
  450.               @tale.y = tale_pos[1]
  451.               @tale.z = self.z + 1
  452.             when 1  # 中
  453.               @tale.dispose
  454.               @tale = nil
  455.             when 2  # 下
  456.               @tale.bitmap = RPG::Cache.windowskin(skin + "-under")
  457.               @tale.x = tale_pos[0]
  458.               @tale.y = tale_pos[1]
  459.               @tale.z = self.z + 1
  460.           end
  461.         end
  462.       end
  463.     rescue
  464.       del_fukidasi
  465.       reset_window(width, height)
  466.     end
  467.   end
  468.   #--------------------------------------------------------------------------
  469.   # ○ 新功能:根据输入文章计算呼出对话框的位置
  470.   #--------------------------------------------------------------------------
  471.   def get_character_KKME
  472.     if @kkme_name == "" or @kkme_name == nil
  473.       return nil
  474.     else
  475.       @kkme_name.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  476.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  477.       end
  478.       $mes_name = @kkme_name
  479.       for ev in $game_map.events.values
  480.         if ev.name == @kkme_name
  481.           return ev
  482.         end
  483.       end
  484.       for actor in $game_party.actors
  485.         if actor.name == @kkme_name
  486.           return $game_player
  487.         end
  488.       end
  489.       return nil
  490.     end
  491.   end
  492.    
  493.   
  494.   #--------------------------------------------------------------------------
  495.   # ○ 计算呼出对话框的位置
  496.   #--------------------------------------------------------------------------
  497.   def get_fuki_pos(width, height)
  498.    
  499.     # 取得角色
  500.     if $mes_id != nil
  501.       @character = get_character($mes_id)
  502.     else
  503.       @character = get_character_KKME
  504.     end
  505.     if @character == nil
  506.       # 角色不存在的情况下使用默认信息框
  507.       del_fukidasi
  508.       reset_window(width, height)
  509.       return
  510.     end
  511.     # 处理坐标
  512.     x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - (width / 2)
  513.     # 为尽量显示在画面内而移动横坐标
  514.     if x + width > 640
  515.       x = 640 - width
  516.     elsif x < 0
  517.       x = 0
  518.     end
  519.     # 决定窗口位置
  520.     case $game_system.message_position
  521.       when 0  # 上
  522.         y = (@character.real_y - $game_map.display_y + 64) * 32 / 128 - height - FUKI::CHARACTOR_HEIGHT + FUKI:OP_SHIFT_TOP
  523.       when 1  # 中
  524.         y = (480 - height) / 2
  525.         x = (640 - width) / 2
  526.       when 2  # 下
  527.         y =  (@character.real_y - $game_map.display_y + 64) * 32 / 128 + 32 + FUKI:OP_SHIFT_UNDER
  528.     end
  529.     # 纪录文章显示位置
  530.     @message_position = $game_system.message_position
  531.     # 如果选择自动修正,则如果文章会显示到画面外则自动改变窗口的尺寸(高度)
  532.     if FUKI:OS_FIX
  533.       case @message_position
  534.         when 0  # 上
  535.           if y <= 0
  536.             @message_position = 2
  537.             y =  (@character.real_y - $game_map.display_y + 64) * 32 / 128 + 32 + FUKI::POP_SHIFT_UNDER
  538.           end
  539.         when 2  # 下
  540.           if y + height >= 480
  541.             @message_position = 0
  542.             y = (@character.real_y - $game_map.display_y + 64) * 32 / 128 - height - FUKI::CHARACTOR_HEIGHT + FUKI::POP_SHIFT_TOP
  543.           end
  544.       end
  545.     end
  546.     return [x,y]
  547.    
  548.   end
  549.   
  550.   #--------------------------------------------------------------------------
  551.   # ○ 计算尾部图标的位置
  552.   #--------------------------------------------------------------------------
  553.   def get_tale_pos
  554.     case @message_position
  555.       when 0  # 上
  556.         # 处理坐标
  557.         x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - 16
  558.         # 画面边缘的话则移动位置
  559.         if FUKI::CORNER_SHIFT
  560.           if x == 0
  561.             x = FUKI::SHIFT_PIXEL
  562.           elsif x == 640 - 32
  563.             x = 640 - 32 - FUKI::SHIFT_PIXEL
  564.           end
  565.         end
  566.         y = self.y + self.height - 16
  567.       when 1  # 中
  568.         x = nil
  569.         y = nil
  570.       when 2  # 下
  571.         # 处理坐标
  572.         x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - 16
  573.         # 画面边缘的话则移动位置
  574.         if FUKI::CORNER_SHIFT
  575.           if x == 0
  576.             x = FUKI::SHIFT_PIXEL
  577.           elsif @tale.x == 640 - 32
  578.             x = 640 - 32 - FUKI::SHIFT_PIXEL
  579.           end
  580.         end
  581.         y = self.y - 16
  582.     end
  583.     return [x,y]
  584.   end
  585.   #--------------------------------------------------------------------------
  586.   # ○ 计算名字窗口的位置
  587.   #--------------------------------------------------------------------------
  588.   def get_name_pos
  589.     case @face_pic_txt
  590.       when 0  # 文字
  591.         x = self.x + FUKI::NAME_SHIFT_X
  592.         y = self.y - FUKI::NAME_FONT_SIZE - 16 + FUKI::NAME_SHIFT_Y
  593.       when 1  # 图片
  594.         if self.x >= @pic_width + 5
  595.           # 默认头像显示在对话框左边
  596.           x = self.x-@pic_width-5
  597.         else
  598.           # 对话框左边放不下时头像显示在右边
  599.           x = self.x + self.width
  600.         end
  601.         y = self.y+self.height/2 - (@pic_height + 5)/2
  602.       end
  603.     return [x,y]
  604.   end
  605.   
  606.   #--------------------------------------------------------------------------
  607.   # ○ 设置角色名字窗口
  608.   #--------------------------------------------------------------------------
  609.   def set_namewindow
  610.    
  611.     # $mes_name为空时不显示角色名字窗口
  612.     if $mes_name == nil or $mes_name == ""
  613.       return
  614.     else
  615.       # 设定变量
  616.       mes_name = $mes_name
  617.       skin = FUKI::TX_SKIN_NAME != "" ? FUKI::TX_SKIN_NAME : $game_system.windowskin_name
  618.       skin2 = FUKI::NAME_SKIN_NAME != "" ? FUKI::NAME_SKIN_NAME : $game_system.windowskin_name
  619.       
  620.       #判断名称是否有对应的图片"Graphics/heads/" +
  621.       if $game_temp.namebmp[mes_name] == nil then
  622.         sFile = "Graphics/heads/" + mes_name + ".png"
  623.       else
  624.         sFile = "Graphics/heads/" + $game_temp.namebmp[mes_name] + ".png"
  625.       end
  626.       
  627.       #if FileTest.exist?(sFile) == true then
  628.       begin
  629.         
  630.         @face_pic_txt = 1                       #名字窗口使用头像<- bbschat
  631.         
  632.         # 生成头像
  633.         bmp = Bitmap.new(sFile)
  634.         @pic_width = bmp.width
  635.         @pic_height = bmp.height
  636.         
  637.         self.y >= @pic_height - 0
  638.           # 默认头像显示在对话框上边
  639.           name_y = self.y-@pic_height+155
  640.         name_x = self.x+self.width/1 - (@pic_width + 0)/2
  641.         
  642.         # 生成角色头像窗口
  643.         @name_win = Window_Base.new(name_x, name_y, @pic_width + 5, @pic_height + 5)
  644.         @name_win.windowskin = RPG::Cache.windowskin(skin)
  645.         @name_win.back_opacity =0     
  646.         @name_win.z = self.z + 1
  647.         
  648.         @name_contents = Sprite.new
  649.         @name_contents.x = name_x + 2
  650.         @name_contents.y = name_y + 2
  651.         @name_contents.bitmap = bmp
  652.         @name_contents.z = @name_win.z + 2     #这个用了似乎效果不好<- bbschat
  653.         
  654.       rescue
  655.         
  656.         @face_pic_txt = 0                       #名字窗口使用文字<- bbschat
  657.         # 生成名字
  658.         name_width = mes_name.size / 2 * FUKI::NAME_FONT_SIZE
  659.         name_height = FUKI::NAME_FONT_SIZE
  660.         name_x = self.x + FUKI::NAME_SHIFT_X
  661.         name_y = self.y - name_height - 16 + FUKI::NAME_SHIFT_Y
  662.         # 生成角色名字窗口(只有边框)
  663.         @name_win = Window_Base.new(name_x, name_y, name_width + 16, name_height + 16)
  664.         @name_win.windowskin = RPG::Cache.windowskin(skin2)
  665.         @name_win.back_opacity = FUKI::NAME_OPACITY
  666.         @name_win.z = self.z + 1
  667.         
  668.         # 为了使空白比Windows类限定的更小使用双重结构
  669.         @name_contents = Sprite.new
  670.         @name_contents.x = name_x + 12
  671.         @name_contents.y = name_y + 8
  672.         @name_contents.bitmap = Bitmap.new(name_width, name_height)
  673.         @name_contents.z = @name_win.z + 2
  674.         
  675.         # 设定文字色
  676.         nil_color = Color.new(0,0,0,0)
  677.         if FUKI::NAME_COLOR != nil_color
  678.           @name_contents.bitmap.font.color = FUKI::NAME_COLOR
  679.         else
  680.           @name_contents.bitmap.font.color = normal_color
  681.         end
  682.         @name_contents.bitmap.font.size = FUKI::NAME_FONT_SIZE
  683.         # 调整窗口尺寸
  684.         rect = @name_contents.bitmap.text_size(mes_name)
  685.         @name_win.width = rect.width + 32
  686.         # 描画名字
  687.         @name_contents.bitmap.draw_text(rect, mes_name)
  688.       end
  689.     end
  690.   end
  691.   
  692.   #--------------------------------------------------------------------------
  693.   # ○ 释放呼出对话框和角色名字窗口
  694.   #--------------------------------------------------------------------------
  695.   def del_fukidasi
  696.     if @tale != nil
  697.       @tale.dispose
  698.       @tale = nil
  699.     end
  700.     if @name_win != nil
  701.       @name_win.dispose
  702.       @name_win = nil
  703.       @name_contents.dispose
  704.       @name_contents = nil
  705.     end
  706.     self.opacity = 0
  707.     self.x = 80
  708.     self.width = 480
  709.     self.height = 160
  710.     self.contents.dispose
  711.     self.contents = Bitmap.new(width - 32, height - 32)
  712.     self.pause = true
  713.   end
  714.   
  715.   #--------------------------------------------------------------------------
  716.   # ○ 取得角色
  717.   #     parameter : 参数
  718.   #--------------------------------------------------------------------------
  719.   def get_character(parameter)
  720.     # 参数分歧
  721.     case parameter
  722.     when -1  # 玩家
  723.       return $game_player
  724.     when 0   # 该事件
  725.       events = $game_map.events
  726.       return events == nil ? nil : events[$active_event_id]
  727.     else     # 特定事件
  728.       events = $game_map.events
  729.       return events == nil ? nil : events[parameter]
  730.     end
  731.   end
  732.   
  733.   #--------------------------------------------------------------------------
  734.   # ● 设定窗口位置和不透明度
  735.   #--------------------------------------------------------------------------
  736.   def reset_window(width = nil, height = nil)
  737.     if $game_temp.in_battle
  738.       self.y = 16
  739.     else
  740.       case $game_system.message_position
  741.       when 0  # 上
  742.         self.y = 16
  743.       when 1  # 中
  744.         if height != nil and width != nil
  745.           self.y = (480 - height) / 2 - 32
  746.           self.x = (640 - width) / 2
  747.           self.width = width
  748.           self.height = height
  749.           self.contents.dispose
  750.           self.contents = Bitmap.new(width - 32, height - 32)
  751.         else
  752.           self.y = 160
  753.         end
  754.       when 2  # 下
  755.         self.y = 304
  756.       end
  757.     end
  758.     if $game_system.message_frame == 0
  759.       self.opacity = 255
  760.     else
  761.       self.opacity = 0
  762.     end
  763.     self.back_opacity = FUKI::MES_OPACITY
  764.   end
  765.   
  766.   #--------------------------------------------------------------------------
  767.   # ● 刷新画面
  768.   #--------------------------------------------------------------------------
  769.   def update
  770.     super
  771.     # 呼出模式下跟随事件移动
  772.     if @tale != nil
  773.       pos = get_fuki_pos(self.width, self.height)
  774.       self.x = pos[0]
  775.       self.y = pos[1]
  776.       tale_pos = get_tale_pos
  777.       @tale.x = tale_pos[0]
  778.       @tale.y = tale_pos[1]
  779.       
  780.       if @name_win != nil
  781.         name_pos = get_name_pos
  782.         @name_win.x = name_pos[0]
  783.         @name_win.y = name_pos[1]
  784.         case @face_pic_txt
  785.           when 0  # 文字
  786.             @name_contents.x = @name_win.x + 12
  787.             @name_contents.y = @name_win.y + 8
  788.           when 1  # 图片
  789.             @name_contents.x = @name_win.x + 2
  790.             @name_contents.y = @name_win.y + 2
  791.           end
  792.       end
  793.     end
  794.    
  795.     # 渐变的情况下
  796.     if @fade_in
  797.       self.contents_opacity += 24
  798.       if @name_win != nil
  799.         @name_win.opacity += 24
  800.       end
  801.       if @tale != nil
  802.         @tale.opacity += 24
  803.       end
  804.       if @input_number_window != nil
  805.         @input_number_window.contents_opacity += 24
  806.       end
  807.       if self.contents_opacity == 255
  808.         @fade_in = false
  809.       end
  810.       return
  811.     end
  812.     # 显示信息中的情况下
  813.     if @contents_drawing
  814.       refresh_drawtext
  815.       return
  816.     end
  817.     # 输入数值的情况下
  818.     if @input_number_window != nil
  819.       @input_number_window.update
  820.       # 确定
  821.       if Input.trigger?(Input::C)
  822.         $game_system.se_play($data_system.decision_se)
  823.         $game_variables[$game_temp.num_input_variable_id] =
  824.           @input_number_window.number
  825.         $game_map.need_refresh = true
  826.         # 释放输入数值窗口
  827.         @input_number_window.dispose
  828.         @input_number_window = nil
  829.         terminate_message
  830.       end
  831.       return
  832.     end
  833.     # 显示信息结束的情况下
  834.     if @contents_showing_end
  835.       # 不是显示选择项且不是呼出对话模式则显示暂停标志
  836.       if $game_temp.choice_max == 0 and @tale == nil
  837.         self.pause = true
  838.       else
  839.         self.pause = false
  840.       end
  841.       # 取消
  842.       if Input.trigger?(Input::B)
  843.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  844.           $game_system.se_play($data_system.cancel_se)
  845.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  846.           terminate_message
  847.         end
  848.       end
  849.       # 确定
  850.       if Input.trigger?(Input::C)
  851.         if $game_temp.choice_max > 0
  852.           $game_system.se_play($data_system.decision_se)
  853.           $game_temp.choice_proc.call(self.index)
  854.         end
  855.         terminate_message
  856.         # 释放呼出窗口
  857.         del_fukidasi
  858.       end
  859.       return
  860.     end
  861.     # 在渐变以外的状态下有等待显示的信息与选择项的场合
  862.     if @fade_out == false and $game_temp.message_text != nil
  863.       @contents_showing = true
  864.       $game_temp.message_window_showing = true
  865.       reset_window
  866.       refresh_create
  867.       if @name_win != nil
  868.         @name_win.opacity = 0
  869.       end
  870.       if @tale != nil
  871.         @tale.opacity = 0
  872.       end
  873.       Graphics.frame_reset
  874.       self.visible = true
  875.       self.contents_opacity = 0
  876.       if @input_number_window != nil
  877.         @input_number_window.contents_opacity = 0
  878.       end
  879.       @fade_in = true
  880.       return
  881.     end
  882.     # 没有可以显示的信息、但是窗口为可见的情况下
  883.     if self.visible
  884.       @fade_out = true
  885.       self.opacity -= 48
  886.       if @name_win != nil
  887.         @name_win.opacity -= 48
  888.       end
  889.       if @tale != nil
  890.         @tale.opacity -= 48
  891.       end
  892.       if self.opacity == 0
  893.         self.visible = false
  894.         @fade_out = false
  895.         $game_temp.message_window_showing = false
  896.         del_fukidasi
  897.       end
  898.       return
  899.     end
  900.   end
  901.   
  902.   #--------------------------------------------------------------------------
  903.   # ● 释放
  904.   #--------------------------------------------------------------------------
  905.   def dispose
  906.     terminate_message
  907.     $game_temp.message_window_showing = false
  908.     if @input_number_window != nil
  909.       @input_number_window.dispose
  910.     end
  911.     super
  912.   end
  913.   
  914.   #--------------------------------------------------------------------------
  915.   # ● 信息结束处理
  916.   #--------------------------------------------------------------------------
  917.   def terminate_message
  918.     self.active = false
  919.     self.pause = false
  920.     self.index = -1
  921.     self.contents.clear
  922.     # 清除显示中标志
  923.     @contents_showing = false
  924.     @contents_showing_end = false
  925.     unless @kkme_name == "" or @kkme_name == nil
  926.       $mes_name = ""
  927.       @kkme_name = ""
  928.     end
  929.     # 呼叫信息调用
  930.     if $game_temp.message_proc != nil
  931.       $game_temp.message_proc.call
  932.     end
  933.     # 清除文章、选择项、输入数值的相关变量
  934.     $game_temp.message_text = nil
  935.     $game_temp.message_proc = nil
  936.     $game_temp.choice_start = 99
  937.     $game_temp.choice_max = 0
  938.     $game_temp.choice_cancel_type = 0
  939.     $game_temp.choice_proc = nil
  940.     $game_temp.num_input_start = 99
  941.     $game_temp.num_input_variable_id = 0
  942.     $game_temp.num_input_digits_max = 0
  943.     # 释放金钱窗口
  944.     if @gold_window != nil
  945.       @gold_window.dispose
  946.       @gold_window = nil
  947.     end
  948.   end
  949.   
  950.   #--------------------------------------------------------------------------
  951.   # ● 刷新光标矩形
  952.   #--------------------------------------------------------------------------
  953.   def update_cursor_rect
  954.     if @index >= 0
  955.       n = $game_temp.choice_start + @index
  956.       self.cursor_rect.set(8, n * 32, @cursor_width, 32)
  957.     else
  958.       self.cursor_rect.empty
  959.     end
  960.   end
  961.   #--------------------------------------------------------------------------
  962.   # ● 取得普通文字色
  963.   #--------------------------------------------------------------------------
  964.   def normal_color
  965.     nil_color = Color.new(0,0,0,0)
  966.     if FUKI::FUKI_COLOR != nil_color
  967.       color = FUKI::FUKI_COLOR
  968.     else
  969.       color = super
  970.     end
  971.     return color
  972.   end
  973. end

  974. #==============================================================================
  975. # ■ Window_InputNumber
  976. #==============================================================================
  977. class Window_InputNumber < Window_Base
  978.   #--------------------------------------------------------------------------
  979.   # ● 初始化对像
  980.   #     digits_max : 位数
  981.   #--------------------------------------------------------------------------
  982.   def initialize(digits_max)
  983.     @digits_max = digits_max
  984.     @number = 0
  985.     # 从数字的幅度计算(假定与 0~9 等幅)光标的幅度
  986.     dummy_bitmap = Bitmap.new(32, 32)
  987.     dummy_bitmap.font.size = FUKI::MES_FONT_SIZE
  988.     @cursor_width = dummy_bitmap.text_size("0").width + 8
  989.     dummy_bitmap.dispose
  990.     super(0, 0, @cursor_width * @digits_max + 32, 64)
  991.     self.contents = Bitmap.new(width - 32, height - 32)
  992.     self.contents.font.size = FUKI::MES_FONT_SIZE
  993.     self.z += 9999
  994.     self.opacity = 0
  995.     @index = 0
  996.     refresh
  997.     update_cursor_rect
  998.   end
  999. end
  1000. #===========================================================================
  1001. # Game_Map,把events变量公开
  1002. #===========================================================================
  1003. class Game_Map
  1004.   attr_reader   :events
  1005. end
  1006. #===========================================================================
  1007. # 便于返回姓名
  1008. #===========================================================================
  1009. class Game_Event < Game_Character
  1010.   def name
  1011.     return @event.name
  1012.   end
  1013.   def name=(na)
  1014.     @event.name = na
  1015.   end
  1016. end
  1017. #===========================================================================
  1018. # 增加变量$active_event_id,用于在“本事件”显示对话
  1019. #===========================================================================
  1020. class Interpreter
  1021. #--------------------------------------------------------------------------
  1022. # ● 设置事件
  1023. #     event_id : 事件 ID
  1024. #--------------------------------------------------------------------------
  1025. alias setup_fuki setup
  1026. def setup(list, event_id)
  1027.    setup_fuki(list, event_id)
  1028.    # 如果不是战斗中
  1029.    if !($game_temp.in_battle)
  1030.      # 记录事件 ID
  1031.      $active_event_id = event_id
  1032.    end
  1033. end
  1034. end
复制代码

作者: 零式翅膀    时间: 2011-8-15 00:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 亿万星辰    时间: 2011-8-15 06:57
楼上两位所说的跳过有什么理论依据么?
请自行尝试一下……

另外,楼主的这个应该是那个“极度简化”版的FUKI吧,这个脚本貌似不会对事件页有如此大的改动……
能确定只有这一个外加脚本么?
作者: wkhfh    时间: 2011-8-15 09:23
还有点其他的,但是回想起来有点奇怪,大前天的时候也能用,只有前天一试又不管用了…………好像很灵异。


wkhfh于2011-8-15 10:02补充以下内容:
刚刚发现,只要将开关挪到前面就好,唉,兄弟们,我又要有的忙了,还有,如果在我没累死之前还有根治的方法,希望快点说,否则世界上又出了一起血腥暴力的自杀案了。


wkhfh于2011-8-15 10:09补充以下内容:
我错了,错的不是一般的错,天哪!我的50多个自动执行啊,还有一件事,比如说一个事件里显示两个文章,A和B,光是循环A,B连影都没有。
作者: 亿万星辰    时间: 2011-8-15 11:20
wkhfh 发表于 2011-8-15 09:23
还有点其他的,但是回想起来有点奇怪,大前天的时候也能用,只有前天一试又不管用了…………好像很灵异。

...

其实把开关挪到前面和挪到后面应该没有什么太大的关系,就算执行了打开独立开关的操作,其后的操作依然会执行的。

另外你的事件需要优化一下了,自动执行事件的话同时执行1个就足够了吧……
作者: 退屈£无聊    时间: 2011-8-15 12:29
在最后加个中断事件处理如何0v0
作者: wkhfh    时间: 2011-8-15 13:53
现在我们可以不谈这个话题了,我先说明,治好了,是脚本的问题,不知道是哪一个,我就先将脚本备份下来,然后创建新工程提取脚本DATA,然后又把备份脚本一个一个加上去,就好了,可是又出现新的问题,45°战斗脚本放上去后,血条不见了…………还在中间出现一个框框…………,求解,因为没用家里的电脑,请兄弟几个想想办法,在大脑中想象一下。




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