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

Project1

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

[旧帖重发]◆发布◆魔物图鉴[BY 110]

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
265
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

跳转到指定楼层
1
发表于 2005-10-22 00:16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

  1. #魔物図鑑
  2. #
  3. #エネミーの遭遇情報は、戦闘終了時(経験値などを獲得する所)で追加されます。
  4. #よって、敵から逃げた場合や負けイベントでの戦闘敗北などでは
  5. #図鑑に登録されません。
  6. #このタイミングを変えたい場合は各自書き換えて下さい。
  7. #(class Scene_Battle の start_phase5 で追加してます。)
  8. #
  9. #また、所々「アナライズ」という単語がありますが、
  10. #現在、この魔物辞典だけでは機能しておりません。(自ゲームでの名残)
  11. #Window_MonsterBook_Info の DROP_ITEM_NEED_ANALYZE が true になっていると
  12. #ドロップアイテムが表示されなくなりますので、通常は false にしておいて下さい。
  13. #
  14. #注意
  15. #このまま使うと、データベースのトループの1番に
  16. #何も設定していないと、エラー吐きます。
  17. #対処策としては
  18. #1.素直にデータベースのトループの1番に何でもいいから設定する。
  19. #2.Game_Enemy_Book の 「super(1, 1)#ダミー」 の左側の数字の部分を
  20. #  存在するトループIDに書き換える。
  21. #のどちらかになります。
  22. #
  23. #2005.2.6 機能追加
  24. #図鑑完成度の表示機能を追加
  25. #SHOW_COMPLETE_TYPE で設定できます。
  26. #イベントコマンドの「スクリプト」で
  27. #$game_party.enemy_book_max で図鑑の総魔物数(最大数)
  28. #$game_party.enemy_book_now で図鑑の現在登録数(現在数)
  29. #$game_party.complete_percentage で図鑑の完成率(小数点切捨て)
  30. #を取得できます。
  31. #
  32. #2005.2.17
  33. #complete_percentageのメソッド名を
  34. #enemy_book_complete_percentageに変更(他の図鑑と区別できるように)
  35. #イベントコマンドの「スクリプト」で最大数等の取得を短縮できるようになりました。
  36. #enemy_book_max で図鑑の総魔物数(最大数)
  37. #enemy_book_now で図鑑の現在登録数(現在数)
  38. #enemy_book_compで図鑑の完成率(小数点切捨て)
  39. #
  40. #2005.2.18 バグ修正
  41. #complete_percentageのメソッド名を
  42. #enemy_book_complete_percentageに変更したのに
  43. #complete_percentageって呼び出してました。(単なる書き換え漏れですね)
  44. #
  45. #2005.7.4 機能追加
  46. #コメント機能に対応。
  47. #全体的に色々いじりました。
  48. #
  49. #2005.7.4 バグ修正
  50. #細かいバグを修正。


  51. module Enemy_Book_Config
  52.   #ドロップアイテム表示にアナライズが必要かどうか
  53.   DROP_ITEM_NEED_ANALYZE = false
  54.   #回避修正の名前
  55.   EVA_NAME = "回避"              
  56.   #図鑑完成率の表示方法
  57.   #0:表示なし 1:現在数/最大数 2:%表示 3:両方
  58.   SHOW_COMPLETE_TYPE = 3         
  59.   #コメント機能を使うかどうか(要・コメント追加スクリプト導入)
  60.   COMMENT_SYSTEM = false
  61. end

  62. class Game_Temp
  63.   attr_accessor :enemy_book_data
  64.   alias temp_enemy_book_data_initialize initialize
  65.   def initialize
  66.     temp_enemy_book_data_initialize
  67.     @enemy_book_data = Data_MonsterBook.new
  68.   end
  69. end

  70. class Game_Party
  71.   attr_accessor :enemy_info               # 出会った敵情報(図鑑用)
  72.   #--------------------------------------------------------------------------
  73.   # ● オブジェクト初期化
  74.   #--------------------------------------------------------------------------
  75.   alias book_info_initialize initialize
  76.   def initialize
  77.     book_info_initialize
  78.     @enemy_info = {}
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● エネミー情報の追加(図鑑用)
  82.   #     type : 通常遭遇かアナライズか 0:通常 1:アナライズ -1:情報削除
  83.   #     0:無遭遇 1:遭遇済 2:アナライズ済
  84.   #--------------------------------------------------------------------------
  85.   def add_enemy_info(enemy_id, type = 0)
  86.     case type
  87.     when 0
  88.       if @enemy_info[enemy_id] == 2
  89.         return false
  90.       end
  91.       @enemy_info[enemy_id] = 1
  92.     when 1
  93.       @enemy_info[enemy_id] = 2
  94.     when -1
  95.       @enemy_info[enemy_id] = 0
  96.     end
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 魔物図鑑の最大登録数を取得
  100.   #--------------------------------------------------------------------------
  101.   def enemy_book_max
  102.     return $game_temp.enemy_book_data.id_data.size - 1
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 魔物図鑑の現在登録数を取得
  106.   #--------------------------------------------------------------------------
  107.   def enemy_book_now
  108.     now_enemy_info = @enemy_info.keys
  109.     # 登録無視の属性IDを取得
  110.     no_add = $game_temp.enemy_book_data.no_add_element
  111.     new_enemy_info = []
  112.     for i in now_enemy_info
  113.       enemy = $data_enemies[i]
  114.       next if enemy.name == ""
  115.       if enemy.element_ranks[no_add] == 1
  116.         next
  117.       end
  118.       new_enemy_info.push(enemy.id)
  119.     end
  120.     return new_enemy_info.size
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 魔物図鑑の完成率を取得
  124.   #--------------------------------------------------------------------------
  125.   def enemy_book_complete_percentage
  126.     e_max = enemy_book_max.to_f
  127.     e_now = enemy_book_now.to_f
  128.     comp = e_now / e_max * 100
  129.     return comp.truncate
  130.   end
  131. end

  132. class Interpreter
  133.   def enemy_book_max
  134.     return $game_party.enemy_book_max
  135.   end
  136.   def enemy_book_now
  137.     return $game_party.enemy_book_now
  138.   end
  139.   def enemy_book_comp
  140.     return $game_party.enemy_book_complete_percentage
  141.   end
  142. end

  143. class Scene_Battle
  144.   alias add_enemy_info_start_phase5 start_phase5
  145.   def start_phase5
  146.     for enemy in $game_troop.enemies
  147.       # エネミーが隠れ状態でない場合
  148.       unless enemy.hidden
  149.         # 敵遭遇情報追加
  150.         $game_party.add_enemy_info(enemy.id, 0)
  151.       end
  152.     end
  153.     add_enemy_info_start_phase5
  154.   end
  155. end

  156. class Window_Base < Window
  157.   #--------------------------------------------------------------------------
  158.   # ● エネミーの戦闘後獲得アイテムの描画
  159.   #--------------------------------------------------------------------------
  160.   def draw_enemy_drop_item(enemy, x, y)
  161.     self.contents.font.color = normal_color
  162.     treasures = []
  163.     if enemy.item_id > 0
  164.       treasures.push($data_items[enemy.item_id])
  165.     end
  166.     if enemy.weapon_id > 0
  167.       treasures.push($data_weapons[enemy.weapon_id])
  168.     end
  169.     if enemy.armor_id > 0
  170.       treasures.push($data_armors[enemy.armor_id])
  171.     end
  172.     # 現状ではとりあえず1つのみ描画
  173.     if treasures.size > 0
  174.       item = treasures[0]
  175.       bitmap = RPG::Cache.icon(item.icon_name)
  176.       opacity = 255
  177.       self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  178.       name = treasures[0].name
  179.     else
  180.       self.contents.font.color = disabled_color
  181.       name = "No Item"
  182.     end
  183.     self.contents.draw_text(x+28, y, 212, 32, name)
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● エネミーの図鑑IDの描画
  187.   #--------------------------------------------------------------------------
  188.   def draw_enemy_book_id(enemy, x, y)
  189.     self.contents.font.color = normal_color
  190.     id = $game_temp.enemy_book_data.id_data.index(enemy.id)
  191.     self.contents.draw_text(x, y, 32, 32, id.to_s)
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● エネミーの名前の描画
  195.   #     enemy : エネミー
  196.   #     x     : 描画先 X 座標
  197.   #     y     : 描画先 Y 座標
  198.   #--------------------------------------------------------------------------
  199.   def draw_enemy_name(enemy, x, y)
  200.     self.contents.font.color = normal_color
  201.     self.contents.draw_text(x, y, 152, 32, enemy.name)
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● エネミーグラフィックの描画(アナライズ)
  205.   #     enemy : エネミー
  206.   #     x     : 描画先 X 座標
  207.   #     y     : 描画先 Y 座標
  208.   #--------------------------------------------------------------------------
  209.   def draw_enemy_graphic(enemy, x, y, opacity = 255)
  210.     bitmap = RPG::Cache.battler(enemy.battler_name, enemy.battler_hue)
  211.     cw = bitmap.width
  212.     ch = bitmap.height
  213.     src_rect = Rect.new(0, 0, cw, ch)
  214.     x = x + (cw / 2 - x) if cw / 2 > x
  215.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ● エネミーの獲得EXPの描画
  219.   #     enemy : エネミー
  220.   #     x     : 描画先 X 座標
  221.   #     y     : 描画先 Y 座標
  222.   #--------------------------------------------------------------------------
  223.   def draw_enemy_exp(enemy, x, y)
  224.     self.contents.font.color = system_color
  225.     self.contents.draw_text(x, y, 120, 32, "EXP")
  226.     self.contents.font.color = normal_color
  227.     self.contents.draw_text(x + 120, y, 36, 32, enemy.exp.to_s, 2)
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● エネミーの獲得GOLDの描画
  231.   #     enemy : エネミー
  232.   #     x     : 描画先 X 座標
  233.   #     y     : 描画先 Y 座標
  234.   #--------------------------------------------------------------------------
  235.   def draw_enemy_gold(enemy, x, y)
  236.     self.contents.font.color = system_color
  237.     self.contents.draw_text(x, y, 120, 32, $data_system.words.gold)
  238.     self.contents.font.color = normal_color
  239.     self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
  240.   end
  241. end

  242. class Game_Enemy_Book < Game_Enemy
  243.   #--------------------------------------------------------------------------
  244.   # ● オブジェクト初期化
  245.   #--------------------------------------------------------------------------
  246.   def initialize(enemy_id)
  247.     super(2, 1)#ダミー
  248.     @enemy_id = enemy_id
  249.     enemy = $data_enemies[@enemy_id]
  250.     @battler_name = enemy.battler_name
  251.     @battler_hue = enemy.battler_hue
  252.     @hp = maxhp
  253.     @sp = maxsp
  254.   end
  255. end

  256. class Data_MonsterBook
  257.   attr_reader :id_data
  258.   #--------------------------------------------------------------------------
  259.   # ● オブジェクト初期化
  260.   #--------------------------------------------------------------------------
  261.   def initialize
  262.     @id_data = enemy_book_id_set
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 図鑑用登録無視属性取得
  266.   #--------------------------------------------------------------------------
  267.   def no_add_element
  268.     no_add = 0
  269.     # 登録無視の属性IDを取得
  270.     for i in 1...$data_system.elements.size
  271.       if $data_system.elements[i] =~ /図鑑登録無効/
  272.         no_add = i
  273.         break
  274.       end
  275.     end
  276.     return no_add
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 図鑑用敵ID設定
  280.   #--------------------------------------------------------------------------
  281.   def enemy_book_id_set
  282.     data = [0]
  283.     no_add = no_add_element
  284.     # 登録無視の属性IDを取得
  285.     for i in 1...$data_enemies.size
  286.       enemy = $data_enemies[i]
  287.       next if enemy.name == ""
  288.       if enemy.element_ranks[no_add] == 1
  289.         next
  290.       end
  291.       data.push(enemy.id)
  292.     end
  293.     return data
  294.   end
  295. end


  296. class Window_MonsterBook < Window_Selectable
  297.   attr_reader   :data
  298.   #--------------------------------------------------------------------------
  299.   # ● オブジェクト初期化
  300.   #--------------------------------------------------------------------------
  301.   def initialize(index=0)
  302.     super(0, 64, 640, 416)
  303.     @column_max = 2
  304.     @book_data = $game_temp.enemy_book_data
  305.     @data = @book_data.id_data.dup
  306.     @data.shift
  307.     #@data.sort!
  308.     @item_max = @data.size
  309.     self.index = 0
  310.     refresh if @item_max > 0
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ● 遭遇データを取得
  314.   #--------------------------------------------------------------------------
  315.   def data_set
  316.     data = $game_party.enemy_info.keys
  317.     data.sort!
  318.     newdata = []
  319.     for i in data
  320.       next if $game_party.enemy_info[i] == 0
  321.       # 図鑑登録無視を考慮
  322.       if book_id(i) != nil
  323.         newdata.push(i)
  324.       end
  325.     end
  326.     return newdata
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 表示許可取得
  330.   #--------------------------------------------------------------------------
  331.   def show?(id)
  332.     if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil
  333.       return false
  334.     else
  335.       return true
  336.     end
  337.   end



  338. #--------------------------------------------------------------------------
  339.   # ● 図鑑用ID取得
  340.   #--------------------------------------------------------------------------
  341.   def book_id(id)
  342.     return @book_data.index(id)
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ● エネミー取得
  346.   #--------------------------------------------------------------------------
  347.   def item
  348.     return @data[self.index]
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● リフレッシュ
  352.   #--------------------------------------------------------------------------
  353.   def refresh
  354.     if self.contents != nil
  355.       self.contents.dispose
  356.       self.contents = nil
  357.     end
  358.     self.contents = Bitmap.new(width - 32, row_max * 32)
  359.     #項目数が 0 でなければビットマップを作成し、全項目を描画
  360.     if @item_max > 0
  361.       for i in 0...@item_max
  362.        draw_item(i)
  363.       end
  364.     end
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● 項目の描画
  368.   #     index : 項目番号
  369.   #--------------------------------------------------------------------------
  370.   def draw_item(index)
  371.     enemy = $data_enemies[@data[index]]
  372.     return if enemy == nil
  373.     x = 4 + index % 2 * (288 + 32)
  374.     y = index / 2 * 32
  375.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  376.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  377.     self.contents.font.color = normal_color
  378.     draw_enemy_book_id(enemy, x, y)
  379.     if show?(enemy.id)
  380.       self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
  381.     else
  382.       self.contents.draw_text(x + 28+16, y, 212, 32, "-----", 0)
  383.       return
  384.     end
  385.     if analyze?(@data[index])
  386.       self.contents.font.color = text_color(3)
  387.       self.contents.draw_text(x + 256, y, 24, 32, "済", 2)
  388.     end
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● アナライズ済かどうか
  392.   #--------------------------------------------------------------------------
  393.   def analyze?(enemy_id)
  394.     if $game_party.enemy_info[enemy_id] == 2
  395.       return true
  396.     else
  397.       return false
  398.     end
  399.   end
  400. end


  401. class Window_MonsterBook_Info < Window_Base
  402.   #--------------------------------------------------------------------------
  403.   # ● オブジェクト初期化
  404.   #--------------------------------------------------------------------------
  405.   def initialize
  406.     super(0, 0+64, 640, 480-64)
  407.     self.contents = Bitmap.new(width - 32, height - 32)
  408.   end
  409.   #--------------------------------------------------------------------------
  410.   # ● リフレッシュ
  411.   #--------------------------------------------------------------------------
  412.   def refresh(enemy_id)
  413.     self.contents.clear
  414.     self.contents.font.size = 22
  415.     enemy = Game_Enemy_Book.new(enemy_id)
  416.     draw_enemy_graphic(enemy, 96, 240+48+64, 200)
  417.     draw_enemy_book_id(enemy, 4, 0)
  418.     draw_enemy_name(enemy, 48, 0)
  419.     draw_actor_hp(enemy, 288, 0)
  420.     draw_actor_sp(enemy, 288+160, 0)
  421.     draw_actor_parameter(enemy, 288    ,  32, 0)
  422.     self.contents.font.color = system_color
  423.     self.contents.draw_text(288+160, 32, 120, 32, Enemy_Book_Config::EVA_NAME)
  424.     self.contents.font.color = normal_color
  425.     self.contents.draw_text(288+160 + 120, 32, 36, 32, enemy.eva.to_s, 2)
  426.     draw_actor_parameter(enemy, 288    ,  64, 3)
  427.     draw_actor_parameter(enemy, 288+160,  64, 4)
  428.     draw_actor_parameter(enemy, 288    ,  96, 5)
  429.     draw_actor_parameter(enemy, 288+160,  96, 6)
  430.     draw_actor_parameter(enemy, 288    , 128, 1)
  431.     draw_actor_parameter(enemy, 288+160, 128, 2)
  432.     draw_enemy_exp(enemy, 288, 160)
  433.     draw_enemy_gold(enemy, 288+160, 160)
  434.     if analyze?(enemy.id) or !Enemy_Book_Config::DROP_ITEM_NEED_ANALYZE
  435.       self.contents.draw_text(288, 192, 96, 32, "Drop Item")
  436.       draw_enemy_drop_item(enemy, 288+96+4, 192)
  437.       self.contents.font.color = normal_color
  438.       #draw_element_guard(enemy, 320-32, 160-16+96)
  439.     end
  440.   end
  441.   #--------------------------------------------------------------------------
  442.   # ● アナライズ済かどうか
  443.   #--------------------------------------------------------------------------
  444.   def analyze?(enemy_id)
  445.     if $game_party.enemy_info[enemy_id] == 2
  446.       return true
  447.     else
  448.       return false
  449.     end
  450.   end
  451. end


  452. class Scene_MonsterBook
  453.   #--------------------------------------------------------------------------
  454.   # ● メイン処理
  455.   #--------------------------------------------------------------------------
  456.   def main
  457.     $game_temp.enemy_book_data = Data_MonsterBook.new
  458.     # ウィンドウを作成
  459.     @title_window = Window_Base.new(0, 0, 640, 64)
  460.     @title_window.contents = Bitmap.new(640 - 32, 64 - 32)
  461.     @title_window.contents.draw_text(4, 0, 320, 32, "魔物図鑑", 0)
  462.     if Enemy_Book_Config::SHOW_COMPLETE_TYPE != 0
  463.       case Enemy_Book_Config::SHOW_COMPLETE_TYPE
  464.       when 1
  465.         e_now = $game_party.enemy_book_now
  466.         e_max = $game_party.enemy_book_max
  467.         text = e_now.to_s + "/" + e_max.to_s
  468.       when 2
  469.         comp = $game_party.enemy_book_complete_percentage
  470.         text = comp.to_s + "%"
  471.       when 3
  472.         e_now = $game_party.enemy_book_now
  473.         e_max = $game_party.enemy_book_max
  474.         comp = $game_party.enemy_book_complete_percentage
  475.         text = e_now.to_s + "/" + e_max.to_s + " " + comp.to_s + "%"
  476.       end
  477.       if text != nil
  478.         @title_window.contents.draw_text(320, 0, 288, 32,  text, 2)
  479.       end
  480.     end
  481.     @main_window = Window_MonsterBook.new
  482.     @main_window.active = true
  483.     # インフォウィンドウを作成 (不可視・非アクティブに設定)
  484.     @info_window = Window_MonsterBook_Info.new
  485.     @info_window.z = 110
  486.     @info_window.visible = false
  487.     @info_window.active = false
  488.     @visible_index = 0
  489.     if Enemy_Book_Config::COMMENT_SYSTEM
  490.       # コメントウィンドウを作成 (不可視・非アクティブに設定)
  491.       @comment_window = Window_Monster_Book_Comment.new
  492.       @comment_window.z = 120
  493.       @comment_window.visible = false
  494.       @comment_on = false # コメントフラグ
  495.     end
  496.     # トランジション実行
  497.     Graphics.transition
  498.     # メインループ
  499.     loop do
  500.       # ゲーム画面を更新
  501.       Graphics.update
  502.       # 入力情報を更新
  503.       Input.update
  504.       # フレーム更新
  505.       update
  506.       # 画面が切り替わったらループを中断
  507.       if $scene != self
  508.         break
  509.       end
  510.     end
  511.     # トランジション準備
  512.     Graphics.freeze
  513.     # ウィンドウを解放
  514.     @main_window.dispose
  515.     @info_window.dispose
  516.     @title_window.dispose
  517.     @comment_window.dispose if @comment_window != nil
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● フレーム更新
  521.   #--------------------------------------------------------------------------
  522.   def update
  523.     # ウィンドウを更新
  524.     @main_window.update
  525.     @info_window.update
  526.     if @info_window.active
  527.       update_info
  528.       return
  529.     end
  530.     # メインウィンドウがアクティブの場合: update_target を呼ぶ
  531.     if @main_window.active
  532.       update_main
  533.       return
  534.     end
  535.   end
  536.   #--------------------------------------------------------------------------
  537.   # ● フレーム更新 (メインウィンドウがアクティブの場合)
  538.   #--------------------------------------------------------------------------
  539.   def update_main
  540.     # B ボタンが押された場合
  541.     if Input.trigger?(Input::B)
  542.       # キャンセル SE を演奏
  543.       $game_system.se_play($data_system.cancel_se)
  544.       $scene = Scene_Map.new
  545.       return
  546.     end
  547.     # C ボタンが押された場合
  548.     if Input.trigger?(Input::C)
  549.       if @main_window.item == nil or @main_window.show?(@main_window.item) == false
  550.         # ブザー SE を演奏
  551.         $game_system.se_play($data_system.buzzer_se)
  552.         return
  553.       end
  554.       # 決定 SE を演奏
  555.       $game_system.se_play($data_system.decision_se)
  556.       @main_window.active = false
  557.       @info_window.active = true
  558.       @info_window.visible = true
  559.       @visible_index = @main_window.index
  560.       @info_window.refresh(@main_window.item)
  561.       if @comment_window != nil
  562.         @comment_window.refresh(@main_window.item)
  563.         if @comment_on
  564.           @comment_window.visible = true
  565.         else
  566.           @comment_window.visible = false
  567.         end
  568.       end
  569.       return
  570.     end
  571.   end
  572.   #--------------------------------------------------------------------------
  573.   # ● フレーム更新 (インフォウィンドウがアクティブの場合)
  574.   #--------------------------------------------------------------------------
  575.   def update_info
  576.     # B ボタンが押された場合
  577.     if Input.trigger?(Input::B)
  578.       # キャンセル SE を演奏
  579.       $game_system.se_play($data_system.cancel_se)
  580.       @main_window.active = true
  581.       @info_window.active = false
  582.       @info_window.visible = false
  583.       @comment_window.visible = false if @comment_window != nil
  584.       return
  585.     end
  586.     # C ボタンが押された場合
  587.     if Input.trigger?(Input::C)
  588.       if @comment_window != nil
  589.         # 決定 SE を演奏
  590.         $game_system.se_play($data_system.decision_se)
  591.         if @comment_on
  592.           @comment_on = false
  593.           @comment_window.visible = false
  594.         else
  595.           @comment_on = true
  596.           @comment_window.visible = true
  597.         end
  598.         return
  599.       end
  600.     end
  601.     if Input.trigger?(Input::L)
  602.       # 決定 SE を演奏
  603.       $game_system.se_play($data_system.decision_se)
  604.       loop_end = false
  605.       while loop_end == false
  606.         if @visible_index != 0
  607.           @visible_index -= 1
  608.         else
  609.           @visible_index = @main_window.data.size - 1
  610.         end
  611.         loop_end = true if @main_window.show?(@main_window.data[@visible_index])
  612.       end
  613.       id = @main_window.data[@visible_index]
  614.       @info_window.refresh(id)
  615.       @comment_window.refresh(id) if @comment_window != nil
  616.       return
  617.     end
  618.     if Input.trigger?(Input::R)
  619.       # 決定 SE を演奏
  620.       $game_system.se_play($data_system.decision_se)
  621.       loop_end = false
  622.       while loop_end == false
  623.         if @visible_index != @main_window.data.size - 1
  624.           @visible_index += 1
  625.         else
  626.           @visible_index = 0
  627.         end
  628.         loop_end = true if @main_window.show?(@main_window.data[@visible_index])
  629.       end
  630.       id = @main_window.data[@visible_index]
  631.       @info_window.refresh(id)
  632.       @comment_window.refresh(id) if @comment_window != nil
  633.       return
  634.     end
  635.   end
  636. end

