The RPG Maker Resource Kit

RMRK RPG Maker Creation => XP => XP Scripts Database => Topic started by: ngoaho on January 14, 2010, 02:49:40 PM

Title: Name display
Post by: ngoaho on January 14, 2010, 02:49:40 PM
display a name above event(npc) and actor(player)
someone have wrote a script like this, but too long and complex, i write a new one that simple to see and simple to use

Code: [Select]
class Game_Event
attr_reader :name
def initialize
@name = @event.name
end
end

class Game_Player
def name
  return $game_party.actors[0].name
end

end
class Sprite_Character < RPG::Sprite
  attr_accessor :character
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @filename = @character.character_name.to_s
    @x_frame = @y_frame = 4
    @x_frame = @filename.split(/@/)[1].to_i if @filename.split(/@/)[1].to_i != 0
    @y_frame = @filename.split(/@/)[2].to_i if @filename.split(/@/)[2].to_i != 0
    @name_spr = Sprite.new
    @name_spr.bitmap = Bitmap.new(100,20)
    update
  end
  def update
    super
    if @tile_id != @character.tile_id or @character_name != @character.character_name or @character_hue != @character.character_hue
    @tile_id = @character.tile_id
    @character_name = @character.character_name
    @character_hue = @character.character_hue
    self.bitmap = RPG::Cache.character(@character.character_name,0) rescue self.bitmap = RPG::Cache.character("",0)
    @name_spr.bitmap.clear
    @name_spr.bitmap.draw_text(0,0,100,30,@character.name,1)
    @cw = bitmap.width / @x_frame
    @ch = bitmap.height / @y_frame
    self.ox = @cw / 2
    self.oy = @ch
    end
    self.visible = (not @character.transparent)
    if @tile_id == 0
    sx = @character.pattern * @cw
   case @character.direction
   when 2
     sy = 0 * @ch
   when 4
     sy = 1 * @ch
   when 6
     sy = 2 * @ch
   when 8
     sy = 3 * @ch
   when 1
     if @y_frame == 8
     sy = 4 * @ch
     else
     sy = 1 * @ch
     end
   when 3
     if @y_frame == 8
     sy = 5 * @ch
     else
     sy = 0 * @ch
     end
   when 7
     if @y_frame == 8
     sy = 6 * @ch
     else
     sy = 3 * @ch
     end
   when 9
     if @y_frame == 8
     sy = 7 * @ch
     else
     sy = 2 * @ch
     end
   when 5
     if @y_frame == 8
     sy = 0 * @ch
     else
     sy = 0 * @ch
     end
   end
    self.src_rect.set(sx, sy, @cw, @ch)
    end
    self.x = @character.screen_x

    self.y = @character.screen_y
    self.z = @character.screen_z(@ch)
    @name_spr.x = self.x - @cw/2
    @name_spr.y = self.y - @ch - 30
    @name_spr.z = self.z
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    if @character.animation_id != 0
    animation = $data_animations[@character.animation_id]
    animation(animation, true)
    @character.animation_id = 0
    end
  end
end

ok, all done, F12 and test.

** this script include Charset frame change (http://rmrk.net/index.php/topic,37069.0.html)
Title: Re: Name display
Post by: Mr_Wiggles on February 06, 2010, 12:51:58 AM
How does one use this script?
Title: Re: Name display
Post by: ngoaho on February 06, 2010, 08:12:17 AM
add script and test game..... naming event by edit event name.
Title: Re: Name display
Post by: Mr_Wiggles on February 08, 2010, 08:14:18 AM
i get an error:

Script 'Game_Map' line 76: ArgumentError occurred.
wrong number of arguments(2 for 0)
 
Title: Re: Name display
Post by: ngoaho on February 09, 2010, 02:47:16 AM
copy Game_Map line 76 to here.
Title: Re: Name display
Post by: Mr_Wiggles on February 11, 2010, 03:52:03 AM
Game_Map


# 76      @events = Game_Event.new(@map_id, @map.events)
Title: Re: Name display
Post by: ngoaho on February 14, 2010, 04:43:44 AM
replace
Code: [Select]
class Game_Event
attr_reader :name
def initialize
@name = @event.name
end
end
with
Code: [Select]
class Game_Event
attr_reader :name
alias old_init initialize
def initialize(*arg)
old_init(*arg)
@name = @event.name
end
end

*hug hug hug*
Title: Re: Name display
Post by: Mr_Wiggles on February 14, 2010, 05:13:19 AM
Cool, for some suggestions on an update, is that  there is some way some way of making the name of the event (the one that shows over top of it) where it has to be in Quotes or some thing along that lines, so you can turn it off for certain events.

Because (unless i don't know about it) right now it will show what you have the event labeled as, so if you have some events that are hidden (transfer players, Auto runs, and such) when you lablbe them for organization, it will show your label as the events name.
Title: Re: Name display
Post by: ngoaho on February 20, 2010, 01:39:24 PM
my english is bad, i don't understand your reply clearly.
if you want to turn off event name, leave blank name box.
Title: Re: Name display
Post by: recon2009 on May 19, 2010, 12:15:54 PM
Is there a way to change the size, font and position?
Title: Re: Name display
Post by: Mr_Wiggles on May 19, 2010, 09:28:41 PM
where it says this in the script:
Code: [Select]
    @name_spr.bitmap.draw_text(0,0,100,30,@character.name,1)

above it put this in:
Code: [Select]
    @name_spr.bitmap.font.size = 24
    @name_spr.bitmap.font.name = "Arial Black"
    @name_spr.bitmap.font.color = Color.new( 255, 255, 255, 240)

change those values to what ever you want.
color is controlled by (R, G, B, Opacity)
Title: Re: Name display
Post by: Glennx95 on April 19, 2011, 03:40:33 PM
I know this is an old topic, but is there an option that i can erase the name above your own actor? Because I don't like the name above my own head all the time.
Title: Re: Name display
Post by: modern algebra on April 19, 2011, 03:46:58 PM
Try changing this:

Code: [Select]
class Game_Player
def name
  return $game_party.actors[0].name
end

end

to this:

Code: [Select]
class Game_Player
def name
  return ""
end

end
Title: Re: Name display
Post by: Glennx95 on April 19, 2011, 07:03:20 PM
It worked. Thank you very much  ;)
Title: Re: Name display
Post by: Glennx95 on April 19, 2011, 08:13:37 PM
I have an other problem now. When i start a battle, the name of the events that were in-screen, will stay there. How to fix this?