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

Project1

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

[已经过期] 如何引用重新定义后的enemy.maxhp?

[复制链接]

Lv2.观梦者

梦石
0
星屑
582
在线时间
917 小时
注册时间
2013-3-13
帖子
557
跳转到指定楼层
1
发表于 2013-5-10 15:20:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
1、“敌人等级”脚本将敌人的MAXHP、MAXMP、atk、def、spi、agi等重新定义了;
比方说1级的“难民”,HP是30。
2、之后的“怪物图鉴2”脚本中引用的enemy.maxhp是数据库中设定的敌人HP,数据库中“难民”的HP是15,
因此怪物图鉴中显示的难民HP是15。而实际上应当是30。

求教如何修改脚本,使其达到“难民”的HP在怪物图鉴中显示为30的效果。

非常感谢!

附脚本如下:
敌人等级中定义HP的部分:
$hpl = 30   # 敌人每级所提高的生命值
  def base_maxhp
    $z = $data_enemies[@enemy_id].read_note('等级')
    if $z == nil
      return enemy.maxhp   
    elsif $game_party.members.size == 1
      return $data_enemies[@enemy_id].read_note('等级') * $hpl
    elsif $game_party.members.size == 2
      return $data_enemies[@enemy_id].read_note('等级') * $hpl * 2
    end
  end
怪物图鉴中涉及到的部分:
#--------------------------------------------------------------------------
  # ○ 参数的描画 - 1
  #     dx, dy : 描画先 X, Y
  #--------------------------------------------------------------------------
  def draw_parameter1(dx, dy)
    # 名前, HP, MP
    param = {}
    if KGC::Commands.enemy_defeated?(enemy.id)
      param[:maxhp] = enemy.maxhp
      param[:maxmp] = enemy.maxmp
      if $imported["BattleCount"]
        param[:defeat_count] = KGC::Commands.get_defeat_count(enemy.id)
      end
    else
      param[:maxhp] = param[:maxmp] = KGC::EnemyGuide::UNDEFEATED_PARAMETER
      param[:defeat_count] = 0
    end

    self.contents.font.color = normal_color
    self.contents.draw_text(dx, dy, width - 144, WLH, enemy.name)
    self.contents.font.color = system_color
    self.contents.draw_text(dx, dy + WLH,     80, WLH, Vocab.hp)
    self.contents.draw_text(dx, dy + WLH * 2, 80, WLH, Vocab.mp)
    if $imported["BattleCount"]
      self.contents.draw_text(dx, dy + WLH * 3, 80, WLH,
        KGC::EnemyGuide::PARAMETER_NAME[:defeat_count])
    end
    self.contents.font.color = normal_color
    self.contents.draw_text(dx + 88, dy + WLH,     64, WLH, param[:maxhp], 2)
    self.contents.draw_text(dx + 88, dy + WLH * 2, 64, WLH, param[:maxmp], 2)
    if $imported["BattleCount"]
      self.contents.draw_text(dx + 88, dy + WLH * 3, 64, WLH,
        param[:defeat_count], 2)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 参数的描画 - 2
  #     dx, dy : 描画先 X, Y
  #--------------------------------------------------------------------------
  def draw_parameter2(dx, dy)
    # ATK ~ AGI
    param = {}
    if KGC::Commands.enemy_defeated?(enemy.id)
      param[:atk]   = enemy.atk
      param[:def]   = enemy.def
      param[:spi]   = enemy.spi
      param[:agi]   = enemy.agi
    else
      param[:atk] = param[:def] = param[:spi] = param[:agi] =
        KGC::EnemyGuide::UNDEFEATED_PARAMETER
    end

    dw = (width - 32) / 2
    self.contents.font.color = system_color
    self.contents.draw_text(dx,      dy,       80, WLH, Vocab.atk)
    self.contents.draw_text(dx + dw, dy,       80, WLH, Vocab.def)
    self.contents.draw_text(dx,      dy + WLH, 80, WLH, Vocab.spi)
    self.contents.draw_text(dx + dw, dy + WLH, 80, WLH, Vocab.agi)
    dx += 80
    self.contents.font.color = normal_color
    self.contents.draw_text(dx,      dy,       48, WLH, param[:atk], 2)
    self.contents.draw_text(dx + dw, dy,       48, WLH, param[:def], 2)
    self.contents.draw_text(dx     , dy + WLH, 48, WLH, param[:spi], 2)
    self.contents.draw_text(dx + dw, dy + WLH, 48, WLH, param[:agi], 2)
    return dy + WLH * 2
  end
  #--------------------------------------------------------------------------
  # ○ EXP, Gold 描画
  #     dx, dy : 描画先 X, Y
  #--------------------------------------------------------------------------
  def draw_prize(dx, dy)
    param = {}
    if KGC::Commands.enemy_defeated?(enemy.id)
      param[:exp]  = enemy.exp
      param[:gold] = enemy.gold
      param[:ap]   = enemy.ap if $imported["EquipLearnSkill"]
    else
      param[:exp] = param[:gold] = param[:ap] =
        KGC::EnemyGuide::UNDEFEATED_PARAMETER
    end

    dw = (width - 32) / 2
    self.contents.font.color = system_color
    self.contents.draw_text(dx,      dy, 80, WLH,
      KGC::EnemyGuide::PARAMETER_NAME[:exp])
    self.contents.draw_text(dx + dw, dy, 80, WLH, Vocab.gold)
    if $imported["EquipLearnSkill"]
      self.contents.draw_text(dx, dy + WLH, 80, WLH, Vocab.ap)
    end

    # EXP, Gold
    dx += 76
    self.contents.font.color = normal_color
    self.contents.draw_text(dx,      dy, 52, WLH, param[:exp], 2)
    self.contents.draw_text(dx + dw, dy, 52, WLH, param[:gold], 2)
    if $imported["EquipLearnSkill"]
      self.contents.draw_text(dx, dy + WLH, 52, WLH, param[:ap], 2)
    end

    return dy + WLH * 2
  end


Lv3.寻梦者

梦石
1
星屑
2078
在线时间
920 小时
注册时间
2012-10-18
帖子
428

开拓者

2
发表于 2013-5-10 16:18:17 | 只看该作者
param[:maxhp] = enemy.maxhp
改成
param[:maxhp] = enemy.base_maxhp

点评

请看3楼的脚本  发表于 2013-5-10 16:30
好的。我在3楼补上。  发表于 2013-5-10 16:25
出错的是什么?可以提供截图以及脚本看看吗?  发表于 2013-5-10 16:22
试过了,报错。。。  发表于 2013-5-10 16:21
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
582
在线时间
917 小时
注册时间
2013-3-13
帖子
557
3
 楼主| 发表于 2013-5-10 16:23:09 | 只看该作者
本帖最后由 crow2006 于 2013-5-10 16:29 编辑
芙蕾娅 发表于 2013-5-10 16:18
param[:maxhp] = enemy.maxhp
改成
param[:maxhp] = enemy.base_maxhp

回复2楼:


