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

Project1

 找回密码
 注册会员
搜索
查看: 1854|回复: 5
打印 上一主题 下一主题

[已经解决] 菜单选项问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
112 小时
注册时间
2010-6-16
帖子
89
跳转到指定楼层
1
发表于 2011-10-15 16:37:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jy02347315 于 2011-10-16 19:14 编辑

我在菜单中加了一个选项,在脚本编辑器的对应"$game_temp.next_scene = "mbook" "(怪物图鉴)
但是,在菜单中选择后,并没有弹出,而是等按ESC关闭菜单后才会显示出来.
怎样修改才能使在菜单中选择后就能弹出来?
或者各位高手长辈们给我个QQ号?我加你们?
→怪物图鉴的地方,不会出现脚本错误,如果执行游戏,可以看见如果在菜单中选择"怪物图鉴“,不会立即显示出来,而是等按ESC关闭菜单后才会显示出来.而我想要的效果是,在菜单中选择就可以显示出来.

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

2
发表于 2011-10-15 17:41:12 | 只看该作者
  1. $scene = XXX.new
复制代码
XXX输入你的那个场景的名字,比如如果是道具菜单就是Scene_Item.new

点评

就是找不到...能给个QQ详谈么...谢谢了!!  发表于 2011-10-16 19:08
回复

使用道具 举报

Lv1.梦旅人 (暗夜天使)

永夜蟄居の玖瀨

梦石
0
星屑
71
在线时间
1018 小时
注册时间
2011-9-5
帖子
2813

开拓者贵宾

3
发表于 2011-10-15 19:13:05 | 只看该作者
  1. #--------------------------------------------------------------------------
  2.   # ● 生成指令窗口
  3.   #--------------------------------------------------------------------------
  4.   def create_command_window
  5.     s1 = Vocab::item
  6.     s2 = Vocab::skill
  7.     s3 = Vocab::equip
  8.     s4 = Vocab::status
  9.     s5 = Vocab::save
  10.     s6 = Vocab::game_end
  11.     s7 = "XX"
  12.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,s7])
复制代码
是改Scene_Menu中这个吧
  1.   #--------------------------------------------------------------------------
  2.   # ● 更新指令选择
  3.   #--------------------------------------------------------------------------
  4.   def update_command_selection
  5.     if Input.trigger?(Input::B)
  6.       Sound.play_cancel
  7.       $scene = Scene_Map.new
  8.     elsif Input.trigger?(Input::C)
  9.       if $game_party.members.size == 0 and @command_window.index < 4
  10.         Sound.play_buzzer
  11.         return
  12.       elsif $game_system.save_disabled and @command_window.index == 4
  13.         Sound.play_buzzer
  14.         return
  15.       end
  16.       Sound.play_decision
  17.       case @command_window.index
  18.       when 0      # 物品
  19.         $scene = Scene_Item.new
  20.       when 1,2,3  # 特技、装备、状态
  21.         start_actor_selection
  22.       when 4      # 存档
  23.         $scene = Scene_File.new(true, false, false)
  24.       when 5      # 游戏结束
  25.         $scene = Scene_End.new
  26.       when 6
  27.         $$scene = Scene_XXX.new


复制代码
再改这个

点评

你理解错了。  发表于 2011-10-16 19:09

回复

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

4
发表于 2011-10-16 19:29:29 | 只看该作者
你发一下你用的怪物图鉴脚本

点评

好的。这里。  发表于 2011-10-20 16:30
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
112 小时
注册时间
2010-6-16
帖子
89
5
 楼主| 发表于 2011-10-20 16:30:19 | 只看该作者
