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

Project1

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

[已经过期] 魔物图鉴出错了!

[复制链接]

Lv1.梦旅人

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

不知道从好久开始...图鉴中的h = [height - 32, $game_system.mbook.size * WLH].max这句话出错了.

这是脚本:
  1. ******************************************************************************
  2. #
  3. #    * モンスター図鑑 #2
  4. #
  5. #  --------------------------------------------------------------------------
  6. #    バージョン :  1.0.2
  7. #      対  応   :  RPGツクールVX : RGSS2
  8. #     制 作 者  :  CACAO
  9. #     配 布 元  :  [url]http://cacaosoft.web.fc2.com/[/url]
  10. #     連 絡 先  :  [email][email protected][/email]
  11. #  --------------------------------------------------------------------------
  12. #   == 概要 ==
  13. #
  14. #    : モンスター図鑑の機能を追加します。
  15. #
  16. #  --------------------------------------------------------------------------
  17. #   == 注意事項 ==
  18. #
  19. #    ※ 別途、コメントを定義する必要があります。サイトの説明をご覧ください。
  20. #    ※ このスクリプトの使用には、基本的なRGSS2の知識が必要となります。
  21. #
  22. #  --------------------------------------------------------------------------
  23. #   == 使用方法 ==
  24. #
  25. #    ★ 図鑑の起動
  26. #     $game_temp.next_scene = "mbook"
  27. #
  28. #    ★ メニューからの起動
  29. #     start_mbook
  30. #
  31. #    ★ 閲覧可能範囲の変更
  32. #     $game_system.mbook[n].entry = value
  33. #       n = エネミーのID
  34. #       value = 0:閲覧不可, 1:遭遇, 2:勝利, 3:解析
  35. #
  36. #    ★ 閲覧の可否の変更
  37. #     $game_system.mbook[n].hidden = value
  38. #       n = エネミーのID
  39. #       value = true:閲覧不可, false:閲覧可能
  40. #
  41. #    ★ 初期登録
  42. #     エネミーのメモ欄に <MB:初期登録○> と記述
  43. #       ○ = 初期登録時の閲覧可能範囲。半角数字で記述
  44. #
  45. #    ★ 初期閲覧不可
  46. #     エネミーのメモ欄に <MB:閲覧禁止> と記述
  47. #
  48. #    ★ 完全非表示
  49. #     エネミーのメモ欄に <MB:図鑑除外> と記述
  50. #
  51. #  --------------------------------------------------------------------------
  52. #   == 画像規格 ==
  53. #
  54. #    ★ 有効度の詳細画像
  55. #     属性・ステートアイコンの上に表示します。有効度を見分けるための画像です。
  56. #     144 x 48 の画像(WeakIcon)を "Graphics/System" にご用意ください。
  57. #
  58. #    ★ 図鑑背景画像
  59. #     図鑑全体の画像です。
  60. #     544 x 416 の画像(BackMBook)を "Graphics/System" にご用意ください。
  61. #     ※ ステータス背景を使用する場合は、ステータス部分を透過してください。
  62. #
  63. #    ★ ステータス背景画像
  64. #     ステータス部分の背景です。
  65. #     左からコメント、ステータス、属性・ステート画面となっています。
  66. #     896 x 272 の画像(BackMBookS)を "Graphics/System" にご用意ください。
  67. #
  68. #    ※ 詳細はサイトの説明をご覧ください。
  69. #       また、画像を使用しない設定の場合は、必要ありません。
  70. #       ユーザー設定で個別に設定できます。
  71. #
  72. #
  73. #******************************************************************************


  74. #==============================================================================
  75. # ◆ ユーザー設定
  76. #==============================================================================

  77. module CAO
  78. module MB
  79.   #--------------------------------------------------------------------------
  80.   # ◇ 閲覧可能にする情報(閲覧可能範囲、閲覧レベル)
  81.   #     (:name, :graphics, :params1, :drop, :params2, :weak, :come)
  82.   #--------------------------------------------------------------------------
  83.   ACCESS_PERMIT = [ [3], # <= 消さないように注意!
  84.     # 遭遇  Lv 1
  85.     [:name, :graphics],
  86.     # 勝利  Lv 2
  87.     [:name, :graphics, :params1, :drop],
  88.     # 解析  Lv 3
  89.     [:name, :graphics, :params1, :drop, :params2, :weak, :come]
  90.   ]
  91.   #--------------------------------------------------------------------------
  92.   # ◇ 図鑑完成率の算出方法(閲覧レベルで指定)
  93.   #--------------------------------------------------------------------------
  94.   COMPLETE_NUMBER = nil
  95.   #--------------------------------------------------------------------------
  96.   # ◇ 図鑑完成率の色変え(100%時)
  97.   #--------------------------------------------------------------------------
  98.   COMPLETE_COLOR = true
  99.   #--------------------------------------------------------------------------
  100.   # ◇ 自動登録する
  101.   #--------------------------------------------------------------------------
  102.   AUTO_ENTRY = true
  103.     #--------------------------------------------------------------------------
  104.     # ◇ 敗北しても登録する
  105.     #     true    : 戦闘で負けても、倒した敵の加算と図鑑登録を行います。
  106.     #     false   : 戦闘に負けた場合は、何も行いません。
  107.     #--------------------------------------------------------------------------
  108.     AUTO_ENTRY_LOSE = false
  109.     #--------------------------------------------------------------------------
  110.     # ◇ 倒した敵のみ自動登録する
  111.     #     true    : 敵を倒すと閲覧レベル1
  112.     #     false   : 遭遇でレベル1、倒すとレベル2
  113.     #--------------------------------------------------------------------------
  114.     AUTO_ENTRY_DEFEATED = false
  115.   #--------------------------------------------------------------------------
  116.   # ◇ 表示するステート
  117.   #--------------------------------------------------------------------------
  118.   ACTIVE_STATE = [2, 3, 4, 5, 6, 7, 8]
  119.   #--------------------------------------------------------------------------
  120.   # ◇ 表示する属性
  121.   #--------------------------------------------------------------------------
  122.   ACTIVE_ELEMENT = [7, 8, 9, 10, 11, 12, 13, 14]
  123.   #--------------------------------------------------------------------------
  124.   # ◇ 属性を1文字で表示する
  125.   #     true      : 属性の最初の1文字のみを表示する。
  126.   #     false     : 指定されたアイコンで表示する。
  127.   #--------------------------------------------------------------------------
  128.   ONE_NAME_ELEMENT = false
  129.     #--------------------------------------------------------------------------
  130.     # ◇ 属性のアイコン
  131.     #--------------------------------------------------------------------------
  132.     ICON_ELEMENT = [104, 105, 106, 107, 108, 109, 110, 111]
  133.   #--------------------------------------------------------------------------
  134.   # ◇ 耐性表示の色分けをする
  135.   #     true      : 有効度の画像を使用します。
  136.   #     false     : アイコンのみを表示します。
  137.   #--------------------------------------------------------------------------
  138.   WEAK_PONIT_COLOR = false
  139.   #--------------------------------------------------------------------------
  140.   # ◇ ウィンドウを消す
  141.   #--------------------------------------------------------------------------
  142.   NO_WINDOW_GRAPHICS = false
  143.   #--------------------------------------------------------------------------
  144.   # ◇ システム文字を非表示にする
  145.   #--------------------------------------------------------------------------
  146.   NO_SYSTEM_FONT = false
  147.   #--------------------------------------------------------------------------
  148.   # ◇ パラメータの項目
  149.   #     HP, MP, ATK, DEF, SPI, AGI, HIT, EVA, EXP, GOLD, DROPITEM
  150.   #--------------------------------------------------------------------------
  151.   TEXT_STATUS = ["H P", "M P", "攻击力", "防御力", "精神力", "敏捷力",
  152.                   "命中率", "回避率", "经验值", "游戏币", "掉落物品"]
  153.   #--------------------------------------------------------------------------
  154.   # ◇ 耐性の項目
  155.   #     有効属性、有効ステート、耐性属性、耐性ステート
  156.   #--------------------------------------------------------------------------
  157.   TEXT_WEAK_POINT = ["弱点属性", "弱点状态", "耐性属性", "耐性状态"]
  158. end
  159. end


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


  165. module CAO
  166. class MonsterBook
  167.   attr_accessor :entry
  168.   attr_accessor :hidden
  169.   attr_accessor :unread
  170.   attr_accessor :defeat
  171.   attr_accessor :encounter
  172.   attr_reader   :id
  173.   def initialize(id)
  174.     @id = id
  175.     @entry = 0
  176.     @hidden = false
  177.     @unread = true
  178.     @defeat = 0
  179.     @encounter = false
  180.   end
  181.   def data
  182.     return $data_enemies[@id]
  183.   end
  184. end
  185. end
  186. class Game_System
  187.   attr_accessor :mbook
  188. end
  189. class Scene_Title < Scene_Base
  190.   alias :_cao_command_new_game_mbook :command_new_game
  191.   def command_new_game
  192.     _cao_command_new_game_mbook
  193.     CAO::MB::Commands.reset_mbook
  194.   end
  195. end
  196. class Scene_Map < Scene_Base
  197.   alias :_cao_update_scene_change_mbook :update_scene_change
  198.   def update_scene_change
  199.     return if $game_player.moving?
  200.     if $game_temp.next_scene == "mbook"
  201.       $game_temp.next_scene = nil
  202.       $scene = Scene_MonsterBook.new
  203.     end
  204.     _cao_update_scene_change_mbook
  205.   end
  206. end
  207. class Scene_Menu < Scene_Base
  208.   def start_mbook
  209.     $scene = Scene_MonsterBook.new(@command_window.index)
  210.   end
  211. end
  212. module CAO::MB::Commands
  213.   module_function
  214.   def unrestraint_array
  215.     return $game_system.mbook.compact
  216.   end
  217.   def unrestraint_number
  218.     return unrestraint_array.size
  219.   end
  220.   def unrestraint_enemy(data_id)
  221.     for enemy in unrestraint_array
  222.       return enemy if enemy.id == data_id
  223.     end
  224.   end
  225.   def reset_mbook
  226.     $game_system.mbook = []
  227.     for i in 1...$data_enemies.size
  228.       unless /^<MB:圖鑑除外>/ =~ $data_enemies[i].note
  229.         $game_system.mbook[i] = CAO::MonsterBook.new($data_enemies[i].id)
  230.       end
  231.     end
  232.     reset_entry
  233.     reset_hidden
  234.     reset_unread
  235.     reset_defeat
  236.   end
  237.   def reset_entry
  238.     for i in 1...$data_enemies.size
  239.       next if $game_system.mbook[i] == nil
  240.       if /^<MB:初期登錄(\d)>/ =~ $data_enemies[i].note
  241.         $game_system.mbook[i].entry = $1.to_i
  242.       else
  243.         $game_system.mbook[i].entry = 0
  244.       end
  245.     end
  246.   end
  247.   def reset_hidden
  248.     for i in 1...$data_enemies.size
  249.       next if $game_system.mbook[i] == nil
  250.       if /^<MB:閱讀禁止>/ =~ $data_enemies[i].note
  251.         $game_system.mbook[i].hidden = true
  252.       else
  253.         $game_system.mbook[i].hidden = false
  254.       end
  255.     end
  256.   end
  257.   def reset_unread
  258.     for i in 1...$data_enemies.size
  259.       next if $game_system.mbook[i] == nil
  260.       $game_system.mbook[i].unread = true
  261.     end
  262.   end
  263.   def reset_defeat
  264.     for i in 1...$data_enemies.size
  265.       next if $game_system.mbook[i] == nil
  266.       $game_system.mbook[i].unread = 0
  267.     end
  268.   end
  269.   def change_entry(id, val)
  270.     $game_system.mbook[id].entry = val
  271.   end
  272.   def get_encounter_number
  273.     count = 0
  274.     for enemy in unrestraint_array
  275.       count += 1 if enemy.encounter
  276.     end
  277.     return count
  278.   end
  279.   def get_encounter_percent
  280.     return cget_encounter_number * 100 / unrestraint_number
  281.   end
  282.   def get_entry_number(entry_type = nil)
  283.     count = 0
  284.     if entry_type
  285.       for enemy in unrestraint_array
  286.         count += 1 if enemy.entry >= entry_type
  287.       end
  288.     else
  289.       for enemy in unrestraint_array
  290.         count += enemy.entry
  291.       end
  292.       count /= 3
  293.     end
  294.     return count
  295.   end
  296.   def get_entry_percent(entry_type = nil)
  297.     return get_entry_number(entry_type) * 100 / unrestraint_number
  298.   end
  299.   def complete_entry(entry_type)
  300.     for enemy in unrestraint_array
  301.       enemy.entry = entry_type
  302.     end
  303.   end
  304.   def clear_entry
  305.     for enemy in unrestraint_array
  306.       enemy.entry = 0
  307.     end
  308.   end
  309. end
  310. class Window_MbookCommand < Window_Selectable
  311.   def initialize
  312.     super(8, 72, 200, 272)
  313.     self.opacity = CAO::MB::NO_WINDOW_GRAPHICS ? 0 : 255
  314.     @enemy = CAO::MB::Commands.unrestraint_array
  315.     @item_max = CAO::MB::Commands.unrestraint_number
  316.     refresh
  317.     self.index = 0
  318.   end
  319.   def create_contents
  320.     self.contents.dispose
  321.     h = [height - 32, $game_system.mbook.size * WLH].max
  322.     self.contents = Bitmap.new(width - 32, h)
  323.   end
  324.   def refresh
  325.     self.contents.clear
  326.     for i in 0...@item_max
  327.       draw_item(i)
  328.     end
  329.   end
  330.   def draw_item(index)
  331.     rect = item_rect(index)
  332.     rect.x += 4
  333.     rect.width -= 8
  334.     self.contents.clear_rect(rect)
  335.     self.contents.font.color = normal_color
  336.     self.contents.draw_text(rect, sprintf("%03d", index + 1))
  337.     if @enemy[index].hidden || @enemy[index].entry == 0
  338.       self.contents.draw_text(rect, "????????????", 2)
  339.     else
  340.       rect.x = 32
  341.       rect.width -= 28
  342.       self.contents.font.color = Color.new(102,204,64) if @enemy[index].unread
  343.       self.contents.draw_text(rect, @enemy[index].data.name, 2)
  344.     end
  345.   end
  346. end
  347. class Window_MbookStatus < Window_Base
  348.   SLIDE_SPEED = 36
  349.   def initialize
  350.     super(216, 72, 320, 272)
  351.     @enemy = CAO::MB::Commands.unrestraint_array[0]
  352.     self.opacity = CAO::MB::NO_WINDOW_GRAPHICS ? 0 : 255
  353.     self.ox = 288
  354.     @page = 1
  355.     @slide_left = false
  356.     @slide_right = false
  357.     refresh
  358.   end
  359.   def create_contents
  360.     self.contents.dispose
  361.     self.contents = Bitmap.new((width - 32) * 3, height - 32)
  362.     if CAO::MB::NO_SYSTEM_FONT
  363.       @back_sprite = Sprite.new
  364.       @back_sprite.bitmap = Cache.system("BackMBookS")
  365.       @back_sprite.x = 216
  366.       @back_sprite.y = 72
  367.       @back_sprite.z = 0
  368.       @back_sprite.ox = 288
  369.     end
  370.   end
  371.   def refresh
  372.     @enemy.unread = false if @enemy.entry > 0
  373.     self.contents.clear_rect(288 * @page, 0, 288, 240)
  374.     case @page
  375.     when 0
  376.       draw_comments
  377.     when 1
  378.       x = 288
  379.       self.contents.font.color = normal_color
  380.       if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:name)
  381.         self.contents.draw_text(x + 4, 0, 280, WLH, @enemy.data.name)
  382.       else
  383.         self.contents.draw_text(x + 4, 0, 280, WLH, "????????")
  384.       end
  385.       draw_enemy_parameter(x, 33)
  386.       unless CAO::MB::NO_SYSTEM_FONT
  387.         self.contents.font.color = system_color
  388.         self.contents.draw_text(x, 168, 160, WLH, CAO::MB::TEXT_STATUS[10])
  389.       end
  390.       draw_drop_item(@enemy.data.drop_item1, x + 24, 192)
  391.       draw_drop_item(@enemy.data.drop_item2, x + 24, 216)
  392.     when 2
  393.       draw_weak_point(576)
  394.     end
  395.   end
  396.   def draw_comments
  397.     return unless CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:come)
  398.     if CAO::MB::COMMENT.has_key?(@enemy.data.id)
  399.       self.contents.font.color = normal_color
  400.       come = CAO::MB::COMMENT[@enemy.data.id]
  401.       for i in 0...come.size
  402.         update_message(come[i].clone, WLH * i)
  403.       end
  404.     end
  405.   end
  406.   def update_message(text, y)
  407.     text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  408.     text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  409.     text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  410.     text.gsub!(/\\\\/)             { "\\" }
  411.     x = 0
  412.     loop do
  413.       c = text.slice!(/./m)
  414.       case c
  415.       when nil
  416.         break
  417.       when "\x01"
  418.         text.sub!(/\[([0-9]+)\]/, "")
  419.         contents.font.color = text_color($1.to_i)
  420.         next
  421.       else
  422.         contents.draw_text(x, y, 40, WLH, c)
  423.         x += contents.text_size(c).width
  424.       end
  425.     end
  426.   end
  427.   def draw_enemy_parameter(x, y)
  428.     params = [  @enemy.data.maxhp, @enemy.data.maxmp,
  429.                  @enemy.data.atk,@enemy.data.def, @enemy.data.spi,
  430.                 @enemy.data.agi, @enemy.data.hit, @enemy.data.eva,  ]
  431.     for i in 0...8
  432.       xx = x + i % 2 * 152
  433.       yy = y + i / 2 * WLH
  434.       unless CAO::MB::NO_SYSTEM_FONT
  435.         self.contents.font.color = system_color
  436.         self.contents.draw_text(xx, yy, 60, WLH, CAO::MB::TEXT_STATUS[i])
  437.       end
  438.       self.contents.font.color = normal_color
  439.       if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:params1)
  440.         self.contents.draw_text(xx + 60, yy, 72, WLH, params[i], 2)
  441.       else
  442.         self.contents.draw_text(xx + 60, yy, 72, WLH, "???", 2)
  443.       end
  444.     end
  445.     unless CAO::MB::NO_SYSTEM_FONT
  446.       self.contents.font.color = system_color
  447.       self.contents.draw_text(x, 135, 60, WLH, CAO::MB::TEXT_STATUS[8])
  448.       self.contents.draw_text(x + 152, 135, 60, WLH, CAO::MB::TEXT_STATUS[9])
  449.     end
  450.     self.contents.font.color = normal_color
  451.     if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:params2)
  452.       self.contents.draw_text(x + 60, 135, 72, WLH, @enemy.data.exp, 2)
  453.       self.contents.draw_text(x + 212, 135, 72, WLH, @enemy.data.gold, 2)
  454.     else
  455.       self.contents.draw_text(x + 60, 135, 72, WLH, "??????", 2)
  456.       self.contents.draw_text(x + 212, 135, 72, WLH, "??????", 2)
  457.     end
  458.   end
  459.   def draw_drop_item(drop_item, x, y)
  460.     case drop_item.kind
  461.     when 0
  462.       item = nil
  463.     when 1
  464.       item = $data_items[drop_item.item_id]
  465.     when 2
  466.       item = $data_weapons[drop_item.weapon_id]
  467.     when 3
  468.       item = $data_armors[drop_item.armor_id]
  469.     end
  470.     self.contents.font.color = normal_color
  471.     if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:drop)
  472.        if item == nil
  473.         self.contents.draw_text(x + 2, y, 230, WLH, "× --------------")
  474.       else
  475.         draw_icon(item.icon_index, x, y)
  476.         self.contents.draw_text(x + 26, y, 230, WLH, item.name)
  477.       end
  478.     else
  479.       self.contents.draw_text(x, y, 230, WLH, "? --------------")
  480.     end
  481.   end
  482.   def draw_weak_point(x)
  483.     unless CAO::MB::NO_SYSTEM_FONT
  484.       self.contents.font.color = system_color
  485.       for i in 0...4
  486.         self.contents.draw_text(x+4, 60*i, 280, WLH, CAO::MB::TEXT_WEAK_POINT[i])
  487.       end
  488.     end
  489.     if CAO::MB::ACCESS_PERMIT[@enemy.entry].include?(:weak)
  490.       draw_element_icon(x + 28, 24)
  491.       draw_state_icon(x + 28, 84)
  492.     else
  493.       self.contents.font.color = normal_color
  494.       for i in 0...4
  495.         self.contents.draw_text(x+36, 60*i+24, 240, WLH, "? ? ? ? ? ? ?")
  496.       end
  497.     end
  498.   end
  499.   def draw_element_icon(x, y)
  500.     count = 0
  501.     for i in 0...CAO::MB::ACTIVE_ELEMENT.size
  502.       if @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT[i]] < 3
  503.         if CAO::MB::ONE_NAME_ELEMENT
  504.           rank = @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT[i]]
  505.           text = $data_system.elements[CAO::MB::ACTIVE_ELEMENT[i]][/./]
  506.           draw_weak_icon(text, x + 26 * count, y, rank)
  507.         else
  508.           icon_index = CAO::MB::ICON_ELEMENT[i]
  509.           rank = @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT[i]]
  510.           draw_weak_icon(icon_index, x + 26 * count, y, rank)
  511.         end
  512.         count += 1
  513.       end
  514.     end
  515.     count = 0
  516.     for i in 0...CAO::MB::ACTIVE_ELEMENT.size
  517.       if @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT[i]] > 3
  518.         if CAO::MB::ONE_NAME_ELEMENT
  519.           rank = @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT[i]]
  520.           text = $data_system.elements[CAO::MB::ACTIVE_ELEMENT[i]][/./]
  521.           draw_weak_icon(text, x + 26 * count, y + 120, rank)
  522.         else
  523.           icon_index = CAO::MB::ICON_ELEMENT[i]
  524.           rank = @enemy.data.element_ranks[CAO::MB::ACTIVE_ELEMENT[i]]
  525.           draw_weak_icon(icon_index, x + 26 * count, y + 120, rank)
  526.         end
  527.         count += 1
  528.       end
  529.     end
  530.   end
  531.   def draw_state_icon(x, y)
  532.     weak_ranks = []
  533.     strong_ranks = []
  534.     for en in CAO::MB::ACTIVE_STATE
  535.       if @enemy.data.state_ranks[en] < 3
  536.         weak_ranks << en
  537.       elsif @enemy.data.state_ranks[en] > 3
  538.         strong_ranks << en
  539.       end
  540.     end
  541.     self.contents.font.color = normal_color
  542.     for i in 0...weak_ranks.size
  543.       icon_index = $data_states[weak_ranks[i]].icon_index
  544.       rank = @enemy.data.state_ranks[weak_ranks[i]] + 6
  545.       draw_weak_icon(icon_index, x + 26 * i, y, rank)
  546.     end
  547.     for i in 0...strong_ranks.size
  548.       icon_index = $data_states[strong_ranks[i]].icon_index
  549.       rank = @enemy.data.state_ranks[strong_ranks[i]] + 6
  550.       draw_weak_icon(icon_index, x + 26 * i, y + 120, rank)
  551.     end
  552.   end
  553.   def draw_weak_icon(icon_index, x, y, rank = 0)
  554.     if icon_index.class == String
  555.       case rank
  556.       when 1
  557.         self.contents.font.color = Color.new(240, 32, 8)
  558.       when 5
  559.         self.contents.font.color = Color.new(48, 128, 248)
  560.       when 6
  561.         self.contents.font.color = Color.new(200, 64, 200)
  562.       else
  563.         self.contents.font.color = normal_color
  564.       end
  565.       self.contents.draw_text(x, y, 24, WLH, icon_index, 1)
  566.     else
  567.       bitmap = Cache.system("Iconset")
  568.       rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  569.       self.contents.blt(x, y, bitmap, rect)
  570.       if CAO::MB::WEAK_PONIT_COLOR
  571.         rect.set((rank - 1) % 6 * 24, (rank - 1) / 6 * 24, 24, 24)
  572.         self.contents.blt(x, y, Cache.system("WeakIcon"), rect)
  573.       end
  574.     end
  575.   end
  576.   def enemy=(enemy_id)
  577.     @enemy = CAO::MB::Commands.unrestraint_array[enemy_id]
  578.     refresh
  579.   end
  580.   def terminate
  581.     super
  582.     @back_sprite.dispose if CAO::MB::NO_SYSTEM_FONT
  583.   end
  584.   def update
  585.     super
  586.     unless @slide_left && @slide_right
  587.       last_index = @page
  588.       if Input.trigger?(Input::RIGHT)
  589.         @page = [@page + 1, 2].min
  590.         @slide_right = @page != last_index
  591.       end
  592.       if Input.trigger?(Input::LEFT)
  593.         @page = [@page - 1, 0].max
  594.         @slide_left = @page != last_index
  595.       end
  596.       if @page != last_index
  597.         Sound.play_cursor
  598.         refresh
  599.       end
  600.     end
  601.     update_page
  602.   end
  603.   def update_page
  604.     if @slide_left
  605.       self.ox -= SLIDE_SPEED
  606.       @back_sprite.ox -= SLIDE_SPEED if CAO::MB::NO_SYSTEM_FONT
  607.       @slide_left = !(self.ox == (288 * @page))
  608.     end
  609.     if @slide_right
  610.       self.ox += SLIDE_SPEED
  611.       @back_sprite.ox += SLIDE_SPEED if CAO::MB::NO_SYSTEM_FONT
  612.       @slide_right = !(self.ox == (288 * @page))
  613.     end
  614.   end
  615. end
  616. class Window_MBookHelp < Window_Base
  617.   include CAO::MB::Commands
  618.   def initialize
  619.     super(8, 352, 528, 56)
  620.     self.opacity = CAO::MB::NO_WINDOW_GRAPHICS ? 0 : 255
  621.     @enemy = unrestraint_array
  622.     @item_max = unrestraint_number
  623.     refresh
  624.   end
  625.   def refresh
  626.     self.contents.clear
  627.     unless CAO::MB::NO_SYSTEM_FONT
  628.       self.contents.font.color = system_color
  629.       self.contents.draw_text(7, 0, 100, WLH, "击败数")
  630.       self.contents.draw_text(147, 0, 30, WLH, "次", 2)
  631.       self.contents.draw_text(193, 0, 70, WLH, "遭遇率")
  632.       self.contents.draw_text(303, 0, 30, WLH, "%", 2)
  633.       self.contents.draw_text(349, 0, 70, WLH, "完成率")
  634.       self.contents.draw_text(459, 0, 30, WLH, "%", 2)
  635.     end
  636.     self.contents.font.color = normal_color
  637.     draw_defeated_number(107, 0, 40, WLH, 1)
  638.     self.contents.draw_text(263, 0, 40, WLH, get_encounter_number, 2)
  639.     text = get_entry_percent(CAO::MB::COMPLETE_NUMBER)
  640.     if text == 100 && CAO::MB::COMPLETE_COLOR
  641.       self.contents.font.color.set(240, 36, 12)
  642.     end
  643.     self.contents.draw_text(419, 0, 40, WLH, text, 2)
  644.   end
  645.   def draw_defeated_number(x, y, w, h, enemy_id)
  646.     self.contents.clear_rect(x, y, w, h)
  647.     self.contents.font.color = normal_color
  648.     self.contents.draw_text(x, y, w, h, @enemy[enemy_id].defeat, 2)
  649.   end
  650. end
  651. class Scene_MonsterBook < Scene_Base
  652.   def initialize(menu_index = -1)
  653.     @menu_index = menu_index
  654.   end
  655.   def start
  656.     super
  657.     create_menu_background
  658.     create_title_window
  659.     create_command_window
  660.     create_graphic_sprite
  661.     @status_window = Window_MbookStatus.new
  662.     @help_window = Window_MBookHelp.new
  663.   end
  664.   def terminate
  665.     super
  666.     dispose_menu_background
  667.     @command_window.dispose
  668.     @title_window.dispose
  669.     @status_window.dispose
  670.     @help_window.dispose
  671.     @graphic_sprite.dispose
  672.   end
  673.   def update
  674.     super
  675.     if Input.trigger?(Input::C)
  676.       Sound.play_decision
  677.       draw_enemy_graphics
  678.       @graphic_sprite.visible ^= true
  679.       @command_window.active ^= true
  680.     end
  681.     return unless @command_window.active
  682.     current_id = @command_window.index
  683.     @command_window.update
  684.     @status_window.update
  685.     if Input.trigger?(Input::B)
  686.       Sound.play_cancel
  687.       $scene = @menu_index < 0 ? Scene_Map.new : Scene_Menu.new(@menu_index)
  688.     end
  689.     if @command_window.index != current_id
  690.       @status_window.enemy = @command_window.index
  691.       @help_window.draw_defeated_number(107, 0, 40, 24, @command_window.index)
  692.     end
  693.   end
  694. if CAO::MB::NO_WINDOW_GRAPHICS
  695.   def create_menu_background
  696.     @menuback_sprite = Sprite.new
  697.     @menuback_sprite.bitmap = Cache.system("BackMBook")
  698.     @menuback_sprite.z = 1
  699.     update_menu_background
  700.   end
  701. end
  702.   def create_title_window
  703.     @title_window = Window_Base.new(0, 8, 180, 56)
  704.     @title_window.opacity = CAO::MB::NO_WINDOW_GRAPHICS ? 0 : 255
  705.     unless CAO::MB::NO_SYSTEM_FONT
  706.       @title_window.contents.font.color = @title_window.normal_color
  707.       @title_window.contents.draw_text(0, 0, 148, 24, "怪物图鉴", 1)
  708.     end
  709.   end
  710.   def create_command_window
  711.     @command_window = Window_MbookCommand.new
  712.     @command_window.index = 0
  713.   end
  714.   def create_graphic_sprite
  715.     @graphic_sprite = Sprite.new
  716.     @graphic_sprite.visible = false
  717.     @graphic_sprite.bitmap = Bitmap.new(512, 384)
  718.     @graphic_sprite.x = 16
  719.     @graphic_sprite.y = 16
  720.     @graphic_sprite.z = 200
  721.   end
  722.   def draw_enemy_graphics
  723.     enemy = CAO::MB::Commands.unrestraint_array[@command_window.index]
  724.     @graphic_sprite.bitmap.clear
  725.     @graphic_sprite.bitmap.fill_rect(0, 0, 512, 384, Color.new(0, 0, 0, 128))
  726.     bitmap = Cache.battler(enemy.data.battler_name, 0)
  727.     if CAO::MB::ACCESS_PERMIT[enemy.entry].include?(:graphics)
  728.       @graphic_sprite.color = Color.new(0, 0, 0, 0)
  729.     else
  730.       @graphic_sprite.color = Color.new(0, 0, 0)
  731.     end
  732.     x = (512 - bitmap.width) / 2
  733.     y = (384 - bitmap.height) / 2
  734.     @graphic_sprite.bitmap.blt( x, y, bitmap, bitmap.rect)
  735.   end
  736. end
  737. class Scene_Battle < Scene_Base
  738.   alias :_cao_battle_end_mbook :battle_end
  739.   def battle_end(result)
  740.     if result != 2 || CAO::MB::AUTO_ENTRY_LOSE
  741.       for en in $game_troop.members
  742.         enemy = CAO::MB::Commands.unrestraint_enemy(en.enemy_id)
  743.         enemy.defeat += 1 if en.dead?
  744.         if CAO::MB::AUTO_ENTRY && enemy.entry < 2
  745.           if CAO::MB::AUTO_ENTRY_DEFEATED
  746.             enemy.entry = 1 if en.dead?
  747.           else
  748.             enemy.entry = en.dead? ? 2 : 1
  749.           end
  750.         end
  751.       end
  752.     end
  753.     _cao_battle_end_mbook(result)
  754.   end
  755.   alias :_cao_display_action_effects_mbook :display_action_effects
  756.   def display_action_effects(target, obj = nil)
  757.     if obj && /^<MB:解析>/ =~ obj.note
  758.       unless target.skipped
  759.         line_number = @message_window.line_number
  760.         wait(5)
  761.         display_critical(target, obj)
  762.         display_damage(target, obj)
  763.         display_state_changes(target, obj)
  764.         if line_number == @message_window.line_number
  765.           $game_system.mbook[target.enemy_id].entry = 3
  766.           @message_window.add_instant_text("#{target.name}を解析した。")
  767.         end
  768.         if line_number != @message_window.line_number
  769.           wait(30)
  770.         end
  771.         @message_window.back_to(line_number)
  772.       end
  773.     else
  774.       _cao_display_action_effects_mbook(target, obj)
  775.     end
  776.   end
  777. end
复制代码

点评

是怪物图鉴的脚本吧?出错的提示怎么写的?  发表于 2012-2-7 21:01
脚本中的h = [height - 32, $game_system.mbook.size * WLH].max这句话出错了.  发表于 2012-2-7 11:33
出什么错了?  发表于 2012-2-7 09:30

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
2
发表于 2012-2-8 11:34:22 | 只看该作者
- -b有可能是你用了过去的存档,出错那行上面加个$game_system.mbook = [] if $game_system.mbook.nil?即可解决
ps:遇到这种问题最好把出错信息附上,不然人家只能猜测...

点评

跟你说要出错信息了- -b,我是猜的...  发表于 2012-2-8 22:31
好像不行吧。出错了啊。。。。  发表于 2012-2-8 19:22
好歹当年也当过大魔王过,orz
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
-30
在线时间
0 小时
注册时间
2012-2-8
帖子
4
3
发表于 2012-2-8 17:22:32 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
7 小时
注册时间
2012-2-8
帖子
4
4
发表于 2012-2-9 13:21:56 | 只看该作者
额哪用得着这么长的脚本其实做几个公共事件再弄物品魔物图签把公共事件放上去就OK了明明用不着脚本的额
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 12:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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