RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu
  • Welcome to The RPG Maker Resource Kit.

Small Scripting Problem

Started by modern algebra, January 20, 2007, 04:18:17 AM

0 Members and 1 Guest are viewing this topic.

modern algebra

To practice with Ruby, I decided I would rearrange my Status Screen, and include a picture of a battler. This went pretty well, but when I input my battler, the sprite picture disappeard. I thought at first this was because I defined the battler image as draw_actor_graphic, i.e. the same as the sprite, but when I change it, the sprite comes back but the battler disappears. This is a screenshot:


The part in red is approximately where the sprite should be. And the code is:


#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
#  This window displays full status specs on the status screen.
#==============================================================================

class Window_Status < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_graphic(@actor, 40, 112)
    draw_actor_name(@actor, 4, 0)
    draw_actor_class(@actor, 195 + 80, 0)
    draw_actor_state(@actor, 85, 0)
    draw_actor_hp(@actor, 0, 112, 172)
    draw_actor_sp(@actor, 0, 144, 172)
    draw_actor_parameter(@actor, 0, 192, 0)
    draw_actor_parameter(@actor, 0, 224, 1)
    draw_actor_parameter(@actor, 0, 256, 2)
    draw_actor_parameter(@actor, 0, 304, 3)
    draw_actor_parameter(@actor, 0, 336, 4)
    draw_actor_parameter(@actor, 0, 368, 5)
    draw_actor_parameter(@actor, 0, 400, 6)
    self.contents.font.color = system_color
    self.contents.draw_text(195, 0, 80, 32, "Class")
    self.contents.font.color = system_color
    self.contents.draw_text(400, 0, 80, 32, "Experience")
    self.contents.font.color = normal_color
    self.contents.draw_text(400 + 80, 0, 84, 32, @actor.exp_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(400, 64, 96, 32, "Equipment")
    draw_item_name($data_weapons[@actor.weapon_id], 400 + 16, 112)
    draw_item_name($data_armors[@actor.armor1_id], 400 + 16, 160)
    draw_item_name($data_armors[@actor.armor2_id], 400 + 16, 208)
    draw_item_name($data_armors[@actor.armor3_id], 400 + 16, 256)
    draw_item_name($data_armors[@actor.armor4_id], 400 + 16, 304)
  end
  def dummy
    self.contents.font.color = system_color
    self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
    self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
    self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
    self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
    self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
    draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
    draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
    draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
    draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
    draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
  end
  def draw_actor_graphic(actor, x, y, opacity = 255)
  bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  cw = bitmap.width
  ch = bitmap.height
  src_rect = Rect.new(0, 0, cw, ch)
  x = 230
  y = 100
  self.contents.blt(x, y, bitmap, src_rect, opacity)
  end
end


I'm really bad at scripting, so the problem is probably just a slight oversight on my part because of my limited knowledge of Ruby. Anyway, help would be appreciated.

Falcon

Try this:
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
#  This window displays full status specs on the status screen.
#==============================================================================

class Window_Status < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  def draw_actor_battler(actor, x, y, opacity = 255)
  bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  cw = bitmap.width
  ch = bitmap.height
  src_rect = Rect.new(0, 0, cw, ch)
  x = 230
  y = 100
  self.contents.blt(x, y, bitmap, src_rect, opacity)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_graphic(@actor, 40, 112)
    draw_actor_battler(@actor, 40, 112)
    draw_actor_name(@actor, 4, 0)
    draw_actor_class(@actor, 195 + 80, 0)
    draw_actor_state(@actor, 85, 0)
    draw_actor_hp(@actor, 0, 112, 172)
    draw_actor_sp(@actor, 0, 144, 172)
    draw_actor_parameter(@actor, 0, 192, 0)
    draw_actor_parameter(@actor, 0, 224, 1)
    draw_actor_parameter(@actor, 0, 256, 2)
    draw_actor_parameter(@actor, 0, 304, 3)
    draw_actor_parameter(@actor, 0, 336, 4)
    draw_actor_parameter(@actor, 0, 368, 5)
    draw_actor_parameter(@actor, 0, 400, 6)
    self.contents.font.color = system_color
    self.contents.draw_text(195, 0, 80, 32, "Class")
    self.contents.font.color = system_color
    self.contents.draw_text(400, 0, 80, 32, "Experience")
    self.contents.font.color = normal_color
    self.contents.draw_text(400 + 80, 0, 84, 32, @actor.exp_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(400, 64, 96, 32, "Equipment")
    draw_item_name($data_weapons[@actor.weapon_id], 400 + 16, 112)
    draw_item_name($data_armors[@actor.armor1_id], 400 + 16, 160)
    draw_item_name($data_armors[@actor.armor2_id], 400 + 16, 208)
    draw_item_name($data_armors[@actor.armor3_id], 400 + 16, 256)
    draw_item_name($data_armors[@actor.armor4_id], 400 + 16, 304)
  end
  def dummy
    self.contents.font.color = system_color
    self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
    self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
    self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
    self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
    self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
    draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
    draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
    draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
    draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
    draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
  end
end


After the refresh method you changed the graphic method so it switched the one with the other.

modern algebra

Thanks, that worked well. Is there a way to close a topic?

Blizzard

Yeah, you can lock your own topics. There is a button at the bottom that says Lock/Unlock. But I'll lock this one myself, so no worries.
Get King of Booze for Android, for iOS, for OUYA or for Windows!
Visit our website.
You can also love/hate us on Facebook or the game itself.



Get DropBox, the best free file syncing service there is!