#******************************************************************************
#
#    * モンスター図鑑 #2
#
#  --------------------------------------------------------------------------
#    バージョン :  1.0.2
#      対  応   :  RPGツクールVX : RGSS2
#     制 作 者  :  CACAO
#     配 布 元  :  http://cacaosoft.web.fc2.com/
#     連 絡 先  :  [email protected]
#  --------------------------------------------------------------------------
#   == 概要 ==
#
#    : モンスター図鑑の機能を追加します。
#
#  --------------------------------------------------------------------------
#   == 注意事項 ==
#
#    ※ 別途、コメントを定義する必要があります。サイトの説明をご覧ください。
#    ※ このスクリプトの使用には、基本的なRGSS2の知識が必要となります。
#
#  --------------------------------------------------------------------------
#   == 使用方法 ==
#
#    ★ 図鑑の起動
#     $game_temp.next_scene = "mbook"
#
#    ★ メニューからの起動
#     start_mbook
#
#    ★ 閲覧可能範囲の変更
#     $game_system.mbook[n].entry = value
#       n = エネミーのID
#       value = 0:閲覧不可, 1:遭遇, 2:勝利, 3:解析
#
#    ★ 閲覧の可否の変更
#     $game_system.mbook[n].hidden = value
#       n = エネミーのID
#       value = true:閲覧不可, false:閲覧可能
#
#    ★ 初期登録
#     エネミーのメモ欄に <MB:初期登録○> と記述
#       ○ = 初期登録時の閲覧可能範囲。半角数字で記述
#
#    ★ 初期閲覧不可
#     エネミーのメモ欄に <MB:閲覧禁止> と記述
#
#    ★ 完全非表示
#     エネミーのメモ欄に <MB:図鑑除外> と記述
#
#  --------------------------------------------------------------------------
#   == 画像規格 ==
#
#    ★ 有効度の詳細画像
#     属性・ステートアイコンの上に表示します。有効度を見分けるための画像です。
#     144 x 48 の画像(WeakIcon)を "Graphics/System" にご用意ください。
#
#    ★ 図鑑背景画像
#     図鑑全体の画像です。
#     544 x 416 の画像(BackMBook)を "Graphics/System" にご用意ください。
#     ※ ステータス背景を使用する場合は、ステータス部分を透過してください。
#
#    ★ ステータス背景画像
#     ステータス部分の背景です。
#     左からコメント、ステータス、属性・ステート画面となっています。
#     896 x 272 の画像(BackMBookS)を "Graphics/System" にご用意ください。
#
#    ※ 詳細はサイトの説明をご覧ください。
#       また、画像を使用しない設定の場合は、必要ありません。
#       ユーザー設定で個別に設定できます。
#
#
#******************************************************************************


#==============================================================================
# ◆ ユーザー設定
#==============================================================================

