查看: 5430|回复: 13

[已经解决] 求助大佬,想做一个这样的被动...

[复制链接]
梦石
0
星屑
1249
在线时间
69 小时
注册时间
2019-2-12
回帖
73
发表于 2020-4-22 12:48:07 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 小姐姐一个 于 2020-4-22 15:18 编辑

就是每损失5%点生命值,生命恢复速度就加0.5%,需要用到脚本吗=。=
梦石
3
星屑
7336
在线时间
608 小时
注册时间
2019-9-15
回帖
112

R考场第七期金奖

发表于 2020-4-22 21:02:47 | 显示全部楼层
本帖最后由 Cupidk爱呗茶 于 2020-4-23 02:08 编辑

照着要求写了一下 想了想感觉思路大概是这样的
使用方法:将本脚本复制到▼ 插件脚本 后即可使用
使用该脚本有什么意外情况的话请联系层主的说
[pre lang="ruby" line="1"]#==============================================================================
# ★ 设定部分 ★
#==============================================================================
module SFSaigao
=begin  
使用方法:
只需要在对应角色数据库备注 <被动:回复>
该角色便会随体力的减少而提升生命回复属性
数值可在↓↓进行设置
=end
  CARRYING = 3  #通过体力损失获取的属性最大保留几位小数(默认保留3位)即0.000
  HPLOSS = 0.05 #表示每损失5%生命值
  HPREPLY = 0.005 #表示生命恢复速度0.5%
  
end  
#==============================================================================
# ★ 设定结束 ★
#==============================================================================
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  include SFSaigao
  #--------------------------------------------------------------------------
  # ● 获取特殊能力重定义
  #--------------------------------------------------------------------------
  alias new_xparam xparam
  def xparam(xparam_id)
     if xparam_id==7 && $data_actors[id].note =~ /<被动:回复>/
    (features_sum(FEATURE_XPARAM, xparam_id) + count).round(CARRYING)
    else
     new_xparam(xparam_id)
   end
  end
  #--------------------------------------------------------------------------
  # ● 获取属性加成
  #--------------------------------------------------------------------------
  def count
  return HPREPLY*ability
  end  
#--------------------------------------------------------------------------
  # ● 获取当前已损失的体力百分比
  #--------------------------------------------------------------------------
  def loss
  return 1-(1.0*hp)/(1.0*mhp)
  end  
  #--------------------------------------------------------------------------
  # ● 获取被动属性加成数量
  #--------------------------------------------------------------------------
  def ability
    loss % HPLOSS == 0 ? loss/HPLOSS : (loss/HPLOSS).round
  end  
end  [/pre]

点评

谢谢大佬,虽然自己费点时间在事件里做了一个半成品0.0!  发表于 2020-4-22 21:57
大哥/大姊能否幫幫我这个https://rpg.blue/forum.php?mod=viewthread&tid=481377&page=1&extra=#pid2888843求求你了  发表于 2020-4-22 21:53
********
回复 1 0

使用道具 举报

梦石
0
星屑
11809
在线时间
623 小时
注册时间
2016-8-25
回帖
1340

R考场第七期纪念奖

发表于 2020-4-22 13:09:38 | 显示全部楼层
不需要
首先你生命恢复就是一个并行处理的事件
生命值是一个变量值
事件对于变量的处理是有“小于”和“小于且等于”的概念的
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2020-4-22 13:10:36 | 显示全部楼层
那假设生命值是100/100,初始生命恢复速度是0%
第1回合,被敌人攻击,损失5%生命值,生命值变成95/100,生命恢复速度+2%,生命恢复速度变成2%
第2回合,开始,因生命恢复速度是2%,回2点血,生命值变成97/100,
第2回合,被敌人攻击,损失5%生命值,生命值变成92/100,生命恢复速度+2%,生命恢复速度变成4%
第3回合,开始,因生命恢复速度是4%,回4点血,生命值变成96/100,
第3回合,被敌人攻击,损失5%生命值,生命值变成91/100,生命恢复速度+2%,生命恢复速度变成6%
第4回合,开始,因生命恢复速度是6%,回6点血,生命值变成97/100,
第4回合,被敌人攻击,损失5%生命值,生命值变成92/100,生命恢复速度+2%,生命恢复速度变成8%
第5回合,开始,因生命恢复速度是8%,回8点血,生命值变成100/100,
第5回合,被敌人攻击,损失5%生命值,生命值变成95/100,生命恢复速度+2%,生命恢复速度变成10%
第6回合,开始,因生命恢复速度是10%,回10点血,生命值变成100/100......

