Project1

标题: 请问如何设计几种比较奇葩的技能,详见正文? [打印本页]

作者: 橙光    时间: 2014-2-9 02:52
标题: 请问如何设计几种比较奇葩的技能,详见正文?
今日玩了N多日式RPG,非常喜欢,但是对于RUBY语言完全不懂,所以请教下如何制作一个像最终幻想4圣骑士塞西尔那个掩护技能。

还有就是我自己设计的战吼技能 我的打算是被其影响的敌人(友军)只能攻击施法者,不能攻击其他人。维持到一定回合

十字圣盾 这个技能的释放者会承受来自所有敌人(友军)的伤害(也就是掩护的升级版,掩护只能制定一个人,维持一定回合。以上技能 敌人和我方都可以通用此技能。

顺带一提,为了弥补不足,如果谁有RUBY语言的教程,请分享给我一份 吧……苦逼的脚本盲……谢谢大家。
作者: 橙光    时间: 2014-2-9 02:55
我的思路中 想到伤害反射应该有此原理,但苦逼看不懂脚本 真心跪。还望大神,给予我举一反三的教程……、

作者: 精灵使者    时间: 2014-2-9 02:58
这些技能似乎都是使用对象吧……
看起来需要先获取施法的对象,然后伤害处理的时候加入判定,如果有人有这个状态的话那么强行锁定这个人,否则就是指定的目标
大致算法是这样的……脚本我不会……
作者: eel    时间: 2014-2-9 12:47
你用下挑衅那个效果看看?
作者: tan12345    时间: 2014-2-9 20:09
十字圣盾:其实就是保护队友这个状态,只是保护队友生效的条件是队友的HP在1/4以下。
只攻击自己的那个,其实就是挑衅,收到攻击几率1000%
作者: swb11028869    时间: 2014-2-9 21:04
真嘲讽系统。你试试这个


#==============================================================================
# ■ 系统设定
#------------------------------------------------------------------------------
module P叔
# 请在下面设定敌人被嘲讽后附加的状态的ID,默认ID是26
  BEICHAOFENG = 39
# 请在下面设定角色释放嘲讽后自己附加的状态的ID,默认ID是27
  CHAOFENG = 40
end  
#==============================================================================


#==============================================================================
# ■ Game_Action
#------------------------------------------------------------------------------
#  处理战斗中的行动的类。本类在 Game_Battler 类的内部使用。
#==============================================================================

class Game_Action
  #--------------------------------------------------------------------------
  # ● 目标为敌人  # 再定义
  #--------------------------------------------------------------------------
  def targets_for_opponents
    if item.for_random?
      Array.new(item.number_of_targets) { opponents_unit.random_target }
    elsif item.for_one?
      num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
      if @target_index < 0
        # 当攻击者处于被嘲讽状态并且攻击者是敌人时
        if @subject.state?(P叔::BEICHAOFENG) and @subject.is_a?(Game_Enemy)
        # 攻击目标为处于嘲讽状态的角色
          $game_party.alive_members.each do |actor|
            return [actor] * num if actor.state?(P叔::CHAOFENG) end
        end  
        return [opponents_unit.random_target] * num  
      else
        [opponents_unit.smooth_target(@target_index)] * num
      end
    else
      opponents_unit.alive_members
    end
  end
end  

#==============================================================================
# ■ Game_ActionResult
#------------------------------------------------------------------------------
#  战斗行动结果的管理类。本类在 Game_Battler 类的内部使用。
#==============================================================================

class Game_ActionResult
  #--------------------------------------------------------------------------
  # ● 获取 HP 伤害的文字  # 再定义
  #--------------------------------------------------------------------------
  def hp_damage_text
    if @hp_drain > 0
      fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
    elsif @hp_damage > 0
      fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
      sprintf(fmt, @battler.name, @hp_damage)
    elsif @hp_damage < 0
      fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
    else
      fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
      # 修改以下脚本,以消除附加被嘲讽状态时HP伤害为0而显示“毫发无伤”的文字。
      sprintf(fmt, @battler.name) unless @battler.state?(P叔::BEICHAOFENG)
    end
  end
end  

#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
#  处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
#==============================================================================

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 判定状态是否可以附加  # 再定义
  #--------------------------------------------------------------------------
  def state_addable?(state_id)
    # 取消了对!state_removed?(state_id)的判断。
    # 如果执行该判断将导致状态附加失败。
    alive? && $data_states[state_id] && !state_resist?(state_id) &&
      !state_restrict?(state_id)
  end
end  

作者: 橙光    时间: 2014-2-16 16:00
敌人也通用嘲讽……这个无法解决么?不过谢谢大家了。




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