Submit Your Article


 
RPG Maker

Welcome Guest ( Log In | Register )


  Games Resources RPG Maker VX RPG Maker XP Scripts Tutorials Downloads

 
Reply to this topicStart new topic
> DSC - Skill Cooldown, Make cooldown for skill
DrDhoom
post May 4 2011, 06:09 AM
Post #1


Level 2
Group Icon

Group: Member
Posts: 29
Type: Scripter
RM Skill: Intermediate




I made this script for learning RGSS2. Sorry if there already another one. And, sorry for my bad English

Introduction
This script add cooldown to specific skill, so player can't use it for some turn.

Script
CODE
#==========================================================================
=====
#--------------------------=�€� Skill Cooldown �€�=---------------------------------
#---------------------------=�€� by: DrDhoom �€�=-----------------------------------
# Version: 1.1
# Date Published: 05 - 04 - 2011
# Battle Addon
# RPGMakerID Community
#-------------------------------------------------------------------------------
# Introduction:
# This script make a skill have cooldown.
#-------------------------------------------------------------------------------
# Compatibility:
# - Tankentai Sideview Battle System
# - Wij's Battle Macros
# Note: not tested in other battle system
#-------------------------------------------------------------------------------
# How to use:
#  - Insert this script above Main
#  - Insert under all Battle System Core Script
#===============================================================================

module Dhoom
  module SkillCooldown
  
    SHOW_COOLDOWN_NUMBER = true #true = cooldown number of skill show
                                #      at the end of skill name  
  
    #RGB Color
    COOLDOWN_COLOR = Color.new(255,0,0,128)  
  
    SKILL_CD = []        #<----Don't delete this line
  
    #SKILL_CD[skill id] = number of cooldown (1 is minimum number)
    SKILL_CD[1] = 1
    SKILL_CD[2] = 9
  end
end

#===============================================================================
# Start
#===============================================================================

#-------------------------------------------------------------------------------
# Window Base
#-------------------------------------------------------------------------------

class Window_Base

  def draw_skill_cooldown_name(item, x, y, enabled = true)
    if item != nil
      if @actor.skill_cooldown(item.id) != nil
        if @actor.skill_cooldown(item.id)!= 0
          cd_color = Dhoom::SkillCooldown::COOLDOWN_COLOR
          draw_icon(item.icon_index, x, y, enabled)
          self.contents.font.color = cd_color
          if Dhoom::SkillCooldown::SHOW_COOLDOWN_NUMBER
            self.contents.draw_text(x + 24, y, 172, WLH, item.name + '(' +@actor.skill_cooldown(item.id).to_s + ')')
          else
            self.contents.draw_text(x + 24, y, 172, WLH, item.name)
          end
        else
          draw_icon(item.icon_index, x, y, enabled)
          self.contents.font.color = normal_color
          self.contents.font.color.alpha = enabled ? 255 : 128
          self.contents.draw_text(x + 24, y, 172, WLH, item.name)
        end
      else
        draw_icon(item.icon_index, x, y, enabled)
        self.contents.font.color = normal_color
        self.contents.font.color.alpha = enabled ? 255 : 128
        self.contents.draw_text(x + 24, y, 172, WLH, item.name)
      end
    end
  end
end

#-------------------------------------------------------------------------------
# Window Skill
#-------------------------------------------------------------------------------

class Window_Skill < Window_Selectable

  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    skill = @data[index]
    if skill != nil
      rect.width -= 4
      enabled = @actor.skill_can_use?(skill)
      draw_skill_cooldown_name(skill, rect.x, rect.y, enabled)
      self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
    end
  end
end

#-------------------------------------------------------------------------------
# Game Actor
#-------------------------------------------------------------------------------

class Game_Actor

  alias dsc_actor_setup setup
  alias dsc_skill_can_use? skill_can_use?

  def setup(actor_id)
    dsc_actor_setup(actor_id)
    @skill_cooldown = []
  end

  def make_cooldown_value(id)
    @skill_cooldown[id] = Dhoom::SkillCooldown::SKILL_CD[id]
    if $imported == nil
      @skill_cooldown[id] += 1
    elsif $imported["TankentaiATB"]
      @skill_cooldown[id] -= 0
    elsif $imported["TankentaiSideview"]
      @skill_cooldown[id] += 1
    else
      @skill_cooldown[id] += 1
    end
  end

  def skill_cooldown(id)
    return @skill_cooldown[id]
  end

  def decrease_cooldown(id)
    @skill_cooldown[id] -= 1
  end
  
  def reset_cooldown(id)
    @skill_cooldown[id] = 0
  end

  def skill_can_use?(skill)
    if skill_cooldown(skill.id) != nil
      return false if skill_cooldown(skill.id) != 0
    end
    dsc_skill_can_use?(skill)
  end
end

