Project1

标题: 【自答贴】适用于彩虹神剑的溅射技能 [打印本页]

作者: 无忧谷主幻    时间: 2026-3-31 10:41
标题: 【自答贴】适用于彩虹神剑的溅射技能
本帖最后由 无忧谷主幻 于 2026-3-31 12:46 编辑

原本是求助,结果发现自己似乎解决了?但又删不了,只能变成自答贴了
简单来说,就是攻击一个敌人并附加一个状态,之后对非状态的角色添加伤害
但是!彩虹神剑是靠动画闪烁弹出伤害的,直接写伤害没用,所以需要一个带闪烁的空动画
之后判断对方的状态,对非状态的敌方角色显示闪烁动画,并扣除HP,最后解除这个状态即可

原本存在的BUG在于:如果敌人直接被溅射伤害打死了,战斗图不会消失,后来加上刷新后又不显示溅射伤害数字
最后才发现原来是伤害处理流程出错了
Project2.zip (349.96 KB, 下载次数: 3)
不想下可以直接看,彩虹神剑就不贴了,在工程中


PS:其实如何可以的话还是删了吧,不过不删也没关系












作者: lin2117245    时间: 2026-4-11 19:57
怎么弄溅射人数不要全屏呢
作者: lin2117245    时间: 2026-4-11 20:22
lin2117245 发表于 2026-4-11 19:57
怎么弄溅射人数不要全屏呢

你帮我写一个看看我用了你的脚本溅射都是全屏的怎么修改啊
作者: 无忧谷主幻    时间: 2026-4-11 20:48
lin2117245 发表于 2026-4-11 20:22
你帮我写一个看看我用了你的脚本溅射都是全屏的怎么修改啊


那你说说需求吧,是要定义范围还是对每个敌人概率溅射
如果是后者,我现在就能写
前者的话,你打算游戏中敌群数量的最大值是多少?
作者: lin2117245    时间: 2026-4-11 21:01
无忧谷主幻 发表于 2026-4-11 20:48
那你说说需求吧,是要定义范围还是对每个敌人概率溅射
如果是后者,我现在就能写
前者的话,你打算游戏中 ...

能不能跟梦幻西游一样横扫只溅射3个人就行
作者: lin2117245    时间: 2026-4-11 21:03
364397607加QQ我远程给你写
作者: 无忧谷主幻    时间: 2026-4-11 21:11
lin2117245 发表于 2026-4-11 21:01
能不能跟梦幻西游一样横扫只溅射3个人就行

包含主目标吗?
作者: lin2117245    时间: 2026-4-11 21:12
无忧谷主幻 发表于 2026-4-11 21:11
包含主目标吗?

嗯就是敌人随机溅射3个当位
作者: lin2117245    时间: 2026-4-11 21:19
就这样的随机三个就行
作者: lin2117245    时间: 2026-4-11 21:22
现在是全屏就是加主随机在两个就是三个了

QQ浏览器截图20260411211000.png (738.64 KB, 下载次数: 29)

QQ浏览器截图20260411211000.png

作者: lin2117245    时间: 2026-4-11 21:46
还有请问下怎么弄一个技能能释放三四个法术呢
作者: lin2117245    时间: 2026-4-11 21:54
lin2117245 发表于 2026-4-11 21:22
现在是全屏就是加主随机在两个就是三个了

加我QQ364397607比较好沟通
作者: 无忧谷主幻    时间: 2026-4-11 21:55
lin2117245 发表于 2026-4-11 21:12
嗯就是敌人随机溅射3个当位

只要给随机3个敌人附加上状态17就好了
事件页写不下,我就放在脚本编辑器中了
Project2.zip (350.32 KB, 下载次数: 1)
话说,我感觉随机多体攻击更适合你吧?
https://rpg.blue/thread-329344-1-1.html
作者: lin2117245    时间: 2026-4-11 22:24
无忧谷主幻 发表于 2026-4-11 21:55
只要给随机3个敌人附加上状态17就好了
事件页写不下,我就放在脚本编辑器中了

溅射伤害能不能跟改随主角的伤害
作者: lin2117245    时间: 2026-4-11 22:31
无忧谷主幻 发表于 2026-4-11 21:55
只要给随机3个敌人附加上状态17就好了
事件页写不下,我就放在脚本编辑器中了

你加我QQ吧比较好说我关电脑了
作者: 无忧谷主幻    时间: 2026-4-11 22:48
lin2117245 发表于 2026-4-11 22:24
溅射伤害能不能跟改随主角的伤害

首先,我做的这个其实就是直接扣血,跳过了整个技能伤害计算公式
如果你要改成关联技能或主角攻击力其实也可以
比如这样就是关联了技能57的威力数值
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 状态17溅射伤害处理
  3. #==============================================================================
  4.  
  5. class Game_Troop
  6.   # 对随机最多3个敌人附加状态17,并对所有带该状态的敌人造成技能57的威力伤害
  7.   def splash_state17_damage
  8.     # 1. 筛选出所有存活的敌人
  9.     alive_targets = @enemies.select { |e| e.hp > 0 }
  10.  
  11.     # 2. 从存活敌人中随机选取最多3个
  12.     targets_to_add_state = alive_targets.sort_by{ rand }[0, [3, alive_targets.size].min]
  13.  
  14.     # 3. 为选中的目标附加状态17
  15.     targets_to_add_state.each do |enemy|
  16.       enemy.add_state(17) unless enemy.state?(17)
  17.     end
  18.  
  19.     # 4. 对所有拥有状态17的存活敌人造成技能57的威力伤害
  20.     alive_targets.each do |enemy|
  21.       if enemy.state?(17)
  22.         # 直接读取数据库中 技能57 的威力
  23.         skill = $data_skills[57]
  24.         dmg = skill.power
  25.  
  26.         enemy.hp -= dmg
  27.         enemy.damage = dmg
  28.         enemy.critical = false
  29.         enemy.animation_id = 101
  30.         enemy.damage_pop = true
  31.       end
  32.     end
  33.   end
  34. end