module CAO
module MB
  #--------------------------------------------------------------------------
  # ◇ 閲覧可能にする情報(閲覧可能範囲、閲覧レベル)
  #     (:name, :graphics, :params1, :drop, :params2, :weak, :come)
  #--------------------------------------------------------------------------
  ACCESS_PERMIT = [ [3], # <= 消さないように注意!
    # 遭遇  Lv 1
    [:name, :graphics],
    # 勝利  Lv 2
    [:name, :graphics, :params1, :drop],
    # 解析  Lv 3
    [:name, :graphics, :params1, :drop, :params2, :weak, :come]
  ]
  #--------------------------------------------------------------------------
  # ◇ 図鑑完成率の算出方法(閲覧レベルで指定)
  #--------------------------------------------------------------------------
  COMPLETE_NUMBER = nil
  #--------------------------------------------------------------------------
  # ◇ 図鑑完成率の色変え(100%時)
  #--------------------------------------------------------------------------
  COMPLETE_COLOR = true
  #--------------------------------------------------------------------------
  # ◇ 自動登録する
  #--------------------------------------------------------------------------
  AUTO_ENTRY = true
    #--------------------------------------------------------------------------
    # ◇ 敗北しても登録する
    #     true    : 戦闘で負けても、倒した敵の加算と図鑑登録を行います。
    #     false   : 戦闘に負けた場合は、何も行いません。
    #--------------------------------------------------------------------------
    AUTO_ENTRY_LOSE = false
    #--------------------------------------------------------------------------
    # ◇ 倒した敵のみ自動登録する
    #     true    : 敵を倒すと閲覧レベル1
    #     false   : 遭遇でレベル1、倒すとレベル2
    #--------------------------------------------------------------------------
    AUTO_ENTRY_DEFEATED = false
  #--------------------------------------------------------------------------
  # ◇ 表示するステート
  #--------------------------------------------------------------------------
  ACTIVE_STATE = [2, 3, 4, 5, 6, 7, 8]
  #--------------------------------------------------------------------------
  # ◇ 表示する属性
  #--------------------------------------------------------------------------
  ACTIVE_ELEMENT = [7, 8, 9, 10, 11, 12, 13, 14]
  #--------------------------------------------------------------------------
  # ◇ 属性を1文字で表示する
  #     true      : 属性の最初の1文字のみを表示する。
  #     false     : 指定されたアイコンで表示する。
  #--------------------------------------------------------------------------
  ONE_NAME_ELEMENT = false
    #--------------------------------------------------------------------------
    # ◇ 属性のアイコン
    #--------------------------------------------------------------------------
    ICON_ELEMENT = [104, 105, 106, 107, 108, 109, 110, 111]
  #--------------------------------------------------------------------------
  # ◇ 耐性表示の色分けをする
  #     true      : 有効度の画像を使用します。
  #     false     : アイコンのみを表示します。
  #--------------------------------------------------------------------------
  WEAK_PONIT_COLOR = false
  #--------------------------------------------------------------------------
  # ◇ ウィンドウを消す
  #--------------------------------------------------------------------------
  NO_WINDOW_GRAPHICS = false
  #--------------------------------------------------------------------------
  # ◇ システム文字を非表示にする
  #--------------------------------------------------------------------------
  NO_SYSTEM_FONT = false
  #--------------------------------------------------------------------------
  # ◇ パラメータの項目
  #     HP, MP, ATK, DEF, SPI, AGI, HIT, EVA, EXP, GOLD, DROPITEM
  #--------------------------------------------------------------------------
  TEXT_STATUS = ["H P", "M P", "攻击力", "防御力", "精神力", "敏捷力",
                  "命中率", "回避率", "经验值", "游戏币", "掉落物品"]
  #--------------------------------------------------------------------------
  # ◇ 耐性の項目
  #     有効属性、有効ステート、耐性属性、耐性ステート
  #--------------------------------------------------------------------------
  TEXT_WEAK_POINT = ["弱点属性", "弱点状态", "耐性属性", "耐性状态"]
end
end


#/////////////////////////////////////////////////////////////////////////////#
#                                                                             #
#                下記のスクリプトを変更する必要はありません。                 #
#                                                                             #
#/////////////////////////////////////////////////////////////////////////////#


module CAO
class MonsterBook
  attr_accessor :entry
  attr_accessor :hidden
  attr_accessor :unread
  attr_accessor :defeat
  attr_accessor :encounter
  attr_reader   :id
  def initialize(id)
    @id = id
    @entry = 0
    @hidden = false
    @unread = true
    @defeat = 0
    @encounter = false
  end
  def data
    return $data_enemies[@id]
  end
end
end
class Game_System
  attr_accessor :mbook
end
class Scene_Title < Scene_Base
  alias :_cao_command_new_game_mbook :command_new_game
  def command_new_game
    _cao_command_new_game_mbook
    CAO::MB::Commands.reset_mbook
  end
end
class Scene_Map < Scene_Base
  alias :_cao_update_scene_change_mbook :update_scene_change
  def update_scene_change
    return if $game_player.moving?
    if $game_temp.next_scene == "mbook"
      $game_temp.next_scene = nil
      $scene = Scene_MonsterBook.new
    end
    _cao_update_scene_change_mbook
  end