#-------------------------------------------------------------------------------
# Scene Battle
#-------------------------------------------------------------------------------

class Scene_Battle < Scene_Base
  
  alias dsc_battle_end battle_end
  alias dsc_execute_action_skill execute_action_skill
  alias dsc_start_actor_command_selection start_actor_command_selection
  
  def battle_end(result)
    for actor in $game_party.members
      for skill in actor.skills
        actor.reset_cooldown(skill.id)
      end
    end
    dsc_battle_end(result)
  end

  def execute_action_skill
    dsc_execute_action_skill
    skill = @active_battler.action.skill
    if Dhoom::SkillCooldown::SKILL_CD[skill.id] != nil
      @active_battler.make_cooldown_value(skill.id)
    end
  end

  def start_actor_command_selection
    dsc_start_actor_command_selection
    if @active_battler != nil and @active_battler.actor?    
      for skill in @active_battler.skills
        if @active_battler.skill_cooldown(skill.id) != nil
          if @active_battler.skill_cooldown(skill.id) != 0
            @active_battler.decrease_cooldown(skill.id)
          end
        end
      end
    elsif @commander !=nil
      for skill in @commander.skills
        if @commander.skill_cooldown(skill.id) != nil
          if @commander.skill_cooldown(skill.id) != 0
            @commander.decrease_cooldown(skill.id)
          end
        end
      end
    end
  end
end

#===============================================================================
# End
#===============================================================================


Instruction
Place above main and under all core battle script.

This post has been edited by DrDhoom: Aug 5 2011, 06:49 PM


__________________________
Need a Scripter? PM me!
Go to the top of the page
 
+Quote Post
   
hainkiwanki
post May 11 2011, 08:39 AM
Post #2


Level 5
Group Icon

Group: Member
Posts: 69
Type: Event Designer
RM Skill: Beginner




Cool script ^^


__________________________
Signature


Go to the top of the page
 
+Quote Post
   
TTrain427
post May 23 2011, 10:16 AM
Post #3


Level 13
Group Icon

Group: Revolutionary
Posts: 229
Type: Writer
RM Skill: Intermediate




how do we use it on only one or two specific skills?


__________________________
Go to the top of the page
 
+Quote Post
   
DrDhoom
post May 23 2011, 08:32 PM
Post #4


Level 2
Group Icon

Group: Member
Posts: 29
Type: Scripter
RM Skill: Intermediate




QUOTE (TTrain427 @ May 23 2011, 10:16 AM) *
how do we use it on only one or two specific skills?


see the module...
then, just add SKILL_CD[Skill id] = number of cooldown you want...

example:
SKILL_CD[1] = 1 # 1 cooldown for skill 1
SKILL_CD[2] = 9 # 9 cooldown for skill 2


__________________________
Need a Scripter? PM me!
Go to the top of the page
 
+Quote Post
   
Night5h4d3
post May 24 2011, 05:58 AM
Post #5


The past tense
Group Icon

Group: +Gold Member
Posts: 1,199
Type: Scripter
RM Skill: Undisclosed




This is a good looking script, but I have a few suggestions I'd like to venture.
You can put the cooldown color constant as a color type (this saves lines and an array)
CODE
COOLDOWN_COLOR = Color.new(255,0,0,128)

And people already know that a color format is in RGBA.

Secondly, instead of initializing the array, then setting the skills to cooldown, have the skills specified during initialization
CODE
SKILL_CD = [1, 9]

This way people don't need a new line for every skill, and they don't have to increment the SKILL_CD index for each new skill
(If you decide to keep your method on both of these, that's fine, but arrays start at the index 0, so you'll want to change that)


__________________________
Got 30 minutes? Then you've enough time to play this awesome game:

- potentially promising project page
- thanks holder
My growing space of user-bars:

about me:







I made the following!





Go to the top of the page
 
+Quote Post
   
InfinateX
post May 24 2011, 12:20 PM
Post #6


Level 10
Group Icon

Group: Revolutionary
Posts: 151
Type: Developer
RM Skill: Advanced




this is a neat script! Fortunatley I'm using tankentia so it will definatley work. BTW I didn't know WIJ made a battle script!


__________________________
I Support:






Legal Stuff:

If you use any of my resouces please credit me. I put © on all of them so you pretty much have to anyways.


Click Here

Some of you may have seen what I had posted in this spot before but now it just says that the request was fufilled on March 28, 2011 :)


I bet nobody knows how I did this:

If you think you figured it out PM me and if your correct you will earn this valueble skill... or you can just brag about it :D


Current Projects:

At rmrk.net/index.php/topic,42236.new.html#new and omega-dev.net/forums/showthread.php?tid=1086&pid=21328
Go to the top of the page
 
+Quote Post
   
DrDhoom
post May 24 2011, 08:11 PM
Post #7