依你的说明,不就会出现以上情況吗??
回复

使用道具 举报

梦石
0
星屑
1249
在线时间
69 小时
注册时间
2019-2-12
回帖
73
 楼主| 发表于 2020-4-22 13:11:17 | 显示全部楼层
PLeaseS 发表于 2020-4-22 13:09
不需要
首先你生命恢复就是一个并行处理的事件
生命值是一个变量值

分歧吗,是不是得做很多个分歧
回复

使用道具 举报

梦石
0
星屑
1249
在线时间
69 小时
注册时间
2019-2-12
回帖
73
 楼主| 发表于 2020-4-22 13:15:08 | 显示全部楼层
alexncf125 发表于 2020-4-22 13:10
那假设生命值是100/100,初始生命恢复速度是0%
第1回合,被敌人攻击,损失5%生命值,生命值变成95/100,生命恢复 ...

LOL的英雄瑟提被动知道吧(算了没人玩lol),如果可以的话,损失生命值和生命恢复我会调整的=.=
回复

使用道具 举报

梦石
0
星屑
237
在线时间
15 小时
注册时间
2020-4-17
回帖
21
发表于 2020-4-22 17:55:02 | 显示全部楼层
小姐姐一个 发表于 2020-4-22 13:15
LOL的英雄瑟提被动知道吧(算了没人玩lol),如果可以的话,损失生命值和生命恢复我会调整的=.= ...

拳王倒是不知道怎么算的
我只知道塔姆和铁男的
回复

使用道具 举报

