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

Project1

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

[已经解决] 恢复类技能有概率失败并倒扣生命

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1389
在线时间
267 小时
注册时间
2017-2-18
帖子
101

开拓者

跳转到指定楼层
1
发表于 2020-1-22 20:10:55 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
如何实现下述效果:当角色A已习得B技能时,使用生命回复类技能有N%几率令恢复效果无效并使恢复数值反转为伤害

Lv3.寻梦者

梦石
0
星屑
2604
在线时间
462 小时
注册时间
2019-6-22
帖子
74
4
发表于 2020-1-27 11:03:48 | 只看该作者
本帖最后由 kunikai 于 2020-1-27 13:25 编辑
能用脚本解决的要尽量用脚本。

但如果“治疗技能概率扣血”只是特定角色拥有,可以使用“真假技能”的方式来做。

首先将以下两个脚本插入默认脚本以下、Main以上,以消除假技能的提示。
RUBY 代码复制
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - 关闭失败提示 v1.00
  4. # -- 最后更新: 2011.12.23
  5. # -- 使用难度: 普通
  6. # -- 需要脚本: 无
  7. #
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported["YEA-AntiFailMessage"] = true
  12.  
  13. #==============================================================================
  14. # ▼ Updates
  15. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  16. # 2011.12.23 - Started Script and Finished.
  17. #
  18. #==============================================================================
  19. # ▼ 介绍
  20. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  21. # 本脚本可以在技能/物品造成0伤害时关闭"使用失败"的信息提示,或是将失败提示改变为
  22. # 其他文本.一般用于仅触发公共事件而不造成伤害的技能或物品中.
  23. #
  24. #==============================================================================
  25. # ▼ 安装方式
  26. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  27. # 打开脚本编辑器,将本脚本拷贝/复制到一个在▼ 插件脚本之下▼ Main之上的新
  28. # 脚本页/槽中.记得保存你的工程以使脚本生效.
  29. #
  30. # -----------------------------------------------------------------------------
  31. # 技能备注 - 在数据库-技能中可以使用的备注.
  32. # -----------------------------------------------------------------------------
  33. # <关闭失败提示>
  34. # 该技能使用失败时无失败提示.
  35. #
  36. # -----------------------------------------------------------------------------
  37. # 物品备注 - 在数据库-物品中可以使用的备注.
  38. # -----------------------------------------------------------------------------
  39. # <关闭失败提示>
  40. # 该技能使用失败时无失败提示.
  41. #
  42. #==============================================================================
  43. # ▼ 兼容性
  44. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  45. # 本脚本仅为RPG Maker VX Ace编写.极不可能在无任何修改的情况下运行于RPG Maker VX.
  46. #
  47. #==============================================================================
  48. # ▼ 编辑以下内容可能会出现电脑损坏、死机,电脑主人脑袋爆炸、昏迷、死亡或口臭
  49. # 所以编辑了后果自负。
  50. #==============================================================================
  51.  
  52. module YEA
  53.   module REGEXP
  54.   module USABLEITEM
  55.  
  56.     ANTIFAIL = /<(?:ANTI_FAIL|关闭失败提示|antifail)>/i
  57.  
  58.   end # USABLEITEM
  59.   end # REGEXP
  60. end # YEA
  61.  
  62. #==============================================================================
  63. # ■ DataManager
  64. #==============================================================================
  65.  
  66. module DataManager
  67.  
  68.   #--------------------------------------------------------------------------
  69.   # alias method: load_database
  70.   #--------------------------------------------------------------------------
  71.   class <<self; alias load_database_antifail load_database; end
  72.   def self.load_database
  73.     load_database_antifail
  74.     load_notetags_antifail
  75.   end
  76.  
  77.   #--------------------------------------------------------------------------
  78.   # new method: load_notetags_antifail
  79.   #--------------------------------------------------------------------------
  80.   def self.load_notetags_antifail
  81.     groups = [$data_skills, $data_items]
  82.     for group in groups
  83.       for obj in group
  84.         next if obj.nil?
  85.         obj.load_notetags_antifail
  86.       end
  87.     end
  88.   end
  89.  
  90. end # DataManager
  91.  
  92. #==============================================================================
  93. # ■ RPG::UsableItem
  94. #==============================================================================
  95.  
  96. class RPG::UsableItem < RPG::BaseItem
  97.  
  98.   #--------------------------------------------------------------------------
  99.   # public instance variables
  100.   #--------------------------------------------------------------------------
  101.   attr_accessor :antifail
  102.  
  103.   #--------------------------------------------------------------------------
  104.   # common cache: load_notetags_antifail
  105.   #--------------------------------------------------------------------------
  106.   def load_notetags_antifail
  107.     @antifail = false
  108.     #---
  109.     self.note.split(/[\r\n]+/).each { |line|
  110.       case line
  111.       #---
  112.       when YEA::REGEXP::USABLEITEM::ANTIFAIL
  113.         @antifail = true
  114.       #---
  115.       end
  116.     } # self.note.split
  117.     #---
  118.   end
  119.  
  120. end # RPG::UsableItem
  121.  
  122. #==============================================================================
  123. # ■ Game_Battler
  124. #==============================================================================
  125.  
  126. class Game_Battler < Game_BattlerBase
  127.  
  128.   #--------------------------------------------------------------------------
  129.   # alias method: item_user_effect
  130.   #--------------------------------------------------------------------------
  131.   alias game_battler_item_user_effect_antifail item_user_effect
  132.   def item_user_effect(user, item)
  133.     game_battler_item_user_effect_antifail(user, item)
  134.     apply_antifail(item)
  135.   end
  136.  
  137.   #--------------------------------------------------------------------------
  138.   # new method: apply_antifail
  139.   #--------------------------------------------------------------------------
  140.   def apply_antifail(item)
  141.     @result.success = true if item.antifail
  142.   end
  143.  
  144. end # Game_Battler
  145.  
  146. #==============================================================================
  147. #
  148. # ▼ End of File
  149. #
  150. #==============================================================================