end
class Scene_Menu < Scene_Base
  def start_mbook
    $scene = Scene_MonsterBook.new(@command_window.index)
  end
end
module CAO::MB::Commands
  module_function
  def unrestraint_array
    return $game_system.mbook.compact
  end
  def unrestraint_number
    return unrestraint_array.size
  end
  def unrestraint_enemy(data_id)
    for enemy in unrestraint_array
      return enemy if enemy.id == data_id
    end
  end
  def reset_mbook
    $game_system.mbook = []
    for i in 1...$data_enemies.size
      unless /^<MB:圖鑑除外>/ =~ $data_enemies.note
        $game_system.mbook = CAO::MonsterBook.new($data_enemies.id)
      end
    end
    reset_entry
    reset_hidden
    reset_unread
    reset_defeat
  end
  def reset_entry
    for i in 1...$data_enemies.size
      next if $game_system.mbook == nil
      if /^<MB:初期登錄(\d)>/ =~ $data_enemies.note
        $game_system.mbook.entry = $1.to_i
      else
        $game_system.mbook.entry = 0
      end
    end
  end
  def reset_hidden
    for i in 1...$data_enemies.size
      next if $game_system.mbook == nil
      if /^<MB:閱讀禁止>/ =~ $data_enemies.note
        $game_system.mbook.hidden = true
      else
        $game_system.mbook.hidden = false
      end
    end
  end
  def reset_unread
    for i in 1...$data_enemies.size
      next if $game_system.mbook == nil
      $game_system.mbook.unread = true
    end
  end
  def reset_defeat
    for i in 1...$data_enemies.size
      next if $game_system.mbook == nil
      $game_system.mbook.unread = 0
    end
  end
  def change_entry(id, val)
    $game_system.mbook[id].entry = val
  end
  def get_encounter_number
    count = 0
    for enemy in unrestraint_array
      count += 1 if enemy.encounter
    end
    return count
  end
  def get_encounter_percent
    return cget_encounter_number * 100 / unrestraint_number
  end
  def get_entry_number(entry_type = nil)
    count = 0
    if entry_type
      for enemy in unrestraint_array
        count += 1 if enemy.entry >= entry_type
      end
    else
      for enemy in unrestraint_array
        count += enemy.entry
      end
      count /= 3
    end
    return count
  end
  def get_entry_percent(entry_type = nil)
    return get_entry_number(entry_type) * 100 / unrestraint_number
  end
  def complete_entry(entry_type)
    for enemy in unrestraint_array
      enemy.entry = entry_type
    end
  end
  def clear_entry
    for enemy in unrestraint_array
      enemy.entry = 0
    end
  end
end
class Window_MbookCommand < Window_Selectable
  def initialize
    super(8, 72, 200, 272)
    self.opacity = CAO::MB::NO_WINDOW_GRAPHICS ? 0 : 255
    @enemy = CAO::MB::Commands.unrestraint_array
    @item_max = CAO::MB::Commands.unrestraint_number
    refresh
    self.index = 0
  end
  def create_contents
    self.contents.dispose
    h = [height - 32, $game_system.mbook.size * WLH].max
    self.contents = Bitmap.new(width - 32, h)
  end
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i)
    end
  end
  def draw_item(index)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(rect, sprintf("%03d", index + 1))
    if @enemy[index].hidden || @enemy[index].entry == 0
      self.contents.draw_text(rect, "????????????", 2)
    else
      rect.x = 32
      rect.width -= 28
      self.contents.font.color = Color.new(102,204,64) if @enemy[index].unread
      self.contents.draw_text(rect, @enemy[index].data.name, 2)
    end
  end
