Project1

标题: 超强大技能冷却系统 [打印本页]

作者: 九夜神尊    时间: 2010-10-2 20:00
标题: 超强大技能冷却系统
本帖最后由 九夜神尊 于 2010-10-2 22:34 编辑

前几天我发布过一些创新的数据库使用方法,那、我拿出一个实例来。

让一些喜欢找茬的人再找找茬。


技能冷却系统

实现了对技能的冷却,同时也可以自由的创新技能的使用方式。上脚本
  1. #=====================================================================
  2. # ■ 技能冷却
  3. #——————————————————————————————
  4. #  实现技能有冷却时间
  5. #=====================================================================

  6. =begin
  7. 版本:1.00
  8. 说明:

  9. 作用:为技能设置冷却

  10. 方法:设置 技能ID + 100号状态,该状态为技能冷却时间
  11.     使用技能后,会获得该状态,该状态若解除,技能可用。
  12.     解除方法自定,若设置成若干回合100%解除则与常规冷却无异。
  13.    
  14. 注意:对于冷却一回合,到底是下一回合解除,还是隔一回合冷却
  15.     不同战斗系统,有差异,需要测试后定着。
  16.    
  17.     需要为该状态命名才能使冷却生效
  18.     设置状态定量为0 ,以免会在状态栏显示出来
  19.    
  20.      技能冷却对敌方也有效
  21. 可能的冲突,无。若冲突,请查看○标志的地方

  22. =end

  23. #==============================================================================
  24. # ■ Scene_Battle (分割定义 4)
  25. #------------------------------------------------------------------------------
  26. #  处理战斗画面的类。
  27. #==============================================================================

  28. class Scene_Battle
  29.   #--------------------------------------------------------------------------
  30.   # ● 生成特技行动结果
  31.   #--------------------------------------------------------------------------
  32.   alias swtf_make_skill_action_result make_skill_action_result
  33.   def make_skill_action_result
  34.     swtf_make_skill_action_result
  35.     if $data_states[@skill.id+100] != nil and $data_states[@skill.id+100].name != ""
  36.       @active_battler.add_state(@skill.id + 100) #附加状态
  37.     end
  38.    
  39.   end#make_skill_action_result
  40.   
  41.   
  42. end#class Scene_Battle


  43. #==============================================================================
  44. # ■ Game_Battler (分割定义 3)
  45. #------------------------------------------------------------------------------
  46. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  47. # 超级类来使用。
  48. #==============================================================================

  49. class Game_Battler
  50.   #--------------------------------------------------------------------------
  51.   # ● 可以使用特技的判定
  52.   #     skill_id : 特技 ID
  53.   #--------------------------------------------------------------------------
  54.   alias swtf_skill_can_use? skill_can_use?
  55.   def skill_can_use?(skill_id)
  56.     if state?(skill_id+100)
  57.       return false
  58.     end
  59.     swtf_skill_can_use?(skill_id)
  60.   end #skill_can_use?(skill_id)
  61.   
  62.   
  63.   
  64. end #class Game_Battler

  65. #==================================================================
  66. # 作者:九夜神尊
  67. #==================================================================
复制代码
喜欢找茬的人仔细看看有多少句脚本,全部只alias了两个地方。

因为没有重新定义方法,所以基本无冲突(自建战斗系统除外)

原理很简单,就是使用技能以后会自动获得一个状态,只有这个状态解除以后才能再次使用这个技能。、

来看看新的使用方法

1:使用某技能以后会虚弱
    只需要在对应状态上将能力值调低即可

2:受攻击后才能使用的技能
     只需要在状态上勾选受攻击解除,当然自然解除0%即可

3:使用某物品以后才能使用某技能
    只需要设置某物品可以解除某状态即可

4:蓄力技能
   使用蓄力技能可以解除另一个技能的无限冷却


5:未知冷却技能
   只需对状态设置非100%解除,则可实现未知回合数解除,当1%解除时,估计是宇宙爆发技能了。

6:跨战斗技能冷却
   只要不勾选战斗结束后解除即可,这样技能设置冷却几十回合也有意义,那种技能也有爆发力吧。

7:聪明的作者还能开发出来更多吧



这个脚本配合某达人的战斗中不显示无用技能,更有神秘性。

技能剩余冷却回合数  忘了是怎么调用的,反正就是直接读取状态的剩余参量

然后版本1.1会实现完全恢复不影响技能冷却状态(实现起来很简单)




作者: 后知后觉    时间: 2010-10-2 21:40
本帖最后由 后知后觉 于 2010-10-2 22:42 编辑

不知道提交BUG和可能存在的问题算不算 找茬?
来看这一行
  1. 41.    if $data_states[@skill.id] != nil and $data_states[@skill.id].name != ""
复制代码
这一行目前本人发现的问题.
$data_states[这里面是不是少写了 + 100 ?]

有时候或许你是好心.但是说出来的话却让人感觉并不是那么一回事.
就你在讨论区发的那个帖子.就说那标题.给我的第一感觉就是:你发现新大陆了.
但实际情况又并不是那么一回事.再加上你说话的语气什么的.你懂的.我就不多说了.
技术区还是多说说技术、思路比较好.多余的话能少就尽量少点吧.
我承认这个帖子我说得有点多了.就这样吧~

作者: 九夜神尊    时间: 2010-10-2 22:31
回复 后知后觉 的帖子
:lol大力支持发现BUG者

   
作者: 薄荷冰水    时间: 2010-10-2 22:45
回复
大力支持发现BUG者
九夜神尊 发表于 2010-10-2 22:31



