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

Project1

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

[已经解决] 关于图鉴影响神宝整合系统的爆率问题

[复制链接]

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
跳转到指定楼层
1
发表于 2013-10-22 17:38:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 上贺茂润 于 2013-10-22 18:02 编辑

把这个加入到复杂装备整合系统里后,整合系统的爆率  
# 每杀死一个敌人武器防具的掉落概率(1-100之间,为(DROP_PROBABILITY)%,默认是50%)
就变成0了,请教如何修正【把图鉴里的掉率去掉最好,因为原本的复杂装备系统爆率就固定了】求助!@protosssonny
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 怪物图鉴 - KGC_EnemyGuide ◆ VX ◆
  3. #_/                                       汉化 by 约束 扩散说明 by 上贺茂润
  4. #_/    ◇ Last update : 2008/08/28 ◇
  5. #_/----------------------------------------------------------------------------
  6. #_/  作成怪物图鉴。
  7. #_/============================================================================
  8. #_/ 【基本機能】请在≪物品掉落扩张≫ 之上添加。
  9. #_/
  10. #_/ 使用方法:1.# ◆怪物的说明文,请在怪物的备注栏中添加<图鉴说明>要添加的说明,
  11. #_/             例如对怪物的简要介绍</图鉴说明>,PS:尽量不要太长
  12. #_/           2.# ◆图鉴的操作方法,图鉴画面是左侧的目录是怪物的名称排列,有关
  13. #_/             他的情报在右方显示。在这个状况时按下右方向键,就会显示关于
  14. #_/             这个敌人的说明文了。返回前一步请按左方向键。如果按下C键就
  15. #_/             可以放大敌人图片了。
  16. #_/           3.# ◆ 图鉴背景用图片表示   USE_BACKGROUND_IMAGE = true
  17. #_/             # ◆ 背景图片文件名 BACKGROUND_FILENAME  = "EnemyGuideBack"
  18. #_/             图片背景请按照给出的形式。
  19. #_/             如果不使用背景图片的时候,会按照普通窗口处理。
  20. #_/           4.# ◆表示完成度的参数  INFO_INTERVAL = 90
  21. #_/             设定画面左上完成度与变换之间的时间(1秒等于60)
  22. #_/              默认的是90,也就是每1.5秒改换一次
  23. #_/           5.# ◆调出属性耐性的范围
  24. #_/             在图鉴中设定排列耐性表现的属性ID,对象范围为(1..16 等)
  25. #_/             的整数都可以用。
  26. #_/           6.# ◆ 属性的ICON
  27. #_/             ELEMENT_ICON = [nil,                       # ID:0 是不体现
  28. #_/             50,   1,   4,  14,  24,  12, 189, 136,  # 格斗 ~ 吸收
  29. #_/             104, 105, 106, 107, 108, 109, 110, 111,  # 炎 ~ 黑暗
  30. #_/             ]  # ← 这里不要消除!
  31. #_/             各属性的ICON请在ICON图片中的编号,从第一行左端开始1,2,3
  32. #_/             依次类推,一排是15个。
  33. #_/             7.# ◆剧情用指令
  34. #_/               set_enemy_encountered(enemy_id[, enabled])
  35. #_/               敌 IDenemy_id的遭遇状态设定为enabled。
  36. #_/               设定enabled是true或者false。
  37. #_/               省略enabled情况视为true。
  38. #_/               例如:
  39. #_/                  # 敌 ID:10 变为遭遇过
  40. #_/                  set_enemy_encountered(10)
  41. #_/                  # 敌 ID:20 变为未遭遇过
  42. #_/                  set_enemy_encountered(20, false)
  43. #_/
  44. #_/               set_enemy_defeated(enemy_id[, enabled])
  45. #_/               敌 IDenemy_id击败过状态设定为enabled。
  46. #_/               enabled的设定方法与set_enemy_encountered同样。
  47. #_/               例如:
  48. #_/                  # 敌 ID:10 变为击破过
  49. #_/                  set_enemy_defeated(10)
  50. #_/                  # 敌 ID:20 变为未击破过
  51. #_/                  set_enemy_defeated(20, false)
  52. #_/               set_enemy_item_dropped(enemy_id, item_index[, enabled])
  53. #_/               敌 IDenemy_id的item_index编号的物品掉落状态设定为enabled。
  54. #_/               item_index、第一个物品时用O。
  55. #_/               如果添加了≪物品掉落扩张≫ 就用2以上的数值。具体参照你自己
  56. #_/               设定过的情况。
  57. #_/               enabled的设定方法是与set_enemy_encountered等同样的。
  58. #_/               例如:
  59. #_/                  # 敌 ID:10 的第一个物品变为掉落过
  60. #_/                  set_enemy_item_dropped(10, 0)
  61. #_/                 
  62. #_/               8.# ◆ reset_enemy_guide
  63. #_/                    初始化图鉴。
  64. #_/               9.# ◆ complete_enemy_guide
  65. #_/                    完成图鉴。
  66. #_/
  67. #_/               10.# ◆ get_enemy_guide_completion[(variable_id)]
  68. #_/                  图鉴的完成度(% 为单位)从variable_id号的变量中取得。
  69. #_/                  取得后、变量中取得的数值作为返还应用值。
  70. #_/                  将variable_id省略时、就不能代入变量。
  71. #_/
  72. #_/                  例如
  73. #_/                  # 图鉴的完成度在变量10号中取得
  74. #_/                    get_enemy_guide_completion(10)
  75. #_/
  76. #_/                  # 完成度 50% 以上后会怎样?
  77. #_/                    if get_enemy_guide_completion >= 50
  78. #_/                      p "IYH!"
  79. #_/                    end
  80. #_/
  81. #_/                11.# ◆  call_enemy_guide
  82. #_/                      呼出怪物图鉴。
  83. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  84. #==============================================================================
  85. # ★ カスタマイズ項目 - Customize ★
  86. #==============================================================================

  87. module KGC
  88. module EnemyGuide
  89.   # ◆ 图鉴用背景图片表示
  90.   #   true  : 用背景图片代替原本窗口。
  91.   #   false : 使用平常窗口。
  92.   USE_BACKGROUND_IMAGE = false
  93.   # ◆ 背景图片的文件夹名
  94.   #  "Graphics/System/" 内载入。
  95.   BACKGROUND_FILENAME  = "EnemyGuideBack"
  96.   # ◆ 完成度表示的间隔 [框架]
  97.   INFO_INTERVAL = 90

  98.   # ◆ 名字前面编号
  99.   #   true  : 001: 史莱姆
  100.   #   false : 史莱姆
  101.   SHOW_SERIAL_NUMBER = true
  102.   # ◆ 标号按照目录排序
  103.   #  true  : 无视ID的排列编号 。
  104.   #  false : 按照目录的排列顺序编号。
  105.   SERIAL_NUM_FOLLOW  = true
  106.   # ◆ 编号的格式
  107.   #  参照帮助的 sprintf 格式。
  108.   SERIAL_NUM_FORMAT  = "%03d: "
  109.   # ◆ 未遭遇的敌人名字
  110.   #  只写入一个文字的时候,会自动扩张成怪物名字的字数。
  111.   UNKNOWN_ENEMY_NAME = "?"
  112.   # ◆ 未遭遇敌人的资料表示
  113.   UNENCOUNTERED_DATA = "- No Data -"
  114.   # ◆ 图鉴的属性名
  115.   PARAMETER_NAME = {
  116.     :weak_element   => "弱点属性",
  117.     :resist_element => "耐性属性",
  118.     :weak_state     => "弱点状态",
  119.     :resist_state   => "无效状态",
  120.     :exp            => "经验值",
  121.     :treasure       => "物品",
  122.     :drop_prob      => "掉落率",
  123.   }  # ← 这里不能消除!
  124.   # ◆ 未击破敌人的变数表示
  125.   UNDEFEATED_PARAMETER = "???"
  126.   # ◆ 未掉落物品的名字表示
  127.   #  只写入一个文字的时候,会自动扩张成掉落物品名字的字数。
  128.   UNDROPPED_ITEM_NAME  = "?"

  129.   # ◆ 调查耐性属性的范围
  130.   #  容纳排列调查耐性属性的 ID 。
  131.   #  使用.. 或 ... 范围指定都是可以的。
  132.   ELEMENT_RANGE = [1..16]
  133.   # ◆ 属性的ICON
  134.   #  指定各属性的ICON编号。
  135.   #  对应排列的添加字的属性ID。
  136.   ELEMENT_ICON = [nil,                       # ID:0 是没有的
  137.      50,   1,   4,  14,  24,  12, 189, 136,  # 格斗 ~ 吸收
  138.     104, 105, 106, 107, 108, 109, 110, 111,  # 炎 ~ 黑暗
  139.   ]  # ← 这里不能消除!

  140.   # ◆ 从图鉴中隐藏敌人
  141.   #  排列想要从图鉴中隐藏的敌人ID。
  142.   #  ID 和范围 (1..10 等), 哪种都可以。
  143.   # <例> HIDDEN_ENEMIES = [2, 4, 8, 16..32]
  144.   HIDDEN_ENEMIES = []

  145.   # ◆ 敌人的排列顺序
  146.   #  表示的敌人ID、排列成想要的顺序。
  147.   #  使用.. 或 ... 范围指定都是可以的。
  148.   #  没有被指定的敌人、或者 HIDDEN_ENEMIES 中指定过的敌人不表示。
  149.   #  (不适用这个机能的时候是 nil)
  150.   ENEMY_ORDER = nil
  151.   # ENEMY_ORDER = [1..5, 8..13, 6, 7, 14, 15]
  152.   #  ↑使用例子

  153.   # ◆ 变身前的敌人也击破
  154.   #   true  : 变身前的敌人也被看作是击败过。
  155.   #   false : 变身前的敌人不被看作是击败过(只是遭遇过)。
  156.   ORIGINAL_DEFEAT = true

  157.   # ◆ 菜单画面中「怪物图鉴」指令的追加
  158.   #  追加的地点是、菜单画面指令列的最下方。
  159.   #  如果想要在其他地方放置指令时请使用≪特制菜单指令排列≫ 脚本。
  160.   USE_MENU_ENEMY_GUIDE_COMMAND = false
  161.   # ◆ 菜单画面的「怪物图鉴」指令名称
  162.   VOCAB_MENU_ENEMY_GUIDE       = "怪物图鉴"
  163. end
  164. end

  165. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  166. $imported = {} if $imported == nil
  167. $imported["EnemyGuide"] = true

  168. module KGC::EnemyGuide
  169.   # 正规表现
  170.   module Regexp
  171.     # 敌人
  172.     module Enemy
  173.       # 图鉴说明开始
  174.       BEGIN_GUIDE_DESCRIPTION = /<(?:GUIDE_DESCRIPTION|图鉴说明)>/i
  175.       # 图鉴说明终了
  176.       END_GUIDE_DESCRIPTION = /<\/(?:GUIDE_DESCRIPTION|图鉴说明)>/i
  177.     end
  178.   end

  179.   #--------------------------------------------------------------------------
  180.   # ○ Range と Integer 的排列按照 Integer 的排列 (排除重复的情况)
  181.   #--------------------------------------------------------------------------
  182.   def self.convert_integer_array(array)
  183.     result = []
  184.     array.each { |i|
  185.       if i.is_a?(Range)
  186.         result |= i.to_a
  187.       elsif e.is_a?(Integer)
  188.         result |= [i]
  189.       end
  190.     }
  191.     return result
  192.   end

  193.   # 非表示的怪物资料
  194.   HIDDEN_ENEMY_LIST = convert_integer_array(HIDDEN_ENEMIES)
  195.   # 确认属性资料
  196.   CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE)
  197. end

  198. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  199. #==============================================================================
  200. # □ KGC::Commands
  201. #==============================================================================

  202. module KGC
  203. module Commands
  204.   module_function
  205.   #--------------------------------------------------------------------------
  206.   # ○ 取得遭遇状态
  207.   #     enemy_id : 敌 ID
  208.   #--------------------------------------------------------------------------
  209.   def enemy_encountered?(enemy_id)
  210.     return $game_system.enemy_encountered[enemy_id]
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ○ 取得击破状态
  214.   #     enemy_id : 敵 ID
  215.   #--------------------------------------------------------------------------
  216.   def enemy_defeated?(enemy_id)
  217.     return $game_system.enemy_defeated[enemy_id]
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ○ 取得掉落物品状态
  221.   #     enemy_id   : 敌 ID
  222.   #     item_index : 掉落物品的号码
  223.   #--------------------------------------------------------------------------
  224.   def enemy_item_dropped?(enemy_id, item_index)
  225.     if $game_system.enemy_item_dropped[enemy_id] == nil
  226.       return false
  227.     end
  228.     result = $game_system.enemy_item_dropped[enemy_id] & (1 << item_index)
  229.     return (result != 0)
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ○ 设定遭遇状态
  233.   #     enemy_id : 敌 ID
  234.   #     enabled  : true..遭遇过  false..未遭遇
  235.   #--------------------------------------------------------------------------
  236.   def set_enemy_encountered(enemy_id, enabled = true)
  237.     $game_system.enemy_encountered[enemy_id] = enabled
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ○ 设定击败状态
  241.   #     enemy_id : 敌 ID
  242.   #     enabled  : true..击败过  false..未击败
  243.   #--------------------------------------------------------------------------
  244.   def set_enemy_defeated(enemy_id, enabled = true)
  245.     $game_system.enemy_defeated[enemy_id] = enabled
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ○ 设定掉落物品的状态
  249.   #     enemy_id   : 敌 ID
  250.   #     item_index : 掉落物品的编号
  251.   #     enabled    : true..掉落过  false..未掉落
  252.   #--------------------------------------------------------------------------
  253.   def set_enemy_item_dropped(enemy_id, item_index, enabled = true)
  254.     if $game_system.enemy_item_dropped[enemy_id] == nil
  255.       $game_system.enemy_item_dropped[enemy_id] = 0
  256.     end
  257.     if enabled
  258.       $game_system.enemy_item_dropped[enemy_id] |= (1 << item_index)
  259.     else
  260.       $game_system.enemy_item_dropped[enemy_id] &= ~(1 << item_index)
  261.     end
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ○ 清空图鉴
  265.   #--------------------------------------------------------------------------
  266.   def reset_enemy_guide
  267.     $game_system.enemy_encountered = []
  268.     $game_system.enemy_defeated = []
  269.     $game_system.enemy_item_dropped = []
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ○ 图鉴完成
  273.   #--------------------------------------------------------------------------
  274.   def complete_enemy_guide
  275.     (1...$data_enemies.size).each { |i|
  276.       set_enemy_encountered(i)
  277.       set_enemy_defeated(i)

  278.       enemy = $data_enemies[i]
  279.       items = [enemy.drop_item1, enemy.drop_item2]
  280.       if $imported["ExtraDropItem"]
  281.         items += enemy.extra_drop_items
  282.       end
  283.       items.each_index { |j| set_enemy_item_dropped(i, j) }
  284.     }
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ○ 已经获得图鉴?
  288.   #     enemy_id : 敌 ID
  289.   #--------------------------------------------------------------------------
  290.   def enemy_guide_include?(enemy_id)
  291.     return false if KGC::EnemyGuide::HIDDEN_ENEMIES.include?(enemy_id)
  292.     enemy = $data_enemies[enemy_id]
  293.     return (enemy != nil && enemy.name != "")
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ○ 取得存在敌人的种类数
  297.   #     variable_id : 代入取得后的值的变量ID
  298.   #--------------------------------------------------------------------------
  299.   def get_all_enemies_number(variable_id = 0)
  300.     n = 0
  301.     (1...$data_enemies.size).each { |i|
  302.       n += 1 if enemy_guide_include?(i)
  303.     }
  304.     $game_variables[variable_id] = n if variable_id > 0
  305.     return n
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ○ 取得遭遇过敌人的种类数
  309.   #     variable_id : 代入取得后的值的变量ID
  310.   #--------------------------------------------------------------------------
  311.   def get_encountered_enemies_number(variable_id = 0)
  312.     n = 0
  313.     (1...$data_enemies.size).each { |i|
  314.       if enemy_guide_include?(i) && $game_system.enemy_encountered[i]
  315.         n += 1
  316.       end
  317.     }
  318.     $game_variables[variable_id] = n if variable_id > 0
  319.     return n
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   # ○ 取得击败过的敌人的种类数
  323.   #     variable_id : 代入取得后的值的变量ID
  324.   #--------------------------------------------------------------------------
  325.   def get_defeated_enemies_number(variable_id = 0)
  326.     n = 0
  327.     (1...$data_enemies.size).each { |i|
  328.       if enemy_guide_include?(i) && $game_system.enemy_encountered[i] &&
  329.           $game_system.enemy_defeated[i]
  330.         n += 1
  331.       end
  332.     }
  333.     $game_variables[variable_id] = n if variable_id > 0
  334.     return n
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ○ 怪物图鉴完成度的取得
  338.   #     variable_id : 代入取得后的值的变量ID
  339.   #--------------------------------------------------------------------------
  340.   def get_enemy_guide_completion(variable_id = 0)
  341.     num = get_all_enemies_number
  342.     value = (num > 0 ? (get_defeated_enemies_number * 100 / num) : 0)
  343.     $game_variables[variable_id] = value if variable_id > 0
  344.     return value
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ○ 呼出怪物图鉴
  348.   #--------------------------------------------------------------------------
  349.   def call_enemy_guide
  350.     return if $game_temp.in_battle
  351.     $game_temp.next_scene = :enemy_guide
  352.   end
  353. end
  354. end

  355. class Game_Interpreter
  356.   include KGC::Commands
  357. end

  358. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  359. #==============================================================================
  360. # ■ Vocab
  361. #==============================================================================

  362. module Vocab
  363.   # 怪物图鉴
  364.   def self.enemy_guide
  365.     return KGC::EnemyGuide::VOCAB_MENU_ENEMY_GUIDE
  366.   end
  367. end

  368. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  369. #==============================================================================
  370. # ■ RPG::Enemy
  371. #==============================================================================

  372. class RPG::Enemy
  373.   #--------------------------------------------------------------------------
  374.   # ○ 怪物图鉴的存放处生成
  375.   #--------------------------------------------------------------------------
  376.   def create_enemy_guide_cache
  377.     @__enemy_guide_description = ""

  378.     description_flag = false
  379.     self.note.split(/[\r\n]+/).each { |line|
  380.       case line
  381.       when KGC::EnemyGuide::Regexp::Enemy::BEGIN_GUIDE_DESCRIPTION
  382.         # 说明文开始
  383.         description_flag = true
  384.       when KGC::EnemyGuide::Regexp::Enemy::END_GUIDE_DESCRIPTION
  385.         # 说明文终了
  386.         description_flag = false
  387.       else
  388.         if description_flag
  389.           @__enemy_guide_description += "#{line}\r\n"
  390.         end
  391.       end
  392.     }
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # ○ 图鉴说明文
  396.   #--------------------------------------------------------------------------
  397.   def enemy_guide_description
  398.     create_enemy_guide_cache if @__enemy_guide_description == nil
  399.     return @__enemy_guide_description
  400.   end
  401. end

  402. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  403. #==============================================================================
  404. # ■ Game_System
  405. #==============================================================================

  406. class Game_System
  407.   #--------------------------------------------------------------------------
  408.   # ● 公开即时变量
  409.   #--------------------------------------------------------------------------
  410.   attr_writer   :enemy_encountered        # 遭遇过的标注
  411.   attr_writer   :enemy_defeated           # 击败过的标志
  412.   attr_writer   :enemy_item_dropped       # 物品掉落过的标志
  413.   #--------------------------------------------------------------------------
  414.   # ○ 取得遭遇过的标志
  415.   #--------------------------------------------------------------------------
  416.   def enemy_encountered
  417.     @enemy_encountered = [] if @enemy_encountered == nil
  418.     return @enemy_encountered
  419.   end
  420.   #--------------------------------------------------------------------------
  421.   # ○ 取得击败过的标志
  422.   #--------------------------------------------------------------------------
  423.   def enemy_defeated
  424.     @enemy_defeated = [] if @enemy_defeated == nil
  425.     return @enemy_defeated
  426.   end
  427.   #--------------------------------------------------------------------------
  428.   # ○ 物品掉落过的标志
  429.   #--------------------------------------------------------------------------
  430.   def enemy_item_dropped
  431.     @enemy_item_dropped = [] if @enemy_item_dropped == nil
  432.     return @enemy_item_dropped
  433.   end
  434. end

  435. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  436. #==============================================================================
  437. # ■ Game_Enemy
  438. #==============================================================================

  439. class Game_Enemy < Game_Battler
  440.   #--------------------------------------------------------------------------
  441.   # ● 对象初始化
  442.   #     index    : 敌人队伍中的目录
  443.   #     enemy_id : 敌人造型 ID
  444.   #--------------------------------------------------------------------------
  445.   alias initialize_KGC_EnemyGuide initialize
  446.   def initialize(index, enemy_id)
  447.     initialize_KGC_EnemyGuide(index, enemy_id)

  448.     @original_ids = []  # 变身前的 ID
  449.     # 开启遭遇过标志
  450.     KGC::Commands.set_enemy_encountered(enemy_id) unless hidden
  451.   end
  452.   #--------------------------------------------------------------------------
  453.   # ● 破坏
  454.   #--------------------------------------------------------------------------
  455.   alias perform_collapse_KGC_EnemyGuide perform_collapse
  456.   def perform_collapse
  457.     last_collapsed = @collapse

  458.     perform_collapse_KGC_EnemyGuide

  459.     if !last_collapsed && @collapse
  460.       # 开启击败过标志
  461.       KGC::Commands.set_enemy_defeated(enemy_id)
  462.       # 变身前的敌人也按照击败过来处理
  463.       if KGC::EnemyGuide::ORIGINAL_DEFEAT
  464.         @original_ids.compact.each { |i|
  465.           KGC::Commands.set_enemy_defeated(i)
  466.         }
  467.       end
  468.     end
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ● 变身
  472.   #     enemy_id : 变身前敌人造型 ID
  473.   #--------------------------------------------------------------------------
  474.   alias transform_KGC_EnemyGuide transform
  475.   def transform(enemy_id)
  476.     # 保存变身前的敌人ID
  477.     @original_ids << @enemy_id

  478.     transform_KGC_EnemyGuide(enemy_id)

  479.     # 变身后的敌人也按照遭遇过来处理
  480.     KGC::Commands.set_enemy_encountered(enemy_id)
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ● 隐藏状态的设定
  484.   #--------------------------------------------------------------------------
  485.   alias hidden_KGC_EnemyGuide= hidden= unless $@
  486.   def hidden=(value)
  487.     hidden_KGC_EnemyGuide=(value)
  488.     # 出现过的场合为开启遭遇过的标志
  489.     KGC::Commands.set_enemy_encountered(enemy_id) unless value
  490.   end
  491. end

  492. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  493. #==============================================================================
  494. # ■ Game_Troop
  495. #==============================================================================

  496. class Game_Troop < Game_Unit
  497.   #--------------------------------------------------------------------------
  498.   # ● 作成排列掉落物品
  499.   #--------------------------------------------------------------------------
  500.   def make_drop_items
  501.     drop_items = []
  502.     dead_members.each { |enemy|
  503.       [enemy.drop_item1, enemy.drop_item2].each_with_index { |di, i|
  504.         next if di.kind == 0
  505.         next if rand(di.denominator) != 0
  506.         if di.kind == 1
  507.           drop_items.push($data_items[di.item_id])
  508.         elsif di.kind == 2
  509.           drop_items.push($data_weapons[di.weapon_id])
  510.         elsif di.kind == 3
  511.           drop_items.push($data_armors[di.armor_id])
  512.         end
  513.         # 调整掉落过标志
  514.         KGC::Commands.set_enemy_item_dropped(enemy.enemy.id, i)
  515.       }
  516.     }
  517.     return drop_items
  518.   end
  519. end

  520. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  521. #==============================================================================
  522. # □ Window_EnemyGuideTop
  523. #------------------------------------------------------------------------------
  524. #   在怪物图鉴上显示完成度。
  525. #==============================================================================

  526. class Window_EnemyGuideTop < Window_Base
  527.   #--------------------------------------------------------------------------
  528.   # ● 对象初始化
  529.   #--------------------------------------------------------------------------
  530.   def initialize
  531.     super(0, 0, 240, WLH * 4 + 32)
  532.     self.height = WLH + 32
  533.     @duration = 0
  534.     [url=home.php?mod=space&uid=18229]@interval[/url] = KGC::EnemyGuide::INFO_INTERVAL
  535.     refresh

  536.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  537.       self.opacity = 0
  538.     end
  539.     if self.windowskin != nil
  540.       bitmap = Bitmap.new(windowskin.width, windowskin.height)
  541.       bitmap.blt(0, 0, windowskin, windowskin.rect)
  542.       bitmap.clear_rect(80, 16, 32, 32)
  543.       self.windowskin = bitmap
  544.     end
  545.   end
  546.   #--------------------------------------------------------------------------
  547.   # ● 废弃
  548.   #--------------------------------------------------------------------------
  549.   def dispose
  550.     self.windowskin.dispose
  551.     super
  552.   end
  553.   #--------------------------------------------------------------------------
  554.   # ● 情报更新
  555.   #--------------------------------------------------------------------------
  556.   def refresh
  557.     self.contents.clear
  558.     total = KGC::Commands.get_all_enemies_number
  559.     encountered = KGC::Commands.get_encountered_enemies_number
  560.     defeated = KGC::Commands.get_defeated_enemies_number

  561.     text = sprintf("遭遇过: %3d/%3d ",encountered, total)
  562.     self.contents.draw_text(0,       0, width - 32, WLH, text, 1)
  563.     self.contents.draw_text(0, WLH * 3, width - 32, WLH, text, 1)
  564.     text = sprintf("击败过: %3d/%3d", defeated, total)
  565.     self.contents.draw_text(0, WLH, width - 32, WLH, text, 1)
  566.     text = sprintf("完成度: %3d%%", defeated * 100 / total)
  567.     self.contents.draw_text(0, WLH * 2, width - 32, WLH, text, 1)
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ● 构成的更新
  571.   #--------------------------------------------------------------------------
  572.   def update
  573.     @duration += 1
  574.     case @duration
  575.     when @interval...([url=home.php?mod=space&uid=18229]@interval[/url] + WLH)
  576.       self.oy += 1
  577.     when ([url=home.php?mod=space&uid=18229]@interval[/url] + WLH)
  578.       @duration = 0
  579.       if self.oy >= WLH * 3
  580.         self.oy = 0
  581.       end
  582.     end
  583.   end
  584. end

  585. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  586. #==============================================================================
  587. # □ Window_EnemyGuideList
  588. #------------------------------------------------------------------------------
  589. #   怪物图件上表示怪物一栏的窗口。
  590. #==============================================================================

  591. class Window_EnemyGuideList < Window_Selectable
  592.   #--------------------------------------------------------------------------
  593.   # ● 对象初始化
  594.   #--------------------------------------------------------------------------
  595.   def initialize
  596.     super(0, WLH + 32, 240, Graphics.height - (WLH + 32))
  597.     self.index = 0
  598.     refresh
  599.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  600.       self.opacity = 0
  601.       self.height -= (self.height - 32) % WLH
  602.     end
  603.   end
  604.   #--------------------------------------------------------------------------
  605.   # ○ 取得选择的怪物
  606.   #--------------------------------------------------------------------------
  607.   def item
  608.     return @data[self.index]
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ○ 敌人的目录是否已获得
  612.   #     enemy_id : 敌 ID
  613.   #--------------------------------------------------------------------------
  614.   def include?(enemy_id)
  615.     return KGC::Commands.enemy_guide_include?(enemy_id)
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 情报更新
  619.   #--------------------------------------------------------------------------
  620.   def refresh
  621.     @data = []
  622.     if KGC::EnemyGuide::ENEMY_ORDER == nil
  623.       # ID顺序
  624.       (1...$data_enemies.size).each { |i|
  625.         @data << $data_enemies[i] if include?(i)
  626.       }
  627.     else
  628.       # 指定顺序
  629.       KGC::EnemyGuide::ENEMY_ORDER.each { |i|
  630.         case i
  631.         when Range    # 制定范围
  632.           i.each { |j|
  633.             @data << $data_enemies[i] if include?(j)
  634.           }
  635.         when Integer  # 指定ID
  636.           @data << $data_enemies[i] if include?(i)
  637.         end
  638.       }
  639.     end
  640.     @item_max = @data.size
  641.     create_contents
  642.     for i in 0...@item_max
  643.       draw_item(i)
  644.     end
  645.   end
  646.   #--------------------------------------------------------------------------
  647.   # ● 项目的描绘
  648.   #     index : 项目编号
  649.   #--------------------------------------------------------------------------
  650.   def draw_item(index)
  651.     enemy = @data[index]
  652.     self.contents.font.color = normal_color
  653.     unless KGC::Commands.enemy_defeated?(enemy.id)
  654.       self.contents.font.color.alpha = 128
  655.     end
  656.     rect = item_rect(index)
  657.     self.contents.clear_rect(rect)

  658.     if KGC::EnemyGuide::SHOW_SERIAL_NUMBER
  659.       s_num = sprintf(KGC::EnemyGuide::SERIAL_NUM_FORMAT,
  660.         KGC::EnemyGuide::SERIAL_NUM_FOLLOW ? (index + 1) : enemy.id)
  661.     end

  662.     text = (KGC::EnemyGuide::SHOW_SERIAL_NUMBER ? s_num : "")
  663.     if KGC::Commands.enemy_encountered?(enemy.id)
  664.       # 遭遇过
  665.       text += enemy.name
  666.     else
  667.       # 未遭遇
  668.       mask = KGC::EnemyGuide::UNKNOWN_ENEMY_NAME
  669.       if mask.scan(/./).size == 1
  670.         mask = mask * enemy.name.scan(/./).size
  671.       end
  672.       text += mask
  673.     end
  674.     self.contents.draw_text(rect, text)
  675.   end
  676. end

  677. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  678. #==============================================================================
  679. # □ Window_EnemyGuideStatus
  680. #------------------------------------------------------------------------------
  681. #   在怪物图件上、表示简介的窗口。
  682. #==============================================================================

  683. class Window_EnemyGuideStatus < Window_Base
  684.   #--------------------------------------------------------------------------
  685.   # ○ 定数
  686.   #--------------------------------------------------------------------------
  687.   TYPE_PARAMETERS  = 0  # 表现形式 : 属性
  688.   TYPE_DESCRIPTION = 1  # 表现形式 : 说明
  689.   #--------------------------------------------------------------------------
  690.   # ● 公开即时变量
  691.   #--------------------------------------------------------------------------
  692.   attr_reader   :enemy                    # 表示敌人
  693.   #--------------------------------------------------------------------------
  694.   # ● 对象初始化
  695.   #--------------------------------------------------------------------------
  696.   def initialize
  697.     super(240, 0, Graphics.width - 240, Graphics.height)
  698.     self.enemy = nil
  699.     self.z = 100
  700.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  701.       self.opacity = 0
  702.     end
  703.     @show_sprite = false
  704.     @enemy_sprite = Sprite.new
  705.     @enemy_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  706.     @enemy_sprite.x = 0
  707.     @enemy_sprite.y = 0
  708.     @enemy_sprite.z = self.z + 100
  709.     @enemy_sprite.visible = false
  710.   end
  711.   #--------------------------------------------------------------------------
  712.   # ● 废弃
  713.   #--------------------------------------------------------------------------
  714.   def dispose
  715.     super
  716.     @enemy_sprite.bitmap.dispose
  717.     @enemy_sprite.dispose
  718.   end
  719.   #--------------------------------------------------------------------------
  720.   # ○ 表现敌人设定
  721.   #--------------------------------------------------------------------------
  722.   def enemy=(enemy)
  723.     @enemy = enemy
  724.     refresh
  725.   end
  726.   #--------------------------------------------------------------------------
  727.   # ○ 表示情报设定
  728.   #     type : 表示形式 (TYPE_PARAMETERS, TYPE_DESCRIPTION)
  729.   #--------------------------------------------------------------------------
  730.   def set_info_type(type)
  731.     case type
  732.     when TYPE_PARAMETERS
  733.       self.ox = 0
  734.     when TYPE_DESCRIPTION
  735.       self.ox = self.width - 32
  736.     end
  737.   end
  738.   #--------------------------------------------------------------------------
  739.   # ○ sprite的表示切换
  740.   #--------------------------------------------------------------------------
  741.   def switch_sprite
  742.     @show_sprite = !@show_sprite
  743.     @enemy_sprite.visible = @show_sprite
  744.   end
  745.   #--------------------------------------------------------------------------
  746.   # ● 情报更新
  747.   #--------------------------------------------------------------------------
  748.   def refresh
  749.     original_width = self.width
  750.     self.width = original_width * 2 - 32
  751.     create_contents
  752.     self.width = original_width

  753.     return if enemy == nil

  754.     self.contents.font.color = normal_color
  755.     # 没有遭遇
  756.     unless KGC::Commands.enemy_encountered?(enemy.id)
  757.       self.contents.font.color.alpha = 128
  758.       dy = (height - 32) / 2
  759.       dy -= dy % WLH
  760.       self.contents.draw_text(0, dy, width - 32, WLH,
  761.         KGC::EnemyGuide::UNENCOUNTERED_DATA, 1)
  762.       return
  763.     end

  764.     draw_status
  765.   end
  766.   #--------------------------------------------------------------------------
  767.   # ○ 简介的描绘
  768.   #--------------------------------------------------------------------------
  769.   def draw_status
  770.     draw_graphic
  771.     draw_parameter
  772.     draw_element
  773.     draw_state
  774.     draw_prize
  775.     draw_description
  776.   end
  777.   #--------------------------------------------------------------------------
  778.   # ○ 图解的描绘
  779.   #--------------------------------------------------------------------------
  780.   def draw_graphic
  781.     bitmap = Cache.battler(enemy.battler_name, enemy.battler_hue)
  782.     rect = Rect.new(0, 0, bitmap.width / 3, bitmap.height / 3)
  783.     rect.x = (104 - rect.width) / 2
  784.     rect.y = (96 - rect.height) / 2
  785.     self.contents.stretch_blt(rect, bitmap, bitmap.rect)

  786.     @enemy_sprite.bitmap.fill_rect(@enemy_sprite.bitmap.rect,
  787.       Color.new(0, 0, 0, 160))
  788.     rect.x = (Graphics.width - bitmap.width) / 2
  789.     rect.y = (Graphics.height - bitmap.height) / 2
  790.     @enemy_sprite.bitmap.blt(rect.x, rect.y, bitmap, bitmap.rect)
  791.   end
  792.   #--------------------------------------------------------------------------
  793.   # ○ 参数的描画
  794.   #--------------------------------------------------------------------------
  795.   def draw_parameter
  796.     param = {}
  797.     if KGC::Commands.enemy_defeated?(enemy.id)
  798.       param[:maxhp] = enemy.maxhp
  799.       param[:maxmp] = enemy.maxmp
  800.       param[:atk]   = enemy.atk
  801.       param[:def]   = enemy.def
  802.       param[:spi]   = enemy.spi
  803.       param[:agi]   = enemy.agi
  804.     else
  805.       param[:maxhp] = param[:maxmp] = param[:atk] = param[:def] =
  806.         param[:spi] = param[:agi] = KGC::EnemyGuide::UNDEFEATED_PARAMETER
  807.     end

  808.     # 名字, HP, MP
  809.     dx = 112
  810.     dy = 0
  811.     self.contents.font.color = normal_color
  812.     self.contents.draw_text(dx, dy, width - (32 + dx), WLH, enemy.name)
  813.     self.contents.font.color = system_color
  814.     self.contents.draw_text(dx, dy + WLH,     80, WLH, Vocab.hp)
  815.     self.contents.draw_text(dx, dy + WLH * 2, 80, WLH, Vocab.mp)
  816.     self.contents.font.color = normal_color
  817.     self.contents.draw_text(dx + 88, dy + WLH,     64, WLH, param[:maxhp], 2)
  818.     self.contents.draw_text(dx + 88, dy + WLH * 2, 64, WLH, param[:maxmp], 2)

  819.     # ATK ~ AGI
  820.     dx = 0
  821.     dy = 96
  822.     dw = (width - 32) / 2
  823.     self.contents.font.color = system_color
  824.     self.contents.draw_text(dx,      dy,       80, WLH, Vocab.atk)
  825.     self.contents.draw_text(dx + dw, dy,       80, WLH, Vocab.def)
  826.     self.contents.draw_text(dx,      dy + WLH, 80, WLH, Vocab.spi)
  827.     self.contents.draw_text(dx + dw, dy + WLH, 80, WLH, Vocab.agi)
  828.     dx = 80
  829.     self.contents.font.color = normal_color
  830.     self.contents.draw_text(dx,      dy,       48, WLH, param[:atk], 2)
  831.     self.contents.draw_text(dx + dw, dy,       48, WLH, param[:def], 2)
  832.     self.contents.draw_text(dx     , dy + WLH, 48, WLH, param[:spi], 2)
  833.     self.contents.draw_text(dx + dw, dy + WLH, 48, WLH, param[:agi], 2)
  834.   end
  835.   #--------------------------------------------------------------------------
  836.   # ○ 属性的描画
  837.   #--------------------------------------------------------------------------
  838.   def draw_element
  839.     dx = 0
  840.     dy = 96 + WLH * 2
  841.     self.contents.font.color = system_color
  842.     self.contents.draw_text(dx, dy,       80, WLH,
  843.       KGC::EnemyGuide::PARAMETER_NAME[:weak_element])
  844.     self.contents.draw_text(dx, dy + WLH, 80, WLH,
  845.       KGC::EnemyGuide::PARAMETER_NAME[:resist_element])

  846.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  847.     # 弱点属性
  848.     draw_icon_list(dx + 80, dy,
  849.       KGC::EnemyGuide::CHECK_ELEMENT_LIST,
  850.       Proc.new { |i| enemy.element_ranks[i] < 3 },
  851.       Proc.new { |i| KGC::EnemyGuide::ELEMENT_ICON[i] })
  852.     # 耐性属性
  853.     draw_icon_list(dx + 80, dy + WLH,
  854.       KGC::EnemyGuide::CHECK_ELEMENT_LIST,
  855.       Proc.new { |i| enemy.element_ranks[i] > 3 },
  856.       Proc.new { |i| KGC::EnemyGuide::ELEMENT_ICON[i] })
  857.   end
  858.   #--------------------------------------------------------------------------
  859.   # ○ ICON目录的描画
  860.   #     dx, dy          : 描画处 X, Y
  861.   #     item_list       : 描画对象的目录
  862.   #     condition_proc  : 描画条件 Proc
  863.   #     icon_index_proc : ICON index 取得用 Proc
  864.   #--------------------------------------------------------------------------
  865.   def draw_icon_list(dx, dy, item_list, condition_proc, icon_index_proc)
  866.     ix = 0
  867.     item_list.each { |item|
  868.       next if item == nil
  869.       if condition_proc.call(item)
  870.         icon_index = icon_index_proc.call(item)
  871.         if icon_index != nil && icon_index > 0
  872.           draw_icon(icon_index, dx + ix, dy)
  873.           ix += 24
  874.         end
  875.       end
  876.     }
  877.   end
  878.   #--------------------------------------------------------------------------
  879.   # ○ 状态的描画
  880.   #--------------------------------------------------------------------------
  881.   def draw_state
  882.     dx = 0
  883.     dy = 96 + WLH * 4
  884.     self.contents.font.color = system_color
  885.     self.contents.draw_text(dx, dy,       80, WLH,
  886.       KGC::EnemyGuide::PARAMETER_NAME[:weak_state])
  887.     self.contents.draw_text(dx, dy + WLH, 80, WLH,
  888.       KGC::EnemyGuide::PARAMETER_NAME[:resist_state])

  889.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  890.     # 弱点状态
  891.     draw_icon_list(dx + 80, dy,
  892.       $data_states,
  893.       Proc.new { |i| enemy.state_ranks[i.id] < 3 },
  894.       Proc.new { |i| i.icon_index })
  895.     # 无效状态
  896.     draw_icon_list(dx + 80, dy + WLH,
  897.       $data_states,
  898.       Proc.new { |i| enemy.state_ranks[i.id] == 6 },
  899.       Proc.new { |i| i.icon_index })
  900.   end
  901.   #--------------------------------------------------------------------------
  902.   # ○ 战利品的描画
  903.   #--------------------------------------------------------------------------
  904.   def draw_prize
  905.     param = {}
  906.     if KGC::Commands.enemy_defeated?(enemy.id)
  907.       param[:exp]  = enemy.exp
  908.       param[:gold] = enemy.gold
  909.     else
  910.       param[:exp] = param[:gold] = KGC::EnemyGuide::UNDEFEATED_PARAMETER
  911.     end

  912.     dx = 0
  913.     dy = 96 + WLH * 6
  914.     dw = (width - 32) / 2
  915.     self.contents.font.color = system_color
  916.     self.contents.draw_text(dx,      dy,        80, WLH,
  917.       KGC::EnemyGuide::PARAMETER_NAME[:exp])
  918.     self.contents.draw_text(dx + dw, dy,        80, WLH, Vocab.gold)
  919.     self.contents.draw_text(dx,      dy + WLH, 128, WLH,
  920.       KGC::EnemyGuide::PARAMETER_NAME[:treasure], 1)
  921.     self.contents.draw_text(dx + dw, dy + WLH, 128, WLH,
  922.       KGC::EnemyGuide::PARAMETER_NAME[:drop_prob], 2)

  923.     # EXP, Golds
  924.     dx = 76
  925.     self.contents.font.color = normal_color
  926.     self.contents.draw_text(dx,      dy, 52, WLH, param[:exp], 2)
  927.     self.contents.draw_text(dx + dw, dy, 52, WLH, param[:gold], 2)

  928.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  929.     # 掉落物品
  930.     drop_items = [enemy.drop_item1, enemy.drop_item2]
  931.     if $imported["ExtraDropItem"]
  932.       drop_items += enemy.extra_drop_items
  933.     end
  934.     drop_items.delete_if { |i| i.kind == 0 }

  935.     dx = 0
  936.     dy += WLH * 2
  937.     drop_items.each_with_index { |item, i|
  938.       # 物品名
  939.       case item.kind
  940.       when 0
  941.         next
  942.       when 1
  943.         drop_item = $data_items[item.item_id]
  944.       when 2
  945.         drop_item = $data_weapons[item.weapon_id]
  946.       when 3
  947.         drop_item = $data_armors[item.armor_id]
  948.       end
  949.       if KGC::Commands.enemy_item_dropped?(enemy.id, i)
  950.         draw_item_name(drop_item, dx, dy)
  951.       else
  952.         draw_masked_item_name(drop_item, dx, dy)
  953.       end
  954.       # 掉落率
  955.       if $imported["ExtraDropItem"] && item.drop_prob > 0
  956.         text = sprintf("%d%%", item.drop_prob)
  957.       else
  958.         text = "1/#{item.denominator}"
  959.       end
  960.       self.contents.draw_text(dx + dw, dy, 128, WLH, text, 2)
  961.       dy += WLH
  962.     }
  963.   end
  964.   #--------------------------------------------------------------------------
  965.   # ○ 物品名为遮挡的描画
  966.   #     item    : 物品 (机能、武器、防具都可以)
  967.   #     x       : 描画处 X 坐标
  968.   #     y       : 描画出 Y 坐标
  969.   #     enabled : 有効标志。false 的时候半透明的描画
  970.   #--------------------------------------------------------------------------
  971.   def draw_masked_item_name(item, x, y, enabled = true)
  972.     return if item == nil

  973.     draw_icon(item.icon_index, x, y, enabled)
  974.     self.contents.font.color = normal_color
  975.     self.contents.font.color.alpha = enabled ? 255 : 128
  976.     text = KGC::EnemyGuide::UNDROPPED_ITEM_NAME
  977.     if text.scan(/./).size == 1
  978.       text = text * item.name.scan(/./).size
  979.     end
  980.     self.contents.draw_text(x + 24, y, 172, WLH, text)
  981.   end
  982.   #--------------------------------------------------------------------------
  983.   # ○ 说明文的描画
  984.   #--------------------------------------------------------------------------
  985.   def draw_description
  986.     dx = self.width - 32
  987.     dy = 96
  988.     self.contents.clear_rect(dx, dy, self.width - 32, self.height - 128)
  989.     rect = Rect.new(0, 0, self.width - 32, 96)
  990.     self.contents.blt(dx, 0, self.contents, rect)

  991.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  992.     dx += 4
  993.     enemy.enemy_guide_description.split(/[\r\n]+/).each { |line|
  994.       self.contents.draw_text(dx, dy, self.width - 32, WLH, line)
  995.       dy += WLH
  996.     }
  997.   end
  998. end

  999. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  1000. #==============================================================================
  1001. # ■ Scene_Map
  1002. #==============================================================================

  1003. class Scene_Map < Scene_Base
  1004.   #--------------------------------------------------------------------------
  1005.   # ● 实行画面的切换
  1006.   #--------------------------------------------------------------------------
  1007.   alias update_scene_change_KGC_EnemyGuide update_scene_change
  1008.   def update_scene_change
  1009.     return if $game_player.moving?    # PLAYER的移动中?

  1010.     if $game_temp.next_scene == :enemy_guide
  1011.       call_enemy_guide
  1012.       return
  1013.     end

  1014.     update_scene_change_KGC_EnemyGuide
  1015.   end
  1016.   #--------------------------------------------------------------------------
  1017.   # ○ 切换到怪物图鉴
  1018.   #--------------------------------------------------------------------------
  1019.   def call_enemy_guide
  1020.     $game_temp.next_scene = nil
  1021.     $scene = Scene_EnemyGuide.new(0, Scene_EnemyGuide::HOST_MAP)
  1022.   end
  1023. end

  1024. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  1025. #==============================================================================
  1026. # ■ Scene_Menu
  1027. #==============================================================================

  1028. class Scene_Menu < Scene_Base
  1029.   if KGC::EnemyGuide::USE_MENU_ENEMY_GUIDE_COMMAND
  1030.   #--------------------------------------------------------------------------
  1031.   # ● 作成指令窗口
  1032.   #--------------------------------------------------------------------------
  1033.   alias create_command_window_KGC_EnemyGuide create_command_window
  1034.   def create_command_window
  1035.     create_command_window_KGC_EnemyGuide

  1036.     return if $imported["CustomMenuCommand"]

  1037.     @__command_enemy_guide_index =
  1038.       @command_window.add_command(Vocab.enemy_guide)
  1039.     if @command_window.oy > 0
  1040.       @command_window.oy -= Window_Base::WLH
  1041.     end
  1042.     @command_window.index = @menu_index
  1043.   end
  1044.   end
  1045.   #--------------------------------------------------------------------------
  1046.   # ● 指令选择的更新
  1047.   #--------------------------------------------------------------------------
  1048.   alias update_command_selection_KGC_EnemyGuide update_command_selection
  1049.   def update_command_selection
  1050.     current_menu_index = @__command_enemy_guide_index
  1051.     call_enemy_guide_flag = false

  1052.     if Input.trigger?(Input::C)
  1053.       case @command_window.index
  1054.       when @__command_enemy_guide_index  # 怪物图鉴
  1055.         call_enemy_guide_flag = true
  1056.       end
  1057.     end

  1058.     # 移动到怪物图鉴
  1059.     if call_enemy_guide_flag
  1060.       Sound.play_decision
  1061.       $scene = Scene_EnemyGuide.new(@__command_enemy_guide_index,
  1062.         Scene_EnemyGuide::HOST_MENU)
  1063.       return
  1064.     end

  1065.     update_command_selection_KGC_EnemyGuide
  1066.   end
  1067. end

  1068. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  1069. #==============================================================================
  1070. # □ Scene_EnemyGuide
  1071. #------------------------------------------------------------------------------
  1072. #   进行怪物图鉴画面的处理的目录。
  1073. #==============================================================================

  1074. class Scene_EnemyGuide < Scene_Base
  1075.   HOST_MENU   = 0
  1076.   HOST_MAP    = 1
  1077.   #--------------------------------------------------------------------------
  1078.   # ● 对象初始化
  1079.   #     menu_index  : 指令光标初期位置
  1080.   #     host_scene  : 呼出原处 (0..菜单  1..地图)
  1081.   #--------------------------------------------------------------------------
  1082.   def initialize(menu_index = 0, host_scene = HOST_MENU)
  1083.     @menu_index = menu_index
  1084.     @host_scene = host_scene
  1085.   end
  1086.   #--------------------------------------------------------------------------
  1087.   # ● 开始的处理
  1088.   #--------------------------------------------------------------------------
  1089.   def start
  1090.     super
  1091.     create_menu_background
  1092.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  1093.       @back_sprite = Sprite.new
  1094.       begin
  1095.         @back_sprite.bitmap = Cache.system(KGC::EnemyGuide::BACKGROUND_FILENAME)
  1096.       rescue
  1097.         @back_sprite.bitmap = Bitmap.new(32, 32)
  1098.       end
  1099.     end

  1100.     @top_window = Window_EnemyGuideTop.new
  1101.     @enemy_window = Window_EnemyGuideList.new
  1102.     @status_window = Window_EnemyGuideStatus.new
  1103.     @status_window.enemy = @enemy_window.item
  1104.   end
  1105.   #--------------------------------------------------------------------------
  1106.   # ● 终了的处理
  1107.   #--------------------------------------------------------------------------
  1108.   def terminate
  1109.     super
  1110.     dispose_menu_background
  1111.     if @back_sprite != nil
  1112.       @back_sprite.bitmap.dispose
  1113.       @back_sprite.dispose
  1114.     end
  1115.     @top_window.dispose
  1116.     @enemy_window.dispose
  1117.     @status_window.dispose
  1118.   end
  1119.   #--------------------------------------------------------------------------
  1120.   # ○ 返回原菜单画面
  1121.   #--------------------------------------------------------------------------
  1122.   def return_scene
  1123.     case @host_scene
  1124.     when HOST_MENU
  1125.       $scene = Scene_Menu.new(@menu_index)
  1126.     when HOST_MAP
  1127.       $scene = Scene_Map.new
  1128.     end
  1129.   end
  1130.   #--------------------------------------------------------------------------
  1131.   # ● 构架的更新
  1132.   #--------------------------------------------------------------------------
  1133.   def update
  1134.     super
  1135.     update_menu_background
  1136.     @top_window.update
  1137.     @enemy_window.update
  1138.     @status_window.update
  1139.     if @enemy_window.active
  1140.       update_enemy_selection
  1141.     end
  1142.   end
  1143.   #--------------------------------------------------------------------------
  1144.   # ○ 敌人选择的更新
  1145.   #--------------------------------------------------------------------------
  1146.   def update_enemy_selection
  1147.     if @last_index != @enemy_window.index
  1148.       @status_window.enemy = @enemy_window.item
  1149.       @last_index = @enemy_window.index
  1150.     end

  1151.     if Input.trigger?(Input::B)
  1152.       Sound.play_cancel
  1153.       return_scene
  1154.     elsif Input.trigger?(Input::A) || Input.trigger?(Input::C)
  1155.       # sprte的表示切换
  1156.       Sound.play_decision
  1157.       @status_window.switch_sprite
  1158.     elsif Input.trigger?(Input::LEFT)
  1159.       # 参数表示
  1160.       Sound.play_cursor
  1161.       @status_window.set_info_type(Window_EnemyGuideStatus::TYPE_PARAMETERS)
  1162.     elsif Input.trigger?(Input::RIGHT)
  1163.       # 说明表示
  1164.       Sound.play_cursor
  1165.       @status_window.set_info_type(Window_EnemyGuideStatus::TYPE_DESCRIPTION)
  1166.     end
  1167.   end
  1168. end
