Project1

标题: 怎么样实现这样的技能 [打印本页]

作者: xiaox0099    时间: 2016-3-3 11:45
标题: 怎么样实现这样的技能
第一个:第一次用原伤害,第二次用1.5倍伤害,第三次2.25倍伤害。
第二个:某个队友存在后1.5倍伤害。
第三个:某个编号敌人存在1.5倍伤害。
第四个:造成的伤害在增加对方收到的状态的数量除以3
第五个:使用后,敌方使用的伤害技能(魔法)无效并回复同等的数值(一回合)。
作者: Vortur    时间: 2016-3-3 15:46
参考有“Battler”的原脚本;应该说阁下要的都在里面了吧?!
另外参考“第四届RM考试”的问卷,也对阁下的问题进行了考核和提示,具体在下就不深入写了,要看好一会儿脚本的。
作者: q727866714250    时间: 2016-3-5 12:48
本帖最后由 q727866714250 于 2016-3-5 12:49 编辑

第一个:a.atk-b.def*[1],然后在公共事件里添加每次使用变量一+1,这样每次伤害就会加一倍
第二个:话说能在公式里判断一个角色是否在队伍中吗?如果可以就用 ?(好的我是萌新并不知道……)?a.atk*1.5:a.atk这样的公式可以判断
第三个:并没理解……
第四个:= =?还是没看懂、如果是在特定状态下伤害增加就a.state?(41)?a.atk*10:(a.atk*4-b.def),如果使用者在41号状态就无视防御造成攻击的十倍伤害……,否则就是四倍攻击减防御,吧a.state,改成b.state.就可以判断敌人的状态
第五个:在脚本库找到value = item.damage.eval(user, self, $game_variables)
在下面加
if self.state?(100) && user.enemy?
      value = -item.damage.eval(user, self, $game_variables)
      self.remove_state(100)
    end
如果处在100号状态,技能释放者是敌人那么就逆转效果,加血变减血……减血变加血=。=
(PS:顺便第五个是某个大大教咱的呢(抱歉并不记得名字……)……- -)
作者: xiaox0099    时间: 2016-3-5 16:50
q727866714250 发表于 2016-3-5 12:48
第一个:a.atk-b.def*[1],然后在公共事件里添加每次使用变量一+1,这样每次伤害就会加一倍
第二个:话说能 ...

谢谢了。
关于第一个,我找到个别人的连续斩的脚本,然后技能公式大致跟你说的是一样的吧,就是变量每次使用加0.5,然后判断了下是否连续使用,然后战斗结束开始变量初始化。公式大致为 伤害*((变量+=0.5)-0.5)
第二个,不知道是不是判断队伍成员1~4号角色ID是否等于特定角色的ID,不知道怎么写。
第三个,可能没写清楚,就是说对面1~7号敌人里,是否存在一个敌人,它的ID号为特定敌人的ID号。有的话这技能就加伤害。估计光技能公式也判断不出来。
第四个,是想判断敌人BUFF数量,多的话伤害就高,没有就正常伤害。也是多一个多0.5倍伤害吧。不过就判断1个特定状态能加伤害的技能也不错啊。
第五个,就直接拿去了。
作者: xiaox0099    时间: 2016-3-5 17:00
附上找到的连续斩脚本吧
#==============================================================================
# ■ Game_Battler第一次为 使用者攻击力*1.5,第二次为 *2 ,第三次为 *2.5
#--------------伤害公式a.atk*(a.chainhit+=0.5)----------------------------------------------------------------
#==============================================================================
class Game_Battler < Game_BattlerBase
  $chainhit = [236] # 在里面添加每次使用增加伤害类型技能的ID
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor   :chainhit                       # chainhit
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias oldinit_chainhit initialize
  def initialize
    oldinit_chainhit
    @chainhit = 1
  end
  #--------------------------------------------------------------------------
  # ● 战斗结束处理
  #--------------------------------------------------------------------------
  alias old_battleend_chainhit on_battle_end
  def on_battle_end
    @chainhit = 1
    old_battleend_chainhit
  end
end#==============================================================================
# ■ Game_Action
#------------------------------------------------------------------------------
#  处理战斗中的行动的类。本类在 Game_Battler 类的内部使用。
#==============================================================================
class Game_Action
  #--------------------------------------------------------------------------
  # ● 设置技能
  #--------------------------------------------------------------------------
  def set_skill(skill_id)
    @item.object = $data_skills[skill_id]
    if !$chainhit.include?(skill_id) #没有使用连续斩类型技能
    @subject.chainhit = 1  #还原连续斩类型技能的额外伤害
   end
    self
  end
end

作者: 紫苍焰    时间: 2016-3-5 17:28
本帖最后由 紫苍焰 于 2016-3-5 17:31 编辑

第三找到了一个笨办法……战斗处理时用公共事件判定是否存在某敌人,是则对所有敌人附加一个状态,然后某技能对所有有该状态的目标均造成150%伤害,无该状态则正常造成伤害……
然后第二个也可以这么办……
这两个效果如果不叠加的话可以用同一个状态实现。
不过这么做的话就需要在第四条判断的时候剔除这两个状态了……除非你打算把这两个做成可见状态,并且可见也没啥不对的……就像口袋妖怪,小电狮在对手上场时降低对手物攻的特性,写清楚反而更好……




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