Project1

标题: 如何在后台定义异常状态 [打印本页]

作者: Anson    时间: 2013-7-28 15:38
标题: 如何在后台定义异常状态
比如说有个技能在处于异常状态时,攻击力提高50%。
如何在后台定义异常状态,用def么?
怎么自己设定部分编号是异常状态?
然后在使用技能的时候释放正确效果?
作者: wwwcctvty    时间: 2013-7-28 16:06
Game_Battler下的def skill_effect(user, skill)里添加你想添加的东西
作者: Anson    时间: 2013-7-28 16:10
wwwcctvty 发表于 2013-7-28 16:06
Game_Battler下的def skill_effect(user, skill)里添加你想添加的东西

我是想知道如何定义某些状态为异常状态,然后在技能或者物品中能够调用。
作者: wwwcctvty    时间: 2013-7-28 17:28
Anson 发表于 2013-7-28 16:10
我是想知道如何定义某些状态为异常状态,然后在技能或者物品中能够调用。 ...

、、、、还是没明白楼主想表示 什么?“定义某些状态为异常状态”?调用状态?状态只有附加和解除、、
战斗中会自动判断角色是否中了某个状态,你只需要在应用技能效果那里这写上判断中了某个状态后,使用技能加成50%
作者: Anson    时间: 2013-7-28 18:26
wwwcctvty 发表于 2013-7-28 17:28
、、、、还是没明白楼主想表示 什么?“定义某些状态为异常状态”?调用状态?状态只有附加和解除、、
战 ...

比如说有这些状态:烧伤,中毒,冻伤,睡眠,力量下降。
异常状态为烧伤,中毒,冻伤,睡眠。然后定义,在这个技能释放的时候如果有异常状态4种其中一种或多种的话,攻击提高50%。而力量下降不归为异常状态的话对技能就没有影响。
简单来说就是能够自己为状态分类,调用。

作者: wwwcctvty    时间: 2013-7-28 19:08
Anson 发表于 2013-7-28 18:26
比如说有这些状态:烧伤,中毒,冻伤,睡眠,力量下降。
异常状态为烧伤,中毒,冻伤,睡眠。然后定义, ...

为什么 楼主一定要分类呢?好吧。可以这样分类 STATE_OF_THE_ARRAY = [1,2,3,4,5,6]#中括号里的就是状态ID
作者: Anson    时间: 2013-7-29 11:41
wwwcctvty 发表于 2013-7-28 19:08
为什么 楼主一定要分类呢?好吧。可以这样分类 STATE_OF_THE_ARRAY = [1,2,3,4,5,6]#中括号里的就是状态I ...

这段脚本应该插入在哪,怎么调用呢?这里是脚本白痴恕谅解!
作者: 弗雷德    时间: 2013-7-29 19:17
状态那里有个属性防御,比如咱们把21号属性设为异常状态的属性标志,然后把你想归纳为异常状态的勾上21号属性。
之后在Game_Battler 3下,128行左右
  1. power = skill.power + user.atk * skill.atk_f / 100
  2. if power > 0
  3. power -= self.pdef * skill.pdef_f / 200
  4. power -= self.mdef * skill.mdef_f / 200
  5. power = [power, 0].max
  6. end
复制代码
修改一下:
  1. power = skill.power + user.atk * skill.atk_f / 100
  2. if power > 0
  3. power -= self.pdef * skill.pdef_f / 200
  4. power -= self.mdef * skill.mdef_f / 200
  5. power = [power, 0].max
  6. end
  7. #如果是被攻击者是self
  8. for i in user.states
  9. state = $data_states[i]
  10. # 这里判断施术者的状态是否有异常状态
  11.   if state.guard_element_set.include?(21)
  12. # 如果直接写成power *=1.5为会出现小数,可以像下面这么写,也可以.round
  13.     power = power*3/2
  14. #为了避免power的反复加成,提升一次打断循环。
  15.     break
  16. end
  17. end
复制代码
以上只是理论,未测试。

作者: 芯☆淡茹水    时间: 2013-7-29 19:41
也可以直接在伤害计算前,算成最终的伤害提升:
  1. #先定义一些异常状态
  2. STATE_OF_THE_ARRAY = [1,2,3,4,5,6]   # 1,2,3,4,5,6 都是异常状态

  3. # 然后直接在 Game_Battler 3  里的  应用特技效果  的   HP 的伤害减法运算  前,
  4. # 插入:
  5. if skill.id == 异常状态增幅攻击技能 ID
  6.   for i in self.states
  7.     if STATE_OF_THE_ARRAY.include?(i)
  8.       self.damage += self.damage / 2
  9.       break
  10.     end
  11.   end
  12. end
复制代码

作者: Anson    时间: 2013-7-29 21:43
芯☆淡茹水 发表于 2013-7-29 19:41
也可以直接在伤害计算前,算成最终的伤害提升:

我懂了!亲每次都是你帮我解答!!
作者: Anson    时间: 2013-7-29 22:00
芯☆淡茹水 发表于 2013-7-29 19:41
也可以直接在伤害计算前,算成最终的伤害提升:

我加在scene battler4末尾了
   # 显示伤害
    for target in @target_battlers
       if target.damage != nil
         target.damage_pop = true
       end
      if target.is_a?(Game_Actor) and target.id == 6
        for i in self.states
    if STATE_OF_THE_ARRAY.include?(i)
           target.add_state(86)
      break
    end
  end
  end

提示我
        for i in self.states
出错怎么回事




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1