梦石
0
星屑
1877
在线时间
220 小时
注册时间
2018-8-5
回帖
75
发表于 2020-4-22 21:06:04 | 显示全部楼层
  1. #==============================================================================
  2. # TheoAllen - 状态伤害使用技能公式
  3. # Version : 1.0
  4. # Language : Informal Indonesian
  5. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  6. # Contact :
  7. #------------------------------------------------------------------------------
  8. # *> http://www.rpgmakerid.com
  9. # *> http://www.rpgmakervxace.net
  10. # *> http://theolized.blogspot.com
  11. #==============================================================================
  12. ($imported ||= {})[:Theo_StateSkillDamage] = true
  13. #==============================================================================
  14. # Change Logs:
  15. # -----------------------------------------------------------------------------
  16. # 2013.09.24 - Finished
  17. #==============================================================================
  18. %Q{

  19.   =================
  20.   || 介绍 ||
  21.   -----------------
  22.   想要设置状态伤害不只是数据库设定那样百分比掉血吗?而是通过技能来设定
  23.   状态伤害?想设置状态的伤害公式像攻击技能那样吗?
  24.   该脚本可以设定状态伤害使用指定的技能公式。
  25.   
  26.   ======================
  27.   || 使用方法 ||
  28.   ----------------------
  29.   插入到插件脚本之下,Main之上。
  30.   
  31.   在状态的备注栏里备注 <skill damage: id>
  32.   id为指定技能的伤害的功能
  33.   
  34.   例如:
  35.   <skill damage: 10>
  36.   
  37.   ===================
  38.   使用条款 :
  39.   署名脚本作者, TheoAllen. 你可以自由编辑此脚本,只要你不声明你是脚本的原作者
  40.   如果你想用此脚本于商业游戏,请和我共享收益.别忘了给我一份免费的游戏拷贝.

  41. }
  42. #==============================================================================
  43. # 无设定部分
  44. #==============================================================================
  45. class RPG::State
  46.   
  47.   # Store skill ID for formula damage
  48.   def skill_damage
  49.     if !@skill_damage
  50.       @skill_damage = 0
  51.       if note =~ /<skill[\s_]+damage\s*:\s*(\d+)>/i
  52.         @skill_damage = $1.to_i
  53.       end
  54.     end
  55.     return @skill_damage
  56.   end
  57.   
  58. end

  59. class Game_Battler
  60.   
  61.   alias theo_slipformula_clear_states clear_states
  62.   def clear_states
  63.     theo_slipformula_clear_states
  64.     @state_battler = {}
  65.   end
  66.   
  67.   alias theo_slipformula_eff_add_state_attack item_effect_add_state_attack
  68.   def item_effect_add_state_attack(user, item, effect)
  69.     theo_slipformula_eff_add_state_attack(user, item, effect)
  70.     return unless @result.success
  71.     user.atk_states.each do |state_id|
  72.       if @states.include?(state_id)
  73.         @state_battler[state_id] = user
  74.       end
  75.     end
  76.   end
  77.   
  78.   alias theo_slipformula_eff_add_state_normal item_effect_add_state_normal
  79.   def item_effect_add_state_normal(user, item, effect)
  80.     theo_slipformula_eff_add_state_normal(user, item, effect)
  81.     return unless @result.success
  82.     if @states.include?(effect.data_id)
  83.       @state_battler[effect.data_id] = user
  84.     end
  85.   end
  86.   
  87.   alias theo_slipformula_erase_state erase_state
  88.   def erase_state(state_id)
  89.     theo_slipformula_erase_state(state_id)
  90.     @state_battler.delete(state_id)
  91.   end
  92.   
  93.   alias theo_slipformula_turn_end on_turn_end
  94.   def on_turn_end
  95.     if alive?
  96.       perform_slip_damage_formula
  97.     end
  98.     theo_slipformula_turn_end
  99.   end
  100.   
  101.   def perform_slip_damage_formula
  102.     @states.each do |state_id|
  103.       if $data_states[state_id].skill_damage > 0 && @state_battler[state_id]
  104.         skill = $data_skills[$data_states[state_id].skill_damage]
  105.         item_apply(@state_battler[state_id], skill)
  106.         self.animation_id = skill.animation_id
  107.         SceneManager.scene.log_window.display_action_results(self, skill)
  108.         if $imported["YEA-BattleEngine"] && !YEA::BATTLE::MSG_ADDED_STATES
  109.           SceneManager.scene.perform_collapse_check(self)
  110.         end
  111.         15.times {SceneManager.scene.update_basic}
  112.       end
  113.     end
  114.   end
  115.   
  116. end

  117. class Scene_Battle
  118.   attr_reader :log_window
  119. end
复制代码
一点一点加油
回复 1 0

使用道具 举报

梦石
0
星屑
1249
在线时间
69 小时
注册时间
2019-2-12
回帖
73
 楼主| 发表于 2020-4-22 21:56:12 | 显示全部楼层
LanMegumi 发表于 2020-4-22 17:55
拳王倒是不知道怎么算的
我只知道塔姆和铁男的

竟然还有人玩lol,惊了!瑟提的每5%已损失生命值会为他提供额外的0.5生命回复,0.5生命恢复是固定值,有点难了=。=
回复

使用道具 举报

梦石
3
星屑
7336
在线时间
608 小时
注册时间
2019-9-15
回帖
112

R考场第七期金奖

发表于 2020-4-23 02:05:02 | 显示全部楼层
小姐姐一个 发表于 2020-4-22 21:56
竟然还有人玩lol,惊了!瑟提的每5%已损失生命值会为他提供额外的0.5生命回复,0.5生命恢复是固定值,有点难 ...

刚刚稍微优化了一些写法,有需要可以更换成现在的说
********
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部