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

Project1

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

[已经解决] 如何设置装备使其特效为生命值百分比转化为攻击力

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2014-10-4
帖子
12
跳转到指定楼层
1
发表于 2014-10-20 21:29:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
设置装备想使其特效为将生命0.15%转化为攻击力  或者是最大魔力值0.5%转化为法力强度

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
2
发表于 2014-10-21 11:43:55 | 只看该作者
参考救市小树的公式

点评

我咋不觉得技能公式能够解决装备对基本能力附加值的影响呢……  发表于 2014-10-21 11:59
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
3
发表于 2014-10-30 18:21:33 | 只看该作者
本帖最后由 lirn 于 2014-10-30 18:23 编辑

在Game_Battler下找到,理论是这样,没试过
#--------------------------------------------------------------------------
  # ● 计算伤害
  #--------------------------------------------------------------------------
  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables)
    value *= item_element_rate(user, item)
    value *= pdr if item.physical?
    value *= mdr if item.magical?
    value *= rec if item.damage.recover?
    value += self.hp*0.2 if self.state?(XX) #加这一行,这公式是附加当前生命值的20%
    value = apply_critical(value) if @result.critical
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
    @result.make_damage(value.to_i, item)
  end


因为敌人没有装备,所以直接判断装备与否可能会在敌人产生错误,建议配合自动状态脚本;或者可以给装备附加技能,然后以角色是否会该技能作为判断条件,只是我忘记了判断会不会某技能是怎么写的了。

点评

这样设置伤害是肯定会加上hp计算的吧,LZ要的是增加atk。  发表于 2014-10-31 13:44
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2014-10-30 21:42:53 | 只看该作者
先放这个https://rpg.blue/thread-365967-1-1.html
再放这个
  1. #--------------------------------------------------------------------------
  2. # ● require [url=home.php?mod=space&uid=102614]@taroxd[/url] 基础设置
  3. #    使用方法:在可以设置“特性”的地方备注 <drain r>。
  4. #              其中 r 为吸血的比例。
  5. #--------------------------------------------------------------------------

  6. RPG::BaseItem.note_f :drain

  7. class Game_Battler < Game_BattlerBase
  8.   #--------------------------------------------------------------------------
  9.   # ● 处理伤害
  10.   #--------------------------------------------------------------------------
  11.   def_after :execute_damage do |user|
  12.     user.hp += (@result.hp_damage * user.feature_objects.sum(&:drain)).to_i
  13.   end
  14. end
复制代码
或者参照楼上

评分

参与人数 1星屑 -200 收起 理由
taroxd -200 禁止转载!

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
发表于 2014-10-30 21:44:24 | 只看该作者
lirn 发表于 2014-10-30 01:21
在Game_Battler下找到,理论是这样,没试过
#---------------------------------------------------------- ...

在Game_Enemy里面
  1.     @mp = mmp
  2.   end
复制代码
的下面加
  1.   #--------------------------------------------------------------------------
  2.   # ● 是否学会技能
  3.   #--------------------------------------------------------------------------
  4.   def skill_learn?(skill)
  5.     return false
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 是否装备武器
  9.   #--------------------------------------------------------------------------
  10.   def weapon?(weapon)
  11.     return false
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 是否装备护甲
  15.   #--------------------------------------------------------------------------
  16.   def armor?(armor)
  17.     return false
  18.   end
复制代码
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

6
发表于 2014-10-30 21:44:50 | 只看该作者
lirn 发表于 2014-10-30 01:21
在Game_Battler下找到,理论是这样,没试过
#---------------------------------------------------------- ...

如果敌人没有就会返回false···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
7
发表于 2014-10-31 16:49:45 | 只看该作者
楼主这个问题说的简单,但是解决起来挺麻烦的……

首先hp是一个会变动的数值,那么这个转化的比例会随着战斗和事件不断发生改变。
而后这个效果本质上来说是给人物的能力值增加一些数值,通过技能公式解决是看不到具体增加值是多少的。

那么就一定需要改动脚本才能做到这样的效果啦。

思路是这样的:
你在Game_BattlerBase的大概第500行找到
  1. def refresh
复制代码
然后在它的下面的
  1. @mp = [[@mp, mmp].min, 0].max
  2. @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
复制代码
之间加入这么一段内容
  1.     if self.actor?
  2.       if self.weapons.include?($data_weapons[1])
  3.        if $game_variables[100] != @hp * 0.15
  4.          @param_plus[2] -= $game_variables[100]
  5.          $game_variables[100] = @hp * 0.15
  6.        end
  7.         @param_plus[2] += $game_variables[100]
  8.       else
  9.         @param_plus[2] -= $game_variables[100]
  10.       end
  11.     end
复制代码
这一段的效果就是该玩家人物装备id为1的武器时,会将该角色hp的0.15倍转化为atk。

这段代码存在缺陷,需要占用掉第100号变量,并且只能准确的检测一个这样装备,当有两个角色都装备了这个装备后就会出现计算错误。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
185 小时
注册时间
2014-9-4
帖子
82
8
发表于 2014-10-31 17:27:52 | 只看该作者
本帖最后由 希忆 于 2014-10-31 17:35 编辑

未测试
  1. #1号角色物理攻击力提升hp的15%魔法攻击力提升mp的15% 享受特性乘法修正
  2. class Game_BattlerBase
  3.   def param_plus(param_id)
  4.     add = 0
  5.     case param_id
  6.     when 2
  7.       add = (self.hp*0.15).to_i if self.is_a?(Game_Actor) and self.id == 1
  8.       #这里写计算方法和限制条件
  9.     when 4
  10.       add = (self.mp*0.15).to_i if self.is_a?(Game_Actor) and self.id == 1
  11.     end
  12.     @param_plus[param_id] + add
  13.   end
  14. end
复制代码

点评

self.is_a?(Game_Actor)用self.actor? 就可以啦。  发表于 2014-10-31 22:17
回复 支持 反对

使用道具 举报

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
9
发表于 2014-10-31 22:28:24 | 只看该作者
希忆 发表于 2014-10-31 17:27
未测试

这里我借用LS的思路修改了一下。
直接新开一个脚本,复制粘贴进去就有效果了。

#以下脚本的效果是,当玩家人物携带id为1的武器时hp的15%转化为atk,携带id为2的武器时mmp的50%转化为mat
RUBY 代码复制
  1. class Game_BattlerBase
  2.   def param_plus(param_id)
  3.     add = 0
  4.     case param_id
  5.     when 2
  6.       add = (self.hp*0.15).to_i if self.actor? && self.weapons.include?($data_weapons[1])
  7.       #这里写计算方法和限制条件
  8.     when 4
  9.       add = (self.mmp*0.5).to_i if self.actor? && self.weapons.include?($data_weapons[2])  
  10.     end
  11.     @param_plus[param_id] + add
  12.   end
  13. end

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 干嘛不写到 Game_Actor 里面

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 23:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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