[RESOLVED][XP] Show event name error

Started by Various, March 21, 2012, 09:54:50 am

Previous topic - Next topic

Various

March 21, 2012, 09:54:50 am Last Edit: March 23, 2012, 10:08:37 am by Various
hi people :P

ive found a Show Event Name script that was perfect for my game but i got an error when trying

this script uses a ''Comment : Show Name'' to show the name of the event but i got this error

''Script 'Show event name' line 210: typeError occurred.''
''cannot convert nil into string''

line 210 is part of this :
Spoiler: ShowHide

 #--------------------------------------------------------------------------
 # * Draw Name
 #--------------------------------------------------------------------------
 def draw_name
   if defined? Bitmap.draw_hemming_text
     @name_event.bitmap.draw_hemming_text(0, 0, 100, 20, @char ,4)
   else
     @name_event.bitmap.draw_text(0, 0, 100, 20, @char ,4)
   end
 end


this is line 210      @name_event.bitmap.draw_text(0, 0, 100, 20, @char ,4)


this is the full script (if maybe more is wrong)

Spoiler: ShowHide
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# [Xp/Vx] Show Event Name
# Version: 3.14
# Author : LiTTleDRAgo
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
#
# Explanation:
#
#   - This script shows event name in map
#
# Instructions:
#
#   - Setup the few configurations below.  
#   - This script uses comments in the event's pages at any line.
#    
#     Comment : Show Name
#
#   That's all
#
#   To show name actor, set the event name to \a[ ActorID ]
#   To show value of variable, set to \v[ VariableID ]
#
#  Extra Function
#     \fontsize[ Size ]
#     \bold
#     \italic
#     \fontname[ Fontname ]
#     \color[ R, G, B, ALPHA ]
#     \sn[ Name ]
#
#  Press Z and C together to turn on the name on / off
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:

module EventName

 FONT        = ['Calibri',12]   # Font Name and Font Size
 BOLD        = true             # Toggle Bold
 ITALIC      = true             # Toggle Italic
 PLAYER_NAME = true             # Show the player name too?
 SWITCH      = 50               # Switch for Disable Show Event Name
 PRESS_BTN   = [Input::A,       # (Z Keyboard XP) (Shift Keyboard VX)
                Input::C]       # (C/Enter Keyboard XP) (Z/Enter Keyboard VX)
 COLOR       = Color.new(255,255,255,240) # Color Default
 POSITION    = "A"              # A = Above, B = Below
 RANGE       = 3                # Range from character to show the name

end



#------------------------------------------------------------------------------
# SDK Check
#------------------------------------------------------------------------------
if Object.const_defined?('SDK')
SDK.log('Show Event Name', 'LiTTleDRAgo', 3, '03.02.11')
@event_name_disabled = !SDK.enabled?('Show Event Name')
end

if !@event_name_disabled
 
