Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Script de barras HP/SP causa lag en batalla.

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Script de barras HP/SP causa lag en batalla.

Mensaje por Lance Amano el 2015-05-11, 20:33

En mi projecto, estoy usando un script de dargor para una party de más the 4 personajes en combate.

Cunado intenté usar el script de barras de HP/SP de Cogwheel, noté que hay mucho lag en batalla. Los personajes de demoran como 5 a 6 segundos en atacar y al cambiar de blanco el juego se congela por al menos 15 segundos. Probé otros scripts de barras HP/SP, como el que está en este foro, y el resultado fue el mismo.

¿Qué se puede hacer al respecto?

Éste es el script de dargor:

Código:
#==============================================================================
# ** Large Party
#------------------------------------------------------------------------------
#  Author: Dargor
#  Version 1.4
#  16/05/2014
#==============================================================================
 
#==============================================================================
# ** Large Party Customization Module
#==============================================================================
 
module Dargor
  module Large_Party
    # Maximum number of actors allowed in the party
    Max_Size = 9
    # Battle status window refresh rate (used in phase5)
    Battle_Refresh_Rate = 32
  end
end
 
#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
#  This class handles temporary data that is not included with save data.
#  Refer to "$game_temp" for the instance of this class.
#==============================================================================
 
class Game_Temp
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :battle_actor_index  # @actor_index in battle scene
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_temp_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    large_party_temp_initialize
    @battle_actor_index = 0
  end
end
 
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  This class handles the party. It includes information on amount of gold
#  and items. Refer to "$game_party" for the instance of this class.
#==============================================================================
 
class Game_Party
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :max_size   # Max number of actors allowed in the party
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_initialize initialize
  alias large_party_add_actor add_actor
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    large_party_initialize
    @max_size = Dargor::Large_Party::Max_Size
  end
  #--------------------------------------------------------------------------
  # * Add an Actor
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def add_actor(actor_id)
    # Original method
    large_party_add_actor(actor_id)
    # Get actor
    actor = $game_actors[actor_id]
    # If the party has less than 4 members and this actor is not in the party
    if @actors.size < @max_size and not @actors.include?(actor)
      # Add actor
      @actors.push(actor)
      # Refresh player
      $game_player.refresh
    end
  end
end
 
#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
#  This sprite is used to display the battler.It observes the Game_Character
#  class and automatically changes sprite conditions.
#==============================================================================
 
class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_sprite_update update
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Original method
    large_party_sprite_update
    # Set sprite coordinates
    if @battler.is_a?(Game_Actor)
      self.x = @battler.screen_x - ($game_temp.battle_actor_index / 4) * 640
    end
  end
end
#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
#  This class brings together battle screen sprites. It's used within
#  the Scene_Battle class.
#==============================================================================
 
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_spriteset_update update
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Cycle through all extra actors (4+)
    # Create/update sprites
    for i in 4...$game_party.actors.size
      if @actor_sprites[i].nil?
        @actor_sprites.push(Sprite_Battler.new(@viewport2))
      end
      @actor_sprites[i].battler = $game_party.actors[i]
    end
    # Original method
    large_party_spriteset_update
  end
end
 
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  This window displays party member status on the menu screen.
#==============================================================================
 
class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_menu_status_initialize initialize
  alias large_party_menu_status_refresh refresh
  alias large_party_menu_status_update_cursor_rect update_cursor_rect
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Original method
    large_party_menu_status_initialize
    # Adjust contents height
    @item_max = $game_party.actors.size
    height = @item_max * 120
    self.contents = Bitmap.new(width - 32, height - 32)
    # Refresh
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(*args)
    # Original method
    large_party_menu_status_refresh(*args)
    # Adjust default height
    self.height = 480
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    large_party_menu_status_update_cursor_rect
    row = @index / @column_max
    if row < self.top_row
      self.top_row = row
    end
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    cursor_width = self.width / @column_max - 32
    x = @index % @column_max * (cursor_width + 32)
    y = @index / @column_max * 116 - self.oy
    self.cursor_rect.set(x, y, cursor_width, 96)
  end
  #--------------------------------------------------------------------------
  # * Top Row
  #--------------------------------------------------------------------------
  def top_row
    return self.oy / 116
  end
  #--------------------------------------------------------------------------
  # * Set Top Row
  #     row : new row
  #--------------------------------------------------------------------------
  def top_row=(row)
    if row < 0
      row = 0
    end
    if row > row_max - 1
      row = row_max - 1
    end
    self.oy = row * 116
  end
  #--------------------------------------------------------------------------
  # * Page Row Max
  #--------------------------------------------------------------------------
  def page_row_max
    return 4
  end