Level 2
Group Icon

Group: Member
Posts: 29
Type: Scripter
RM Skill: Intermediate




@Night5h4d3: thanks for your suggestions... but i'm only change the color XD
@RPGMakerVX52: thanks biggrin.gif


__________________________
Need a Scripter? PM me!
Go to the top of the page
 
+Quote Post
   
Twin Matrix
post Jun 1 2011, 03:16 AM
Post #8


Level 19
Group Icon

Group: Revolutionary
Posts: 390
Type: Artist
RM Skill: Masterful




So what exactly happens visually when a skill is on a cool down? How do you see when it's available again? :3


__________________________
Go to the top of the page
 
+Quote Post
   
DrDhoom
post Jun 3 2011, 05:37 AM
Post #9


Level 2
Group Icon

Group: Member
Posts: 29
Type: Scripter
RM Skill: Intermediate




QUOTE (Twin Matrix @ Jun 1 2011, 03:16 AM) *
So what exactly happens visually when a skill is on a cool down? How do you see when it's available again? :3


if show_cooldown_number is true, there will be a cooldown number at the end of skill's name. if avaible the cooldown number is gone biggrin.gif


__________________________
Need a Scripter? PM me!
Go to the top of the page
 
+Quote Post
   
InfinateX
post Jul 6 2011, 01:11 PM
Post #10


Level 10
Group Icon

Group: Revolutionary
Posts: 151
Type: Developer
RM Skill: Advanced




I can't believe I didn't download this in May when I first found it! This is an awesome script!


__________________________
I Support:






Legal Stuff:

If you use any of my resouces please credit me. I put © on all of them so you pretty much have to anyways.


Click Here

Some of you may have seen what I had posted in this spot before but now it just says that the request was fufilled on March 28, 2011 :)


I bet nobody knows how I did this:

If you think you figured it out PM me and if your correct you will earn this valueble skill... or you can just brag about it :D


Current Projects:

At rmrk.net/index.php/topic,42236.new.html#new and omega-dev.net/forums/showthread.php?tid=1086&pid=21328
Go to the top of the page
 
+Quote Post
   
Desa
post Jul 6 2011, 11:39 PM
Post #11


Level 3
Group Icon

Group: Member
Posts: 40
Type: Developer
RM Skill: Undisclosed




Using takentai, and it has problem with line 124, could you check it?
Thanks!

Desa
Go to the top of the page
 
+Quote Post
   
InfinateX
post Jul 8 2011, 09:10 PM
Post #12


Level 10
Group Icon

Group: Revolutionary
Posts: 151
Type: Developer
RM Skill: Advanced




QUOTE (Desa @ Jul 7 2011, 03:39 AM) *
Using takentai, and it has problem with line 124, could you check it?
Thanks!

Desa


If it was tested to work it could be an incompatable script fighting due to lack of aliases since the scripts were not ment to work together.

In order from top to bottom what are your script?


__________________________
I Support:






Legal Stuff:

If you use any of my resouces please credit me. I put © on all of them so you pretty much have to anyways.


Click Here

Some of you may have seen what I had posted in this spot before but now it just says that the request was fufilled on March 28, 2011 :)


I bet nobody knows how I did this:

If you think you figured it out PM me and if your correct you will earn this valueble skill... or you can just brag about it :D


Current Projects:

At rmrk.net/index.php/topic,42236.new.html#new and omega-dev.net/forums/showthread.php?tid=1086&pid=21328
Go to the top of the page
 
+Quote Post
   
clout1
post Jul 19 2011, 06:32 AM
Post #13



Group Icon

Group: Member
Posts: 2
Type: None
RM Skill: Undisclosed




When in battle, guarding doesnt decrease the cooldown timer, can anyone help me with this?
Go to the top of the page
 
+Quote Post
   
DrDhoom
post Aug 3 2011, 06:33 AM
Post #14


Level 2
Group Icon

Group: Member
Posts: 29
Type: Scripter
RM Skill: Intermediate




ukh sorry for leaving this thread for a long time... and this version have a bug... and unfortunely, i'm forget to bring the fixed version =_="
i'll update it soon tomorrow...


__________________________
Need a Scripter? PM me!
Go to the top of the page
 
+Quote Post
   
DrDhoom
post Aug 5 2011, 06:52 PM
Post #15


Level 2
Group Icon

Group: Member
Posts: 29
Type: Scripter
RM Skill: Intermediate




@clout1: the cooldown still decrease while guarding. did you using tankentai or default battle system?

and i'm just updatet the first post... added reset cooldown when battle ended... and let me know if you have problem with this...



__________________________
Need a Scripter? PM me!
Go to the top of the page
 
+Quote Post
   

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 24th May 2013 - 12:51 PM
RPG RPG Revolution is an Privacy Policy and Legal
eXTReMe Tracker