Sprite_Base = RPG::Sprite  if !defined? Sprite_Base
#==============================================================================
# ** Sprite_EventName
#------------------------------------------------------------------------------
#  This sprite is used to display Event Name. It observes a instance of the
# Game_Character class and automatically changes sprite conditions.
#==============================================================================
class Sprite_EventName < Sprite_Base
 
 FONT          = EventName::FONT
 BOLD          = EventName::BOLD
 ITALIC        = EventName::ITALIC
 PLAYER_NAME   = EventName::PLAYER_NAME
 DIS_EV_SWITCH = EventName::SWITCH
 PRESS_BTN     = EventName::PRESS_BTN
 COLOR         = EventName::COLOR
 POS           = EventName::POSITION
 RANGE         = EventName::RANGE
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :character
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     viewport  : viewport
 #     character : character (Game_Character)
 #--------------------------------------------------------------------------
 def initialize(v,character)
   super(v)
   @character = character
   @name_event = Sprite.new
   @name_event.bitmap = Bitmap.new(100,280)
   @name_event.visible = true
   refresh_name
   update
 end
 #--------------------------------------------------------------------------
 # * Coloring
 #--------------------------------------------------------------------------
 def coloring
   size, name, bold, italic, color = FONT[1], FONT[0], BOLD, ITALIC, COLOR
     if $xrxs_xas
       @char.gsub!(/<Enemy(\d+)>/i) do color = Color.new(255,0,0,240) end
     elsif $BlizzABS && @character.is_a?(Map_Battler)
       case @character.ai.group
       when 1 then color = Color.new(0  , 0  , 255, 240)
       when 2 then color = Color.new(255, 0  , 0  , 240)
       when 3 then color = Color.new(128, 128, 128, 240)
       when 4 then color = Color.new(128, 128, 128, 240)
       when 5 then color = Color.new(255, 255, 0  , 240)
       when 6 then color = Color.new(0  , 255, 0  , 240)
       end
     end
     @char.gsub!(/\\fontsize\[(\d+)\]/) do size   = $1.to_i  end
     @char.gsub!('\\bold')              do bold   = true     end
     @char.gsub!('\\italic')            do italic = true     end
     @char.gsub!(/\\fontname\[(.*?)\]/) do name   = $1.to_s  end
     @char.gsub!(/\\color\[(\d+),(\d+),(\d+),(\d+)\]/) do
       color = Color.new($1.to_i,$2.to_i,$3.to_i,$4.to_i)    end
   @name_event.bitmap.font.name   = name
   @name_event.bitmap.font.bold   = bold
   @name_event.bitmap.font.italic = italic
   @name_event.bitmap.font.size   = size
   @name_event.bitmap.font.color  = color
 end
 #--------------------------------------------------------------------------
 # * Check Name
 #--------------------------------------------------------------------------
 def event_name_check
   @char.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
   @char.gsub!(/\\[Aa]\[([0-9]+)\]/) { !$game_actors[$1.to_i].nil? ?
                                       $game_actors[$1.to_i].name : ''}
   @char.gsub!(/\\fontsize\[(\d+)\]/) {''}
   @char.gsub!('\\bold')              {''}
   @char.gsub!('\\italic')            {''}
   @char.gsub!(/\\fontname\[(.*?)\]/) {''}
   @char.gsub!(/\\color\[(\d+),(\d+),(\d+),(\d+)\]/) {''}
   if $xrxs_xas
     @char.gsub!(/<Footstep>/i) {''}
     @char.gsub!(/<Throw(\d+)>/i) {''}
     @char.gsub!(/<Somaria(\d+)>/i) {''}
     @char.gsub!(/<Hookshot(\d+)>/i) {''}
     @char.gsub!(/<Enemy(\d+)>/i) { !$data_enemies[$1.to_i].nil? ?
                                    $data_enemies[$1.to_i].name : ''}
   end
   @char.gsub!(/\\[Ss][Nn]\[(.*?)\]/) do @char = $1.to_s end
 end
 #--------------------------------------------------------------------------
 # * Update
 #--------------------------------------------------------------------------
 def update
   super
   if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       (!rpgvx? && @character_hue != @character.character_hue)
     @tile_id, @character_name = @character.tile_id, @character.character_name
     @character_hue = @character.character_hue  if !rpgvx?
     refresh_name
   end
   return @name_event.visible = false if !DIS_EV_SWITCH.nil? and
      (@character.opacity < 50 or $game_switches[DIS_EV_SWITCH])
   visibility if !PRESS_BTN.nil?
   if @name_event.visible
     refresh_name if @cw.nil?
     @name_event.x = @character.screen_x - (@cw.nil? ? 0 : @cw /2)
     @name_event.y = @character.screen_y - (POS == "A" ? @ch : 0)
     @name_event.z = 1
     @name_event.opacity    = @character.opacity
     @name_event.blend_type = @character.blend_type
     @name_event.bush_depth = @character.bush_depth
   end
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh_name
   return if @name_event.nil? or @name_event.bitmap.nil? or
   @name_event.disposed? or !@name_event.visible or @character.name_effect.nil?
   @name_event.bitmap.clear
   @character.name_effect.each {|@char| coloring; event_name_check }
   draw_name if ($BlizzABS && @character.is_a?(Map_Actor) && PLAYER_NAME) or
           ($BlizzABS && @character.is_a?(Map_Enemy) && @character.nametag) or
           (@character.is_a?(Game_Event) && @character.nametag) or
           (@character.is_a?(Game_Player) && PLAYER_NAME) or
           ($xas_caterpillar && @character.is_a?(Game_Party) && PLAYER_NAME)
   @x_frame, @y_frame = 4, 4
   if POS == "A"
     if rpgvx?
       @cw = @name_event.bitmap.width / @x_frame / 2
       @ch = @name_event.bitmap.height / @y_frame - 40
       return
     end
     bit = RPG::Cache.character(@character.character_name,
         @character.character_hue)
     @cw = bit.width / @x_frame / 2
     @ch = bit.height / @y_frame + 15
   else
     @cw = @name_event.bitmap.width / @x_frame / 2
     @ch = @name_event.bitmap.height / @y_frame - 40
   end
 end
 #--------------------------------------------------------------------------
 # * Draw Name
 #--------------------------------------------------------------------------
 def draw_name
   if defined? Bitmap.draw_hemming_text
     @name_event.bitmap.draw_hemming_text(0, 0, 100, 20, @char ,4)
   else
     @name_event.bitmap.draw_text(0, 0, 100, 20, @char ,4)
   end
 end
 #--------------------------------------------------------------------------
 # * Dispose
 #--------------------------------------------------------------------------
 def dispose
   super
   @name_event.dispose
 end
 #--------------------------------------------------------------------------
 # * Visibility
 #--------------------------------------------------------------------------
 def visibility
   pressed = Input.press?(PRESS_BTN[0]) && Input.trigger?(PRESS_BTN[1])
   if RANGE != nil && !@pressed
     x = ($game_player.x-@character.x).abs+($game_player.y-@character.y).abs
     @name_event.visible = (x <= RANGE)
   end
   if !@pressed && pressed
     @name_event.visible, @pressed = false, true
   elsif @pressed && pressed
     @name_event.visible, @pressed = true, false
   end
 end  