end
 
#==============================================================================
# ** Window_BattleStatus
#------------------------------------------------------------------------------
#  This window displays the status of all party members on the battle screen.
#==============================================================================
 
class Window_BattleStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_battle_status_initialize initialize
  alias large_party_battle_status_refresh refresh
  alias large_party_battle_status_update update
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @column_max = 4
    large_party_battle_status_initialize
    width = $game_party.actors.size * 160
    self.contents = Bitmap.new(width - 32, height - 32)
    self.width = 640
    @level_up_flags = []
    for i in 0...$game_party.actors.size
      @level_up_flags << false
    end
    @item_max = $game_party.actors.size
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    # Refresh contents when actors are added/removed in-battle
    if $game_party.actors.size != @item_max
      @item_max = $game_party.actors.size
      width = @item_max * 160
      self.contents = Bitmap.new(width - 32, height - 32)
      self.width = 640
    end
    large_party_battle_status_refresh
    column = $game_temp.battle_actor_index / 4
    self.ox = column * 640
  end
end
 
#==============================================================================
# ** Arrow_Actor
#------------------------------------------------------------------------------
#  This arrow cursor is used to choose an actor. This class inherits from the
#  Arrow_Base class.
#==============================================================================
 
class Arrow_Actor < Arrow_Base
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    # Cursor right
    if Input.repeat?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      @index += 1
      @index %= $game_party.actors.size
    end
    # Cursor left
    if Input.repeat?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      @index += $game_party.actors.size - 1
      @index %= $game_party.actors.size
    end
        # Because of the large party script, we need to offset the X position
        # of the cursor to make sure it's at the right position
        ox_actor = $game_party.actors[@index % 4]
    # Set sprite coordinates
    if self.actor != nil
      self.x = ox_actor.screen_x
      self.y = ox_actor.screen_y
    end
  end
end
 
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================
 
class Scene_Battle
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias large_party_phase3_setup_command_window phase3_setup_command_window
    alias large_party_update_phase3_actor_select update_phase3_actor_select
  alias large_party_update_phase4_step2 update_phase4_step2
  alias large_party_start_phase5 start_phase5
  alias large_party_update_phase5 update_phase5
  #--------------------------------------------------------------------------
  # * Actor Command Window Setup
  #--------------------------------------------------------------------------
  def phase3_setup_command_window
    $game_temp.battle_actor_index = @actor_index
    @status_window.refresh
    large_party_phase3_setup_command_window
    @actor_command_window.x = (@actor_index%4) * 160
  end
  #--------------------------------------------------------------------------
  # * Frame Update (actor command phase : actor selection)
  #--------------------------------------------------------------------------
  def update_phase3_actor_select
    # Update status window scroll position
    $game_temp.battle_actor_index = @actor_arrow.index
    @status_window.refresh
    # Call the original method
    large_party_update_phase3_actor_select
  end
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 2 : start action)
  #--------------------------------------------------------------------------
  def update_phase4_step2
    if @active_battler.is_a?(Game_Actor)
      $game_temp.battle_actor_index = @active_battler.index
      @status_window.refresh
    end
    large_party_update_phase4_step2
  end
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 4 : animation for target)
  #--------------------------------------------------------------------------
  def update_phase4_step4
    if @target_battlers[0] != nil
      $game_temp.battle_actor_index = @target_battlers[0].index
      @status_window.refresh
    end
    # Animation for target
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != "Miss")
    end
    # Animation has at least 8 frames, regardless of its length
    @wait_count = 8
    # Shift to step 5
    @phase4_step = 5
  end
  #--------------------------------------------------------------------------
  # * Start After Battle Phase
  #--------------------------------------------------------------------------
  def start_phase5
    @actor_index = 0
    @status_wait = Graphics.frame_count
    large_party_start_phase5
  end
  #--------------------------------------------------------------------------
  # * Frame Update (after battle phase)
  #--------------------------------------------------------------------------
  def update_phase5
    refresh_rate = Dargor::Large_Party::Battle_Refresh_Rate
    if Graphics.frame_count >= @status_wait + refresh_rate
      $game_temp.battle_actor_index = @actor_index
      @status_window.refresh
      @status_wait = Graphics.frame_count
      max = ($game_party.actors.size.to_f/4).ceil * 4
      @actor_index = (@actor_index+1) % max
    end
    large_party_update_phase5
  end
