[XP] Hopefully Simple Script Mod [Solved]

Started by SereinTear, August 12, 2015, 07:36:07 pm

Previous topic - Next topic

SereinTear

August 12, 2015, 07:36:07 pm Last Edit: August 13, 2015, 06:28:14 am by SereinTear
I'm using LiTTleDRAgo's Damage PopUp script and some common events as a way to display loot in Blizz ABS. To keep the items from popping up at the same time, I add in a 5 frame wait, but of course that practically pauses the game. Not too cool if you ask me. I think there might be a simple modification to the script, but being a non-scripter, I'm not positive.

Basically what I would like to change is for there to be a 5 frame wait before the script will/can be called again. I saw something on another site about using a variable as a wait on a different script, but I couldn't fudge that myself.

If someone would like to tackle this, I would greatly appreciate it. ^_^ Thanks a bunch in advance!

And here's the script:

Spoiler: ShowHide
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#  Damage Pop Up
#  Ver: 1.02
#  Author : LiTTleDRAgo
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#  Instruction :
#     $scene.damage(event, string, random, color)             # for XP / VX
#     SceneManager.scene.damage(event, string, random, color) # for VXA
#
#     event  = -1: player, 0: self, >1: events
#     string = all kind of string or number
#     random = random position damage (recommended 0-10)
#     color  = [R,G,B,A] or Color.new(R,G,B,A)
#              if Drago Core Engine is used,
#                you can use Color.red, Color.blue, etc
#                (look at Drago Core Engine at Color part) as values
#
#   COLOR EDIT
#       color names instead of Color.new
#               white, gray, black, common, rare, epic, awesome
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module LiTTleDRAgo

   DMGFONTNAME   = [Font.default_name]  
   DMGFONTSIZE   = 17        
   DMGBOLDITALIC = [true, false]

end

($imported ||= {})[:drg_damage_pop_up] = 1.02
#==============================================================================
# ** Damage_String
#------------------------------------------------------------------------------
#  This sprite is used to display damage_sprite.
#==============================================================================

class Damage_String < Sprite
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(id = -1, s = "", r = 0, c = Color.new(255,255,255))
   super(nil)
   self.bitmap = Bitmap.new(200,32)
   self.bitmap.font.name   = [LiTTleDRAgo::DMGFONTNAME].flatten
   self.bitmap.font.size   = LiTTleDRAgo::DMGFONTSIZE
   self.bitmap.font.bold   = LiTTleDRAgo::DMGBOLDITALIC[0]
   self.bitmap.font.italic = LiTTleDRAgo::DMGBOLDITALIC[1]
   self.bitmap.font.color  = Color.new(0,0,0)
   self.bitmap.draw_text(1,1,200,32,s.to_s,1)
   self.bitmap.font.color = c    
   self.bitmap.draw_text(0,0,200,32,s.to_s,1)
   interpreter = $game_map.respond_to?(:interpreter) ?
       $game_map.interpreter : $game_system.map_interpreter
   character = id.is_a?(Game_Character) ? id : interpreter.get_character(id)
   #self.x = character.screen_x - 48 - r + 2*rand(r)
   #self.y = character.screen_y - 48 - r + 2*rand(r)
   self.x = character.screen_x - 100
   self.y = character.screen_y - 48
   (self.z = 1000) && (@opac = 0)
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   (self.opacity -= (self.y-=2) && (@opac+=0.15)) && super unless disposed?
 end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================
class Scene_Map
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 $@ || alias_method(:damage_pop_up_main, :main)
 $@ || alias_method(:damage_pop_up_update, :update)
 #--------------------------------------------------------------------------
 # * Main
 #--------------------------------------------------------------------------
 def main(*args)
   damage_pop_up_main(*args)
   @damage.each  { |d| d.disposed? || d.dispose }
 end
 #--------------------------------------------------------------------------
 # * Damage
 #--------------------------------------------------------------------------
 def damage(id = -1, s = "", r = 0, c = Color.new(255,255,255))
   c = Color.new(*c) if c.is_a?(Array)
   (@damage||=[]) << Damage_String.new(id, s, r, c)
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update(*args)

   (@damage||=[]).reject! {|d| d.is_a?(Sprite) == false || d.disposed? }
   (@damage||=[]).each    {|d| d.opacity == 0 ? d.dispose : d.update }

 end
