查看: 2338|回复: 3

[RMVA发布] 保存最后行动者的一些数据在伤害计算或公共事件中使用

[复制链接]
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2017-12-18 16:59:02 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 jianyulei 于 2017-12-18 17:02 编辑

[fold=脚本在这里]
[pre lang="ruby"]#用途:在Game_BattlerBase里使用self.shuju[X]  或者在事件中使用$shuju[X]
#      也或者在技能和道具的伤害公式里 a.shuju[X]
#事件中使用的$shuju[X]默认为最后一个行动者的user.shuju[X]
#具体的对应编码见附件中的《数据库编码表》
module SJK_20171218
  HUIHE_KAIGUAN = false   #回合结束时是否清空保存数据? true/false
end

class Game_ActionResult
alias make_damage_shujuku make_damage
def make_damage(value, item)
  make_damage_shujuku(value, item)
  $shanghai = value if item.damage.to_hp? #保存HP伤害给数据库用
end
end#class

class Game_Battler < Game_BattlerBase
$shuju ||= Array.new(30){0}
def shuju   #给对象新建个数据库变量
  @shuju ||= Array.new(30){0}
  return @shuju
end  

alias item_apply_shujuku item_apply
def item_apply(user, item) #数据库的赋值判定地点
  item_apply_shujuku(user, item)
  shujuku(user, item)
end

if SJK_20171218::HUIHE_KAIGUAN
  alias on_turn_end_shujuku on_turn_end
  def on_turn_end
    $shuju.clear
    @shuju.clear
    $shuju = Array.new(30){0}
    @shuju = Array.new(30){0}
    on_turn_end_shujuku
  end
end

alias on_battle_end_shujuku on_battle_end
def on_battle_end #战斗结束时清空变量缓存
  $shuju.clear
  @shuju.clear
  $shuju = Array.new(30){0}
  @shuju = Array.new(30){0}
  on_battle_end_shujuku
end

def shujuku(user, item)
  if @result.hit?
    user.shuju[1]=$shanghai #最后一次攻击的伤害
    self.shuju[2]=$shanghai #最后一次受到的伤害
    self.shuju[10] = user.index if @result.critical #最后对你造成暴击的对象编号
    @result.critical ?  user.shuju[20]=true : user.shuju[20]=false#你最后的攻击是否暴击
  else
    user.shuju[11] = self.index #最后回避你攻击的对象编号
  end
  @result.hit? ?  user.shuju[21]=true : user.shuju[21]=false#你最后的攻击是否命中
  user.shuju[0]=user.index #0是技能发动者自己的位置编号
  self.shuju[3]=user.index #最后一个攻击你的敌人编号
  user.shuju[4]=self.index #最后一个你攻击的敌人编号
  user.shuju[5]=item.id#你最后发动的技能编号
  $shuju = user.shuju   #获取事件用数据库
end
end#class
[/pre]

[/fold]

公共事件里你可以写成 :$game_troop.members[$shuju[4]].atk    表示最后一个行动者攻击的目标的物理攻击力
让某技能的攻击力加上上一次受到的伤害,技能的伤害公式写成:a.atk+a.shuju[2],如果只想生效一次可以套入公共事件-脚本: $game_party.members[$shuju[0]].shuju[2] = 0
这个脚本需要一定的脚本知识才能正确使用……

数组保存的变量的含义写在附件的表格里











数据库.zip

8.44 KB, 下载次数: 77

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2018-1-1 20:25:52 | 显示全部楼层
可以用在辅助角色给的buff效果上
比如:按照自身攻击的50%提升友方攻击的状态
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
回帖
1401
发表于 2020-1-11 22:37:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部