end
class Window_MbookStatus < Window_Base
  SLIDE_SPEED = 36
  def initialize
    super(216, 72, 320, 272)
    @enemy = CAO::MB::Commands.unrestraint_array[0]
    self.opacity = CAO::MB::NO_WINDOW_GRAPHICS ? 0 : 255
    self.ox = 288
    @page = 1
    @slide_left = false
    @slide_right = false
    refresh
  end
  def create_contents
    self.contents.dispose
    self.contents = Bitmap.new((width - 32) * 3, height - 32)
    if CAO::MB::NO_SYSTEM_FONT
      @back_sprite = Sprite.new
      @back_sprite.bitmap = Cache.system("BackMBookS")
      @back_sprite.x = 216
      @back_sprite.y = 72
      @back_sprite.z = 0
      @back_sprite.ox = 288
    end
  end
  def refresh
    @enemy.unread = false if @enemy.entry > 0
    self.contents.clear_rect(288 * @page, 0, 288, 240)
    case @page
    when 0
      draw_comments
    when 1
      x = 288
      self.contents.font.color = normal_color
      if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:name)
        self.contents.draw_text(x + 4, 0, 280, WLH, @enemy.data.name)
      else
        self.contents.draw_text(x + 4, 0, 280, WLH, "????????")
      end
      draw_enemy_parameter(x, 33)
      unless CAO::MB::NO_SYSTEM_FONT
        self.contents.font.color = system_color
        self.contents.draw_text(x, 168, 160, WLH, CAO::MB::TEXT_STATUS[10])
      end
      draw_drop_item(@enemy.data.drop_item1, x + 24, 192)
      draw_drop_item(@enemy.data.drop_item2, x + 24, 216)
    when 2
      draw_weak_point(576)
    end
  end
  def draw_comments
    return unless CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:come)
    if CAO::MB::COMMENT.has_key?(@enemy.data.id)
      self.contents.font.color = normal_color
      come = CAO::MB::COMMENT[@enemy.data.id]
      for i in 0...come.size
        update_message(come.clone, WLH * i)
      end
    end
  end
  def update_message(text, y)
    text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
    text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
    text.gsub!(/\\\\/)             { "\\" }
    x = 0
    loop do
      c = text.slice!(/./m)
      case c
      when nil
        break
      when "\x01"
        text.sub!(/\[([0-9]+)\]/, "")
        contents.font.color = text_color($1.to_i)
        next
      else
        contents.draw_text(x, y, 40, WLH, c)
        x += contents.text_size(c).width
      end
    end
  end
  def draw_enemy_parameter(x, y)
    params = [  @enemy.data.maxhp, @enemy.data.maxmp,
                 @enemy.data.atk,@enemy.data.def, @enemy.data.spi,
                @enemy.data.agi, @enemy.data.hit, @enemy.data.eva,  ]
    for i in 0...8
      xx = x + i % 2 * 152
      yy = y + i / 2 * WLH
      unless CAO::MB::NO_SYSTEM_FONT
        self.contents.font.color = system_color
        self.contents.draw_text(xx, yy, 60, WLH, CAO::MB::TEXT_STATUS)
      end
      self.contents.font.color = normal_color
      if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:params1)
        self.contents.draw_text(xx + 60, yy, 72, WLH, params, 2)
      else
        self.contents.draw_text(xx + 60, yy, 72, WLH, "???", 2)
      end
    end
    unless CAO::MB::NO_SYSTEM_FONT
      self.contents.font.color = system_color
      self.contents.draw_text(x, 135, 60, WLH, CAO::MB::TEXT_STATUS[8])
      self.contents.draw_text(x + 152, 135, 60, WLH, CAO::MB::TEXT_STATUS[9])
    end
    self.contents.font.color = normal_color
    if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:params2)
      self.contents.draw_text(x + 60, 135, 72, WLH, @enemy.data.exp, 2)
      self.contents.draw_text(x + 212, 135, 72, WLH, @enemy.data.gold, 2)
    else
      self.contents.draw_text(x + 60, 135, 72, WLH, "??????", 2)
      self.contents.draw_text(x + 212, 135, 72, WLH, "??????", 2)
    end
  end
  def draw_drop_item(drop_item, x, y)
    case drop_item.kind
    when 0
      item = nil
    when 1
      item = $data_items[drop_item.item_id]
    when 2
      item = $data_weapons[drop_item.weapon_id]
    when 3
      item = $data_armors[drop_item.armor_id]
    end
    self.contents.font.color = normal_color
    if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:drop)
       if item == nil
        self.contents.draw_text(x + 2, y, 230, WLH, "× --------------")
      else
        draw_icon(item.icon_index, x, y)
        self.contents.draw_text(x + 26, y, 230, WLH, item.name)
      end
    else
      self.contents.draw_text(x, y, 230, WLH, "? --------------")
    end
  end
  def draw_weak_point(x)
    unless CAO::MB::NO_SYSTEM_FONT
      self.contents.font.color = system_color
      for i in 0...4
        self.contents.draw_text(x+4, 60*i, 280, WLH, CAO::MB::TEXT_WEAK_POINT)
      end
    end
    if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:weak)
      draw_element_icon(x + 28, 24)
      draw_state_icon(x + 28, 84)
    else
      self.contents.font.color = normal_color
      for i in 0...4
        self.contents.draw_text(x+36, 60*i+24, 240, WLH, "? ? ? ? ? ? ?")
      end
    end
  end
  def draw_element_icon(x, y)
    count = 0
    for i in 0...CAO::MB::ACTIVE_ELEMENT.size
      if @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT] < 3
        if CAO::MB::ONE_NAME_ELEMENT
          rank = @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT]
          text = $data_system.elements[CAO::MB::ACTIVE_ELEMENT][/./]
          draw_weak_icon(text, x + 26 * count, y, rank)
        else
          icon_index = CAO::MB::ICON_ELEMENT
          rank = @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT]
          draw_weak_icon(icon_index, x + 26 * count, y, rank)
        end
        count += 1
      end
    end
    count = 0
    for i in 0...CAO::MB::ACTIVE_ELEMENT.size
      if @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT] > 3
        if CAO::MB::ONE_NAME_ELEMENT
          rank = @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT]
          text = $data_system.elements[CAO::MB::ACTIVE_ELEMENT][/./]
          draw_weak_icon(text, x + 26 * count, y + 120, rank)
        else
          icon_index = CAO::MB::ICON_ELEMENT
          rank = @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT]
          draw_weak_icon(icon_index, x + 26 * count, y + 120, rank)
        end
        count += 1
      end
    end
  end
  def draw_state_icon(x, y)
    weak_ranks = []
    strong_ranks = []
    for en in CAO::MB::ACTIVE_STATE
      if @enemy.data.state_ranks[en] < 3
        weak_ranks << en
      elsif @enemy.data.state_ranks[en] > 3
        strong_ranks << en
      end
    end
    self.contents.font.color = normal_color
    for i in 0...weak_ranks.size
      icon_index = $data_states[weak_ranks].icon_index
      rank = @enemy.data.state_ranks[weak_ranks] + 6
      draw_weak_icon(icon_index, x + 26 * i, y, rank)
    end
    for i in 0...strong_ranks.size
      icon_index = $data_states[strong_ranks].icon_index
      rank = @enemy.data.state_ranks[strong_ranks] + 6
      draw_weak_icon(icon_index, x + 26 * i, y + 120, rank)
    end
  end
  def draw_weak_icon(icon_index, x, y, rank = 0)
    if icon_index.class == String
      case rank
      when 1
        self.contents.font.color = Color.new(240, 32, 8)
      when 5
        self.contents.font.color = Color.new(48, 128, 248)
      when 6
        self.contents.font.color = Color.new(200, 64, 200)
      else
        self.contents.font.color = normal_color
      end
      self.contents.draw_text(x, y, 24, WLH, icon_index, 1)
    else
      bitmap = Cache.system("Iconset")
      rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      self.contents.blt(x, y, bitmap, rect)
      if CAO::MB::WEAK_PONIT_COLOR
        rect.set((rank - 1) % 6 * 24, (rank - 1) / 6 * 24, 24, 24)
        self.contents.blt(x, y, Cache.system("WeakIcon"), rect)
      end
    end
  end
  def enemy=(enemy_id)
    @enemy = CAO::MB::Commands.unrestraint_array[enemy_id]
    refresh
  end
  def terminate
    super
    @back_sprite.dispose if CAO::MB::NO_SYSTEM_FONT
  end
  def update
    super
    unless @slide_left && @slide_right
      last_index = @page
      if Input.trigger?(Input::RIGHT)
        @page = [@page + 1, 2].min
        @slide_right = @page != last_index
      end
      if Input.trigger?(Input::LEFT)
        @page = [@page - 1, 0].max
        @slide_left = @page != last_index
      end
      if @page != last_index
        Sound.play_cursor
        refresh
      end
    end
    update_page
  end
  def update_page
    if @slide_left
      self.ox -= SLIDE_SPEED
      @back_sprite.ox -= SLIDE_SPEED if CAO::MB::NO_SYSTEM_FONT
      @slide_left = !(self.ox == (288 * @page))
    end
    if @slide_right
      self.ox += SLIDE_SPEED
      @back_sprite.ox += SLIDE_SPEED if CAO::MB::NO_SYSTEM_FONT
      @slide_right = !(self.ox == (288 * @page))
    end
  end