敌人等级:
RUBY 代码复制
  1. #============================================================================
  2. # 〇 让敌人也有等级(敌人能力自动设置)
  3. #                              By.冰舞蝶恋
  4. #----------------------------------------------------------------------------
  5. #
  6. #  用法:在敌人的备注里写上等级 = 设定的等级即可。
  7. #        如:等级 = 20
  8. #        如果需要随机等级,那么可以用
  9. #            等级 = rand(b)+a
  10. #            那么随机数的最小值是a,最大值是a+b-1
  11. #            比如需要2~5的随机数,那么
  12. #            等级 = rand(4)+2
  13. #            此脚本会显示所设定的敌人等级。
  14. #----------------------------------------------------------------------------
  15. #  设置:请在下方设定敌人的每级增长能力。
  16. #----------------------------------------------------------------------------
  17. #  注意:如果不需要敌人的等级,不在备注中填写相关文字即可。
  18. #        由于该脚本会自动设定敌人的等级和能力,所以当你需要自己设定敌人的能力
  19. #        时,你只需不在备注中填写即可。
  20. #----------------------------------------------------------------------------
  21. #  更新:加入敌人的金钱和经验的计算,更加省力。
  22. #============================================================================
  23.  
  24. #---------------------- 以下是敌人能力设置部分 ------------------------------
  25. $hpl = 30   # 敌人每级所提高的生命值
  26. $mpl = 30   # 敌人每级所提高的魔法值
  27. $atkl = 4   # 敌人每级所增长的攻击力
  28. $defl = 4   # 敌人每级所增长的防御力
  29. $spil = 4   # 敌人每级所增长的精神力
  30. $agil = 2   # 敌人每级所增长的敏捷度
  31. $goldl = 6  # 敌人每级所能多获得的金钱数量
  32. $expl = 6   # 敌人每级所能多获得的经验数量
  33. #----------------------------------------------------------------------------
  34. class Game_Enemy
  35.   #--------------------------------------------------------------------------
  36.   # ● 获取并显示敌人的等级
  37.   #--------------------------------------------------------------------------
  38.   def name
  39.     if @plural
  40.       $z = $data_enemies[@enemy_id].read_note('等级')
  41.       if $z != nil  
  42.         return @original_name + "  #{$z}级"
  43.       else
  44.         return @original_name + "  #{$z}级"
  45.       end
  46.       else
  47.       $z = $data_enemies[@enemy_id].read_note('等级')
  48.       return @original_name + "  #{$z}级"
  49.     end
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 获取基本体力最大值
  53.   #--------------------------------------------------------------------------
  54.   def base_maxhp
  55.     $z = $data_enemies[@enemy_id].read_note('等级')
  56.     if $z == nil
  57.       return enemy.maxhp   
  58.     elsif $game_party.members.size == 1
  59.       return $data_enemies[@enemy_id].read_note('等级') * $hpl
  60.     elsif $game_party.members.size == 2
  61.       return $data_enemies[@enemy_id].read_note('等级') * $hpl * 2
  62.     end
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取基本魔力最大值
  66.   #--------------------------------------------------------------------------
  67.   def base_maxmp
  68.     $z = $data_enemies[@enemy_id].read_note('等级')
  69.     if $z == nil
  70.       return enemy.maxmp
  71.     else
  72.       return $data_enemies[@enemy_id].read_note('等级') * $mpl
  73.     end
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 获取基本攻击力
  77.   #--------------------------------------------------------------------------
  78.   def base_atk
  79.     $z = $data_enemies[@enemy_id].read_note('等级')
  80.     if $z == nil
  81.       return enemy.atk
  82.     else
  83.       return $data_enemies[@enemy_id].read_note('等级') * $atkl
  84.     end
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 获取基本防御力
  88.   #--------------------------------------------------------------------------
  89.   def base_def
  90.     $z = $data_enemies[@enemy_id].read_note('等级')
  91.     if $z == nil
  92.       return enemy.def
  93.     else
  94.       return $data_enemies[@enemy_id].read_note('等级') * $defl
  95.     end
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 获取基本精神力
  99.   #--------------------------------------------------------------------------
  100.   def base_spi
  101.     $z = $data_enemies[@enemy_id].read_note('等级')
  102.     if $z == nil
  103.       return enemy.spi
  104.     else
  105.       return $data_enemies[@enemy_id].read_note('等级') * $spil
  106.     end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 获取基本敏捷
  110.   #--------------------------------------------------------------------------
  111.   def base_agi
  112.     $z = $data_enemies[@enemy_id].read_note('等级')
  113.     if $z == nil
  114.       return enemy.agi
  115.     else
  116.       return $data_enemies[@enemy_id].read_note('等级') * $agil
  117.     end
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 获取经验值
  121.   #--------------------------------------------------------------------------
  122.   def exp
  123.     $z = $data_enemies[@enemy_id].read_note('等级')
  124.     if $z == nil
  125.       return enemy.exp
  126.     elsif $game_party.members.size == 1
  127.       return $data_enemies[@enemy_id].read_note('等级') * $expl
  128.     elsif $game_party.members.size == 2
  129.       return $data_enemies[@enemy_id].read_note('等级') * $expl / 2
  130.     end
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 获取金钱
  134.   #--------------------------------------------------------------------------
  135.   def gold
  136.     $z = $data_enemies[@enemy_id].read_note('等级')
  137.     if $z == nil
  138.       return enemy.gold
  139.     else
  140.       return $data_enemies[@enemy_id].read_note('等级') * $goldl
  141.     end
  142.   end
  143. end
  144. #----------------------------------------------------------------------------
  145. # 以下大神部分By.沉影不器
  146. #----------------------------------------------------------------------------
  147. module RPG
  148.   module ReadNote
  149.     def self.read(str, section, mismatch = nil)
  150.       str.each_line do |line|
  151.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
  152.       end
  153.       return mismatch
  154.     end
  155.   end
  156.   class BaseItem
  157.     def read_note(section, mismatch = nil)
  158.       ReadNote.read(self.note, section, mismatch)
  159.     end
  160.   end
  161.   class Enemy
  162.     def read_note(section, mismatch = nil)
  163.       ReadNote.read(self.note, section, mismatch)
  164.     end
  165.   end
  166.   class State
  167.     def read_note(section, mismatch = nil)
  168.       ReadNote.read(self.note, section, mismatch)
  169.     end
  170.   end
  171. end


