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

Project1

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

[已经过期] rmxp脚本中怎样描述角色每次sp的消耗值?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
72 小时
注册时间
2015-7-10
帖子
37
跳转到指定楼层
1
发表于 2015-10-30 21:46:26 手机端发表。 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想做一个被动技能

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

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

   请求论坛大神给个助攻
            

Lv1.梦旅人

梦石
0
星屑
70
在线时间
72 小时
注册时间
2015-7-10
帖子
37
2
 楼主| 发表于 2015-10-30 21:49:21 手机端发表。 | 只看该作者
抱歉,刚才网络太卡了,还以为上个帖子没发成功
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 2015-10-30 22:25:21 | 只看该作者
本帖最后由 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
   

点评

我这里测试有效。可能是你使用的别的脚本导致原始Scene_Battle被覆盖。可以试着搜索make_skill_action_result 然后在最后一处脚本里添加  发表于 2015-10-30 23:51
加上去也不行哇,看起来系统对着段代码根本就没有什么反应  发表于 2015-10-30 23:40
具体效果在代码中已经完善,当前技能消耗的SP数就是该角色SP的变化数,请参考上面的代码修改。  发表于 2015-10-30 23:37
少了一句@active_battler.hp -= @active_battler.damage,需要加上才能真正回复HP  发表于 2015-10-30 23:34
有没有办法描述一下,角色SP值的前后变化的差量?  发表于 2015-10-30 23:32
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-23 05:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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