end
 

Y este el el script de barras de Cogwheel:

Código:
#==============================================================================
# ** COGWHEEL Plug 'n' Play Menu Bars (based on Syvkal's revisions)
#-------------------------------------------------------------------------------
# by DerVVulfman
# Version 1.1
# 06-28-06
#------------------------------------------------------------------------------
# This is a revision of Cogwheel's famous bargraph system, now set as an inser-
# table script to display bargraphs behind values in the menus.
#
# To prevent conflict with Cogwheel's RTAB system, two key definitions have been
# renamed: "gauge_rect" to "cw_gauge" & "gradation_rect" to "cw_grad_rect."
#
#
# Affected Systems:  Main Menu
#                    Skill Menu
#                    Status Menu
#                    Hero Select Menu (for Items & Skills)
#                    Equipment Menu
#                    BattleStatus Menu
#                    
# The system uses a series of CONSTANTS that can be edited here.  They control
# the basic gauge colors and the manner the gauge is filled:

  # Gauge Border Colors
    COG_COLOR1 = Color.new(0, 0, 0, 220)         # Outer Border
    COG_COLOR2 = Color.new(0, 0, 0, 220)   # Inner Border
  # Gauge Empty filler
    COG_COLOR3 = Color.new(0, 0, 0, 192)         # Half of Inner Shading
    COG_COLOR4 = Color.new(64, 0, 0, 192)        # Half of Inner Shading
  # Alignment
    COG_ALIGN1 = 1    # Type 1: (0: Left / 1: Center / 2: Right Justify)
    COG_ALIGN2 = 2    # Type 2: (0: Upper / 1: Central / 2: Lower)
    COG_ALIGN3 = 0    # FILL ALIGNMENT (0: Left Justify / 1: Right Justify)
  # Gauge Settings
    COG_GRADE1 = 1    # EMPTY  gauge (0: Side / 1: Vertical / 2: Slanted)
    COG_GRADE2 = 0    # FILLER gauge (0: Side / 1: Vertical / 2: Slanted)


#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles the actor. It's used within the Game_Actors class
#  ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Get EXP - numeric for calculations
  #--------------------------------------------------------------------------  
  def now_exp
   return @exp - @exp_list[@level]
  end
  #--------------------------------------------------------------------------
  # * Get Next Level EXP - numeric for calculations
  #--------------------------------------------------------------------------
  def next_exp
   return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  end
  #--------------------------------------------------------------------------
  # * End of Class
  #--------------------------------------------------------------------------
end


#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
#  This class is for all in-game windows.
#==============================================================================