end
class Window_MBookHelp < Window_Base
  include CAO::MB::Commands
  def initialize
    super(8, 352, 528, 56)
    self.opacity = CAO::MB::NO_WINDOW_GRAPHICS ? 0 : 255
    @enemy = unrestraint_array
    @item_max = unrestraint_number
    refresh
  end
  def refresh
    self.contents.clear
    unless CAO::MB::NO_SYSTEM_FONT
      self.contents.font.color = system_color
      self.contents.draw_text(7, 0, 100, WLH, "击败数")
      self.contents.draw_text(147, 0, 30, WLH, "次", 2)
      self.contents.draw_text(193, 0, 70, WLH, "遭遇率")
      self.contents.draw_text(303, 0, 30, WLH, "%", 2)
      self.contents.draw_text(349, 0, 70, WLH, "完成率")
      self.contents.draw_text(459, 0, 30, WLH, "%", 2)
    end
    self.contents.font.color = normal_color
    draw_defeated_number(107, 0, 40, WLH, 1)
    self.contents.draw_text(263, 0, 40, WLH, get_encounter_number, 2)
    text = get_entry_percent(CAO::MB::COMPLETE_NUMBER)
    if text == 100 && CAO::MB::COMPLETE_COLOR
      self.contents.font.color.set(240, 36, 12)
    end
    self.contents.draw_text(419, 0, 40, WLH, text, 2)
  end
  def draw_defeated_number(x, y, w, h, enemy_id)
    self.contents.clear_rect(x, y, w, h)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, w, h, @enemy[enemy_id].defeat, 2)
  end
