Project1

标题: rmxp脚本中怎样描述角色每次sp的消耗值? [打印本页]

作者: 老王的忧郁    时间: 2015-10-30 21:46
标题: rmxp脚本中怎样描述角色每次sp的消耗值?
我想做一个被动技能

   学习了该技能的角色根据每次減少的sp的值来恢复hp.
   假设 a =  本次減少的sp值
            b =  本次減少的sp值为maxsp的百分比
    角色恢复的hp = b × mxahp

想要做的效果如此,现在苦于不知道怎么描述
每次角色減少的sp值……

   请求论坛大神给个助攻
            
作者: 老王的忧郁    时间: 2015-10-30 21:49
抱歉,刚才网络太卡了,还以为上个帖子没发成功
作者: RyanBern    时间: 2015-10-30 22:25
本帖最后由 RyanBern 于 2015-10-30 23:50 编辑

在Scene_Battle4中有如下定义
RUBY 代码复制
  1. def make_skill_action_result
  2.     # 获取特技
  3.     @skill = $data_skills[@active_battler.current_action.skill_id]
  4.     # 如果不是强制行动
  5.     unless @active_battler.current_action.forcing
  6.       # 因为 SP 耗尽而无法使用的情况下
  7.       unless @active_battler.skill_can_use?(@skill.id)
  8.         # 清除强制行动对像的战斗者
  9.         $game_temp.forcing_battler = nil
  10.         # 移至步骤 1
  11.         @phase4_step = 1
  12.         return
  13.       end
  14.     end
  15.     # 消耗 SP
  16.     @active_battler.sp -= @skill.sp_cost
  17.     # 刷新状态窗口
  18.     @status_window.refresh
  19.     # 在帮助窗口显示特技名
  20.     @help_window.set_text(@skill.name, 1)
  21.     # 设置动画 ID
  22.     @animation1_id = @skill.animation1_id
  23.     @animation2_id = @skill.animation2_id
  24.     # 设置公共事件 ID
  25.     @common_event_id = @skill.common_event_id
  26.     # 设置对像侧战斗者
  27.     set_target_battlers(@skill.scope)
  28.     # 应用特技效果
  29.     for target in @target_battlers
  30.       target.skill_effect(@active_battler, @skill)
  31.     end
  32.   end

这里有个消耗 SP。可以在这里做修改。
一种可行的办法(仅供参考,未测试)
RUBY 代码复制
  1. if @active_battler.is_a?(Game_Actor) && @active_battler.skill_learn?(变SP消耗为HP的技能ID)
  2.   @active_battler.damage = -Integer(1.0 * @skill.sp_cost * @active_battler.maxhp / @active_battler.maxsp)
  3.   @active_battler.hp -= @active_battler.damage
  4.   @active_battler.damage_pop = true
  5. end
   




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