class Window_Base < Window
  
  
  #--------------------------------------------------------------------------
  # * Draw EXP w/ Bars
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #--------------------------------------------------------------------------
  alias draw_actor_exp_original draw_actor_exp
  def draw_actor_exp(actor, x, y, width = 204)
    if actor.next_exp != 0
      rate = actor.now_exp.to_f / actor.next_exp
    else
      rate = 1
    end
    # Calculate Bar Gradiation
    if actor.next_exp != 0
      rate = actor.now_exp.to_f / actor.next_exp
    else
      rate = 1
    end
    # Adjust Bar Color based on Gradiation
    color1 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
    color2 = Color.new(100 - 72 * rate, 240 * rate, 62 * rate, 192)
    # Calculate Bar Width
    if actor.next_exp != 0
      exp = width * actor.now_exp / actor.next_exp
    else
      exp = width
    end
    # Draw Bar Graph
    cw_gauge(x, y + 25, width, 10, exp, color1, color2)
    # Call original EXP                
    draw_actor_exp_original(actor, x, y)
  end  
  
  #--------------------------------------------------------------------------
  # * Draw HP w/ Bars
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     width : draw spot width
  #--------------------------------------------------------------------------
  alias draw_actor_hp_original draw_actor_hp
  def draw_actor_hp(actor, x, y, width = 144)
    # Calculate Bar Gradiation
    if actor.maxhp != 0
      rate = actor.hp.to_f / actor.maxhp
    else
      rate = 0
    end
    # Adjust Bar Color based on Gradiation
    color1 = Color.new(216 - 24 * rate, 0 * rate, 0 * rate, 192)
    color2 = Color.new(255 * rate, 165 * rate, 0 * rate, 192)
    # Calculate Bar Width
    if actor.maxhp != 0
      hp = width * actor.hp / actor.maxhp
    else
      hp = 0
    end
    # Draw Bar Graph
    cw_gauge(x, y + 25, width, 10, hp, color1, color2)
    # Call original HP
    draw_actor_hp_original(actor, x, y, width)
  end

  #--------------------------------------------------------------------------
  # * Draw SP w/ Bars
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     width : draw spot width
  #--------------------------------------------------------------------------
  alias draw_actor_sp_original draw_actor_sp
  def draw_actor_sp(actor, x, y, width = 144)
    # Calculate Bar Gradiation
    if actor.maxsp != 0
      rate = actor.sp.to_f / actor.maxsp
    else
      rate = 1
    end  
    # Adjust Bar Color based on Gradiation
    color1 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
    color2 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
    # Calculate Bar Width
    if actor.maxsp != 0
      sp = width * actor.sp / actor.maxsp
    else
      sp = width  
    end
    # Draw Bar Graph
    cw_gauge(x + width * 0 / 100, y + 25, width, 10, sp, color1, color2)
    # Call original SP                
    draw_actor_sp_original(actor, x, y, width)
  end

  #--------------------------------------------------------------------------
  # * Draw Parameter w/ Bars
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     type  : parameter type (0-6)
  #--------------------------------------------------------------------------
  alias draw_actor_parameter_original draw_actor_parameter
  def draw_actor_parameter(actor, x, y, type)
    # Choose Color & Parameter Type
    case type
    when 0
      e1 = actor.atk
      c6 = Color.new(253, 53, 56, 192)
      c5 = Color.new(242, 2, 6, 192)
    when 1
      e1 = actor.pdef
      c6 = Color.new(238, 254, 124, 192)
      c5 = Color.new(228, 253, 48, 192)
    when 2
      e1 = actor.mdef
      c6 = Color.new(150, 37, 184, 192)
      c5 = Color.new(170, 57, 204, 192)
    when 3
      e1 = actor.str
      c6 = Color.new(253, 163, 33, 192)
      c5 = Color.new(254, 209, 154, 192)
    when 4
      e1 = actor.dex
      c6 = Color.new(255, 255, 255, 192)
      c5 = Color.new(222, 222, 222, 192)
    when 5
      e1 = actor.agi
      c6 = Color.new(124, 254, 155, 192)
      c5 = Color.new(33, 253, 86, 192)
    when 6
      e1 = actor.int
      c6 = Color.new(119, 203, 254, 192)
      c5 = Color.new(8, 160, 253, 192)
    end
    # Calculate Bar Gradiation
    e2 = 999
    if e1.to_f != 0
      rate = e1.to_f / e2.to_f
    else
      rate = 1
    end
    # Adjust Bar Color based on Gradiation & Parameter Type
    for i in 0..7
      r = c6.red * rate
      g = (c6.green - 10) * rate
      b = c6.blue  * rate
      a = c6.alpha
    end
    # Calculate Bar Width
    width = 168
    if e1.to_f != 0
      par = width * e1.to_f / e2.to_f
    else
      par = width
    end
    # Equipment Calc Fix    
    case type
    when 0
      if e1 == 0
        par = 0
      end
    when 1
      if e1 == 0
        par = 0
      end
    when 2
      if e1 == 0
        par = 0
      end
    end
    # Draw Bar Graph
    cw_gauge(x , y + 25, width, 7, par, c5, Color.new(r, g, b, a))
    # Call Original Parameter            
    draw_actor_parameter_original(actor, x, y, type)
  end

  #--------------------------------------------------------------------------
  # * Gauge Rectangle (New to Class)
  #--------------------------------------------------------------------------
  def cw_gauge(x, y, width, height, gauge, color1, color2)

    # Use Cogwheel PRESETS
    color3 = COG_COLOR1
    color4 = COG_COLOR2
    color5 = COG_COLOR3
    color6 = COG_COLOR4
    align1 = COG_ALIGN1
    align2 = COG_ALIGN2
    align3 = COG_ALIGN3
    grade1 = COG_GRADE1
    grade2 = COG_GRADE2
    
    # Create Rectangle Width based on gauge max.
    rect_width = width
    
    case align1
    when 1
      x += (rect_width - width) / 2
    when 2
      x += rect_width - width
    end
    case align2
    when 1
      y -= height / 2
    when 2
      y -= height
    end
    self.contents.fill_rect(x, y, width, height, color3)
    self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color4)
    if align3 == 0
      if grade1 == 2
        grade1 = 3
      end
      if grade2 == 2
        grade2 = 3
      end
    end
    if (align3 == 1 and grade1 == 0) or grade1 > 0
      color = color5
      color5 = color6
      color6 = color
    end
    if (align3 == 1 and grade2 == 0) or grade2 > 0
      color = color1
      color1 = color2
      color2 = color
    end
    self.contents.cw_grad_rect(x + 2, y + 2, width - 4, height - 4, color5, color6, grade1)
    if align3 == 1
      x += width - gauge
    end
    self.contents.cw_grad_rect(x + 2, y + 2, gauge - 4, height - 4, color1, color2, grade2)
  end
  
  #--------------------------------------------------------------------------
  # * End of Class
  #--------------------------------------------------------------------------