复制代码
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4699
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

来自 5楼
发表于 2013-10-30 21:57:43 | 只看该作者
替换定义!
  1.   #--------------------------------------------------------------------------
  2.   # ○ 战利品的描画
  3.   #--------------------------------------------------------------------------
  4.   def draw_prize
  5.     param = {}
  6.     if KGC::Commands.enemy_defeated?(enemy.id)
  7.       param[:exp]  = enemy.exp
  8.       param[:gold] = enemy.gold
  9.     else
  10.       param[:exp] = param[:gold] = KGC::EnemyGuide::UNDEFEATED_PARAMETER
  11.     end

  12.     dx = 0
  13.     dy = 96 + WLH * 6
  14.     dw = (width - 32) / 2
  15.     self.contents.font.color = system_color
  16.     self.contents.draw_text(dx,      dy,        80, WLH,
  17.       KGC::EnemyGuide::PARAMETER_NAME[:exp])
  18.     self.contents.draw_text(dx + dw, dy,        80, WLH, Vocab.gold)
  19. #~     self.contents.draw_text(dx,      dy + WLH, 128, WLH,
  20. #~       KGC::EnemyGuide::PARAMETER_NAME[:treasure], 1)
  21. #~     self.contents.draw_text(dx + dw, dy + WLH, 128, WLH,
  22. #~       KGC::EnemyGuide::PARAMETER_NAME[:drop_prob], 2)

  23.     # EXP, Golds
  24.     dx = 76
  25.     self.contents.font.color = normal_color
  26.     self.contents.draw_text(dx,      dy, 52, WLH, param[:exp], 2)
  27.     self.contents.draw_text(dx + dw, dy, 52, WLH, param[:gold], 2)

  28.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  29. #~     # 掉落物品
  30. #~     drop_items = [enemy.drop_item1, enemy.drop_item2]
  31. #~     if $imported["ExtraDropItem"]
  32. #~       drop_items += enemy.extra_drop_items
  33. #~     end
  34. #~     drop_items.delete_if { |i| i.kind == 0 }

  35. #~     dx = 0
  36. #~     dy += WLH * 2
  37. #~     drop_items.each_with_index { |item, i|
  38. #~       # 物品名
  39. #~       case item.kind
  40. #~       when 0
  41. #~         next
  42. #~       when 1
  43. #~         drop_item = $data_items[item.item_id]
  44. #~       when 2
  45. #~         drop_item = $data_weapons[item.weapon_id]
  46. #~       when 3
  47. #~         drop_item = $data_armors[item.armor_id]
  48. #~       end
  49. #~       if KGC::Commands.enemy_item_dropped?(enemy.id, i)
  50. #~         draw_item_name(drop_item, dx, dy)
  51. #~       else
  52. #~         draw_masked_item_name(drop_item, dx, dy)
  53. #~       end
  54. #~       # 掉落率
  55. #~       if $imported["ExtraDropItem"] && item.drop_prob > 0
  56. #~         text = sprintf("%d%%", item.drop_prob)
  57. #~       else
  58. #~         text = "1/#{item.denominator}"
  59. #~       end
  60. #~       self.contents.draw_text(dx + dw, dy, 128, WLH, text, 2)
  61. #~       dy += WLH
  62. #~     }
  63.   end
