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

Project1

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

[已经解决] 角色在某状态下某特定技能伤害加大

[复制链接]

Lv1.梦旅人

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

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

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

x
本帖最后由 duchen5779 于 2014-12-3 10:38 编辑

找到了这样一个帖子,是XP的。  https://rpg.blue/thread-370030-1-1.html       我想也在VX的Game_Battler里照猫画虎仿照一下。是不是这样写?
如果攻击者被增加状态ID为1并且使用技能ID为2时,怪物收到的伤害加倍。   刚才又想到的……或者是判断当攻击者身上装备某件防具的时候,怪物受到的特定技能的伤害加倍。比如角色身上装备着ID为1号的防具,释放的ID为2号的技能对怪物的伤害加倍。

状态ID为1并且使用技能ID为2时,怪物收到的伤害加倍。
      if user.state == 1  and  skill.id ==2        
        self.damage *= 2

还是怎么写?
另外,是插入在 ● 技能效果发动 ,也就是 def skill_effect(user, skill) 下面吗?插入在这里的最后面好像出错,求教写法和放置的地方,谢谢……

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6187
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
来自 5楼
发表于 2014-12-3 18:11:13 | 只看该作者
duchen5779 发表于 2014-12-3 10:52
刚才 看了一下计算技能伤害那里,也就是 648行这里不用self也行?

if user.state == 1  and  skill.id ...
  1.   #--------------------------------------------------------------------------
  2.   # ● 计算技能/物品伤害
  3.   #     user : 技能或物品的使用者
  4.   #     obj  : 使用的技能或物品
  5.   #    计算结果赋值入 @hp_damage
  6.   #--------------------------------------------------------------------------
  7.   def make_obj_damage_value(user, obj)
  8.     damage = obj.base_damage                        # 基础计算
  9.     if damage > 0                                   # 若伤害为正
  10.       damage += user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  11.       damage += user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  12.       unless obj.ignore_defense                     # 除非无视防御力
  13.         damage -= self.def * 2 * obj.atk_f / 100    # 目标攻击力关系度
  14.         damage -= self.spi * 1 * obj.spi_f / 100    # 目标精神力关系度
  15.       end
  16.       damage = 0 if damage < 0                      # 设负数伤害为0
  17.     elsif damage < 0                                # 若伤害为负
  18.       damage -= user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  19.       damage -= user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  20.     end
  21.     damage *= elements_max_rate(obj.element_set)    # 属性校正
  22.     damage /= 100
  23.     damage = apply_variance(damage, obj.variance)   # 分散度
  24.     damage = apply_guard(damage)                    # 防御校正
  25.     if obj.damage_to_mp  
  26.       @mp_damage = damage                           # 伤害魔力
  27.     else
  28.       damage *= 2 if user.state?(10) and obj.is_a?(RPG::Skill) and obj.id == 2 # 状态不要用1号,1号是战斗不能...
  29.       @hp_damage = damage                           # 伤害体力
  30.     end  
  31.   end
复制代码

评分

参与人数 1梦石 +1 收起 理由
Luciffer + 1 认可答案

查看全部评分

聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
2
发表于 2014-12-3 10:39:30 | 只看该作者
VX的Damage不用self的吧 感觉你这个Skill.id怪怪的,采用base的试试 位置的话实在不行在计算技能伤害最后汇总那里做文章
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
帖子
181
3
 楼主| 发表于 2014-12-3 10:52:30 | 只看该作者
刚才 看了一下计算技能伤害那里,也就是 648行这里
  1.   #--------------------------------------------------------------------------
  2.   # ● 计算技能/物品伤害
  3.   #     user : 技能或物品的使用者
  4.   #     obj  : 使用的技能或物品
  5.   #    计算结果赋值入 @hp_damage
  6.   #--------------------------------------------------------------------------
  7.   def make_obj_damage_value(user, obj)
  8.     damage = obj.base_damage                        # 基础计算
  9.     if damage > 0                                   # 若伤害为正
  10.       damage += user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  11.       damage += user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  12.       unless obj.ignore_defense                     # 除非无视防御力
  13.         damage -= self.def * 2 * obj.atk_f / 100    # 目标攻击力关系度
  14.         damage -= self.spi * 1 * obj.spi_f / 100    # 目标精神力关系度
  15.       end
  16.       damage = 0 if damage < 0                      # 设负数伤害为0
  17.     elsif damage < 0                                # 若伤害为负
  18.       damage -= user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  19.       damage -= user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  20.     end
  21.     damage *= elements_max_rate(obj.element_set)    # 属性校正
  22.     damage /= 100
  23.     damage = apply_variance(damage, obj.variance)   # 分散度
  24.     damage = apply_guard(damage)                    # 防御校正
  25.     if obj.damage_to_mp  
  26.       @mp_damage = damage                           # 伤害魔力
  27.     else
  28.       @hp_damage = damage                           # 伤害体力
  29.       
  30.         if user.state == 1  and  skill.id ==2        
  31.         damage *= 2
  32.       
  33.     end
  34.   end
复制代码
不用self也行?

if user.state == 1  and  skill.id ==2 
damage *= 2

这样? 但是确实这个skill.id还是怪怪的,因为是从XP那边看过来的……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
帖子
181
4
 楼主| 发表于 2014-12-3 11:21:43 | 只看该作者
本帖最后由 duchen5779 于 2014-12-3 14:47 编辑

哪位大神能写一个单独的脚本出来啊,估计也没几行东西,就是判断身上增加相应状态,使用相应攻击技能时伤害增加,或者判断身上装备相关防具,使用相关技能时伤害增加。(两个可以和在一起写吗?不知道两者都满足的时候会不会冲突)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
帖子
181
6
 楼主| 发表于 2014-12-3 19:22:19 | 只看该作者
本帖最后由 duchen5779 于 2014-12-3 20:03 编辑

谢谢聪仔~另外问一句,如果是判断身上装备相关防具,使用相关技能时伤害增加,也就是那一句代码,应该怎么写?比如装备20号防具的时候,59号技能伤害提升10倍。

damage *= 10 if user.armor1(armor2/armor3/armor4)?(20) and obj.is_a?(RPG::Skill) and obj.id == 59

是这样吗?

@正太君
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6187
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
7
发表于 2014-12-3 20:41:04 | 只看该作者
duchen5779 发表于 2014-12-3 19:22
谢谢聪仔~另外问一句,如果是判断身上装备相关防具,使用相关技能时伤害增加,也就是那一句代码,应该怎么 ...
  1. damage *= 10 if user.actor? and user.armors.include?($data_armors[20]) and obj.is_a?(RPG::Skill) and obj.id == 59
复制代码

评分

参与人数 1星屑 +30 收起 理由
Luciffer + 30 认可答案

查看全部评分

聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
帖子
181
8
 楼主| 发表于 2014-12-3 20:58:17 | 只看该作者
本帖最后由 duchen5779 于 2014-12-3 21:06 编辑

太感谢了!解决了困扰已久的问题!已去专用贴申请版主手动认可答案!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-22 10:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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