RUBY 代码复制
  1. class Window_BattleLog
  2.   def display_use_item(subject, item)
  3.     if item.is_a?(RPG::Skill)
  4.       add_text(subject.name + item.message1) if item.message1 != ""
  5.       unless item.message2.empty?
  6.         wait
  7.         add_text(item.message2)
  8.       end
  9.     else
  10.       add_text(sprintf(Vocab::UseItem, subject.name, item.name))
  11.     end
  12.   end
  13. end


(脚本2来自站内)


然后设置一个用来“给玩家使用的”治愈技能。


再设置两种实际使用的技能。



做一个假被动。



最后在假技能所调用的公共事件中这样设置。



好了,我们的目的达到了。(伤害量较少的原因是这里艾里克防御了。)

评分

参与人数 1星屑 +10 +1 收起 理由
寂静的夜里 + 10 + 1 认可答案

查看全部评分

一介凡人。对大多数事情都有心无力的凡人。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
3
发表于 2020-1-27 10:04:50 | 只看该作者
找技能变化的脚本
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2020-1-26 15:43:16 | 只看该作者
有个办法,就是有工作量有点麻烦,
你可以看看恢复类的技能的伤害公式(鼠标悬停在输入框可以看一下参数说明)
例如26号技能的公式:250 + a.mat
要把治疗效果变成伤害效果的话就在整个公式后面乘以 -1,
于是a是使用者,b是目标,
要以使用者是否学会技能B作为判定,这个技能敌我双方都能用,因为敌人没有习得技能的判定,得先排除一下敌方
于是基本的条件:a.is_a?(Game_Actor) and a.skill_learn?($data_skills[技能B的ID])
再加上百分比概率:rand(100) >= N
最后条件就应该是:a.is_a?(Game_Actor) and a.skill_learn?($data_skills[技能B的ID]) and rand(100) >= N
艹……这个条件可真鸡儿长……
于是整个伤害公式就改成了:(250 + a.mat) * ( (a.is_a?(Game_Actor) and a.skill_learn?($data_skills[技能B的ID]) and rand(100) >= N) ? -1 : 1)

就提供一个思路,实际操作起来是非常麻烦的,但不需要去动脚本,
也没有实际测试过,可能会存在问题
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 05:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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