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

Project1

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

[已经解决] 求让一部分特技同时也会消耗HP的脚本

[复制链接]

Lv4.逐梦者

素材区好人

梦石
3
星屑
7487
在线时间
3540 小时
注册时间
2011-7-21
帖子
2284

极短24参与极短23参与极短22参与极短21参与

跳转到指定楼层
1
发表于 2014-8-29 20:07:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本来是用公共事件做的,后来听从别人建议,认为如果加上【HP不足就不能释放】的设定比较好些,因此就搜索了一下
于是,没找到。。。
跟职业没关系,所有人释放该特技都需要消耗HP,如果HP不足就不能释放(当然SP不足也不能)。因为半即时脚本的关系,所以可能在释放的时候被攻击导致HP不足,此时应该设定为释放失败
求该怎么做这一效果

Lv4.逐梦者 (版主)

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

开拓者贵宾剧作品鉴家

2
发表于 2014-8-29 20:18:00 | 只看该作者
本帖最后由 RyanBern 于 2014-8-30 13:25 编辑

还是要黑一下skill_can_use,插入Main前
  1. class Game_Battler
  2.   alias skill_can_use? rb_skill_can_use?
  3.   def skill_can_use?(skill_id)
  4.     # 1号特技在HP为100以下不能使用,注意和SP不同的是,这里必须要带等号,否则使用之后角色会死掉的。
  5.     if skill_id == 1 && self.hp <= 100
  6.       return false
  7.     end
  8.     if skill_id == 2 && self.hp <= 200
  9.       return false
  10.     end
  11.     rb_skill_can_use?(skill_id)
  12.   end
  13. end
复制代码
然后就是Scene_Battle4的def make_skill_action_result
找到#消耗SP那一行注释,平行地添加消耗HP的脚本
  1. if @skill.id == 1
  2.   @active_battler.hp -= 100
  3. end
  4. if @skill_id == 2
  5.   @active_battler.hp -= 200
  6. end
复制代码
至于LZ说的情况,默认系统已经作了考虑(比如选好技能后突然中了个沉默,这时候行动会清空)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
7487
在线时间
3540 小时
注册时间
2011-7-21
帖子
2284

极短24参与极短23参与极短22参与极短21参与

3
 楼主| 发表于 2014-8-29 20:47:00 | 只看该作者
RyanBern 发表于 2014-8-29 20:18
还是要黑一下skill_can_use,插入Main前然后就是Scene_Battle4的def make_skill_action_result
找到#消耗SP ...

如果要做2个消耗HP的技能(每个消耗的HP也不同),那么复制2遍就可以了吧(3个3遍?)






点评

并不是这个意思,虽然我没资格说,但是既然给答案的话,能严谨一些也是好的  发表于 2014-8-30 18:14
嗯,好像在说我们写脚本不认真……其实不是啦,芯大脚本报错是因为万恶的url,其实他的脚本是插入main前的  发表于 2014-8-30 17:39
已经解决,因为实验的2个方法都会报错,所以就只能私下请教了一下其他人  发表于 2014-8-30 14:41
6楼的会报错,其实如果可以的话工程更好。并不是我在偷懒,只是希望你们能先测试一遍  发表于 2014-8-30 14:21
2L有更新,请注意查看。然后就是如果实在弄不会的话,可以看6L芯大的脚本,那个插入main前就可以直接用。  发表于 2014-8-30 13:26
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
4
发表于 2014-8-29 21:07:32 | 只看该作者
你在魔法消耗那里加入一个when的判断 用skill_id判断消耗
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
7487
在线时间
3540 小时
注册时间
2011-7-21
帖子
2284

极短24参与极短23参与极短22参与极短21参与

5
 楼主| 发表于 2014-8-29 21:28:01 | 只看该作者
RyanBern 发表于 2014-8-29 20:18
还是要黑一下skill_can_use,插入Main前然后就是Scene_Battle4的def make_skill_action_result
找到#消耗SP ...

那么是这样?(表示对于脚本的事情一窍不通)





点评

第一个if少了一个end  发表于 2014-8-29 22:48
那么if @skill.id == 1 @active_battler.hp -= 100 end 怎么办,不知道我怎么写对不对  发表于 2014-8-29 22:30
我的那个帖子做了一些改动,可以参考下。下次就应该多谢几个……orz  发表于 2014-8-29 21:37
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33434
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

6
发表于 2014-8-30 08:18:53 | 只看该作者
本帖最后由 芯☆淡茹水 于 2014-8-30 08:25 编辑