但你非要改成标准战斗的伤害,就需要加上整套伤害计算公式了,我真心不建议用这个方法,另外,我感觉你还是重开一个帖子比较好


作者: lin2117245    时间: 2026-4-12 19:24
无忧谷主幻 发表于 2026-4-11 22:48
首先,我做的这个其实就是直接扣血,跳过了整个技能伤害计算公式
如果你要改成关联技能或主角攻击力其实 ...

能改成角色攻击伤害不比如.角色攻击5100那么溅射一样或者低可以不
作者: lin2117245    时间: 2026-4-12 19:26
你帮我写一个观照万象像梦幻一样梦释放施法四个法术的
作者: 无忧谷主幻    时间: 2026-4-12 21:49
lin2117245 发表于 2026-4-12 19:24
能改成角色攻击伤害不比如.角色攻击5100那么溅射一样或者低可以不

关联的数值改成角色1的攻击力
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 状态17溅射伤害处理
  3. #==============================================================================
  4.  
  5. class Game_Troop
  6.   # 对随机最多3个敌人附加状态17,并对所有带该状态的敌人造成主角1攻击力的伤害
  7.   def splash_state17_damage
  8.     # 1. 筛选出所有存活的敌人
  9.     alive_targets = @enemies.select { |e| e.hp > 0 }
  10.  
  11.     # 2. 从存活敌人中随机选取最多3个
  12.     targets_to_add_state = alive_targets.sort_by{ rand }[0, [3, alive_targets.size].min]
  13.  
  14.     # 3. 为选中的目标附加状态17(已存在则不重复添加)
  15.     targets_to_add_state.each do |enemy|
  16.       enemy.add_state(17) unless enemy.state?(17)
  17.     end
  18.  
  19.     # 4. 对所有拥有状态17的存活敌人造成伤害
  20.     alive_targets.each do |enemy|
  21.       if enemy.state?(17)
  22.         # 获取队伍第一个成员(主角1)的最终攻击力
  23.         # 包含装备、状态、buff/debuff的最终数值
  24.         dmg = $game_party.actors[0].atk
  25.  
  26.         enemy.hp -= dmg
  27.         enemy.damage = dmg
  28.         enemy.critical = false
  29.         enemy.animation_id = 101
  30.         enemy.damage_pop = true
  31.       end
  32.     end
  33.   end
  34. end


甚至可以加上浮动
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 状态17溅射伤害处理
  3. #==============================================================================
  4.  
  5. class Game_Troop
  6.   # 对随机最多3个敌人附加状态17,并对所有带该状态的敌人造成主角1攻击力的伤害
  7.   def splash_state17_damage
  8.     # 1. 筛选出所有存活的敌人
  9.     alive_targets = @enemies.select { |e| e.hp > 0 }
  10.  
  11.     # 2. 从存活敌人中随机选取最多3个
  12.     targets_to_add_state = alive_targets.sort_by{ rand }[0, [3, alive_targets.size].min]
  13.  
  14.     # 3. 为选中的目标附加状态17(已存在则不重复添加)
  15.     targets_to_add_state.each do |enemy|
  16.       enemy.add_state(17) unless enemy.state?(17)
  17.     end
  18.  
  19.     # 4. 对所有拥有状态17的存活敌人造成伤害
  20.     alive_targets.each do |enemy|
  21.       if enemy.state?(17)
  22.         # 获取主角1的基础攻击力
  23.         base_atk = $game_party.actors[0].atk
  24.         # 生成±10%的随机浮动系数
  25.         fluct = 0.9 + rand * 0.2
  26.         # 计算最终伤害(向下取整,确保为整数)
  27.         dmg = (base_atk * fluct).to_i
  28.         # 保底1点伤害,避免出现0伤
  29.         dmg = [dmg, 1].max
  30.  
  31.         enemy.hp -= dmg
  32.         enemy.damage = dmg
  33.         enemy.critical = false
  34.         enemy.animation_id = 101
  35.         enemy.damage_pop = true
  36.       end
  37.     end
  38.   end
  39. end


但你要明白,这本质上仍然是关联了某个数值的固定伤害,如果你想像正常战斗一样,需要套用整个伤害计算公式,还要考虑敌人的防御力,不如从新做一个比较方便

这是我在这个帖子的最后一个回复了,如果还不满意,就去开新帖吧

作者: lin2117245    时间: 2026-4-12 22:01
无忧谷主幻 发表于 2026-4-12 21:49
关联的数值改成角色1的攻击力
#===================================================================== ...

最后这个脚本还是会全屏啊
作者: lin2117245    时间: 2026-4-13 19:36
lin2117245 发表于 2026-4-12 22:01
最后这个脚本还是会全屏啊

那不能固定随机三个就好了吗?
作者: lin2117245    时间: 2026-4-24 20:03
怎么弄一个技能里面释放四个不同的技能啊
作者: lin2117245    时间: 2026-4-28 20:35
lin2117245 发表于 2026-4-24 20:03
怎么弄一个技能里面释放四个不同的技能啊

用脚本怎么写啊施法四次那种





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