end

#==============================================================================
# ** Kernel
#==============================================================================
module Kernel
 def rpgvx?() return (defined? Graphics.resize_screen) end
end
 
Cache = RPG::Cache if !defined? Cache
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  This class handles the party. It includes information on amount of gold
# and items. The instance of this class is referenced by $game_party.
#==============================================================================
class Game_Party
 #--------------------------------------------------------------------------
 # * Name
 #--------------------------------------------------------------------------
 def name_effect() leader_name  end
 #--------------------------------------------------------------------------
 # * Leader Name
 #--------------------------------------------------------------------------
 def leader_name
   return @actors[0].nil? ? '' : @actors[0].name if !rpgvx?
   return members[0].nil? ? '' : members[0].name
 end  
end

#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
#  This class deals with events. It handles functions including event page
# switching via condition determinants, and running parallel process events.
# It's used within the Game_Map class.
#==============================================================================
class Game_Event
 #--------------------------------------------------------------------------
 # * Name
 #--------------------------------------------------------------------------
 def name_effect() @event.name  end
 #--------------------------------------------------------------------------
 # * Nametag
 #--------------------------------------------------------------------------
 def nametag
   return (!@list.nil? && @list.any? {|i| i.code == 108 &&
     i.parameters == ['Show Name']})
 end
end

#==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
#  This class handles maps. It includes event starting determinants and map
# scrolling functions. The instance of this class is referenced by $game_map.
#==============================================================================
class Game_Player
 #--------------------------------------------------------------------------
 # * Name
 #--------------------------------------------------------------------------
 def name_effect() return $game_party.leader_name end
end

#==============================================================================
# ** Map Battler
#------------------------------------------------------------------------------
#  This class handles battlers in Blizz ABS
#==============================================================================
if $BlizzABS  
 class Map_Battler
   def name_effect() return @battler.name end
   def nametag
     return (!@list.nil? && @list.any? {|i| i.code == 108 &&
       i.parameters == ['Show Name']})
   end
 end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================
class Scene_Map
 attr_accessor :spriteset
end

 #--------------------------------------------------------------------------
 # * Refresh Name
 #--------------------------------------------------------------------------
 def refresh_name(val=nil)  
   return $scene.spriteset.eventname[val].refresh_name if !val.nil?
   $scene.spriteset.eventname.each {|i| i.refresh_name}
 end
 
#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================
class Spriteset_Map
 
 PRESS_BTN     = EventName::PRESS_BTN
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :eventname
 #--------------------------------------------------------------------------
 # * Main Processing
 #--------------------------------------------------------------------------
 def init_eventname
   @eventname = []
   @eventname[0] = Sprite_EventName.new(@viewport1,$game_player)  
   ($game_map.events.keys.sort).each {|i|
     @eventname[i] = Sprite_EventName.new(@viewport1,$game_map.events[i])}
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 alias update_eventname_earlier update
 def update
   @eventname.nil? ? init_eventname : @eventname.each {|i|i.update if !i.nil?}
   update_eventname_earlier
 end  
 #--------------------------------------------------------------------------
 # * Dispose
 #--------------------------------------------------------------------------
 alias dispose_eventname dispose
 def dispose
   @eventname.each {|i| i.dispose if !i.nil?}
   dispose_eventname
 end
end
#--------------------------------------------------------------------------
# SDK Check End
#--------------------------------------------------------------------------
end
#--------------------------------------------------------------------------
# END OF SCRIPT
#--------------------------------------------------------------------------


in my eyes it would be perfect and would have no problem, does someone know whats wrong ? or is it something i use

''Scripts i use''
Spoiler: ShowHide

Item storage - game_guy
Anti Event Lag System - Zeriab
Blacksmith System - ForeverZer0
Multi Slot - Guillaume777
Quest System - (sorry dunno the author)


Maybe the script aint compatible with one of the scripts im using

greets, various

ZombieBear

Hello,

I plugged your script into my game and it's working fine for me with no changes. Are you adding the comment to your events in the event command window? It should like this:

Spoiler: ShowHide


If that's not whats going wrong then it's probable incompatible with one of your scripts.

Various

March 23, 2012, 09:51:29 am #2 Last Edit: March 23, 2012, 10:08:00 am by Various
the only thing i have different then your picture is that ur name of the event is an actor, if that will be my problem then i have to database break up to 9999999 actors or something...
my game counts over 10K NPC (non playable characters) and that only on a few maps

here
Spoiler: ShowHide


Edit: nvm im using V4 now and that one works perfect for me

Magus

LEVEL ME DOWN. THE ANTI-BLIZZ GROUP IS AMONG YOU... Do it for the chick below...She watches..<br />