怪物图鉴1
RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 怪物图鉴 - KGC_EnemyGuide ◆ VX ◆
  3. #_/       翻译 约束的旧版 + 一箭烂
  4. #_/    ◇ Last update : 2008/11/16 ◇
  5. #_/----------------------------------------------------------------------------
  6. #_/  作成怪物图鉴。
  7. #_/============================================================================
  8. #_/ 【基本機能】请在≪物品掉落扩张≫ 之上添加。
  9. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  10.  
  11. #==============================================================================
  12. # ★ 定制項目 - Customize ★
  13. #==============================================================================
  14.  
  15. module KGC
  16. module EnemyGuide
  17.   # ◆ 图鉴用背景图片表示
  18.   #   true  : 用背景图片代替原本窗口。
  19.   #   false : 使用平常窗口。
  20.   USE_BACKGROUND_IMAGE = true
  21.   # ◆ 背景图片的文件夹名
  22.   #  "Graphics/System/" 内载入。
  23.   BACKGROUND_FILENAME  = "EnemyGuideBack"
  24.   # ◆ 完成度表示的间隔 [框架]
  25.   INFO_INTERVAL = 90
  26.  
  27.   # ◆ 名字前面编号
  28.   #   true  : 001: 史莱姆
  29.   #   false : 史莱姆
  30.   SHOW_SERIAL_NUMBER = false
  31.   # ◆ 标号按照目录排序
  32.   #  true  : 无视ID的排列编号 。
  33.   #  false : 按照目录的排列顺序编号。
  34.   SERIAL_NUM_FOLLOW  = true
  35.   # ◆ 编号的格式化字符串
  36.   #  参照帮助的 sprintf 格式。
  37.   SERIAL_NUM_FORMAT  = "%03d: "
  38.   # ◆ 未遭遇的敌人名字
  39.   #  只写入一个文字的时候,会自动扩张成怪物名字的字数。
  40.   UNKNOWN_ENEMY_NAME = "?"
  41.   # ◆ 未遭遇敌人的资料表示
  42.   UNENCOUNTERED_DATA = "尚未遇到"
  43.   # ◆ 图鉴的属性名
  44.   PARAMETER_NAME = {
  45.     :defeat_count   => "打败次数",
  46.     :weak_element   => "",
  47.     :resist_element => "",
  48.     :weak_state     => "",
  49.     :resist_state   => "",
  50.     :exp            => "经验值",
  51.     :treasure       => "物品",
  52.     :drop_prob      => "掉落率",
  53.     :steal_obj      => "偷盗物品",
  54.     :steal_prob     => "成功率",
  55.   }  # ← 这里不能消除!
  56.   # ◆ 未击破敌人的变数表示
  57.   UNDEFEATED_PARAMETER = "???"
  58.   # ◆ 未掉落物品的名字表示
  59.   #  只写入一个文字的时候,会自动扩张成掉落物品名字的字数。
  60.   UNDROPPED_ITEM_NAME  = "?"
  61.  
  62.   # ◆ 调查耐性属性的范围
  63.   #  容纳排列调查耐性属性的 ID 。
  64.   #  使用.. 或 ... 范围指定都是可以的。
  65.   ELEMENT_RANGE = []
  66.   # ◆ 属性的ICON
  67.   #  指定各属性的ICON编号。
  68.   #  对应排列的添加字的属性ID。
  69.   ELEMENT_ICON = [nil]  # ← 这里不能消除!
  70.   # ◆ 物品掉落是否显示
  71.   #   true  : 显示
  72.   #   false : 不显示
  73.   SHOW_DROP_ITEM = true
  74.   # ◆ 是否显示偷盗
  75.   #  ≪偷盗≫ 有用的时候。
  76.   SHOW_STEAL_OBJ = false
  77.  
  78.   # ◆ 从图鉴中隐藏敌人
  79.   #  排列想要从图鉴中隐藏的敌人ID。
  80.   #  ID 和范围 (1..10 等), 哪种都可以。
  81.   # <例> HIDDEN_ENEMIES = [2, 4, 8, 16..32]
  82.   HIDDEN_ENEMIES = [1,2,3,4,5]
  83.  
  84.   # ◆ 敌人的排列顺序
  85.   #  表示的敌人ID、排列成想要的顺序。
  86.   #  使用.. 或 ... 范围指定都是可以的。
  87.   #  没有被指定的敌人、或者 HIDDEN_ENEMIES 中指定过的敌人不表示。
  88.   #  (不适用这个机能的时候是 nil)
  89.   ENEMY_ORDER = nil
  90.   # ENEMY_ORDER = [1..5, 8..13, 6, 7, 14, 15]
  91.   #  ↑使用例子
  92.  
  93.   # ◆ 变身前的敌人也击破
  94.   #   true  : 变身前的敌人也被看作是击败过。
  95.   #   false : 变身前的敌人不被看作是击败过(只是遭遇过)。
  96.   ORIGINAL_DEFEAT = true
  97.  
  98.   # ◆ 菜单画面中「怪物图鉴」指令的追加
  99.   #  追加的地点是、菜单画面指令列的最下方。
  100.   #  如果想要在其他地方放置指令时请使用≪特制菜单指令排列≫ 脚本。
  101.   USE_MENU_ENEMY_GUIDE_COMMAND = true
  102.   # ◆ 菜单画面的「怪物图鉴」指令名称
  103.   VOCAB_MENU_ENEMY_GUIDE       = "怪物图鉴"
  104. end
  105. end
  106.  
  107. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  108.  
  109. $imported = {} if $imported == nil
  110. $imported["EnemyGuide"] = true
  111.  
  112. module KGC
  113.   module_function
  114.   #--------------------------------------------------------------------------
  115.   # ○ 字符串屏蔽
  116.   #     str  : 字符串被屏蔽
  117.   #     mask : 屏蔽字符串
  118.   #--------------------------------------------------------------------------
  119.   def mask_string(str, mask)
  120.     text = mask
  121.     if mask.scan(/./).size == 1
  122.       text = mask * str.scan(/./).size
  123.     end
  124.     return text
  125.   end
  126. end
  127.  
  128. module KGC::EnemyGuide
  129.   # 正则表达式
  130.   module Regexp
  131.     # 敌人
  132.     module Enemy
  133.       # 图鉴说明开始
  134.       BEGIN_GUIDE_DESCRIPTION = /<(?:GUIDE_DESCRIPTION|图鉴说明)>/i
  135.       # 图鉴说明结束
  136.       END_GUIDE_DESCRIPTION = /<\/(?:GUIDE_DESCRIPTION|图鉴说明)>/i
  137.     end
  138.   end
  139.  
  140.   module_function
  141.   #--------------------------------------------------------------------------
  142.   # ○ Range | Integer 的排列按照 Integer 的排列 (排除重复的情况)
  143.   #--------------------------------------------------------------------------
  144.   def convert_integer_array(array)
  145.     result = []
  146.     array.each { |i|
  147.       case i
  148.       when Range
  149.         result |= i.to_a
  150.       when Integer
  151.         result |= [i]
  152.       end
  153.     }
  154.     return result
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ○ 看见敌人?
  158.   #--------------------------------------------------------------------------
  159.   def enemy_show?(enemy_id)
  160.     return false if HIDDEN_ENEMY_LIST.include?(enemy_id)
  161.     if ENEMY_ORDER_ID != nil
  162.       return false unless ENEMY_ORDER_ID.include?(enemy_id)
  163.     end
  164.  
  165.     return true
  166.   end
  167.  
  168.   # 非表示的怪物资料
  169.   HIDDEN_ENEMY_LIST = convert_integer_array(HIDDEN_ENEMIES)
  170.   # 排序敌人 ID
  171.   ENEMY_ORDER_ID = (ENEMY_ORDER == nil ? nil :
  172.     convert_integer_array(ENEMY_ORDER))
  173.   # 确认属性资料
  174.   CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE)
  175. end
  176.  
  177. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  178.  
  179. #==============================================================================
  180. # □ KGC::Commands
  181. #==============================================================================
  182.  
  183. module KGC
  184. module Commands
  185.   module_function
  186.   #--------------------------------------------------------------------------
  187.   # ○ 取得遭遇状态
  188.   #     enemy_id : 敌 ID
  189.   #--------------------------------------------------------------------------
  190.   def enemy_encountered?(enemy_id)
  191.     return $game_system.enemy_encountered[enemy_id]
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ○ 取得击破状态
  195.   #     enemy_id : 敵 ID
  196.   #--------------------------------------------------------------------------
  197.   def enemy_defeated?(enemy_id)
  198.     return $game_system.enemy_defeated[enemy_id]
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ○ 取得掉落物品状态
  202.   #     enemy_id   : 敌 ID
  203.   #     item_index : 掉落物品的号码
  204.   #--------------------------------------------------------------------------
  205.   def enemy_item_dropped?(enemy_id, item_index)
  206.     if $game_system.enemy_item_dropped[enemy_id] == nil
  207.       return false
  208.     end
  209.     result = $game_system.enemy_item_dropped[enemy_id] & (1 << item_index)
  210.     return (result != 0)
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ○ 取得偷盗成功率
  214.   #     enemy_id   : 敌 ID
  215.   #     item_index : 掉落物品的号码
  216.   #--------------------------------------------------------------------------
  217.   def enemy_object_stolen?(enemy_id, obj_index)
  218.     if $game_system.enemy_object_stolen[enemy_id] == nil
  219.       return false
  220.     end
  221.     result = $game_system.enemy_object_stolen[enemy_id] & (1 << obj_index)
  222.     return (result != 0)
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ○ 设定遭遇状态
  226.   #     enemy_id : 敌 ID
  227.   #     enabled  : true..遭遇过  false..未遭遇
  228.   #--------------------------------------------------------------------------
  229.   def set_enemy_encountered(enemy_id, enabled = true)
  230.     $game_system.enemy_encountered[enemy_id] = enabled
  231.     unless enabled
  232.       # 未遭遇等于未击破
  233.       set_enemy_defeated(enemy_id, false)
  234.     end
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ○ 设定击败状态
  238.   #     enemy_id : 敌 ID
  239.   #     enabled  : true..击败过  false..未击败
  240.   #--------------------------------------------------------------------------
  241.   def set_enemy_defeated(enemy_id, enabled = true)
  242.     $game_system.enemy_defeated[enemy_id] = enabled
  243.     if enabled
  244.       # 被击败等于被遭遇
  245.       set_enemy_encountered(enemy_id)
  246.     end
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ○ 设定掉落物品的状态
  250.   #     enemy_id   : 敌 ID
  251.   #     item_index : 掉落物品的编号
  252.   #     enabled    : true..掉落过  false..未掉落
  253.   #--------------------------------------------------------------------------
  254.   def set_enemy_item_dropped(enemy_id, item_index, enabled = true)
  255.     if $game_system.enemy_item_dropped[enemy_id] == nil
  256.       $game_system.enemy_item_dropped[enemy_id] = 0
  257.     end
  258.     if enabled
  259.       $game_system.enemy_item_dropped[enemy_id] |= (1 << item_index)
  260.     else
  261.       $game_system.enemy_item_dropped[enemy_id] &= ~(1 << item_index)
  262.     end
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ○ 设定偷盗成功状态
  266.   #     enemy_id   : 敌 ID
  267.   #     ojb_index : 掉落物品的编号
  268.   #     enabled    : true..掉落过  false..未掉落
  269.   #--------------------------------------------------------------------------
  270.   def set_enemy_object_stolen(enemy_id, obj_index, enabled = true)
  271.     if $game_system.enemy_object_stolen[enemy_id] == nil
  272.       $game_system.enemy_object_stolen[enemy_id] = 0
  273.     end
  274.     if enabled
  275.       $game_system.enemy_object_stolen[enemy_id] |= (1 << obj_index)
  276.     else
  277.       $game_system.enemy_object_stolen[enemy_id] &= ~(1 << obj_index)
  278.     end
  279.   end
  280.   #--------------------------------------------------------------------------
  281.   # ○ 清空图鉴
  282.   #--------------------------------------------------------------------------
  283.   def reset_enemy_guide
  284.     $game_system.enemy_encountered = []
  285.     $game_system.enemy_defeated = []
  286.     $game_system.enemy_item_dropped = []
  287.     $game_system.enemy_object_stolen = []
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ○ 图鉴完成
  291.   #--------------------------------------------------------------------------
  292.   def complete_enemy_guide
  293.     (1...$data_enemies.size).each { |i|
  294.       set_enemy_encountered(i)
  295.       set_enemy_defeated(i)
  296.  
  297.       enemy = $data_enemies[i]
  298.  
  299.       items = [enemy.drop_item1, enemy.drop_item2]
  300.       if $imported["ExtraDropItem"]
  301.         items += enemy.extra_drop_items
  302.       end
  303.       items.each_index { |j| set_enemy_item_dropped(i, j) }
  304.  
  305.       if $imported["Steal"]
  306.         objs = enemy.steal_objects
  307.         objs.each_index { |j| set_enemy_object_stolen(i, j) }
  308.       end
  309.     }
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ○ 已经获得图鉴?
  313.   #     enemy_id : 敌 ID
  314.   #--------------------------------------------------------------------------
  315.   def enemy_guide_include?(enemy_id)
  316.     return false unless KGC::EnemyGuide.enemy_show?(enemy_id)
  317.     enemy = $data_enemies[enemy_id]
  318.     return (enemy != nil && enemy.name != "")
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ○ 取得存在敌人的种类数
  322.   #     variable_id : 代入取得后的值的变量ID
  323.   #--------------------------------------------------------------------------
  324.   def get_all_enemies_number(variable_id = 0)
  325.     n = 0
  326.     (1...$data_enemies.size).each { |i|
  327.       n += 1 if enemy_guide_include?(i)
  328.     }
  329.     $game_variables[variable_id] = n if variable_id > 0
  330.     return n
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # ○ 取得遭遇过敌人的种类数
  334.   #     variable_id : 代入取得后的值的变量ID
  335.   #--------------------------------------------------------------------------
  336.   def get_encountered_enemies_number(variable_id = 0)
  337.     n = 0
  338.     (1...$data_enemies.size).each { |i|
  339.       if enemy_guide_include?(i) && $game_system.enemy_encountered[i]
  340.         n += 1
  341.       end
  342.     }
  343.     $game_variables[variable_id] = n if variable_id > 0
  344.     return n
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ○ 取得击败过的敌人的种类数
  348.   #     variable_id : 代入取得后的值的变量ID
  349.   #--------------------------------------------------------------------------
  350.   def get_defeated_enemies_number(variable_id = 0)
  351.     n = 0
  352.     (1...$data_enemies.size).each { |i|
  353.       if enemy_guide_include?(i) && $game_system.enemy_encountered[i] &&
  354.           $game_system.enemy_defeated[i]
  355.         n += 1
  356.       end
  357.     }
  358.     $game_variables[variable_id] = n if variable_id > 0
  359.     return n
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ○ 怪物图鉴完成度的取得
  363.   #     variable_id : 代入取得后的值的变量ID
  364.   #--------------------------------------------------------------------------
  365.   def get_enemy_guide_completion(variable_id = 0)
  366.     num = get_all_enemies_number
  367.     value = (num > 0 ? (get_defeated_enemies_number * 100 / num) : 0)
  368.     $game_variables[variable_id] = value if variable_id > 0
  369.     return value
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ○ 呼出怪物图鉴
  373.   #--------------------------------------------------------------------------
  374.   def call_enemy_guide
  375.     return if $game_temp.in_battle
  376.     $game_temp.next_scene = :enemy_guide
  377.   end
  378. end
  379. end
  380.  
  381. class Game_Interpreter
  382.   include KGC::Commands
  383. end
  384.  
  385. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  386.  
  387. #==============================================================================
  388. # ■ Vocab
  389. #==============================================================================
  390.  
  391. module Vocab
  392.   # 怪物图鉴
  393.   def self.enemy_guide
  394.     return KGC::EnemyGuide::VOCAB_MENU_ENEMY_GUIDE
  395.   end
  396. end
  397.  
  398. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  399.  
  400. #==============================================================================
  401. # ■ RPG::Enemy
  402. #==============================================================================
  403.  
  404. class RPG::Enemy
  405.   #--------------------------------------------------------------------------
  406.   # ○ 怪物图鉴的存放处生成
  407.   #--------------------------------------------------------------------------
  408.   def create_enemy_guide_cache
  409.     @__enemy_guide_description = ""
  410.  
  411.     description_flag = false
  412.     self.note.each_line { |line|
  413.       case line
  414.       when KGC::EnemyGuide::Regexp::Enemy::BEGIN_GUIDE_DESCRIPTION
  415.         # 说明文开始
  416.         description_flag = true
  417.       when KGC::EnemyGuide::Regexp::Enemy::END_GUIDE_DESCRIPTION
  418.         # 说明文结束
  419.         description_flag = false
  420.       else
  421.         if description_flag
  422.           @__enemy_guide_description += line
  423.         end
  424.       end
  425.     }
  426.   end
  427.   #--------------------------------------------------------------------------
  428.   # ○ 图鉴说明文字
  429.   #--------------------------------------------------------------------------
  430.   def enemy_guide_description
  431.     create_enemy_guide_cache if @__enemy_guide_description == nil
  432.     return @__enemy_guide_description
  433.   end
  434. end
  435.  
  436. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  437.  
  438. #==============================================================================
  439. # ■ Game_System
  440. #==============================================================================
  441.  
  442. class Game_System
  443.   #--------------------------------------------------------------------------
  444.   # ● 公开实例变量
  445.   #--------------------------------------------------------------------------
  446.   attr_writer   :enemy_encountered        # 遭遇过的标注
  447.   attr_writer   :enemy_defeated           # 击败过的标志
  448.   attr_writer   :enemy_item_dropped       # 物品掉落过的标志
  449.   attr_writer   :enemy_object_stolen      # 偷盗成功的标志
  450.   #--------------------------------------------------------------------------
  451.   # ○ 取得遭遇过的标志
  452.   #--------------------------------------------------------------------------
  453.   def enemy_encountered
  454.     @enemy_encountered = [] if @enemy_encountered == nil
  455.     return @enemy_encountered
  456.   end
  457.   #--------------------------------------------------------------------------
  458.   # ○ 取得击败过的标志
  459.   #--------------------------------------------------------------------------
  460.   def enemy_defeated
  461.     @enemy_defeated = [] if @enemy_defeated == nil
  462.     return @enemy_defeated
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ○ 物品掉落过的标志
  466.   #--------------------------------------------------------------------------
  467.   def enemy_item_dropped
  468.     @enemy_item_dropped = [] if @enemy_item_dropped == nil
  469.     return @enemy_item_dropped
  470.   end
  471.   #--------------------------------------------------------------------------
  472.   # ○ 偷盗成功的标志
  473.   #--------------------------------------------------------------------------
  474.   def enemy_object_stolen
  475.     @enemy_object_stolen = [] if @enemy_object_stolen == nil
  476.     return @enemy_object_stolen
  477.   end
  478. end
  479.  
  480. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  481.  
  482. #==============================================================================
  483. # ■ Game_Enemy
  484. #==============================================================================
  485.  
  486. class Game_Enemy < Game_Battler
  487.   #--------------------------------------------------------------------------
  488.   # ● 对象初始化
  489.   #     index    : 敌人队伍中的目录
  490.   #     enemy_id : 敌人造型 ID
  491.   #--------------------------------------------------------------------------
  492.   alias initialize_KGC_EnemyGuide initialize
  493.   def initialize(index, enemy_id)
  494.     initialize_KGC_EnemyGuide(index, enemy_id)
  495.  
  496.     @original_ids = []  # 变身前的 ID
  497.     # 开启遭遇过标志
  498.     KGC::Commands.set_enemy_encountered(enemy_id) unless hidden
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # ● 破坏
  502.   #--------------------------------------------------------------------------
  503.   alias perform_collapse_KGC_EnemyGuide perform_collapse
  504.   def perform_collapse
  505.     last_collapsed = @collapse
  506.  
  507.     perform_collapse_KGC_EnemyGuide
  508.  
  509.     @collapse = true if $game_temp.in_battle and dead?
  510.  
  511.     if !last_collapsed and @collapse
  512.       # 开启击败过标志
  513.       KGC::Commands.set_enemy_defeated(enemy_id)
  514.       # 变身前的敌人也按照击败过来处理
  515.       if KGC::EnemyGuide::ORIGINAL_DEFEAT
  516.         @original_ids.compact.each { |i|
  517.           KGC::Commands.set_enemy_defeated(i)
  518.         }
  519.       end
  520.     end
  521.   end
  522.   #--------------------------------------------------------------------------
  523.   # ● 变身
  524.   #     enemy_id : 变身前敌人造型 ID
  525.   #--------------------------------------------------------------------------
  526.   alias transform_KGC_EnemyGuide transform
  527.   def transform(enemy_id)
  528.     # 保存变身前的敌人ID
  529.     @original_ids << @enemy_id
  530.  
  531.     transform_KGC_EnemyGuide(enemy_id)
  532.  
  533.     # 变身后的敌人也按照遭遇过来处理
  534.     KGC::Commands.set_enemy_encountered(enemy_id)
  535.   end
  536.   #--------------------------------------------------------------------------
  537.   # ● 隐藏状态的设定
  538.   #--------------------------------------------------------------------------
  539.   alias hidden_equal_KGC_EnemyGuide hidden= unless $@
  540.   def hidden=(value)
  541.     hidden_equal_KGC_EnemyGuide(value)
  542.     # 出现过的场合为开启遭遇过的标志
  543.     KGC::Commands.set_enemy_encountered(enemy_id) unless value
  544.   end
  545. end
  546.  
  547. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  548.  
  549. #==============================================================================
  550. # ■ Game_Troop
  551. #==============================================================================
  552.  
  553. class Game_Troop < Game_Unit
  554.   #--------------------------------------------------------------------------
  555.   # ● 作成排列掉落物品
  556.   #--------------------------------------------------------------------------
  557.   def make_drop_items
  558.     drop_items = []
  559.     dead_members.each { |enemy|
  560.       [enemy.drop_item1, enemy.drop_item2].each_with_index { |di, i|
  561.         next if di.kind == 0
  562.         next if rand(di.denominator) != 0
  563.         if di.kind == 1
  564.           drop_items.push($data_items[di.item_id])
  565.         elsif di.kind == 2
  566.           drop_items.push($data_weapons[di.weapon_id])
  567.         elsif di.kind == 3
  568.           drop_items.push($data_armors[di.armor_id])
  569.         end
  570.         # 调整掉落过标志
  571.         KGC::Commands.set_enemy_item_dropped(enemy.enemy.id, i)
  572.       }
  573.     }
  574.     return drop_items
  575.   end
  576. end
  577.  
  578. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  579.  
  580. #==============================================================================
  581. # ■ Window_Command
  582. #==============================================================================
  583. class Window_Command < Window_Selectable
  584.   unless method_defined?(:add_command)
  585.   #--------------------------------------------------------------------------
  586.   # ○ 添加指令
  587.   #    返回添加位置
  588.   #--------------------------------------------------------------------------
  589.   def add_command(command)
  590.     @commands << command
  591.     @item_max = @commands.size
  592.     item_index = @item_max - 1
  593.     refresh_command
  594.     draw_item(item_index)
  595.     return item_index
  596.   end
  597.   #--------------------------------------------------------------------------
  598.   # ○ 刷新指令
  599.   #--------------------------------------------------------------------------
  600.   def refresh_command
  601.     buf = self.contents.clone
  602.     self.height = [self.height, row_max * WLH + 32].max
  603.     create_contents
  604.     self.contents.blt(0, 0, buf, buf.rect)
  605.     buf.dispose
  606.   end
  607.   #--------------------------------------------------------------------------
  608.   # ○ 插入指令
  609.   #--------------------------------------------------------------------------
  610.   def insert_command(index, command)
  611.     @commands.insert(index, command)
  612.     @item_max = @commands.size
  613.     refresh_command
  614.     refresh
  615.   end
  616.   #--------------------------------------------------------------------------
  617.   # ○ 删除指令
  618.   #--------------------------------------------------------------------------
  619.   def remove_command(command)
  620.     @commands.delete(command)
  621.     @item_max = @commands.size
  622.     refresh
  623.   end
  624.   end
  625. end
  626.  
  627. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  628.  
  629. #==============================================================================
  630. # □ Window_EnemyGuideTop
  631. #------------------------------------------------------------------------------
  632. #   在怪物图鉴上显示完成度。
  633. #==============================================================================
  634.  
  635. class Window_EnemyGuideTop < Window_Base
  636.   #--------------------------------------------------------------------------
  637.   # ● 对象初始化
  638.   #--------------------------------------------------------------------------
  639.   def initialize
  640.     super(0, 0, 240, WLH * 4 + 32)
  641.     self.height = WLH + 32
  642.     @duration = 0
  643.     [url=home.php?mod=space&uid=18229]@interval[/url] = KGC::EnemyGuide::INFO_INTERVAL
  644.     refresh
  645.  
  646.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  647.       self.opacity = 0
  648.     end
  649.     if self.windowskin != nil
  650.       bitmap = Bitmap.new(windowskin.width, windowskin.height)
  651.       bitmap.blt(0, 0, windowskin, windowskin.rect)
  652.       bitmap.clear_rect(80, 16, 32, 32)
  653.       self.windowskin = bitmap
  654.     end
  655.   end
  656.   #--------------------------------------------------------------------------
  657.   # ● 释放
  658.   #--------------------------------------------------------------------------
  659.   def dispose
  660.     self.windowskin.dispose
  661.     super
  662.   end
  663.   #--------------------------------------------------------------------------
  664.   # ● 更新
  665.   #--------------------------------------------------------------------------
  666.   def refresh
  667.     self.contents.clear
  668.     total = KGC::Commands.get_all_enemies_number
  669.     encountered = KGC::Commands.get_encountered_enemies_number
  670.     defeated = KGC::Commands.get_defeated_enemies_number
  671.  
  672.     text = sprintf("遭遇数: %3d/%3d ",encountered, total)
  673.     self.contents.draw_text(0,       0, width - 32, WLH, text, 1)
  674.     self.contents.draw_text(0, WLH * 3, width - 32, WLH, text, 1)
  675.     text = sprintf("击破数: %3d/%3d", defeated, total)
  676.     self.contents.draw_text(0, WLH, width - 32, WLH, text, 1)
  677.     text = sprintf("完成度: %3d%%", defeated * 100 / total)
  678.     self.contents.draw_text(0, WLH * 2, width - 32, WLH, text, 1)
  679.   end
  680.   #--------------------------------------------------------------------------
  681.   # ● 帧更新
  682.   #--------------------------------------------------------------------------
  683.   def update
  684.     @duration += 1
  685.     case @duration
  686.     when @interval...(@interval + WLH)
  687.       self.oy += 1
  688.     when (@interval + WLH)
  689.       @duration = 0
  690.       if self.oy >= WLH * 3
  691.         self.oy = 0
  692.       end
  693.     end
  694.   end
  695. end
  696.  
  697. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  698.  
  699. #==============================================================================
  700. # □ Window_EnemyGuideList
  701. #------------------------------------------------------------------------------
  702. #   怪物图件上表示怪物一栏的窗口。
  703. #==============================================================================
  704.  
  705. class Window_EnemyGuideList < Window_Selectable
  706.   #--------------------------------------------------------------------------
  707.   # ● 对象初始化
  708.   #--------------------------------------------------------------------------
  709.   def initialize
  710.     super(0, WLH + 32, 240, Graphics.height - (WLH + 32))
  711.     self.index = 0
  712.     refresh
  713.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  714.       self.opacity = 0
  715.       self.height -= (self.height - 32) % WLH
  716.     end
  717.   end
  718.   #--------------------------------------------------------------------------
  719.   # ○ 取得选择的怪物
  720.   #--------------------------------------------------------------------------
  721.   def item
  722.     return @data[self.index]
  723.   end
  724.   #--------------------------------------------------------------------------
  725.   # ○ 敌人的目录是否已获得
  726.   #     enemy_id : 敌 ID
  727.   #--------------------------------------------------------------------------
  728.   def include?(enemy_id)
  729.     return KGC::Commands.enemy_guide_include?(enemy_id)
  730.   end
  731.   #--------------------------------------------------------------------------
  732.   # ● 更新
  733.   #--------------------------------------------------------------------------
  734.   def refresh
  735.     @data = []
  736.     if KGC::EnemyGuide::ENEMY_ORDER_ID == nil
  737.       # ID顺序
  738.       enemy_list = 1...$data_enemies.size
  739.     else
  740.       # 指定顺序
  741.       enemy_list = KGC::EnemyGuide::ENEMY_ORDER_ID
  742.     end
  743.     enemy_list.each { |i|
  744.       @data << $data_enemies[i] if include?(i)
  745.     }
  746.     @item_max = @data.size
  747.     create_contents
  748.     for i in 0...@item_max
  749.       draw_item(i)
  750.     end
  751.   end
  752.   #--------------------------------------------------------------------------
  753.   # ● 项目的描绘
  754.   #     index : 项目编号
  755.   #--------------------------------------------------------------------------
  756.   def draw_item(index)
  757.     enemy = @data[index]
  758.     self.contents.font.color = normal_color
  759.     unless KGC::Commands.enemy_defeated?(enemy.id)
  760.       self.contents.font.color.alpha = 128
  761.     end
  762.     rect = item_rect(index)
  763.     self.contents.clear_rect(rect)
  764.  
  765.     if KGC::EnemyGuide::SHOW_SERIAL_NUMBER
  766.       s_num = sprintf(KGC::EnemyGuide::SERIAL_NUM_FORMAT,
  767.         KGC::EnemyGuide::SERIAL_NUM_FOLLOW ? (index + 1) : enemy.id)
  768.     end
  769.  
  770.     text = (KGC::EnemyGuide::SHOW_SERIAL_NUMBER ? s_num : "")
  771.     if KGC::Commands.enemy_encountered?(enemy.id)
  772.       # 遭遇过
  773.       text += enemy.name
  774.     else
  775.       # 未遭遇
  776.       mask = KGC::EnemyGuide::UNKNOWN_ENEMY_NAME
  777.       if mask.scan(/./).size == 1
  778.         mask = mask * enemy.name.scan(/./).size
  779.       end
  780.       text += mask
  781.     end
  782.     self.contents.draw_text(rect, text)
  783.   end
  784. end
  785.  
  786. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