对于我这个脚本盲- - ,之前我那个版本需要做什么改动吗?



作者: 九夜神尊    时间: 2010-10-2 22:56
回复 陈安 的帖子


    复制现在的这个
作者: moy    时间: 2010-10-2 23:09
那真不叫找茬...
作者: 火ZHI意志    时间: 2010-10-3 14:54
RTAB无责任出错…………
作者: CortesDevil    时间: 2010-10-9 23:36
求用途.用法
作者: 九夜神尊    时间: 2010-10-9 23:50
回复 CortesDevil 的帖子

假设设置15号技能的冷却,就设置115号状态,状态持续就意味着技能冷却。
   
作者: CortesDevil    时间: 2010-10-10 14:41
回复 九夜神尊 的帖子

已经明白了= =谢谢
   
作者: 鬼小1    时间: 2010-10-16 09:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: 火ZHI意志    时间: 2010-10-16 19:54
本帖最后由 火ZHI意志 于 2010-10-16 20:00 编辑

贴一个RTAB版的吧
  1. #=====================================================================
  2. # ■ 技能冷却      For RTAB (只适用于RTAB)
  3. #——————————————————————————————
  4. #  实现技能有冷却时间
  5. #=====================================================================

  6. =begin
  7. 版本:1.00
  8. 说明:

  9. 作用:为技能设置冷却

  10. 方法:设置 技能ID + 100号状态,该状态为技能冷却时间
  11.     使用技能后,会获得该状态,该状态若解除,技能可用。
  12.     解除方法自定,若设置成若干回合100%解除则与常规冷却无异。
  13.    
  14. 注意:对于冷却一回合,到底是下一回合解除,还是隔一回合冷却
  15.     不同战斗系统,有差异,需要测试后定着。
  16.    
  17.     需要为该状态命名才能使冷却生效
  18.     设置状态定量为0 ,以免会在状态栏显示出来
  19.    
  20.      技能冷却对敌方也有效
  21. 可能的冲突,无。若冲突,请查看○标志的地方

  22. =end

  23. #==============================================================================
  24. # ■ Scene_Battle (分割定义 4)
  25. #------------------------------------------------------------------------------
  26. #  处理战斗画面的类。
  27. #==============================================================================

  28. class Scene_Battle
  29.   #--------------------------------------------------------------------------
  30.   # ● 生成特技行动结果
  31.   #--------------------------------------------------------------------------
  32.   alias swtf_make_skill_action_result make_skill_action_result
  33.   def make_skill_action_result(battler, plus_id)
  34.     swtf_make_skill_action_result(battler, plus_id)
  35.     if $data_states[@skill.id+100] != nil and $data_states[@skill.id+100].name != ""
  36.       battler.add_state(@skill.id + 100) #附加状态
  37.     end
  38.    
  39.   end#make_skill_action_result
  40.   
  41.   
  42. end#class Scene_Battle


  43. #==============================================================================
  44. # ■ Game_Battler (分割定义 3)
  45. #------------------------------------------------------------------------------
  46. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  47. # 超级类来使用。
  48. #==============================================================================

  49. class Game_Battler
  50.   #--------------------------------------------------------------------------
  51.   # ● 可以使用特技的判定
  52.   #     skill_id : 特技 ID
  53.   #--------------------------------------------------------------------------
  54.   alias swtf_skill_can_use? skill_can_use?
  55.   def skill_can_use?(skill_id)
  56.     if state?(skill_id+100)
  57.       return false
  58.     end
  59.     swtf_skill_can_use?(skill_id)
  60.   end #skill_can_use?(skill_id)
  61.   
  62.   
  63.   
  64. end #class Game_Battler

  65. #==================================================================
  66. # 作者:九夜神尊      修改:火ZHI意志
  67. #==================================================================
复制代码
其实就是修改了几行脚本而已~~
作者: 842130101    时间: 2010-10-16 21:51
谢谢分享了!
作者: qwe1105338700    时间: 2010-10-29 21:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: 许诺言    时间: 2010-10-29 21:36
很好很强大
作者: deathmagician    时间: 2010-11-8 07:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: stevenrock    时间: 2010-11-15 21:03
我来找个茬吧,和我用的“状态限制技能”脚本存在冲突,嘿嘿

$状态限定特技 = {57 => 22 , 61 => 22}
#箭头前为技能id,箭头后为状态id 用英文半角逗号分隔
class Game_Battler
  alias yang81989557_skill_can_use? skill_can_use?
  def skill_can_use?(skill_id)
    if $状态限定特技.keys.include?(skill_id)
      unless state?($状态限定特技[skill_id])
        return false
      end
    end
    yang81989557_skill_can_use?(skill_id)
  end
end
作者: 罪恶ぺ殇痕    时间: 2014-2-16 23:36
楼主,你这个脚本请问要怎么用,复制的话是分开复制还是新建一个脚本页?
作者: scgjgj999    时间: 2014-6-18 01:01

初来乍到,学习过留下脚步,祝福作者,辛苦谢谢教程!
作者: 风浅妆    时间: 2014-8-11 02:14
不知道怎么用诶,是直接在数据库把技能附加一个状态吗?
作者: 4294967296    时间: 2014-8-11 07:29
这是谁挖坟啊
作者: yuanlongyu    时间: 2014-8-13 14:44
有Va版的吗?
作者: 口冖风清扬冖口    时间: 2021-2-10 22:44
九夜神尊 发表于 2010-10-9 23:50
回复 CortesDevil 的帖子

假设设置15号技能的冷却,就设置115号状态,状态持续就意味着技能冷却。

我这不会用,有没有视频啊?




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