silver wind has been so kind to make an add-on to my caterpillar script which creates events for the actors in the party which does not already have an event!
[ruby]# ---------------------------------------------------------- #
#   Add-on to Zeriab's caterpillar script          #
# ---------------------------------------------------------- #
#  made by silver wind                    #
# Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â #
#   Instructions                       #
#  * Now you don't have to create events for each       #
# Â Â party member, in every map. Â Â Â Â Â Â Â Â Â Â Â Â Â Â #
# Â Â This script will create them automatically. Â Â Â Â Â Â #
# Â Â You may create events for some of the actors, Â Â Â Â Â #
# Â Â and let this system add the missing events. Â Â Â Â Â Â #
#  * Using ccoa's UMS, add \actor[id] in a message to     #
# Â Â center a message above this actor. Â Â Â Â Â Â Â Â Â Â Â #
#  * If you ever need to know the id of the event used    #
# Â Â for a certain actor, use: Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â #
# Â Â event_id = $game_map.cat_event_id(actor_id) Â Â Â Â Â Â #
# ---------------------------------------------------------- #
# Example- how to make new event:
# Â sprite = "_mainHero10"
# Â name = "EV000:SomeName"
# Â through = false
# Â $game_map.new_event(name, sprite, through)
# ---------------------------------------------------------- #
 Â
class Game_Map
 alias silwer_wind_cat_game_map_setup setup
 def setup(*args)
  silwer_wind_cat_game_map_setup(*args)
  make_cat_events
 end
Â
 def make_cat_events
  # if the caterpillar event doesn't exist, create it
  party = $game_party.actors.dup
  # Remove the first element- it's the player.
  party.shift
  for actor in party
   if (!cat_event_exist?(actor.id) )
    # add a new event for this actor
    new_cat_event(actor.id)
   end
  end
 end
Â
 def cat_event_exist?(id)
  # Check for caterpillar actor id
  for i in @map.events.keys
   if @events.caterpillar_id == id
    return true
   end
  end
  # if no event has that id
  return false
 end
Â
 def new_cat_event(actor_id)
  # create unique ID for the event
  ids = @map.events.keys Â
  event_id = (ids.size==0) ? 1 : ((ids.max) +1)
  # Set the event on the upper-left corner
  new_event = RPG::Event.new(0,0)
  new_event.name = "EV00" + event_id.to_s + "\\" + "cat_actor[" + actor_id.to_s + "]"
  # set the graphic of the event to be the actor's sprite.
  sprite = $data_actors[actor_id].character_name
  new_event.pages[0].graphic.character_name = sprite
  # set event to through
  new_event.pages[0].through = true
  l = @map.events.keys.length
  @map.events.keys[l]=event_id
  @map.events[event_id]=new_event
  game_event = Game_Event.new(@map_id, new_event)
  @events[event_id] = game_event
 end
Â
 def new_event(name, sprite, through)
  # create unique ID for the event
  event_id = @map.events.keys.max + 1
  # find an empty tile to place the event on.
  new_event = RPG::Event.new(0,0)
  new_event.name = name.nil? ? "EV00" + event_id.to_s  : name
  new_event.pages[0].graphic.character_name = sprite
  new_event.pages[0].through = through
  # now, create a map event from the new RPG::Event
  l = @map.events.keys.length
  @map.events.keys[l]=event_id
  @map.events[event_id]=new_event
  game_event = Game_Event.new(@map_id, new_event)
  @events[event_id] = game_event
 end
Â
 # return : ID of the event used for this actor
 def cat_event_id(actor_id)
  for i in @map.events.keys
   if @events.caterpillar_id == actor_id
    return i
   end
   end
 end
end
Â
class Game_Event
 def caterpillar_id
  # Copied from the caterpillar script
  # search for \cat_actor[id] in event's name, return the id or nil.
  @event.name.gsub(/\\cat_actor\[([0-9]+)\]/i) {@caterpillar_actor = $1 }
  # Check if an valid denomination is found.
  if @caterpillar_actor.is_a?(String)
   id = @caterpillar_actor.to_i
   if $data_actors[id].nil?
    id = 0
   end
   return id
  end
  return nil
 end
end
Â
# ---------------- edit Ccoa's UMS -------------------------#
# Â Use \actor[id] in a message to show it above this actor. #
# Â * Useful if the actor event was created automatically. Â #
# Â Â You can't use \e