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

Project1

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

[原创发布] 【新手】真正的吸血技能特效脚本

[复制链接]

Lv2.观梦者

梦石
0
星屑
585
在线时间
392 小时
注册时间
2012-1-20
帖子
223

开拓者

跳转到指定楼层
1
发表于 2017-1-12 17:22:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 哆啦溯 于 2017-1-12 19:07 编辑

吸血脚本想必各位dalao们已经是随处可见的了,不过我目前在论坛上搜索到的吸血脚本,都是类似
  1. @active_battler.damage = -(target.damage)
复制代码

之类,即“回复使用者技能伤害的HP”,但是真正的吸血不应该是“目标始末HP之差”么。。。简单来讲,敌人有10点HP,技能伤害有30点,那么应该是回复使用者10点HP而非30点。然后我就想了想,用了个全局变量写了写。。。
在Game_Battler 3的 #HP 的伤害减法运算 部分,改为
  1.       # HP 的伤害减法运算
  2.       last_hp = self.hp
  3.       self.hp -= self.damage
  4.       #===吸血用,< 0===
  5.       $su_delta = last_hp - self.hp
  6.       #==============
  7.       effective |= self.hp != last_hp
复制代码

然后在 Scene_Battle 4 的 刷新画面 (主回合步骤 5 : 显示伤害)  部分,改为
  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  3.   #--------------------------------------------------------------------------
  4.   def update_phase4_step5
  5.     # 隐藏帮助窗口
  6.     @help_window.visible = false
  7.     # 刷新状态窗口
  8.     @status_window.refresh
  9.     # 显示伤害
  10.     for target in @target_battlers
  11.       if target.damage != nil
  12.         target.damage_pop = true
  13.         #===================吸血特效============================
  14.         if [75, 76, 77].include?(@active_battler.current_action.skill_id) and target.damage != "Miss" and target.damage > 0
  15.           @active_battler.animation_id = 15
  16.           @active_battler.damage = - $su_delta / 2
  17.           @active_battler.damage_pop = true
  18.           @active_battler.hp += $su_delta / 2
  19.           @status_window.refresh
  20.         end
  21.       end
  22.     end
  23.     # 移至步骤 6
  24.     @phase4_step = 6
  25.   end
复制代码

这部分各大吸血脚本都有~
[75, 76, 77] 这部分为技能ID,并且考虑了MISS的情况;之所以判断 target.damage > 0 这一点是考虑到属性有效度为 E 或 F 的情况~
有什么遗漏的还请指出~
新手第一次发布,瑟瑟发抖。。。如果有更好的方法欢迎提出~
支持一下下我的这个游戏吧~~
大雄与空间军团

Lv4.逐梦者 (版主)

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

开拓者贵宾剧作品鉴家

2
发表于 2017-1-12 18:03:14 | 只看该作者
不同人对吸血的理解不同,所以写出的效果当然不同咯。

在我的考场中,也出现过吸血的处理(详见R考场第二期,第三大题)。在那里的吸血技能还需要考虑吸血者本身的 maxhp,即假设吸血者的hp为99/100,那么这个吸血技能最多吸1点HP,并且对敌人的伤害也是1点。

代码方面的建议的话,首先是根据RGSS1的逻辑,伤害处理部分写在skill_effect中,伤害显示部分则放在Scene_Battle中,所以在这里,可以顺便将伤害处理也写在skill_effect中,这样的话,全局变量就可以省掉。当然,动画的处理就可能要写在这了(除非不要动画)。
RUBY 代码复制
  1. if [75, 76, 77].include?(skill_id)
  2.   drain = last_hp - self.hp
  3.   if drain > 0
  4.     user.damage = -drain
  5.     user.hp -= user.damage
  6.   end
  7. end

然后在Scene_Battle只需要添加damage_pop一项即可。

点评

我又试了试,应该是skill.id而不是skill_id  发表于 2017-1-15 00:02
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
585
在线时间
392 小时
注册时间
2012-1-20
帖子
223

开拓者

3
 楼主| 发表于 2017-1-12 18:52:11 | 只看该作者
RyanBern 发表于 2017-1-12 18:03
不同人对吸血的理解不同,所以写出的效果当然不同咯。

在我的考场中,也出现过吸血的处理(详见R考场第二 ...

恩……对吸血的理解不同确实有差异,我这种应该是基于技能特效而不是纯吸血的技能……

代码部分,我一开始也是尝试直接在Game_Battler 3写的,但是这里面似乎找不到skill_id这个变量,所以不能直接写啊……
另外动画的处理在skill_effect中写的话,我用的是user.animation_id,这样的话只会改变使用方用技能时的动画(不会额外在对象方动画放完后再播放一种使用方动画),好像不对。。。

点评

如果和使用方动画有冲突的话,只能在Scene_Battle3再改一次。不过建议在skill_effect的地方设置flag,这样可以根据这个flag判断是否需要显示第二个动画  发表于 2017-1-12 20:19
没记错的话skill_effect有两个参数,其中有一个参数就表示技能(忘了是skill还是skill_id了,反正都是一样的)。  发表于 2017-1-12 20:18
支持一下下我的这个游戏吧~~
大雄与空间军团
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 20:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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