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

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
class Game_Event
attr_reader :name
def initialize
@name = @event.name
end
end

with
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:

    @name_spr.bitmap.draw_text(0,0,100,30,@character.name,1)


above it put this in:

    @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:


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

end


to this:


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?