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

Project1

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

[已经解决] 求教如何获取敌方技能的mp消耗?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
46
在线时间
1502 小时
注册时间
2010-8-27
帖子
392
跳转到指定楼层
1
发表于 2013-10-15 09:59:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 存档不能 于 2013-10-15 16:57 编辑

我想在game_enemy里调用敌人 所拥有的技能中消耗的mp最少的那一个技能的mp数值
举例: 敌人A 所会的技能: 技能1 mp4   技能2mp3   技能3mp5(不论开关条件)
显而易见技能2消耗的mp是最少的,那么调用数值3

这样要如何做?

顺便说一下我的目的:xp默认系统的中,敌人mp为0时会发生卡死的bug,我想利用判断敌人自身最小消耗的技能来设定mp不足时的行动
现在的问题就是调用合适的数值(直接调用较小的数值的话很不灵活,还是容易出错的)

Lv5.捕梦者

梦石
0
星屑
33501
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

3
发表于 2013-10-15 18:16:36 | 只看该作者
本帖最后由 芯☆淡茹水 于 2013-10-15 19:41 编辑

其实可以把 生成敌人行动 里改一下:如果所选择的特技不能使用,变为普通攻击。
  1. class Game_Enemy < Game_Battler
  2.     #--------------------------------------------------------------------------
  3.   # ● 生成行动
  4.   #--------------------------------------------------------------------------
  5.   def make_action
  6.     # 清除当前行动
  7.     self.current_action.clear
  8.     # 无法行动的情况
  9.     unless self.movable?
  10.       # 过程结束
  11.       return
  12.     end
  13.     # 抽取现在有效的行动
  14.     available_actions = []
  15.     rating_max = 0
  16.     for action in self.actions
  17.       # 确认回合条件
  18.       n = $game_temp.battle_turn
  19.       a = action.condition_turn_a
  20.       b = action.condition_turn_b
  21.       if (b == 0 and n != a) or
  22.          (b > 0 and (n < 1 or n < a or n % b != a % b))
  23.         next
  24.       end
  25.       # 确认 HP 条件
  26.       if self.hp * 100.0 / self.maxhp > action.condition_hp
  27.         next
  28.       end
  29.       # 确认等级条件
  30.       if $game_party.max_level < action.condition_level
  31.         next
  32.       end
  33.       # 确认开关条件
  34.       switch_id = action.condition_switch_id
  35.       if switch_id > 0 and $game_switches[switch_id] == false
  36.         next
  37.       end
  38.       # 符合条件 : 添加本行动
  39.       available_actions.push(action)
  40.       if action.rating > rating_max
  41.         rating_max = action.rating
  42.       end
  43.     end
  44.     # 最大概率值作为 3 合计计算(0 除外)
  45.     ratings_total = 0
  46.     for action in available_actions
  47.       if action.rating > rating_max - 3
  48.         ratings_total += action.rating - (rating_max - 3)
  49.       end
  50.     end
  51.     # 概率合计不为 0 的情况下
  52.     if ratings_total > 0
  53.       # 生成随机数
  54.       value = rand(ratings_total)
  55.       # 设置对应生成随机数的当前行动
  56.       for action in available_actions
  57.         if action.rating > rating_max - 3
  58.           if value < action.rating - (rating_max - 3)
  59.             self.current_action.kind = action.kind
  60.             self.current_action.basic = action.basic
  61.             self.current_action.skill_id = action.skill_id
  62.             self.current_action.decide_random_target_for_enemy
  63.             ######################################################
  64.             # 如果所选择的特技不能使用,改为普通攻击。
  65.             if self.current_action.kind == 1
  66.               unless self.skill_can_use?(self.current_action.skill_id)
  67.                 self.current_action.kind = 0
  68.                 self.current_action.basic = 0
  69.               end
  70.             end
  71.             ######################################################
  72.             return
  73.           else
  74.             value -= action.rating - (rating_max - 3)
  75.           end
  76.         end
  77.       end
  78.     end
  79.   end
复制代码

点评

俺单纯的想给你一个便捷的方法。  发表于 2013-10-16 18:08

评分

参与人数 1星屑 +20 收起 理由
存档不能 + 20 感谢回答,不过你来晚了……

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
46
在线时间
1502 小时
注册时间
2010-8-27
帖子
392
2
 楼主| 发表于 2013-10-15 16:57:31 | 只看该作者
嗯,自己想来个稍微麻烦的方法解决了

点评

然后你的VIP就充公了。。。  发表于 2013-10-15 17:45
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-1 00:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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