end
class Scene_MonsterBook < Scene_Base
  def initialize(menu_index = -1)
    @menu_index = menu_index
  end
  def start
    super
    create_menu_background
    create_title_window
    create_command_window
    create_graphic_sprite
    @status_window = Window_MbookStatus.new
    @help_window = Window_MBookHelp.new
  end
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @title_window.dispose
    @status_window.dispose
    @help_window.dispose
    @graphic_sprite.dispose
  end
  def update
    super
    if Input.trigger?(Input::C)
      Sound.play_decision
      draw_enemy_graphics
      @graphic_sprite.visible ^= true
      @command_window.active ^= true
    end
    return unless @command_window.active
    current_id = @command_window.index
    @command_window.update
    @status_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = @menu_index < 0 ? Scene_Map.new : Scene_Menu.new(@menu_index)
    end
    if @command_window.index != current_id
      @status_window.enemy = @command_window.index
      @help_window.draw_defeated_number(107, 0, 40, 24, @command_window.index)
    end
  end
if CAO::MB::NO_WINDOW_GRAPHICS
  def create_menu_background
    @menuback_sprite = Sprite.new
    @menuback_sprite.bitmap = Cache.system("BackMBook")
    @menuback_sprite.z = 1
    update_menu_background
  end
end
  def create_title_window
    @title_window = Window_Base.new(0, 8, 180, 56)
    @title_window.opacity = CAO::MB::NO_WINDOW_GRAPHICS ? 0 : 255
    unless CAO::MB::NO_SYSTEM_FONT
      @title_window.contents.font.color = @title_window.normal_color
      @title_window.contents.draw_text(0, 0, 148, 24, "怪物图鉴", 1)
    end
  end
  def create_command_window
    @command_window = Window_MbookCommand.new
    @command_window.index = 0
  end
  def create_graphic_sprite
    @graphic_sprite = Sprite.new
    @graphic_sprite.visible = false
    @graphic_sprite.bitmap = Bitmap.new(512, 384)
    @graphic_sprite.x = 16
    @graphic_sprite.y = 16
    @graphic_sprite.z = 200
  end
  def draw_enemy_graphics
    enemy = CAO::MB::Commands.unrestraint_array[@command_window.index]
    @graphic_sprite.bitmap.clear
    @graphic_sprite.bitmap.fill_rect(0, 0, 512, 384, Color.new(0, 0, 0, 128))
    bitmap = Cache.battler(enemy.data.battler_name, 0)
    if CAO::MB::ACCESS_PERMIT[enemy.entry].include?(:graphics)
      @graphic_sprite.color = Color.new(0, 0, 0, 0)
    else
      @graphic_sprite.color = Color.new(0, 0, 0)
    end
    x = (512 - bitmap.width) / 2
    y = (384 - bitmap.height) / 2
    @graphic_sprite.bitmap.blt( x, y, bitmap, bitmap.rect)
  end