增加一个设置,修改 2 处
  1. #消耗 HP 技能ID以及消耗量。
  2. CONSUME_HP_SKILLS = {57=>100,61=>120}
  3. class Game_Battler
  4.   #--------------------------------------------------------------------------
  5.   alias add_skill_can_use?_xdrs skill_can_use?
  6.   def skill_can_use?(skill_id)
  7.     if CONSUME_HP_SKILLS.keys.include?(skill_id)
  8.       return self.hp > CONSUME_HP_SKILLS[skill_id]
  9.     end
  10.     add_skill_can_use?_xdrs(skill_id)
  11.   end
  12. end
  13. #=============================================================================
  14. class Scene_Battle
  15.   #--------------------------------------------------------------------------
  16.   def make_skill_action_result
  17.     # 获取特技
  18.     [url=home.php?mod=space&uid=260100]@skill[/url] = $data_skills[@active_battler.current_action.skill_id]
  19.     # 如果不是强制行动
  20.     unless @active_battler.current_action.forcing
  21.       # 因为 SP 耗尽而无法使用的情况下
  22.       unless @active_battler.skill_can_use?(@skill.id)
  23.         # 清除强制行动对像的战斗者
  24.         $game_temp.forcing_battler = nil
  25.         # 移至步骤 1
  26.         @phase4_step = 1
  27.         return
  28.       end
  29.     end
  30.     # 消耗 SP
  31.     @active_battler.sp -= @skill.sp_cost
  32.     ######################################################################
  33.     if CONSUME_HP_SKILLS.keys.include?(@skill.id)
  34.       @active_battler.hp -= CONSUME_HP_SKILLS[@skill.id]
  35.     end
  36.     ######################################################################
  37.     # 刷新状态窗口
  38.     @status_window.refresh
  39.     # 在帮助窗口显示特技名
  40.     @help_window.set_text(@skill.name, 1)
  41.     # 设置动画 ID
  42.     @animation1_id = @skill.animation1_id
  43.     @animation2_id = @skill.animation2_id
  44.     # 设置公共事件 ID
  45.     @common_event_id = @skill.common_event_id
  46.     # 设置对像侧战斗者
  47.     set_target_battlers(@skill.scope)
  48.     # 应用特技效果
  49.     for target in @target_battlers
  50.       target.skill_effect(@active_battler, @skill)
  51.     end
  52.   end
  53. end
复制代码

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
7487
在线时间
3540 小时
注册时间
2011-7-21
帖子
2284

极短24参与极短23参与极短22参与极短21参与

7
 楼主| 发表于 2014-8-30 13:01:03 | 只看该作者
芯☆淡茹水 发表于 2014-8-30 08:18
增加一个设置,修改 2 处

我想说,至少告诉我在哪修改吧
RUBY 代码复制
  1. #消耗 HP 技能ID以及消耗量。
  2. CONSUME_HP_SKILLS = {57=>100,61=>120}
  3. class Game_Battler
  4.   #--------------------------------------------------------------------------
  5.   alias add_skill_can_use?_xdrs skill_can_use?
  6.   def skill_can_use?(skill_id)
  7.     if CONSUME_HP_SKILLS.keys.include?(skill_id)
  8.       return self.hp > CONSUME_HP_SKILLS[skill_id]
  9.     end
  10.     add_skill_can_use?_xdrs(skill_id)
  11.   end
  12. end
  13. #=============================================================================
  14. class Scene_Battle
  15.   #--------------------------------------------------------------------------
  16.   def make_skill_action_result
  17.     # 获取特技
  18.     [url=home.php?mod=space&uid=260100]@skill[/url] = $data_skills[@active_battler.current_action.skill_id]
  19.     # 如果不是强制行动
  20.     unless @active_battler.current_action.forcing
  21.       # 因为 SP 耗尽而无法使用的情况下
  22.       unless @active_battler.skill_can_use?(@skill.id)
  23.         # 清除强制行动对像的战斗者
  24.         $game_temp.forcing_battler = nil
  25.         # 移至步骤 1
  26.         @phase4_step = 1
  27.         return
  28.       end
  29.     end
  30.     # 消耗 SP
  31.     @active_battler.sp -= @skill.sp_cost

应该是插入到Main前面?


RUBY 代码复制
  1. # 刷新状态窗口
  2.     @status_window.refresh
  3.     # 在帮助窗口显示特技名
  4.     @help_window.set_text(@skill.name, 1)
  5.     # 设置动画 ID
  6.     @animation1_id = @skill.animation1_id
  7.     @animation2_id = @skill.animation2_id
  8.     # 设置公共事件 ID
  9.     @common_event_id = @skill.common_event_id
  10.     # 设置对像侧战斗者
  11.     set_target_battlers(@skill.scope)
  12.     # 应用特技效果
  13.     for target in @target_battlers
  14.       target.skill_effect(@active_battler, @skill)
  15.     end
  16.   end
  17. end

也找到了

if CONSUME_HP_SKILLS.keys.include?(@skill.id)
      @active_battler.hp -= CONSUME_HP_SKILLS[@skill.id]
    end

该怎么办
回复 支持 反对

使用道具 举报

Lv2.观梦者 (版主)

脚本白痴

梦石
0
星屑
412
在线时间
902 小时
注册时间
2007-7-9
帖子
1403
8
发表于 2014-8-30 15:00:24 | 只看该作者
找到game_battler 3 第14行
加上
  1. # HP 不足的情况下不能使用
  2.      if skill_id == 1 && self.hp <= 100
  3.       return false
  4.     end
复制代码
然后
scene_battle 4  342行增加
  1. # 消耗 HP
  2.     case @skill.id
  3.     when 1
  4.       @active_battler.hp -= 100
  5.     when 2  
  6.       @active_battler.hp -= 200
  7.     end
复制代码

点评

这种方法的确简单明了。不过再在这里认可一遍算不算黑幕,明明刚刚就在QQ上帮我解决了。。。  发表于 2014-8-30 15:05

评分

参与人数 2星屑 +230 收起 理由
RyanBern + 200 认可答案,牛肉面版主新技能get.
无忧谷主幻 + 30 认可答案,竟然还不如魔哆评的多.

查看全部评分


正统向RPG-大雄的高井山奇谈
https://rpg.blue/thread-369758-1-1.html
哆啦A梦RTP风格素材
https://rpg.blue/forum.php?mod=viewthread&tid=394608
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 02:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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