怪物图鉴2:
RUBY 代码复制
  1. #==============================================================================
  2. # □ Window_EnemyGuideStatus
  3. #------------------------------------------------------------------------------
  4. #   在怪物图件上、表示简介的窗口。
  5. #==============================================================================
  6.  
  7. class Window_EnemyGuideStatus < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 公开实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :enemy                    # 表示敌人
  12.   #--------------------------------------------------------------------------
  13.   # ● 对象初始化
  14.   #--------------------------------------------------------------------------
  15.   def initialize
  16.     super(240, 0, Graphics.width - 240, Graphics.height)
  17.     self.enemy = nil
  18.     self.z = 100
  19.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  20.       self.opacity = 0
  21.     end
  22.     @show_sprite = false
  23.     @enemy_sprite = Sprite.new
  24.     @enemy_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  25.     @enemy_sprite.x = 0
  26.     @enemy_sprite.y = 0
  27.     @enemy_sprite.z = self.z + 100
  28.     @enemy_sprite.visible = false
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 释放
  32.   #--------------------------------------------------------------------------
  33.   def dispose
  34.     super
  35.     @enemy_sprite.bitmap.dispose
  36.     @enemy_sprite.dispose
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ○ 物件页是否显示
  40.   #--------------------------------------------------------------------------
  41.   def item_page_show?
  42.     return true if KGC::EnemyGuide::SHOW_DROP_ITEM
  43.     return true if $imported["Steal"] && KGC::EnemyGuide::SHOW_STEAL_OBJ
  44.  
  45.     return false
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ○ 取得页数
  49.   #--------------------------------------------------------------------------
  50.   def pages
  51.     return (item_page_show? ? 2 : 1)
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ○ 表示敌人设定
  55.   #--------------------------------------------------------------------------
  56.   def enemy=(enemy)
  57.     @enemy = enemy
  58.     refresh
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ○ 更改显示的信息
  62.   #     shamt : 移动页
  63.   #--------------------------------------------------------------------------
  64.   def shift_info_type(shamt)
  65.     n = self.ox + (width - 32) * shamt
  66.     self.ox = [[n, 0].max, (width - 32) * (pages - 1)].min
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ○ sprite的表示切换
  70.   #--------------------------------------------------------------------------
  71.   def switch_sprite
  72.     @show_sprite = !@show_sprite
  73.     @enemy_sprite.visible = @show_sprite
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 更新
  77.   #--------------------------------------------------------------------------
  78.   def refresh
  79.     original_width = self.width
  80.     self.width = original_width * pages - (32 * (pages - 1))
  81.     create_contents
  82.     self.width = original_width
  83.  
  84.     draw_enemy_sprite
  85.  
  86.     return if enemy == nil
  87.  
  88.     self.contents.font.color = normal_color
  89.     # 没有遭遇
  90.     unless KGC::Commands.enemy_encountered?(enemy.id)
  91.       self.contents.font.color.alpha = 128
  92.       dy = (height - 32) / 2
  93.       dy -= dy % WLH
  94.       self.contents.draw_text(0, dy, width - 32, WLH,
  95.         KGC::EnemyGuide::UNENCOUNTERED_DATA, 1)
  96.       self.contents.blt(width - 32, 0, self.contents, self.contents.rect)
  97.       return
  98.     end
  99.  
  100.     draw_status
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ○ 简介的描绘
  104.   #--------------------------------------------------------------------------
  105.   def draw_status
  106.     # Page 1
  107.     dy = draw_basic_info(0, 0)
  108.     dy = draw_parameter2(0, dy)
  109.     draw_prize(0, dy)
  110.  
  111.     # Page 2 (如果你只看到相关的项目)
  112.     if item_page_show?
  113.       dx = width - 32
  114.       dy = draw_basic_info(dx, 0)
  115.       max_rows = (self.height - dy - 32) / WLH
  116.       rows = (max_rows + 1) / (pages - 1)
  117.       dy = draw_drop_item(dx, dy, rows)
  118.       draw_steal_object(dx, dy, max_rows - rows)
  119.     end
  120.  
  121.     # Page 3
  122.     dx = (width - 32) * (pages - 1)
  123.     dy = draw_basic_info(dx, 0)
  124.     draw_description(dx, dy)
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ○ 基本请报页
  128.   #     dx, dy : 描画先 X, Y
  129.   #--------------------------------------------------------------------------
  130.   def draw_basic_info(dx, dy)
  131.     draw_graphic(dx, dy)
  132.     draw_parameter1(dx + 112, dy)
  133.     return dy + 96
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ○ 图解的描绘
  137.   #     dx, dy : 描画先 X, Y
  138.   #--------------------------------------------------------------------------
  139.   def draw_graphic(dx, dy)
  140.     buf = Bitmap.new(108, 96)
  141.     bitmap = Cache.battler(enemy.battler_name, enemy.battler_hue)
  142.     rect = Rect.new(0, 0, bitmap.width / 3, bitmap.height / 3)
  143.     rect.x = (108 - rect.width) / 2
  144.     rect.y = (96 - rect.height) / 2
  145.     buf.stretch_blt(rect, bitmap, bitmap.rect)
  146.     self.contents.blt(dx, dy, buf, buf.rect)
  147.     buf.dispose
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ○ 敌人精灵的描画
  151.   #--------------------------------------------------------------------------
  152.   def draw_enemy_sprite
  153.     return if @enemy_sprite == nil
  154.  
  155.     @enemy_sprite.bitmap.fill_rect(@enemy_sprite.bitmap.rect,
  156.       Color.new(0, 0, 0, 160))
  157.  
  158.     return if enemy == nil || !KGC::Commands.enemy_encountered?(enemy.id)
  159.  
  160.     bitmap = Cache.battler(enemy.battler_name, enemy.battler_hue)
  161.     dx = (Graphics.width - bitmap.width) / 2
  162.     dy = (Graphics.height - bitmap.height) / 2
  163.     @enemy_sprite.bitmap.blt(dx, dy, bitmap, bitmap.rect)
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ○ 参数的描画 - 1
  167.   #     dx, dy : 描画先 X, Y
  168.   #--------------------------------------------------------------------------
  169.   def draw_parameter1(dx, dy)
  170.     # 名前, HP, MP
  171.     param = {}
  172.     if KGC::Commands.enemy_defeated?(enemy.id)
  173.       param[:maxhp] = enemy.base_maxhp
  174.       param[:maxmp] = enemy.maxmp
  175.       if $imported["BattleCount"]
  176.         param[:defeat_count] = KGC::Commands.get_defeat_count(enemy.id)
  177.       end
  178.     else
  179.       param[:maxhp] = param[:maxmp] = KGC::EnemyGuide::UNDEFEATED_PARAMETER
  180.       param[:defeat_count] = 0
  181.     end
  182.  
  183.     self.contents.font.color = normal_color
  184.     self.contents.draw_text(dx, dy, width - 144, WLH, enemy.name)
  185.     self.contents.font.color = system_color
  186.     self.contents.draw_text(dx, dy + WLH,     80, WLH, Vocab.hp)
  187.     self.contents.draw_text(dx, dy + WLH * 2, 80, WLH, Vocab.mp)
  188.     if $imported["BattleCount"]
  189.       self.contents.draw_text(dx, dy + WLH * 3, 80, WLH,
  190.         KGC::EnemyGuide::PARAMETER_NAME[:defeat_count])
  191.     end
  192.     self.contents.font.color = normal_color
  193.     self.contents.draw_text(dx + 88, dy + WLH,     64, WLH, param[:maxhp], 2)
  194.     self.contents.draw_text(dx + 88, dy + WLH * 2, 64, WLH, param[:maxmp], 2)
  195.     if $imported["BattleCount"]
  196.       self.contents.draw_text(dx + 88, dy + WLH * 3, 64, WLH,
  197.         param[:defeat_count], 2)
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ○ 参数的描画 - 2
  202.   #     dx, dy : 描画先 X, Y
  203.   #--------------------------------------------------------------------------
  204.   def draw_parameter2(dx, dy)
  205.     # ATK ~ AGI
  206.     param = {}
  207.     if KGC::Commands.enemy_defeated?(enemy.id)
  208.       param[:atk]   = enemy.atk
  209.       param[:def]   = enemy.def
  210.       param[:spi]   = enemy.spi
  211.       param[:agi]   = enemy.agi
  212.     else
  213.       param[:atk] = param[:def] = param[:spi] = param[:agi] =
  214.         KGC::EnemyGuide::UNDEFEATED_PARAMETER
  215.     end
  216.  
  217.     dw = (width - 32) / 2
  218.     self.contents.font.color = system_color
  219.     self.contents.draw_text(dx,      dy,       80, WLH, Vocab.atk)
  220.     self.contents.draw_text(dx + dw, dy,       80, WLH, Vocab.def)
  221.     self.contents.draw_text(dx,      dy + WLH, 80, WLH, Vocab.spi)
  222.     self.contents.draw_text(dx + dw, dy + WLH, 80, WLH, Vocab.agi)
  223.     dx += 80
  224.     self.contents.font.color = normal_color
  225.     self.contents.draw_text(dx,      dy,       48, WLH, param[:atk], 2)
  226.     self.contents.draw_text(dx + dw, dy,       48, WLH, param[:def], 2)
  227.     self.contents.draw_text(dx     , dy + WLH, 48, WLH, param[:spi], 2)
  228.     self.contents.draw_text(dx + dw, dy + WLH, 48, WLH, param[:agi], 2)
  229.     return dy + WLH * 2
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ○ EXP, Gold 描画
  233.   #     dx, dy : 描画先 X, Y
  234.   #--------------------------------------------------------------------------
  235.   def draw_prize(dx, dy)
  236.     param = {}
  237.     if KGC::Commands.enemy_defeated?(enemy.id)
  238.       param[:exp]  = enemy.exp
  239.       param[:gold] = enemy.gold
  240.       param[:ap]   = enemy.ap if $imported["EquipLearnSkill"]
  241.     else
  242.       param[:exp] = param[:gold] = param[:ap] =
  243.         KGC::EnemyGuide::UNDEFEATED_PARAMETER
  244.     end
  245.  
  246.     dw = (width - 32) / 2
  247.     self.contents.font.color = system_color
  248.     self.contents.draw_text(dx,      dy, 80, WLH,
  249.       KGC::EnemyGuide::PARAMETER_NAME[:exp])
  250.     self.contents.draw_text(dx + dw, dy, 80, WLH, Vocab.gold)
  251.     if $imported["EquipLearnSkill"]
  252.       self.contents.draw_text(dx, dy + WLH, 80, WLH, Vocab.ap)
  253.     end
  254.  
  255.     # EXP, Gold
  256.     dx += 76
  257.     self.contents.font.color = normal_color
  258.     self.contents.draw_text(dx,      dy, 52, WLH, param[:exp], 2)
  259.     self.contents.draw_text(dx + dw, dy, 52, WLH, param[:gold], 2)
  260.     if $imported["EquipLearnSkill"]
  261.       self.contents.draw_text(dx, dy + WLH, 52, WLH, param[:ap], 2)
  262.     end
  263.  
  264.     return dy + WLH * 2
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ○ 战利品的描画
  268.   #     dx, dy : 描画先 X, Y
  269.   #     rows   : 行数
  270.   #--------------------------------------------------------------------------
  271.   def draw_drop_item(dx, dy, rows)
  272.     return dy unless KGC::EnemyGuide::SHOW_DROP_ITEM
  273.  
  274.     new_dy = dy + WLH * rows
  275.     dw = (width - 32) / 2
  276.     self.contents.font.color = system_color
  277.     self.contents.draw_text(dx,      dy, 128, WLH,
  278.       KGC::EnemyGuide::PARAMETER_NAME[:treasure], 1)
  279.     self.contents.draw_text(dx + dw, dy, 128, WLH,
  280.       KGC::EnemyGuide::PARAMETER_NAME[:drop_prob], 2)
  281.  
  282.     return new_dy unless KGC::Commands.enemy_defeated?(enemy.id)
  283.  
  284.     # 列表
  285.     drop_items = [enemy.drop_item1, enemy.drop_item2]
  286.     if $imported["ExtraDropItem"]
  287.       drop_items += enemy.extra_drop_items
  288.     end
  289.  
  290.     dy += WLH
  291.     count = 0
  292.     drop_items.each_with_index { |item, i|
  293.       # 物品名
  294.       case item.kind
  295.       when 0
  296.         next
  297.       when 1
  298.         drop_item = $data_items[item.item_id]
  299.       when 2
  300.         drop_item = $data_weapons[item.weapon_id]
  301.       when 3
  302.         drop_item = $data_armors[item.armor_id]
  303.       end
  304.       if KGC::Commands.enemy_item_dropped?(enemy.id, i)
  305.         draw_item_name(drop_item, dx, dy)
  306.       else
  307.         draw_masked_item_name(drop_item, dx, dy)
  308.       end
  309.       # 掉落率
  310.       if $imported["ExtraDropItem"] && item.drop_prob > 0
  311.         text = sprintf("%d%%", item.drop_prob)
  312.       else
  313.         text = "1/#{item.denominator}"
  314.       end
  315.       self.contents.draw_text(dx + dw, dy, 128, WLH, text, 2)
  316.       dy += WLH
  317.       count += 1
  318.       break if count == rows
  319.     }
  320.  
  321.     return new_dy
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ○ 物品名为遮挡的描画
  325.   #     item    : 物品 (机能、武器、防具都可以)
  326.   #     x       : 描画处 X 坐标
  327.   #     y       : 描画出 Y 坐标
  328.   #     enabled : 有効标志。false 的时候半透明的描画
  329.   #--------------------------------------------------------------------------
  330.   def draw_masked_item_name(item, x, y, enabled = true)
  331.     return if item == nil
  332.  
  333.     draw_icon(item.icon_index, x, y, enabled)
  334.     self.contents.font.color = normal_color
  335.     self.contents.font.color.alpha = enabled ? 255 : 128
  336.     mask = KGC::EnemyGuide::UNDROPPED_ITEM_NAME
  337.     text = KGC.mask_string(item.name, mask)
  338.     self.contents.draw_text(x + 24, y, 172, WLH, text)
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # ○ 偷盗名为遮挡的描画
  342.   #     dx, dy : 描画先 X, Y
  343.   #     rows   : 行数
  344.   #--------------------------------------------------------------------------
  345.   def draw_steal_object(dx, dy, rows)
  346.     return dy unless $imported["Steal"] && KGC::EnemyGuide::SHOW_STEAL_OBJ
  347.  
  348.     new_dy = dy + WLH * rows
  349.     dw = (width - 32) / 2
  350.     self.contents.font.color = system_color
  351.     self.contents.draw_text(dx,      dy, 128, WLH,
  352.       KGC::EnemyGuide::PARAMETER_NAME[:steal_obj], 1)
  353.     self.contents.draw_text(dx + dw, dy, 128, WLH,
  354.       KGC::EnemyGuide::PARAMETER_NAME[:steal_prob], 2)
  355.  
  356.     return new_dy unless KGC::Commands.enemy_defeated?(enemy.id)
  357.  
  358.     # 列表
  359.     steal_objects = enemy.steal_objects.clone
  360.     if steal_objects.size >= rows
  361.       steal_objects = steal_objects[0...(rows - 1)]
  362.     end
  363.  
  364.     dy += WLH
  365.     steal_objects.each_with_index { |obj, i|
  366.       if obj.kind == 4
  367.         # Gold
  368.         if KGC::Commands.enemy_object_stolen?(enemy.id, i)
  369.           text = sprintf("%d%s", obj.gold, Vocab.gold)
  370.         else
  371.           mask = KGC::EnemyGuide::UNDROPPED_ITEM_NAME
  372.           text = KGC.mask_string("aaa", mask)
  373.         end
  374.         self.contents.draw_text(dx + 24, dy, dw, WLH, text)
  375.       else
  376.         # Item
  377.         case obj.kind
  378.         when 1
  379.           item = $data_items[obj.item_id]
  380.         when 2
  381.           item = $data_weapons[obj.weapon_id]
  382.         when 3
  383.           item = $data_armors[obj.armor_id]
  384.         end
  385.         if KGC::Commands.enemy_object_stolen?(enemy.id, i)
  386.           draw_item_name(item, dx, dy)
  387.         else
  388.           draw_masked_item_name(item, dx, dy)
  389.         end
  390.       end
  391.       # 成功率
  392.       if obj.success_prob > 0
  393.         text = sprintf("%d%%", obj.success_prob)
  394.       else
  395.         text = "1/#{obj.denominator}"
  396.       end
  397.       self.contents.draw_text(dx + dw, dy, 128, WLH, text, 2)
  398.       dy += WLH
  399.     }
  400.  
  401.     return new_dy
  402.   end
  403.   #--------------------------------------------------------------------------
  404.   # ○ 说明文字描画
  405.   #     dx, dy : 描画先 X, Y
  406.   #--------------------------------------------------------------------------
  407.   def draw_description(dx, dy)
  408.     return unless KGC::Commands.enemy_defeated?(enemy.id)
  409.  
  410.     dx += 4
  411.     enemy.enemy_guide_description.each_line { |line|
  412.       self.contents.draw_text(dx, dy, width - 32, WLH, line.chomp)
  413.       dy += WLH
  414.     }
  415.   end
  416. end
  417.  
  418. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  419.  
  420. #==============================================================================
  421. # ■ Scene_Map
  422. #==============================================================================
  423.  
  424. class Scene_Map < Scene_Base
  425.   #--------------------------------------------------------------------------
  426.   # ● 实行画面的切换
  427.   #--------------------------------------------------------------------------
  428.   alias update_scene_change_KGC_EnemyGuide update_scene_change
  429.   def update_scene_change
  430.     return if $game_player.moving?    # 玩家的移动中?
  431.  
  432.     if $game_temp.next_scene == :enemy_guide
  433.       call_enemy_guide
  434.       return
  435.     end
  436.  
  437.     update_scene_change_KGC_EnemyGuide
  438.   end
  439.   #--------------------------------------------------------------------------
  440.   # ○ 切换到怪物图鉴
  441.   #--------------------------------------------------------------------------
  442.   def call_enemy_guide
  443.     $game_temp.next_scene = nil
  444.     $scene = Scene_EnemyGuide.new(0, Scene_EnemyGuide::HOST_MAP)
  445.   end
  446. end
  447.  
  448. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  449.  
  450. #==============================================================================
  451. # ■ Scene_Menu
  452. #==============================================================================
  453.  
  454. class Scene_Menu < Scene_Base
  455.   if KGC::EnemyGuide::USE_MENU_ENEMY_GUIDE_COMMAND
  456.   #--------------------------------------------------------------------------
  457.   # ● 作成指令窗口
  458.   #--------------------------------------------------------------------------
  459.   alias create_command_window_KGC_EnemyGuide create_command_window
  460.   def create_command_window
  461.     create_command_window_KGC_EnemyGuide
  462.  
  463.     return if $imported["CustomMenuCommand"]
  464.  
  465.     @__command_enemy_guide_index =
  466.       @command_window.add_command(Vocab.enemy_guide)
  467.     if @command_window.oy > 0
  468.       @command_window.oy -= Window_Base::WLH
  469.     end
  470.     @command_window.index = @menu_index
  471.   end
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ● 指令选择的更新
  475.   #--------------------------------------------------------------------------
  476.   alias update_command_selection_KGC_EnemyGuide update_command_selection
  477.   def update_command_selection
  478.     current_menu_index = @__command_enemy_guide_index
  479.     call_enemy_guide_flag = false
  480.  
  481.     if Input.trigger?(Input::C)
  482.       case @command_window.index
  483.       when @__command_enemy_guide_index  # 怪物图鉴
  484.         call_enemy_guide_flag = true
  485.       end
  486.     end
  487.  
  488.     # 移动到怪物图鉴
  489.     if call_enemy_guide_flag
  490.       Sound.play_decision
  491.       $scene = Scene_EnemyGuide.new(@__command_enemy_guide_index,
  492.         Scene_EnemyGuide::HOST_MENU)
  493.       return
  494.     end
  495.  
  496.     update_command_selection_KGC_EnemyGuide
  497.   end
  498. end
  499.  
  500. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  501.  
  502. #==============================================================================
  503. # □ Scene_EnemyGuide
  504. #------------------------------------------------------------------------------
  505. #   进行怪物图鉴画面的处理的目录。
  506. #==============================================================================
  507.  
  508. class Scene_EnemyGuide < Scene_Base
  509.   HOST_MENU   = 0
  510.   HOST_MAP    = 1
  511.   #--------------------------------------------------------------------------
  512.   # ● 对象初始化
  513.   #     menu_index  : 指令光标初期位置
  514.   #     host_scene  : 呼出原处 (0..菜单  1..地图)
  515.   #--------------------------------------------------------------------------
  516.   def initialize(menu_index = 0, host_scene = HOST_MENU)
  517.     @menu_index = menu_index
  518.     @host_scene = host_scene
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # ● 开始的处理
  522.   #--------------------------------------------------------------------------
  523.   def start
  524.     super
  525.     create_menu_background
  526.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  527.       @back_sprite = Sprite.new
  528.       begin
  529.         @back_sprite.bitmap = Cache.system(KGC::EnemyGuide::BACKGROUND_FILENAME)
  530.       rescue
  531.         @back_sprite.bitmap = Bitmap.new(32, 32)
  532.       end
  533.     end
  534.  
  535.     @top_window = Window_EnemyGuideTop.new
  536.     @enemy_window = Window_EnemyGuideList.new
  537.     @status_window = Window_EnemyGuideStatus.new
  538.     @status_window.enemy = @enemy_window.item
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # ● 退出场景
  542.   #--------------------------------------------------------------------------
  543.   def terminate
  544.     super
  545.     dispose_menu_background
  546.     if @back_sprite != nil
  547.       @back_sprite.bitmap.dispose
  548.       @back_sprite.dispose
  549.     end
  550.     @top_window.dispose
  551.     @enemy_window.dispose
  552.     @status_window.dispose
  553.   end
  554.   #--------------------------------------------------------------------------
  555.   # ○ 返回原菜单画面
  556.   #--------------------------------------------------------------------------
  557.   def return_scene
  558.     case @host_scene
  559.     when HOST_MENU
  560.       $scene = Scene_Menu.new(@menu_index)
  561.     when HOST_MAP
  562.       $scene = Scene_Map.new
  563.     end
  564.   end
  565.   #--------------------------------------------------------------------------
  566.   # ● 帧更新
  567.   #--------------------------------------------------------------------------
  568.   def update
  569.     super
  570.     update_menu_background
  571.     @top_window.update
  572.     @enemy_window.update
  573.     @status_window.update
  574.     if @enemy_window.active
  575.       update_enemy_selection
  576.     end
  577.   end
  578.   #--------------------------------------------------------------------------
  579.   # ○ 敌人选择的更新
  580.   #--------------------------------------------------------------------------
  581.   def update_enemy_selection
  582.     if @last_index != @enemy_window.index
  583.       @status_window.enemy = @enemy_window.item
  584.       @last_index = @enemy_window.index
  585.     end
  586.  
  587.     if Input.trigger?(Input::B)
  588.       Sound.play_cancel
  589.       return_scene
  590.     elsif Input.trigger?(Input::A) || Input.trigger?(Input::C)
  591.       # sprte的表示切换
  592.       Sound.play_decision
  593.       @status_window.switch_sprite
  594.     elsif Input.trigger?(Input::LEFT)
  595.       # 参数表示
  596.       Sound.play_cursor
  597.       @status_window.shift_info_type(-1)
  598.     elsif Input.trigger?(Input::RIGHT)
  599.       # 说明表示
  600.       Sound.play_cursor
  601.       @status_window.shift_info_type(1)
  602.     end
  603.   end
  604. end
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
1
星屑
2078
在线时间
920 小时
注册时间
2012-10-18
帖子
428