end
class Scene_Battle < Scene_Base
  alias :_cao_battle_end_mbook :battle_end
  def battle_end(result)
    if result != 2 || CAO::MB::AUTO_ENTRY_LOSE
      for en in $game_troop.members
        enemy = CAO::MB::Commands.unrestraint_enemy(en.enemy_id)
        enemy.defeat += 1 if en.dead?
        if CAO::MB::AUTO_ENTRY && enemy.entry < 2
          if CAO::MB::AUTO_ENTRY_DEFEATED
            enemy.entry = 1 if en.dead?
          else
            enemy.entry = en.dead? ? 2 : 1
          end
        end
      end
    end
    _cao_battle_end_mbook(result)
  end
  alias :_cao_display_action_effects_mbook :display_action_effects
  def display_action_effects(target, obj = nil)
    if obj && /^<MB:解析>/ =~ obj.note
      unless target.skipped
        line_number = @message_window.line_number
        wait(5)
        display_critical(target, obj)
        display_damage(target, obj)
        display_state_changes(target, obj)
        if line_number == @message_window.line_number
          $game_system.mbook[target.enemy_id].entry = 3
          @message_window.add_instant_text("#{target.name}を解析した。")
        end
        if line_number != @message_window.line_number
          wait(30)
        end
        @message_window.back_to(line_number)
      end
    else
      _cao_display_action_effects_mbook(target, obj)
    end
  end
end
回复

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

6
发表于 2011-10-20 22:54:44 | 只看该作者
把你填
  1. "$game_temp.next_scene = "mbook"
复制代码
的地方改成
  1. $scene = Scene_MonsterBook.new(5)
复制代码

点评

谢谢!!非常正确!!  发表于 2011-10-21 18:36
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-1-8 05:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表