复制代码


使用方法:

Scene_Debugより下、Mainより上に貼り付けて下さい。
あとは、イベントコマンドの「スクリプト」で
$scene = Scene_MonsterBook.new
で魔物図鑑のシーンに移ります。
魔物図鑑のIDはデータベースの並び順です。
名前が設定されていない敵と
「図鑑登録無効」の属性がAの敵は
図鑑に登録されません。

脚本编辑器

在Scene_Debug下面,Main上面贴上。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……

Lv2.观梦者

梦石
0
星屑
265
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

2
 楼主| 发表于 2005-10-22 00:16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

  1. #魔物図鑑
  2. #
  3. #エネミーの遭遇情報は、戦闘終了時(経験値などを獲得する所)で追加されます。
  4. #よって、敵から逃げた場合や負けイベントでの戦闘敗北などでは
  5. #図鑑に登録されません。
  6. #このタイミングを変えたい場合は各自書き換えて下さい。
  7. #(class Scene_Battle の start_phase5 で追加してます。)
  8. #
  9. #また、所々「アナライズ」という単語がありますが、
  10. #現在、この魔物辞典だけでは機能しておりません。(自ゲームでの名残)
  11. #Window_MonsterBook_Info の DROP_ITEM_NEED_ANALYZE が true になっていると
  12. #ドロップアイテムが表示されなくなりますので、通常は false にしておいて下さい。
  13. #
  14. #注意
  15. #このまま使うと、データベースのトループの1番に
  16. #何も設定していないと、エラー吐きます。
  17. #対処策としては
  18. #1.素直にデータベースのトループの1番に何でもいいから設定する。
  19. #2.Game_Enemy_Book の 「super(1, 1)#ダミー」 の左側の数字の部分を
  20. #  存在するトループIDに書き換える。
  21. #のどちらかになります。
  22. #
  23. #2005.2.6 機能追加
  24. #図鑑完成度の表示機能を追加
  25. #SHOW_COMPLETE_TYPE で設定できます。
  26. #イベントコマンドの「スクリプト」で
  27. #$game_party.enemy_book_max で図鑑の総魔物数(最大数)
  28. #$game_party.enemy_book_now で図鑑の現在登録数(現在数)
  29. #$game_party.complete_percentage で図鑑の完成率(小数点切捨て)
  30. #を取得できます。
  31. #
  32. #2005.2.17
  33. #complete_percentageのメソッド名を
  34. #enemy_book_complete_percentageに変更(他の図鑑と区別できるように)
  35. #イベントコマンドの「スクリプト」で最大数等の取得を短縮できるようになりました。
  36. #enemy_book_max で図鑑の総魔物数(最大数)
  37. #enemy_book_now で図鑑の現在登録数(現在数)
  38. #enemy_book_compで図鑑の完成率(小数点切捨て)
  39. #
  40. #2005.2.18 バグ修正
  41. #complete_percentageのメソッド名を
  42. #enemy_book_complete_percentageに変更したのに
  43. #complete_percentageって呼び出してました。(単なる書き換え漏れですね)
  44. #
  45. #2005.7.4 機能追加
  46. #コメント機能に対応。
  47. #全体的に色々いじりました。
  48. #
  49. #2005.7.4 バグ修正
  50. #細かいバグを修正。


  51. module Enemy_Book_Config
  52.   #ドロップアイテム表示にアナライズが必要かどうか
  53.   DROP_ITEM_NEED_ANALYZE = false
  54.   #回避修正の名前
  55.   EVA_NAME = "回避"              
  56.   #図鑑完成率の表示方法
  57.   #0:表示なし 1:現在数/最大数 2:%表示 3:両方
  58.   SHOW_COMPLETE_TYPE = 3         
  59.   #コメント機能を使うかどうか(要・コメント追加スクリプト導入)
  60.   COMMENT_SYSTEM = false
  61. end

  62. class Game_Temp
  63.   attr_accessor :enemy_book_data
  64.   alias temp_enemy_book_data_initialize initialize
  65.   def initialize
  66.     temp_enemy_book_data_initialize
  67.     @enemy_book_data = Data_MonsterBook.new
  68.   end
  69. end

  70. class Game_Party
  71.   attr_accessor :enemy_info               # 出会った敵情報(図鑑用)
  72.   #--------------------------------------------------------------------------
  73.   # ● オブジェクト初期化
  74.   #--------------------------------------------------------------------------
  75.   alias book_info_initialize initialize
  76.   def initialize
  77.     book_info_initialize
  78.     @enemy_info = {}
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● エネミー情報の追加(図鑑用)
  82.   #     type : 通常遭遇かアナライズか 0:通常 1:アナライズ -1:情報削除
  83.   #     0:無遭遇 1:遭遇済 2:アナライズ済
  84.   #--------------------------------------------------------------------------
  85.   def add_enemy_info(enemy_id, type = 0)
  86.     case type
  87.     when 0
  88.       if @enemy_info[enemy_id] == 2
  89.         return false
  90.       end
  91.       @enemy_info[enemy_id] = 1
  92.     when 1
  93.       @enemy_info[enemy_id] = 2
  94.     when -1
  95.       @enemy_info[enemy_id] = 0
  96.     end
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 魔物図鑑の最大登録数を取得
  100.   #--------------------------------------------------------------------------
  101.   def enemy_book_max
  102.     return $game_temp.enemy_book_data.id_data.size - 1
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 魔物図鑑の現在登録数を取得
  106.   #--------------------------------------------------------------------------
  107.   def enemy_book_now
  108.     now_enemy_info = @enemy_info.keys
  109.     # 登録無視の属性IDを取得
  110.     no_add = $game_temp.enemy_book_data.no_add_element
  111.     new_enemy_info = []
  112.     for i in now_enemy_info
  113.       enemy = $data_enemies[i]
  114.       next if enemy.name == ""
  115.       if enemy.element_ranks[no_add] == 1
  116.         next
  117.       end
  118.       new_enemy_info.push(enemy.id)
  119.     end
  120.     return new_enemy_info.size
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 魔物図鑑の完成率を取得
  124.   #--------------------------------------------------------------------------
  125.   def enemy_book_complete_percentage
  126.     e_max = enemy_book_max.to_f
  127.     e_now = enemy_book_now.to_f
  128.     comp = e_now / e_max * 100
  129.     return comp.truncate
  130.   end
  131. end

  132. class Interpreter
  133.   def enemy_book_max
  134.     return $game_party.enemy_book_max
  135.   end
  136.   def enemy_book_now
  137.     return $game_party.enemy_book_now
  138.   end
  139.   def enemy_book_comp
  140.     return $game_party.enemy_book_complete_percentage
  141.   end
  142. end

  143. class Scene_Battle
  144.   alias add_enemy_info_start_phase5 start_phase5
  145.   def start_phase5
  146.     for enemy in $game_troop.enemies
  147.       # エネミーが隠れ状態でない場合
  148.       unless enemy.hidden
  149.         # 敵遭遇情報追加
  150.         $game_party.add_enemy_info(enemy.id, 0)
  151.       end
  152.     end
  153.     add_enemy_info_start_phase5
  154.   end
  155. end

  156. class Window_Base < Window
  157.   #--------------------------------------------------------------------------
  158.   # ● エネミーの戦闘後獲得アイテムの描画
  159.   #--------------------------------------------------------------------------
  160.   def draw_enemy_drop_item(enemy, x, y)
  161.     self.contents.font.color = normal_color
  162.     treasures = []
  163.     if enemy.item_id > 0
  164.       treasures.push($data_items[enemy.item_id])
  165.     end
  166.     if enemy.weapon_id > 0
  167.       treasures.push($data_weapons[enemy.weapon_id])
  168.     end
  169.     if enemy.armor_id > 0
  170.       treasures.push($data_armors[enemy.armor_id])
  171.     end
  172.     # 現状ではとりあえず1つのみ描画
  173.     if treasures.size > 0
  174.       item = treasures[0]
  175.       bitmap = RPG::Cache.icon(item.icon_name)
  176.       opacity = 255
  177.       self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  178.       name = treasures[0].name
  179.     else
  180.       self.contents.font.color = disabled_color
  181.       name = "No Item"
  182.     end
  183.     self.contents.draw_text(x+28, y, 212, 32, name)
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● エネミーの図鑑IDの描画
  187.   #--------------------------------------------------------------------------
  188.   def draw_enemy_book_id(enemy, x, y)
  189.     self.contents.font.color = normal_color
  190.     id = $game_temp.enemy_book_data.id_data.index(enemy.id)
  191.     self.contents.draw_text(x, y, 32, 32, id.to_s)
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● エネミーの名前の描画
  195.   #     enemy : エネミー
  196.   #     x     : 描画先 X 座標
  197.   #     y     : 描画先 Y 座標
  198.   #--------------------------------------------------------------------------
  199.   def draw_enemy_name(enemy, x, y)
  200.     self.contents.font.color = normal_color
  201.     self.contents.draw_text(x, y, 152, 32, enemy.name)
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● エネミーグラフィックの描画(アナライズ)
  205.   #     enemy : エネミー
  206.   #     x     : 描画先 X 座標
  207.   #     y     : 描画先 Y 座標
  208.   #--------------------------------------------------------------------------
  209.   def draw_enemy_graphic(enemy, x, y, opacity = 255)
  210.     bitmap = RPG::Cache.battler(enemy.battler_name, enemy.battler_hue)
  211.     cw = bitmap.width
  212.     ch = bitmap.height
  213.     src_rect = Rect.new(0, 0, cw, ch)
  214.     x = x + (cw / 2 - x) if cw / 2 > x
  215.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ● エネミーの獲得EXPの描画
  219.   #     enemy : エネミー
  220.   #     x     : 描画先 X 座標
  221.   #     y     : 描画先 Y 座標
  222.   #--------------------------------------------------------------------------
  223.   def draw_enemy_exp(enemy, x, y)
  224.     self.contents.font.color = system_color
  225.     self.contents.draw_text(x, y, 120, 32, "EXP")
  226.     self.contents.font.color = normal_color
  227.     self.contents.draw_text(x + 120, y, 36, 32, enemy.exp.to_s, 2)
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● エネミーの獲得GOLDの描画
  231.   #     enemy : エネミー
  232.   #     x     : 描画先 X 座標
  233.   #     y     : 描画先 Y 座標
  234.   #--------------------------------------------------------------------------
  235.   def draw_enemy_gold(enemy, x, y)
  236.     self.contents.font.color = system_color
  237.     self.contents.draw_text(x, y, 120, 32, $data_system.words.gold)
  238.     self.contents.font.color = normal_color
  239.     self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
  240.   end
  241. end

  242. class Game_Enemy_Book < Game_Enemy
  243.   #--------------------------------------------------------------------------
  244.   # ● オブジェクト初期化
  245.   #--------------------------------------------------------------------------
  246.   def initialize(enemy_id)
  247.     super(2, 1)#ダミー
  248.     @enemy_id = enemy_id
  249.     enemy = $data_enemies[@enemy_id]
  250.     @battler_name = enemy.battler_name
  251.     @battler_hue = enemy.battler_hue
  252.     @hp = maxhp
  253.     @sp = maxsp
  254.   end
  255. end

  256. class Data_MonsterBook
  257.   attr_reader :id_data
  258.   #--------------------------------------------------------------------------
  259.   # ● オブジェクト初期化
  260.   #--------------------------------------------------------------------------
  261.   def initialize
  262.     @id_data = enemy_book_id_set
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 図鑑用登録無視属性取得
  266.   #--------------------------------------------------------------------------
  267.   def no_add_element
  268.     no_add = 0
  269.     # 登録無視の属性IDを取得
  270.     for i in 1...$data_system.elements.size
  271.       if $data_system.elements[i] =~ /図鑑登録無効/
  272.         no_add = i
  273.         break
  274.       end
  275.     end
  276.     return no_add
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 図鑑用敵ID設定
  280.   #--------------------------------------------------------------------------
  281.   def enemy_book_id_set
  282.     data = [0]
  283.     no_add = no_add_element
  284.     # 登録無視の属性IDを取得
  285.     for i in 1...$data_enemies.size
  286.       enemy = $data_enemies[i]
  287.       next if enemy.name == ""
  288.       if enemy.element_ranks[no_add] == 1
  289.         next
  290.       end
  291.       data.push(enemy.id)
  292.     end
  293.     return data
  294.   end
  295. end


  296. class Window_MonsterBook < Window_Selectable
  297.   attr_reader   :data
  298.   #--------------------------------------------------------------------------
  299.   # ● オブジェクト初期化
  300.   #--------------------------------------------------------------------------
  301.   def initialize(index=0)
  302.     super(0, 64, 640, 416)
  303.     @column_max = 2
  304.     @book_data = $game_temp.enemy_book_data
  305.     @data = @book_data.id_data.dup
  306.     @data.shift
  307.     #@data.sort!
  308.     @item_max = @data.size
  309.     self.index = 0
  310.     refresh if @item_max > 0
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ● 遭遇データを取得
  314.   #--------------------------------------------------------------------------
  315.   def data_set
  316.     data = $game_party.enemy_info.keys
  317.     data.sort!
  318.     newdata = []
  319.     for i in data
  320.       next if $game_party.enemy_info[i] == 0
  321.       # 図鑑登録無視を考慮
  322.       if book_id(i) != nil
  323.         newdata.push(i)
  324.       end
  325.     end
  326.     return newdata
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 表示許可取得
  330.   #--------------------------------------------------------------------------
  331.   def show?(id)
  332.     if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil
  333.       return false
  334.     else
  335.       return true
  336.     end
  337.   end



  338. #--------------------------------------------------------------------------
  339.   # ● 図鑑用ID取得
  340.   #--------------------------------------------------------------------------
  341.   def book_id(id)
  342.     return @book_data.index(id)
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ● エネミー取得
  346.   #--------------------------------------------------------------------------
  347.   def item
  348.     return @data[self.index]
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● リフレッシュ
  352.   #--------------------------------------------------------------------------
  353.   def refresh
  354.     if self.contents != nil
  355.       self.contents.dispose
  356.       self.contents = nil
  357.     end
  358.     self.contents = Bitmap.new(width - 32, row_max * 32)
  359.     #項目数が 0 でなければビットマップを作成し、全項目を描画
  360.     if @item_max > 0
  361.       for i in 0...@item_max
  362.        draw_item(i)
  363.       end
  364.     end
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● 項目の描画
  368.   #     index : 項目番号
  369.   #--------------------------------------------------------------------------
  370.   def draw_item(index)
  371.     enemy = $data_enemies[@data[index]]
  372.     return if enemy == nil
  373.     x = 4 + index % 2 * (288 + 32)
  374.     y = index / 2 * 32
  375.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  376.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  377.     self.contents.font.color = normal_color
  378.     draw_enemy_book_id(enemy, x, y)
  379.     if show?(enemy.id)
  380.       self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
  381.     else
  382.       self.contents.draw_text(x + 28+16, y, 212, 32, "-----", 0)
  383.       return
  384.     end
  385.     if analyze?(@data[index])
  386.       self.contents.font.color = text_color(3)
  387.       self.contents.draw_text(x + 256, y, 24, 32, "済", 2)
  388.     end
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● アナライズ済かどうか
  392.   #--------------------------------------------------------------------------
  393.   def analyze?(enemy_id)
  394.     if $game_party.enemy_info[enemy_id] == 2
  395.       return true
  396.     else
  397.       return false
  398.     end
  399.   end
  400. end


  401. class Window_MonsterBook_Info < Window_Base
  402.   #--------------------------------------------------------------------------
  403.   # ● オブジェクト初期化
  404.   #--------------------------------------------------------------------------
  405.   def initialize
  406.     super(0, 0+64, 640, 480-64)
  407.     self.contents = Bitmap.new(width - 32, height - 32)
  408.   end
  409.   #--------------------------------------------------------------------------
  410.   # ● リフレッシュ
  411.   #--------------------------------------------------------------------------
  412.   def refresh(enemy_id)
  413.     self.contents.clear
  414.     self.contents.font.size = 22
  415.     enemy = Game_Enemy_Book.new(enemy_id)
  416.     draw_enemy_graphic(enemy, 96, 240+48+64, 200)
  417.     draw_enemy_book_id(enemy, 4, 0)
  418.     draw_enemy_name(enemy, 48, 0)
  419.     draw_actor_hp(enemy, 288, 0)
  420.     draw_actor_sp(enemy, 288+160, 0)
  421.     draw_actor_parameter(enemy, 288    ,  32, 0)
  422.     self.contents.font.color = system_color
  423.     self.contents.draw_text(288+160, 32, 120, 32, Enemy_Book_Config::EVA_NAME)
  424.     self.contents.font.color = normal_color
  425.     self.contents.draw_text(288+160 + 120, 32, 36, 32, enemy.eva.to_s, 2)
  426.     draw_actor_parameter(enemy, 288    ,  64, 3)
  427.     draw_actor_parameter(enemy, 288+160,  64, 4)
  428.     draw_actor_parameter(enemy, 288    ,  96, 5)
  429.     draw_actor_parameter(enemy, 288+160,  96, 6)
  430.     draw_actor_parameter(enemy, 288    , 128, 1)
  431.     draw_actor_parameter(enemy, 288+160, 128, 2)
  432.     draw_enemy_exp(enemy, 288, 160)
  433.     draw_enemy_gold(enemy, 288+160, 160)
  434.     if analyze?(enemy.id) or !Enemy_Book_Config::DROP_ITEM_NEED_ANALYZE
  435.       self.contents.draw_text(288, 192, 96, 32, "Drop Item")
  436.       draw_enemy_drop_item(enemy, 288+96+4, 192)
  437.       self.contents.font.color = normal_color
  438.       #draw_element_guard(enemy, 320-32, 160-16+96)
  439.     end
  440.   end
  441.   #--------------------------------------------------------------------------
  442.   # ● アナライズ済かどうか
  443.   #--------------------------------------------------------------------------
  444.   def analyze?(enemy_id)
  445.     if $game_party.enemy_info[enemy_id] == 2
  446.       return true
  447.     else
  448.       return false
  449.     end
  450.   end
  451. end


  452. class Scene_MonsterBook
  453.   #--------------------------------------------------------------------------
  454.   # ● メイン処理
  455.   #--------------------------------------------------------------------------
  456.   def main
  457.     $game_temp.enemy_book_data = Data_MonsterBook.new
  458.     # ウィンドウを作成
  459.     @title_window = Window_Base.new(0, 0, 640, 64)
  460.     @title_window.contents = Bitmap.new(640 - 32, 64 - 32)
  461.     @title_window.contents.draw_text(4, 0, 320, 32, "魔物図鑑", 0)
  462.     if Enemy_Book_Config::SHOW_COMPLETE_TYPE != 0
  463.       case Enemy_Book_Config::SHOW_COMPLETE_TYPE
  464.       when 1
  465.         e_now = $game_party.enemy_book_now
  466.         e_max = $game_party.enemy_book_max
  467.         text = e_now.to_s + "/" + e_max.to_s
  468.       when 2
  469.         comp = $game_party.enemy_book_complete_percentage
  470.         text = comp.to_s + "%"
  471.       when 3
  472.         e_now = $game_party.enemy_book_now
  473.         e_max = $game_party.enemy_book_max
  474.         comp = $game_party.enemy_book_complete_percentage
  475.         text = e_now.to_s + "/" + e_max.to_s + " " + comp.to_s + "%"
  476.       end
  477.       if text != nil
  478.         @title_window.contents.draw_text(320, 0, 288, 32,  text, 2)
  479.       end
  480.     end
  481.     @main_window = Window_MonsterBook.new
  482.     @main_window.active = true
  483.     # インフォウィンドウを作成 (不可視・非アクティブに設定)
  484.     @info_window = Window_MonsterBook_Info.new
  485.     @info_window.z = 110
  486.     @info_window.visible = false
  487.     @info_window.active = false
  488.     @visible_index = 0
  489.     if Enemy_Book_Config::COMMENT_SYSTEM
  490.       # コメントウィンドウを作成 (不可視・非アクティブに設定)
  491.       @comment_window = Window_Monster_Book_Comment.new
  492.       @comment_window.z = 120
  493.       @comment_window.visible = false
  494.       @comment_on = false # コメントフラグ
  495.     end
  496.     # トランジション実行
  497.     Graphics.transition
  498.     # メインループ
  499.     loop do
  500.       # ゲーム画面を更新
  501.       Graphics.update
  502.       # 入力情報を更新
  503.       Input.update
  504.       # フレーム更新
  505.       update
  506.       # 画面が切り替わったらループを中断
  507.       if $scene != self
  508.         break
  509.       end
  510.     end
  511.     # トランジション準備
  512.     Graphics.freeze
  513.     # ウィンドウを解放
  514.     @main_window.dispose
  515.     @info_window.dispose
  516.     @title_window.dispose
  517.     @comment_window.dispose if @comment_window != nil
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● フレーム更新
  521.   #--------------------------------------------------------------------------
  522.   def update
  523.     # ウィンドウを更新
  524.     @main_window.update
  525.     @info_window.update
  526.     if @info_window.active
  527.       update_info
  528.       return
  529.     end
  530.     # メインウィンドウがアクティブの場合: update_target を呼ぶ
  531.     if @main_window.active
  532.       update_main
  533.       return
  534.     end
  535.   end
  536.   #--------------------------------------------------------------------------
  537.   # ● フレーム更新 (メインウィンドウがアクティブの場合)
  538.   #--------------------------------------------------------------------------
  539.   def update_main
  540.     # B ボタンが押された場合
  541.     if Input.trigger?(Input::B)
  542.       # キャンセル SE を演奏
  543.       $game_system.se_play($data_system.cancel_se)
  544.       $scene = Scene_Map.new
  545.       return
  546.     end
  547.     # C ボタンが押された場合
  548.     if Input.trigger?(Input::C)
  549.       if @main_window.item == nil or @main_window.show?(@main_window.item) == false
  550.         # ブザー SE を演奏
  551.         $game_system.se_play($data_system.buzzer_se)
  552.         return
  553.       end
  554.       # 決定 SE を演奏
  555.       $game_system.se_play($data_system.decision_se)
  556.       @main_window.active = false
  557.       @info_window.active = true
  558.       @info_window.visible = true
  559.       @visible_index = @main_window.index
  560.       @info_window.refresh(@main_window.item)
  561.       if @comment_window != nil
  562.         @comment_window.refresh(@main_window.item)
  563.         if @comment_on
  564.           @comment_window.visible = true
  565.         else
  566.           @comment_window.visible = false
  567.         end
  568.       end
  569.       return
  570.     end
  571.   end
  572.   #--------------------------------------------------------------------------
  573.   # ● フレーム更新 (インフォウィンドウがアクティブの場合)
  574.   #--------------------------------------------------------------------------
  575.   def update_info
  576.     # B ボタンが押された場合
  577.     if Input.trigger?(Input::B)
  578.       # キャンセル SE を演奏
  579.       $game_system.se_play($data_system.cancel_se)
  580.       @main_window.active = true
  581.       @info_window.active = false
  582.       @info_window.visible = false
  583.       @comment_window.visible = false if @comment_window != nil
  584.       return
  585.     end
  586.     # C ボタンが押された場合
  587.     if Input.trigger?(Input::C)
  588.       if @comment_window != nil
  589.         # 決定 SE を演奏
  590.         $game_system.se_play($data_system.decision_se)
  591.         if @comment_on
  592.           @comment_on = false
  593.           @comment_window.visible = false
  594.         else
  595.           @comment_on = true
  596.           @comment_window.visible = true
  597.         end
  598.         return
  599.       end
  600.     end
  601.     if Input.trigger?(Input::L)
  602.       # 決定 SE を演奏
  603.       $game_system.se_play($data_system.decision_se)
  604.       loop_end = false
  605.       while loop_end == false
  606.         if @visible_index != 0
  607.           @visible_index -= 1
  608.         else
  609.           @visible_index = @main_window.data.size - 1
  610.         end
  611.         loop_end = true if @main_window.show?(@main_window.data[@visible_index])
  612.       end
  613.       id = @main_window.data[@visible_index]
  614.       @info_window.refresh(id)
  615.       @comment_window.refresh(id) if @comment_window != nil
  616.       return
  617.     end
  618.     if Input.trigger?(Input::R)
  619.       # 決定 SE を演奏
  620.       $game_system.se_play($data_system.decision_se)
  621.       loop_end = false
  622.       while loop_end == false
  623.         if @visible_index != @main_window.data.size - 1
  624.           @visible_index += 1
  625.         else
  626.           @visible_index = 0
  627.         end
  628.         loop_end = true if @main_window.show?(@main_window.data[@visible_index])
  629.       end
  630.       id = @main_window.data[@visible_index]
  631.       @info_window.refresh(id)
  632.       @comment_window.refresh(id) if @comment_window != nil
  633.       return
  634.     end
  635.   end
  636. end