开拓者

4
发表于 2013-5-10 17:09:20 | 只看该作者
crow2006 发表于 2013-5-10 16:23
回复2楼:

噢老天,那个等级脚本好多出错= =
我稍微随便修复了一下
RUBY 代码复制
  1. #============================================================================
  2. # 〇 让敌人也有等级(敌人能力自动设置)
  3. #                              By.冰舞蝶恋
  4. #----------------------------------------------------------------------------
  5. #
  6. #  用法:在敌人的备注里写上等级 = 设定的等级即可。
  7. #        如:等级 = 20
  8. #        如果需要随机等级,那么可以用
  9. #            等级 = rand(b)+a
  10. #            那么随机数的最小值是a,最大值是a+b-1
  11. #            比如需要2~5的随机数,那么
  12. #            等级 = rand(4)+2
  13. #            此脚本会显示所设定的敌人等级。
  14. #----------------------------------------------------------------------------
  15. #  设置:请在下方设定敌人的每级增长能力。
  16. #----------------------------------------------------------------------------
  17. #  注意:如果不需要敌人的等级,不在备注中填写相关文字即可。
  18. #        由于该脚本会自动设定敌人的等级和能力,所以当你需要自己设定敌人的能力
  19. #        时,你只需不在备注中填写即可。
  20. #----------------------------------------------------------------------------
  21. #  更新:加入敌人的金钱和经验的计算,更加省力。
  22. #============================================================================
  23.  
  24. #---------------------- 以下是敌人能力设置部分 ------------------------------
  25. $hpl = 30   # 敌人每级所提高的生命值
  26. $mpl = 30   # 敌人每级所提高的魔法值
  27. $atkl = 4   # 敌人每级所增长的攻击力
  28. $defl = 4   # 敌人每级所增长的防御力
  29. $spil = 4   # 敌人每级所增长的精神力
  30. $agil = 2   # 敌人每级所增长的敏捷度
  31. $goldl = 6  # 敌人每级所能多获得的金钱数量
  32. $expl = 6   # 敌人每级所能多获得的经验数量
  33. #----------------------------------------------------------------------------
  34. class Game_Enemy
  35.   #--------------------------------------------------------------------------
  36.   # ● 获取并显示敌人的等级
  37.   #--------------------------------------------------------------------------
  38.   def name
  39.     if @plural
  40.       $z = $data_enemies[@enemy_id].read_note('等级')
  41.       if $z != nil  
  42.         return @original_name + "  #{$z}级"
  43.       else
  44.         return @original_name + "  #{$z}级"
  45.       end
  46.       else
  47.       $z = $data_enemies[@enemy_id].read_note('等级')
  48.       return @original_name + "  #{$z}级"
  49.     end
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 获取基本体力最大值
  53.   #--------------------------------------------------------------------------
  54.   def base_maxhp
  55.     $z = $data_enemies[@enemy_id].read_note('等级')
  56.     if $z == nil
  57.       return enemy.maxhp   
  58.     elsif $game_party.members.size == 1
  59.       return $data_enemies[@enemy_id].read_note('等级') * $hpl
  60.     elsif $game_party.members.size == 2
  61.       return $data_enemies[@enemy_id].read_note('等级') * $hpl * 2
  62.     else
  63.       return enemy.maxhp
  64.     end
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 获取基本魔力最大值
  68.   #--------------------------------------------------------------------------
  69.   def base_maxmp
  70.     $z = $data_enemies[@enemy_id].read_note('等级')
  71.     if $z == nil
  72.       return enemy.maxmp
  73.     elsif $z
  74.       return $data_enemies[@enemy_id].read_note('等级') * $mpl
  75.     else
  76.       return enemy.maxmp
  77.     end
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 获取基本攻击力
  81.   #--------------------------------------------------------------------------
  82.   def base_atk
  83.     $z = $data_enemies[@enemy_id].read_note('等级')
  84.     if $z == nil
  85.       return enemy.atk
  86.     elsif $z
  87.       return $data_enemies[@enemy_id].read_note('等级') * $atkl
  88.     else
  89.       return enemy.atk
  90.     end
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 获取基本防御力
  94.   #--------------------------------------------------------------------------
  95.   def base_def
  96.     $z = $data_enemies[@enemy_id].read_note('等级')
  97.     if $z == nil
  98.       return enemy.def
  99.     elsif $z
  100.       return $data_enemies[@enemy_id].read_note('等级') * $defl
  101.     else
  102.       return enemy.def
  103.     end
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 获取基本精神力
  107.   #--------------------------------------------------------------------------
  108.   def base_spi
  109.     $z = $data_enemies[@enemy_id].read_note('等级')
  110.     if $z == nil
  111.       return enemy.spi
  112.     elsif $z
  113.       return $data_enemies[@enemy_id].read_note('等级') * $spil
  114.     else
  115.       return enemy.spi
  116.     end
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 获取基本敏捷
  120.   #--------------------------------------------------------------------------
  121.   def base_agi
  122.     $z = $data_enemies[@enemy_id].read_note('等级')
  123.     if $z == nil
  124.       return enemy.agi
  125.     elsif $z
  126.       return $data_enemies[@enemy_id].read_note('等级') * $agil
  127.     else
  128.       return enemy.agi
  129.     end
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 获取经验值
  133.   #--------------------------------------------------------------------------
  134.   def exp
  135.     $z = $data_enemies[@enemy_id].read_note('等级')
  136.     if $z == nil
  137.       return enemy.exp
  138.     elsif $game_party.members.size == 1
  139.       return $data_enemies[@enemy_id].read_note('等级') * $expl
  140.     elsif $game_party.members.size == 2
  141.       return $data_enemies[@enemy_id].read_note('等级') * $expl / 2
  142.     else
  143.       return enemy.exp
  144.     end
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 获取金钱
  148.   #--------------------------------------------------------------------------
  149.   def gold
  150.     $z = $data_enemies[@enemy_id].read_note('等级')
  151.     if $z == nil
  152.       return enemy.gold
  153.     elsif $z
  154.       return $data_enemies[@enemy_id].read_note('等级') * $goldl
  155.     else
  156.       return enemy.gold
  157.     end
  158.   end
  159. end
  160. #----------------------------------------------------------------------------
  161. # 以下大神部分By.沉影不器
  162. #----------------------------------------------------------------------------
  163. module RPG
  164.   module ReadNote
  165.     def self.read(str, section, mismatch = nil)
  166.       str.each_line do |line|
  167.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
  168.       end
  169.       return mismatch
  170.     end
  171.   end
  172.   class BaseItem
  173.     def read_note(section, mismatch = nil)
  174.       ReadNote.read(self.note, section, mismatch)
  175.     end
  176.   end
  177.   class Enemy
  178.     def read_note(section, mismatch = nil)
  179.       ReadNote.read(self.note, section, mismatch)
  180.     end
  181.   end
  182.   class State
  183.     def read_note(section, mismatch = nil)
  184.       ReadNote.read(self.note, section, mismatch)
  185.     end
  186.   end
  187. end


看了脚本后感觉有点被坑了……
试试把
param[:maxhp] = enemy.base_maxhp
换成
param[:maxhp] = $data_enemies[enemy.id].maxhp

点评

= =请加油  发表于 2013-5-10 19:37
谢谢,我放弃这个脚本了。冲突太大。。  发表于 2013-5-10 18:48

评分

参与人数 1星屑 +100 收起 理由
怪蜀黍 + 100 热心糖

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 02:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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