end

KK20


#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#  Damage Pop Up
#  Ver: 1.02
#  Author : LiTTleDRAgo
#  Edit by KK20 for SereinTear
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#  Instruction :
#     $scene.damage(event, string, delay, color)              # for XP / VX
#     SceneManager.scene.damage(event, string, delay, color)  # for VXA
#
#     event  = -1: player, 0: self, >1: events
#     string = all kind of string or number
#     delay = number of frames the message will be delayed
#     color  = [R,G,B,A] or Color.new(R,G,B,A)
#              if Drago Core Engine is used,
#                you can use Color.red, Color.blue, etc
#                (look at Drago Core Engine at Color part) as values
#
#   COLOR EDIT
#       color names instead of Color.new
#               white, gray, black, common, rare, epic, awesome
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module LiTTleDRAgo

    DMGFONTNAME   = [Font.default_name] 
    DMGFONTSIZE   = 17       
    DMGBOLDITALIC = [true, false]

end

($imported ||= {})[:drg_damage_pop_up] = 1.02
#==============================================================================
# ** Damage_String
#------------------------------------------------------------------------------
#  This sprite is used to display damage_sprite.
#==============================================================================

class Damage_String < Sprite
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(id = -1, s = "", delay = 0, c = Color.new(255,255,255))
    super(nil)
    self.bitmap = Bitmap.new(200,32)
    self.bitmap.font.name   = [LiTTleDRAgo::DMGFONTNAME].flatten
    self.bitmap.font.size   = LiTTleDRAgo::DMGFONTSIZE
    self.bitmap.font.bold   = LiTTleDRAgo::DMGBOLDITALIC[0]
    self.bitmap.font.italic = LiTTleDRAgo::DMGBOLDITALIC[1]
    self.bitmap.font.color  = Color.new(0,0,0)
    self.bitmap.draw_text(1,1,200,32,s.to_s,1)
    self.bitmap.font.color = c     
    self.bitmap.draw_text(0,0,200,32,s.to_s,1)
    interpreter = $game_map.respond_to?(:interpreter) ?
        $game_map.interpreter : $game_system.map_interpreter
    character = id.is_a?(Game_Character) ? id : interpreter.get_character(id)
    #self.x = character.screen_x - 48 - r + 2*rand(r)
    #self.y = character.screen_y - 48 - r + 2*rand(r)
    self.x = character.screen_x - 100
    self.y = character.screen_y - 48
    (self.z = 1000) && (@opac = 0)
    @delay = [delay, 0].max
    self.visible = (@delay == 0)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    if !disposed? && @delay == 0
      self.y -= 2
      @opac += 0.15
      self.opacity -= @opac
      super
    elsif @delay > 0
      @delay -= 1
      self.visible = (@delay == 0)
    end
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  $@ || alias_method(:damage_pop_up_main, :main)
  $@ || alias_method(:damage_pop_up_update, :update)
  #--------------------------------------------------------------------------
  # * Main
  #--------------------------------------------------------------------------
  def main(*args)
    damage_pop_up_main(*args)
    @damage.each  { |d| d.disposed? || d.dispose }
  end
  #--------------------------------------------------------------------------
  # * Damage
  #--------------------------------------------------------------------------
  def damage(id = -1, s = "", r = 0, c = Color.new(255,255,255))
    c = Color.new(*c) if c.is_a?(Array)
    (@damage||=[]) << Damage_String.new(id, s, r, c)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update(*args)

    (@damage||=[]).reject! {|d| d.is_a?(Sprite) == false || d.disposed? }
    (@damage||=[]).each    {|d| d.opacity == 0 ? d.dispose : d.update }
    damage_pop_up_update(*args)
  end
end

I changed the script call so take a look at it in the comments. You are right that you need to use a variable that acts as a wait counter as that is what I did.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

SereinTear

Awesome! That's twice you've helped me out. :D Thank you so much!