复制代码


使用方法:

Scene_Debugより下、Mainより上に貼り付けて下さい。
あとは、イベントコマンドの「スクリプト」で
$scene = Scene_MonsterBook.new
で魔物図鑑のシーンに移ります。
魔物図鑑のIDはデータベースの並び順です。
名前が設定されていない敵と
「図鑑登録無効」の属性がAの敵は
図鑑に登録されません。

脚本编辑器

在Scene_Debug下面,Main上面贴上。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2005-10-22
帖子
12
3
发表于 2005-10-22 01:47:01 | 只看该作者
魔物图鉴 ?是什么?会有什么效果?
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-21
帖子
74
4
发表于 2005-10-23 17:28:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-21
帖子
74
5
发表于 2005-10-23 17:29:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

NewS-

梦石
0
星屑
50
在线时间
5 小时
注册时间
2005-10-23
帖子
3651

贵宾

6
发表于 2005-10-23 17:34:41 | 只看该作者
大概是介绍怪物的菜单选项,类似练妖系统的怪物介绍~
66RPG,这几个简单字符,之于我代表了什么?泪泪博客:http://hi.baidu.com/rpgmakerxp
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2005-10-21
帖子
55
7
发表于 2005-10-23 23:30:29 | 只看该作者
正在使用测试中.目前似乎没有什么冲突.关键没有和RTAB冲突= =...忽忽
QQ:345762628  MSN:[email protected]
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
265
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

8
 楼主| 发表于 2005-10-23 23:42:33 | 只看该作者
以下引用16732682于2005-10-23 9:29:08的发言:

嘿嘿,楼猪是外星人……

8应该让我介绍,应该让110来……  {/ll}
就是类似轩辕剑里神魔异世录的样子~~~
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

66RPG站长

梦石
0
星屑
54
在线时间
615 小时
注册时间
2005-10-10
帖子
5734

RMVX自由创作大赛亚军第2届短篇游戏比赛亚军第5届短篇游戏比赛冠军

9
发表于 2005-10-24 14:46:29 | 只看该作者
似乎是本站早就有的脚本……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1 小时
注册时间
2005-10-21
帖子
101
10
发表于 2005-10-25 00:58:39 | 只看该作者
我试过人物图鉴和怪物图鉴.都和66整合脚本有冲突的..寒
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 11:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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