查看: 3146|回复: 14

[已经解决] 突然呆萌忘掉了是否有达成此功能的东西

[复制链接]
梦石
0
星屑
2497
在线时间
215 小时
注册时间
2017-9-27
回帖
563
发表于 2018-3-1 02:43:09 | 显示全部楼层 |阅读模式

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

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

×
每失去1%HP增加一定能力值这种应该有吧,但是找了好多再加上难以搜索,我也弱智一回来问问吧

评分

参与人数 1赞 +1 收起 理由
2256538860 + 1 塞糖

查看全部评分

浅尝辄止,宜乎众矣。
梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2018-3-1 07:42:38 | 显示全部楼层
那每恢复 1% 的HP又会怎么样呢?

点评

那不就是神灵武士的被动吗···  发表于 2018-3-2 13:58
恢复以后就按恢复后的受伤血量计算啊  发表于 2018-3-1 20:50
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
2814
在线时间
616 小时
注册时间
2018-1-17
回帖
1230
发表于 2018-3-1 16:13:59 | 显示全部楼层
总觉得...不需要插件脚本就能做到呢

点评

并不喜欢每个敌群事件页都复制粘贴一大串判断  发表于 2018-3-1 20:49
回复

使用道具 举报

梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2018-3-2 08:39:47 | 显示全部楼层
大体是这个效果?

  1. #==============================================================================
  2. class Game_Actor < Game_Battler
  3.   #--------------------------------------------------------------------------
  4.   #HP每少 1% 属性增加的点数。格式:属性ID=>增加值。
  5.   #(1:最大MP;2:攻击;3:防御;4:魔攻;5:魔防;6:敏捷;7:运气)
  6.   # 某项属性不增加可写 0 或删除它。
  7.   HP_PLUS_DATA = {1=>1,2=>2,3=>1,4=>2,5=>1,6=>1.5,7=>1.5}
  8.   #--------------------------------------------------------------------------
  9.   def param(param_id)
  10.     return (param_id == 0 ? 0 : hp_rate_plus(param_id)) + super
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   def hp_rate_plus(param_id)
  14.     rate = (mhp - hp) * 100.0 / mhp
  15.     return ((HP_PLUS_DATA[param_id] || 0) * rate).to_i
  16.   end
  17. end
  18. #==============================================================================
复制代码


这个增加值是纯加,不会因 buff 而增幅。

点评

↓你搜到的东西也可以贴出来并且示例用法啊! 我不可能知道每种插件。再说有搜和理解的时间,自己都可以 pia 出一段新的来。  发表于 2018-3-2 16:10
芯大大,其实可以去搜索普通能力,那边也能,没必要特别提出  发表于 2018-3-2 15:52
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
回帖
526
发表于 2018-3-2 20:23:02 | 显示全部楼层
    value = param_base(param_id) + param_plus(param_id) #基础+装备固定
    value *= param_rate(param_id) * param_buff_rate(param_id) #百分比*BUFF

param_id: 0 血量 1 法力值 2攻击力 3 防御 4 法强 5 法抗 6 速度 7 幸运

举个例子 value += 1(加的数值) if param_id == 2(这是p_id) #攻击力+1 总结来说,你只要把value看成一个数值就可以了,判定不止pid = X的 可以技能判定,状态判定等等。想知道更多判定方法可以看我的教程交流贴

介绍一个比较简单的例子:给1号角色+100血量—— value +=100 if param_id == 0 and self.id == 1 and self.actor?
pid = 0 id=1 确认为角色(self.enemy?这是确认敌人)
写起来可能会麻烦,但是学到了再去写是很快的,而且只受自身脑子的限制,而不会被其他的的构思限制
QQ截图20180302201715.png
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复

使用道具 举报

梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2018-3-3 10:27:22 | 显示全部楼层
300英雄 发表于 2018-3-2 20:23
value = param_base(param_id) + param_plus(param_id) #基础+装备固定
    value *= param_rate(param ...

23.PNG

你这是在写教程? 还是在解决LZ问题?

如果是写教程,请稍微规范一点。
“ if param_id == 2(这是p_id)”  excuse me ???   p_id 是什么鬼?  
“判定不止pid = X的”                      这个 pid 又是什么东东?
讲真,可能本人比较愚钝,看得云里雾里。

如果是解决LZ问题,人家LZ提出的 每少1%HP增加属性, 你还没提到点子上呢?!
就“value += 1(加的数值) if param_id == 2”后面再判断“ self.id == 1”?!
那还不如直接 事件 - 更改角色属性 !

不就是需要 敌人 也要有这个效果吗?!
[pre lang="ruby"]#==============================================================================
class Game_BattlerBase
  #--------------------------------------------------------------------------
  #HP每少 1% 属性增加的点数。格式:属性ID=>增加值。
  #(1:最大MP;2:攻击;3:防御;4:魔攻;5:魔防;6:敏捷;7:运气)
  # 某项属性不增加可写 0 或删除它。
  
  # ↓ 角色属性增加
  ACTOR_HP_PLUS_DATA = {1=>1,2=>2,3=>1,4=>2,5=>1,6=>1.5,7=>1.5}
  
  # ↓ 敌人属性增加
  ENEMY_HP_PLUS_DATA = {1=>0,2=>1,3=>0.5,4=>1,5=>1,6=>1,7=>1}
  #--------------------------------------------------------------------------
  alias xr_hp_plus_param param
  def param(param_id)
    return (param_id == 0 ? 0 : hp_rate_plus(param_id)) + xr_hp_plus_param(param_id)
  end
  #--------------------------------------------------------------------------
  def hp_rate_plus(param_id)
    rate = (mhp - hp) * 100.0 / mhp
    plus_data = actor? ? ACTOR_HP_PLUS_DATA : ENEMY_HP_PLUS_DATA
    return ((plus_data[param_id] || 0) * rate).to_i
  end
end
#==============================================================================[/pre]

如果只需要 角色 有该效果,我干嘛一定要写在 父类 里面!!

点评

能否实现装备某护甲或学会某技能时达成效果呢?(被PIA飞≡ ̄﹏ ̄≡)  发表于 2018-3-4 00:23

评分

参与人数 2赞 +2 收起 理由
刹那铃音 + 1 认可答案
魔法丶小肉包 + 1 我很赞同

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 1 0

使用道具 举报

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
回帖
526
发表于 2018-3-3 16:31:05 | 显示全部楼层
本帖最后由 300英雄 于 2018-3-3 16:36 编辑

每少1%HP增加属性是吧 p_id是param_id的简写,字懒得打那么多,组合太灵活了:各种各样的判定说不完

这里分享技能类
if self.skills.include?($data_skills[X]) X表示你技能的ID,只要拥有这个技能就可以触发,角色持有的话:if self.skills.include?($data_skills[X]) and self.actor?添加一下就行
case param_id
when 1..7        这里数字看p_id的解释,血量是0号所以p_id不要弄0,会弄出A召唤B B召唤A的那种循环BUG
(self.mhp - self.hp).to_f / self.mhp.to_f * Y      Y是你要的数值每损失1%增加Y数值
end
end

self.skills.include?($data_skills[X])可以改成self.state?(X):表示状态ID。self.id如果要判断建议再判定一次self.enemy?或者self.actor?不然敌人角色只要符合你的判定都可以加的
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复

使用道具 举报

梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2018-3-4 20:37:39 | 显示全部楼层
  1. #==============================================================================
  2. class Game_BattlerBase
  3.   #--------------------------------------------------------------------------
  4.   #HP每少 1% 属性增加的点数。格式:属性ID=>增加值。
  5.   #(1:最大MP;2:攻击;3:防御;4:魔攻;5:魔防;6:敏捷;7:运气)
  6.   # 某项属性不增加可写 0 或删除它。

  7.   # ↓ 角色属性增加
  8.   ACTOR_HP_PLUS_DATA = {1=>1,2=>2,3=>1,4=>2,5=>1,6=>1.5,7=>1.5}

  9.   # ↓ 敌人属性增加
  10.   ENEMY_HP_PLUS_DATA = {1=>0,2=>1,3=>0.5,4=>1,5=>1,6=>1,7=>1}
  11.   
  12.   # 备注:
  13.   # 装备 或 技能 备注:<HpRatePlus>
  14.   # 只有当角色穿上该装备或习得该技能时, 这个 属性增加 才起效。
  15.   
  16.   # 敌人也是备注:<HpRatePlus>
  17.   # 未备注的敌人不起效。
  18.   
  19.   #--------------------------------------------------------------------------
  20.   alias xr_hp_plus_param param
  21.   def param(param_id)
  22.     return (param_id == 0 ? 0 : hp_rate_plus(param_id)) + xr_hp_plus_param(param_id)
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   def hp_rate_plus(param_id)
  26.     return 0 unless meet_condition?
  27.     rate = (mhp - hp) * 100.0 / mhp
  28.     plus_data = actor? ? ACTOR_HP_PLUS_DATA : ENEMY_HP_PLUS_DATA
  29.     return ((plus_data[param_id] || 0) * rate).to_i
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   def meet_condition?
  33.     return actor? ? actor_condition : enemy_condition
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   def actor_condition
  37.     return equip_condition || skill_condition
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   def equip_condition
  41.     return equips.any?{|e| e && e.note.match(/<HpRatePlus>/)}
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   def skill_condition
  45.     return skills.any?{|s| s && s.note.match(/<HpRatePlus>/)}
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   def enemy_condition
  49.     return enemy && enemy.note.match(/<HpRatePlus>/)
  50.   end
  51. end
  52. #==============================================================================
复制代码

点评

感谢芯大  发表于 2018-3-4 22:27

评分

参与人数 1赞 +1 收起 理由
刹那铃音 + 1 认可答案

查看全部评分

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

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部