复制代码

评分

参与人数 1星屑 +150 收起 理由
铃仙·优昙华院·因幡 + 150 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv2.观梦者

狂気の月兔

梦石
0
星屑
276
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

2
发表于 2013-10-22 18:33:17 | 只看该作者
从整合系统里找到  Game_Troop 的 make_drop_items 方法, 在
  1. if di.kind == 1
  2.           drop_items.push($data_items[di.item_id])
  3.         elsif di.kind == 2
  4.           drop_items.push($data_weapons[di.weapon_id])
  5.         elsif di.kind == 3
  6.           drop_items.push($data_armors[di.armor_id])
  7.         end
复制代码
(可能类似,没有脚本不好说明)
这段末尾添加: set_enemy_item_dropped(敌人ID, 掉落物ID)
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
3
 楼主| 发表于 2013-10-22 19:01:42 | 只看该作者
铃仙·优昙华院·因幡 发表于 2013-10-22 18:33
从整合系统里找到  Game_Troop 的 make_drop_items 方法, 在(可能类似,没有脚本不好说明)
这段末尾添加: se ...

boss,能把图鉴脚本里的掉落内容剥掉吗?因为整合系统里面的掉率不像正常掉率那样,是表示不来的【比如一个敌人队伍,精英怪,会掉落所有的物品】,看看能不能把怪物图鉴里的掉率内容剥掉……
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv2.观梦者

狂気の月兔

梦石
0
星屑
276
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

4
发表于 2013-10-22 19:40:49 | 只看该作者
一个最快的办法,  984 和 985 直接注释掉. 不过可能会留下一个空白.

点评

那是你整合系统的问题了  发表于 2013-10-22 20:12
整合系统设定好的爆率依旧是0 ……  发表于 2013-10-22 20:07
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 06:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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