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

Project1

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

[已经解决] 【技能冷却】怎么实现技能时间冷却

[复制链接]

Lv4.逐梦者

梦石
5
星屑
1828
在线时间
339 小时
注册时间
2014-4-1
帖子
270
跳转到指定楼层
1
发表于 2019-7-6 13:45:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想做arpg,技能冷却想要按时间算的,但是站内的脚本都是按回合算的,听说到一个叫状态法的东西,不过站内好像也没见过教程,所以求大神帮帮忙

Lv4.逐梦者

梦石
1
星屑
14790
在线时间
2106 小时
注册时间
2017-9-28
帖子
662
2
发表于 2019-7-11 10:02:29 | 只看该作者
  1. #==============================================================================#
  2. #  #*****************#                                                         #
  3. #  #*** By Falcao ***#          * Falcao Skills Cool Down 1.0                  #
  4. #  #*****************#          This script allows you set waiting time to a   #
  5. #                               used skill, so you have to wait x time before  #
  6. #       RMVXACE                 use it again. Date: Octuber 8 2012             #
  7. #                                                                              #
  8. # Falcao RGSS site:  http://falcaorgss.wordpress.com                           #
  9. # Falcao Forum site: http://makerpalace.com                                    #
  10. #==============================================================================#

  11. #-------------------------------------------------------------------------------
  12. # * Installation
  13. #
  14. # Paste this script above main and below any custom battle system
  15. #-------------------------------------------------------------------------------
  16. # * Features
  17. #
  18. #- Bring more balance to the game skills system, just imagine you create a
  19. #  really powerful skill that kills all enemies, it dont make sense if you can
  20. #  use that powerful skill over and over again, just put waiting time now.
  21. #- A simple time meter is displayed at the help window showing time left
  22. #-------------------------------------------------------------------------------
  23. # * 使用方法
  24. #
  25. # 技能备注栏里填上
  26. #
  27. # <cooldown: x>          x为冷却时间(秒)   
  28. #-------------------------------------------------------------------------------
  29. # * License
  30. #
  31. # Free to use in any project, but you still need to credit me as creator
  32. #-------------------------------------------------------------------------------

  33. module FalCooldown
  34.   def self.apply_cooldown(skill)
  35.     i = skill.id - 1 ; data = $game_system
  36.     data.cooldown[i] = skill.cooldown * 60 if data.cooldown[i] == 0
  37.   end
  38. end

  39. class Game_System
  40.   attr_accessor :cooldown
  41.   alias falcaocooldown_ini initialize
  42.   def initialize
  43.     @cooldown = []
  44.     $data_skills.size.times do ; @cooldown.push(0) ; end
  45.     falcaocooldown_ini
  46.   end
  47. end

  48. class Window_SkillList < Window_Selectable
  49.   alias falcaocooldown_enable enable?
  50.   def enable?(item)
  51.     return false if !item.nil? and cool_data(item.id) > 0
  52.     falcaocooldown_enable(item)
  53.   end
  54.   
  55.   def update
  56.     @refresh_delay = 0 if @refresh_delay.nil?
  57.     refresh_cooldown(cool_data(item.id)) if !item.nil? and
  58.     cool_data(item.id) > 0
  59.     if @skill_index != self.index
  60.       @skill_index = self.index
  61.       refresh_cooldown(cool_data(item.id)) if !item.nil?
  62.     end
  63.     @refresh_delay -= 1 if @refresh_delay > 0
  64.     refresh if @refresh_delay == 1
  65.     for i in 0...$game_system.cooldown.size
  66.       @refresh_delay = 2 if $game_system.cooldown[i] == 1
  67.     end
  68.     super
  69.   end
  70.   
  71.   def refresh_cooldown(cooldown)
  72.     @help_window.contents.font.size = Font.default_size
  73.     @help_window.refresh
  74.     @help_window.contents.font.size = 20
  75.     cooldown > 0 ? operand = cooldown : operand = item.cooldown * 60
  76.     total_sec = operand / Graphics.frame_rate
  77.     cd = sprintf("%02d:%02d", total_sec / 60, total_sec % 60)
  78.     @help_window.contents.draw_text(-30, 22, @help_window.width, 32,
  79.     "Cooldown: #{cd}", 2)
  80.   end
  81.   
  82.   def cool_data(id)
  83.     value = $game_system.cooldown[id - 1] if $game_system.cooldown[id - 1] > 0
  84.     return value.nil? ? 0 : value
  85.   end
  86. end

  87. class RPG::Skill
  88.   def cooldown
  89.     @note =~ /<cooldown: (.*)>/i ? cd = $1.to_i : cd = 0
  90.     return cd
  91.   end
  92. end

  93. class << Input
  94.   unless self.method_defined?(:falcaocd_update)
  95.     alias_method :falcaocd_update,   :update
  96.   end
  97.   def update
  98.     update_cooldown_global
  99.     falcaocd_update
  100.   end
  101.   def update_cooldown_global
  102.     data = $game_system
  103.     unless data.nil?
  104.       for i in 0...data.cooldown.size
  105.         data.cooldown[i] -= 1 if data.cooldown[i] > 0
  106.       end
  107.     end
  108.   end
  109. end

  110. class Scene_Battle < Scene_Base
  111.   alias falcao_cooldown_use_item use_item
  112.   def use_item
  113.     item = @subject.current_action.item
  114.     FalCooldown.apply_cooldown(item) if item.is_a?(RPG::Skill)
  115.     falcao_cooldown_use_item
  116.   end
  117. end

  118. class Scene_ItemBase < Scene_MenuBase
  119.   alias falcaocd22_use_item use_item
  120.   def use_item
  121.     FalCooldown.apply_cooldown(item) if item.is_a?(RPG::Skill)
  122.     falcaocd22_use_item
  123.   end
  124. end
复制代码

评分

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

查看全部评分

VA外站脚本汉化群:226308173   |    部分远古文件备份:https://wwzv.lanzoue.com/b02rac5pc  密码:acgm
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 18:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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