end


#==============================================================================
# ** Bitmap
#==============================================================================
class Bitmap

  #--------------------------------------------------------------------------
  # * Gradation Rectangle
  #--------------------------------------------------------------------------
  def cw_grad_rect(x, y, width, height, color3, color4, align = 0)
   if align == 0
     for i in x...x + width
       red   = color3.red + (color4.red - color3.red) * (i - x) / (width - 1)
       green = color3.green +
               (color4.green - color3.green) * (i - x) / (width - 1)
       blue  = color3.blue +
               (color4.blue - color3.blue) * (i - x) / (width - 1)
       alpha = color3.alpha +
               (color4.alpha - color3.alpha) * (i - x) / (width - 1)
       color = Color.new(red, green, blue, alpha)
       fill_rect(i, y, 1, height, color)
     end
   elsif align == 1
     for i in y...y + height
       red   = color3.red +
               (color4.red - color3.red) * (i - y) / (height - 1)
       green = color3.green +
               (color4.green - color3.green) * (i - y) / (height - 1)
       blue  = color3.blue +
               (color4.blue - color3.blue) * (i - y) / (height - 1)
       alpha = color3.alpha +
               (color4.alpha - color3.alpha) * (i - y) / (height - 1)
       color = Color.new(red, green, blue, alpha)
       fill_rect(x, i, width, 1, color)
     end
   elsif align == 2
     for i in x...x + width
       for j in y...y + height
         red   = color3.red + (color4.red - color3.red) *
                 ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
         green = color3.green + (color4.green - color3.green) *
                 ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
         blue  = color3.blue + (color4.blue - color3.blue) *
                 ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
         alpha = color3.alpha + (color4.alpha - color3.alpha) *
                 ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
         color = Color.new(red, green, blue, alpha)
         set_pixel(i, j, color)
       end
     end
   elsif align == 3
     for i in x...x + width
       for j in y...y + height
         red   = color3.red + (color4.red - color3.red) *
               ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
         green = color3.green + (color4.green - color3.green) *
               ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
         blue  = color3.blue + (color4.blue - color3.blue) *
               ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
         alpha = color3.alpha + (color4.alpha - color3.alpha) *
               ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
         color = Color.new(red, green, blue, alpha)
         set_pixel(i, j, color)
       end
     end
   end
end

  #--------------------------------------------------------------------------
  # * End of Class
  #--------------------------------------------------------------------------
end
avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 221

Gracias : 24

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.