Project1

标题: 技能公式写在脚本里,如何判断最高物理攻击力的队友? [打印本页]

作者: 负零    时间: 2015-9-1 22:38
标题: 技能公式写在脚本里,如何判断最高物理攻击力的队友?
想实现一个使用技能后“最高物理攻击力的队友且存活的队友”.hp+=40%的技能,如何进行比较”科学“的对比(条件判断)?请各位大神指点指点。
作者: Silentever    时间: 2015-9-2 00:28
  1.   def sort_unit(p, limit = :max, unit = $game_party)
  2.     if limit == :max
  3.       list = unit.members.sort {|a,b| b.param(p) - a.param(p) }
  4.     elsif limit == :min
  5.       list = unit.members.sort {|a,b| a.param(p) - b.param(p) }; end
  6.     index = 0
  7.     loop do
  8.       return nil unless list[index]
  9.       return list[index] if list[index].alive?
  10.       index += 1
  11.     end; end
复制代码
姑且敲出了一段可以获取要求对象的代码,但遗憾这东西没办法在数据库的公式框里面调用……使用方法是插入
  1. “sort_unit(能力值序号, 排列方式, 单位组)”
复制代码
能力值:0→HP上限,1→MP上限,2→攻击,3→防御……到7号是幸运
排列方式:":max"或":min",默认最高
单位组:"$game_party"默认,从玩家队伍获取对象;或者"$game_troop"从敌群判断。

例子:
sort_unit(0) → 返回玩家队伍中HP上限最高的成员
sort_unit(2, :min) → 返回玩家队伍中攻击最低的成员
sort_unit(6, :min, $game_troop) → 返回敌群中幸运最低的成员

至于调用方法,个人想到的就是2种:一种是直接用脚本调用,另一种是用公共事件调用。
前者的话,就要把代码放在Game_Battler里面。

后者是需要把上面的代码放在Game_Interpreter里面,然后建立一个公共事件;
公共事件的内容是给变量赋值"sort_unit(各种参数).id",之后可以用这个变量来指定角色。
如果没有脚本能力这样的方法比较推荐。
作者: taroxd    时间: 2015-9-2 12:38
本帖最后由 taroxd 于 2015-9-2 12:42 编辑

楼上的太长了啦
RUBY 代码复制
  1. $game_party.alive_members.max_by(&:atk)

作者: chd114    时间: 2015-9-2 18:24
taroxd 发表于 2015-9-1 19:38
楼上的太长了啦
$game_party.alive_members.max_by(&:atk)[/pre]
负零  本楼效能略高。认可该楼  发表于 昨天 20:51


@VIPArcher 问题解决




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1