Composite Character Sets / Visual Equipment

0 Members and 1 Guest are viewing this topic.

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
No, not as it is - it would not work with animated battlers - they use different types of sprites.

It is possible to make a script like this that would work for animated battlers, but it would require some scripting.

***
EXECUTED WEEBLING?
Rep:
Level 81
Im still here.. hahahahahaha
Is There Any Way To Make It For Xp
Hey if you need anything just ask.

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
Do a google search for Rataime Visual Equipment - I think that's the scripter who wrote one for RMXP

**
Rep: +0/-0Level 81
RMRK Junior
Hi, really great script! I love it.

But I have one small problem:
It's not compatible with 'RSSBS - Reedo's Simple Side Battle System'
Spoiler for:
Code: [Select]
###############################################################################
##  RSSBS - Reedo's Simple Side Battle System
##  Version 1.0
##  January 7, 2010
##  By Reedo
###############################################################################
##  SOURCE
##
##  Source thread:
##
##
##  Support thread:
##    http://www.rpgmakervx.net/index.php?showtopic=24587
###############################################################################
##  REFERENCES
##
##  None.  This is an original script by Reedo.
##  However other people have contributed ideas and bug finds. Please see the
##  support thread link above for details.
###############################################################################
##  DESCRIPTION
##
##  This script provides a plug-and-play Side Battle System for the default
##  battle system. This is purely an asthetic script, and as such, it only
##  modifies the visuals of the battle. It does not modify battle mechanics
##  when used by itself.
##
##  This script will:
##  1) Draw the party on the right side of the screen, facing left, during batle.
##  2) Cause actors to perform their stepping animation when they are on the
##     ground, and have no state restrictions applied.
##  3) Place a shadow under the actor.
##  4) Provide a target for animations, and optionally, animations themselves.
##  5) Line up actors in a staggerd row, top to bottom, with adjustable spacing,
##     recessed according to the position value of their class.
##  6) Cause actors to step forward when performing an action.
##  7) Draw actors lying down, whitened, and semi-transparent when dead.
##  8) Cause living actors to do a victory dance at the end of battle.
##  9) Provide the option to horizontally flip enemy images by enemy ID.
##
##  When used with the YERD or YEZ battle scripts, you then get even more
##  animation options (such as casting animations) and popups for most battle
##  event messages.  This SBS and YEZ combine to form an amazing SBS experience!
##     YEZ Script Link:  http://www.pockethouse.com/yez/
###############################################################################
##  COMPATIBILITY
##
##  Should be compatible with most other scripts.
##
##  This script overwrites 1 method: Spriteset_Battle.update_actors
##  All other methods are aliased, and those aliases are called.
##  The one overwrite should not cause an issue as the only functionality it
##  supresses is setting the party members to the current battle sprites. The
##  rest of the original method is maintained, and this script handles the
##  relationship between party members and battle sprites.
###############################################################################
##  REQUIREMENTS
##
##  None
###############################################################################
##  INSTALLATION
##
##  Plug-and-play. (and this time I mean it for reals!)
##
##  Insert below Materials, above other Reedo scripts.
##  All Reedo scripts should be below all YERD/YEZ scripts.
###############################################################################
##  RIGHTS & RESTRICTIONS
##
##  As with most Reedo scripts, this script is free to re-use, as-is,
##  in personal, educational, and commercial RPGVX development projects,
##  providing that:  this script, as well as the rpgmakervx.net forum link 
##  from which it was obtained, are credited in writing displayed readily
##  to the user of the final compiled code assembly.
##
##  Reedo and rgpmakervx.net retain all rights of intellect and ownership.
##  You forego all rights of warranty by utilizing this script.
###############################################################################
##  USAGE
##
##  Plug and play.  Suggested to use YEZ Battle Engine Zealous, and Reedo's
##  Tile-Based Battle Backgrounds scripts.
##
##  Some visual options can be modified below.
###############################################################################

###############################################################################
##  USER OPTIONS
###############################################################################
module REEDO_SBS

# If desired, you can modify the default script options using the constants
# below. In most cases though, you should not need to adjust these values.
 
###############################################################################
## This section controls the battle animations provided by this script
###############################################################################
  # This controls whether or not this script will provide animations during
  # battle. Set to 'true' when using this script without any other battle scene
  # enhancements. Set to 'false' when using battle scene enhancements such
  # as YEZ/YERD. Default is 'false'.
  SBS_ACTION_ANIMES = false
 
  # If this script is providing animations, then you can specify which
  # animations to use a default.
  SBS_DEFAULT_ATTACK_ANIME = 19
  # Skill and item animations will use the animation assigned to the skill or
  # item, if any. If none is assigned, then the default will be used. Specify
  # a value of 0 if you do not want a default animation. These values have no
  # effect if SBS_ACTION_ANIMES is set to 'false'.
  SBS_DEFAULT_SKILL_ANIME = 1
  SBS_DEFAULT_ITEM_ANIME = 1
 
###############################################################################
## This section adjusts the actors positions on screen
###############################################################################
  ACTOR_START_LINE = 432        # The left-most position of the first actor
  ACTOR_START_TOP = 88          # The top-most position of the first actor
  ACTOR_STAGGER_HORZ = 8        # The amount to recess each actor to the right
  ACTOR_STAGGER_VERT = 16       # The vertical spacing between characters
  ACTOR_CLASS_POS_STAGGER = 16  # The extra distance to the right for class position
  ACTOR_STEP_IN_DISTANCE = 64   # The distance an actor steps in during an action
  ACTOR_STEP_IN_RATE = 8        # The rate at which the actor covers the distance
 
###############################################################################
## This section controls when an actor displays their stepping animation
###############################################################################
  # If an actor has a state applied which has a restriction value listed in
  # the following array, the actor will not display their stepping animation
  # until the state is removed.
  NO_STEP_RESTRICTIONS = [4, 5]
  # Has the same effect as above, but halts the stepping animation based on
  # the state's ID, without regard to the state's restriction.
  NO_STEP_STATES = []
 
###############################################################################
## This section adjusts the appearance of an actor when dead
###############################################################################
  ACTOR_DEATH_OPACITY = 175              # The tranparency of dead actors
  ACTOR_DEATH_ANGLE = 270                # The angle to rotate the body
  ACTOR_DEATH_TONE = [128, 128, 128, 0]  # A color tone to apply to the image
  ACTOR_DEATH_OFFSET_X = -8              # A horizontal offset to move the body by
  ACTOR_DEATH_OFFSET_Y = -8              # A vertical offset to move the body by
 
###############################################################################
## This section adjusts the actor's shadow
###############################################################################
  ACTOR_SHADOW_IMAGE = "Shadow"       # The name of the system image to use
  ACTOR_SHADOW_CUSTOM_PICTURE = nil   # The name of a resource picture to use instead; nil to use system image
  ACTOR_SHADOW_OFFSET_X = 0           # The horizontal offset to the actor's position
  ACTOR_SHADOW_OFFSET_Y = 8           # The vertical offset to the actor's position
  ACTOR_DEATH_SHADOW_OFFSET_X = 8     # Additional X offset added when dead
  ACTOR_DEATH_SHADOW_OFFSET_Y = 2     # Additional Y offset added when dead
 
###############################################################################
## This section adjusts the victory dance
###############################################################################
  VICTORY_DANCE_JUMP_HEIGHT = 16    # The height of the jump
  VICTORY_DANCE_JUMP_INCREMENT = 2  # The rate of jump movement
  VICTORY_DANCE_JUMP_HOVER = 4      # The number of frames to wait in the air
  VICTORY_DANCE_JUMP_WAIT = 70      # The number of frames before jumping again
  VICTORY_DANCE_JUMP_TWIST = true   # True to twirl when jumping; false to face forward
 
###############################################################################
## This section adjusts the battle floor location
###############################################################################
  BATTLE_FLOOR_TOP = 0  # Allows you to set the top of the battle floor
 
###############################################################################
## This section adjusts enemy images
###############################################################################
  # Specify the ID of enemies who should have their image flipped in battle
  FLIP_ENEMY = [
                2, 3, 4, 5, 8, 10, 12, 13, 14, 16, 17,
                18, 19, 21, 22, 23, 25, 28, 29,
               
               ]
 
end
###############################################################################
##  MAIN SCRIPT
###############################################################################
##  EDITS BEYOND THIS POINT ARE AT YOUR OWN RISK!!!
###############################################################################
class Game_Battler
  alias reedo_sbs_gb_add_state add_state
  def add_state(state_id)
    reedo_sbs_gb_add_state(state_id)
    if self.is_a?(Game_Actor) and $scene.is_a?(Scene_Battle)
      bs = $scene.reedo_get_battle_sprite(reedo_battle_sprite_id)
      return if bs == nil
      bs.reedo_bc_sprite.character.step_anime = reedo_check_step_anime
      reedo_update_life_state
    end
  end
 
  alias reedo_sbs_gb_remove_state remove_state
  def remove_state(state_id)
    reedo_sbs_gb_remove_state(state_id)
    if self.is_a?(Game_Actor) and $scene.is_a?(Scene_Battle)
      bs = $scene.reedo_get_battle_sprite(reedo_battle_sprite_id)
      return if bs == nil
      bs.reedo_bc_sprite.character.step_anime = reedo_check_step_anime
      reedo_update_life_state
    end   
  end
 
  def reedo_check_step_anime
    return false if dead?
    for state in states
      return false if REEDO_SBS::NO_STEP_STATES.include?(state.id)
      return false if REEDO_SBS::NO_STEP_RESTRICTIONS.include?(state.restriction)
    end
    return true
  end
 
  def reedo_update_life_state(battle_sprite = nil)
    if dead?
      if !@reedo_dead_set
        reedo_set_dead_state(battle_sprite)
        @reedo_dead_set = true
      end
    else
      if @reedo_dead_set
        reedo_set_live_state(battle_sprite)
        @reedo_dead_set = false
      end
    end
  end
 
  def reedo_reset_dead_set
    @reedo_dead_set = false
  end
 
  def reedo_set_dead_state(battle_sprite = nil)
    if battle_sprite == nil
      bs = $scene.reedo_get_battle_sprite(reedo_battle_sprite_id)
    else
      bs = battle_sprite
    end
    return if bs == nil
    return if bs.reedo_bc_sprite.is_dead
    bs.reedo_bc_sprite.angle = REEDO_SBS::ACTOR_DEATH_ANGLE
    tone = REEDO_SBS::ACTOR_DEATH_TONE
    bs.reedo_bc_sprite.tone.set(tone[0], tone[1], tone[2], tone[3])
    bs.reedo_bc_sprite.character.opacity = REEDO_SBS::ACTOR_DEATH_OPACITY
    bs.reedo_bc_sprite.character.screen_x += REEDO_SBS::ACTOR_DEATH_OFFSET_X
    bs.reedo_bc_sprite.character.screen_y += REEDO_SBS::ACTOR_DEATH_OFFSET_Y
    bs.reedo_bc_sprite.shadow_sprite.x += REEDO_SBS::ACTOR_DEATH_SHADOW_OFFSET_X
    bs.reedo_bc_sprite.shadow_sprite.y += REEDO_SBS::ACTOR_DEATH_SHADOW_OFFSET_Y   
    bs.reedo_bc_sprite.is_dead = true
  end
 
  def reedo_set_live_state(battle_sprite = nil)
    if battle_sprite == nil
      bs = $scene.reedo_get_battle_sprite(reedo_battle_sprite_id)
    else
      bs = battle_sprite
    end
    return if bs == nil
    return if bs.reedo_bc_sprite.is_dead != true
    bs.reedo_bc_sprite.angle = 0
    bs.reedo_bc_sprite.tone.set(0, 0, 0, 0)
    bs.reedo_bc_sprite.character.opacity = 255
    bs.reedo_bc_sprite.character.screen_x -= REEDO_SBS::ACTOR_DEATH_OFFSET_X
    bs.reedo_bc_sprite.character.screen_y -= REEDO_SBS::ACTOR_DEATH_OFFSET_Y
    bs.reedo_bc_sprite.shadow_sprite.x -= REEDO_SBS::ACTOR_DEATH_SHADOW_OFFSET_X
    bs.reedo_bc_sprite.shadow_sprite.y -= REEDO_SBS::ACTOR_DEATH_SHADOW_OFFSET_Y
    bs.reedo_bc_sprite.is_dead = false
  end
end

class Game_Actor
  attr_accessor :reedo_battle_sprite_id
  attr_accessor :screen_x
  attr_accessor :screen_y
end

class Game_Actors
  def members
    return @data
  end
end

class Game_Troop
  def troop_id
    return @troop_id
  end
end

class Game_Character 
  alias reedo_sbs_gc_screen_x screen_x
  def screen_x
    if $scene.is_a?(Scene_Battle)
      return @battle_screen_x
    else
      return reedo_sbs_gc_screen_x
    end
  end

  alias reedo_sbs_gc_screen_y screen_y
  def screen_y
    if $scene.is_a?(Scene_Battle)
      return @battle_screen_y
    else
      return reedo_sbs_gc_screen_y
    end
  end
 
  def opacity=(value)
    @opacity = value
  end
  def screen_x=(value)
    @battle_screen_x = value
  end
  def screen_y=(value)
    @battle_screen_y = value
  end
  def step_anime
    return @step_anime
  end
  def step_anime=(value)
    @step_anime = value
  end
end

class Sprite_Base
  attr_accessor :reedo_victory_wait
end

class Sprite_Character
  attr_accessor :shadow_sprite
  attr_accessor :is_dead
 
  alias reedo_sbs_sc_dispose dispose
  def dispose
    @shadow_sprite.dispose if @shadow_sprite != nil
    reedo_sbs_sc_dispose
  end
 
  def create_shadow_sprite
    @shadow_sprite = Sprite_Base.new(self.viewport)
    bmp = Cache.picture(REEDO_SBS::ACTOR_SHADOW_CUSTOM_PICTURE) if REEDO_SBS::ACTOR_SHADOW_CUSTOM_PICTURE != nil
    bmp = Cache.system(REEDO_SBS::ACTOR_SHADOW_IMAGE) if bmp == nil
    @shadow_sprite.bitmap = bmp
    @shadow_sprite.src_rect = Rect.new(0, 0, bmp.width, bmp.height)
    @shadow_sprite.x = self.x - self.ox + REEDO_SBS::ACTOR_SHADOW_OFFSET_X
    @shadow_sprite.y = self.y - self.oy + REEDO_SBS::ACTOR_SHADOW_OFFSET_Y
    @shadow_sprite.z = self.z - 1
  end
 
  alias reedo_sbs_sc_update update
  def update
    reedo_sbs_sc_update
    @shadow_sprite.update if @shadow_sprite != nil
  end
end

class Sprite_Battler
  attr_accessor :reedo_bc_sprite

  alias reedo_sbs_sb_dispose dispose
  def dispose
    @reedo_bc_sprite.dispose if @reedo_bc_sprite != nil
    reedo_sbs_sb_dispose
  end
 
  alias reedo_sbs_sb_update update
  def update
    reedo_sbs_sb_update
    @reedo_bc_sprite.update if @reedo_bc_sprite != nil
  end
end

class Spriteset_Battle
  alias reedo_sbs_ssb_create_battlefloor create_battlefloor
  def create_battlefloor
    reedo_sbs_ssb_create_battlefloor
    @battlefloor_sprite.y = REEDO_SBS::BATTLE_FLOOR_TOP
  end
 
  alias reedo_sbs_ssb_create_actors create_actors
  def create_actors
    if @actor_sprites != nil
      dispose_actors
    end
    reedo_sbs_ssb_create_actors
    @reedo_start_points = {}
    @actor_sprites = []
    i = 1
    for actor in $game_party.members
      actor.reedo_battle_sprite_id = i - 1         
      gc = Game_Character.new
      gc.set_graphic(actor.character_name, actor.character_index)
      gc.set_direction(4)
      gc.screen_x = 0; gc.screen_y = 0
      bc = Sprite_Character.new(@viewport1, gc)
      gc.screen_x = REEDO_SBS::ACTOR_START_LINE +
                    ($data_classes[actor.class_id].position *
                    REEDO_SBS::ACTOR_CLASS_POS_STAGGER) +
                    ((i - 1) * REEDO_SBS::ACTOR_STAGGER_HORZ)
      gc.screen_y = REEDO_SBS::ACTOR_START_TOP + ((bc.height * i) +
                    (REEDO_SBS::ACTOR_STAGGER_VERT * i))
      actor.screen_x = gc.screen_x; actor.screen_y = gc.screen_y
      sb = Sprite_Battler.new(@viewport1, actor)
      sb.reedo_victory_wait = REEDO_SBS::VICTORY_DANCE_JUMP_HOVER
      sb.reedo_bc_sprite = bc
      gc.step_anime = actor.reedo_check_step_anime
      @reedo_start_points[sb] = [gc.screen_x, gc.screen_y]
      @actor_sprites.push(sb)   
      bc.update
      bc.create_shadow_sprite
      actor.reedo_reset_dead_set
      actor.reedo_update_life_state(sb)
      i += 1
    end
  end
 
  alias reedo_sbs_ssb_create_enemies create_enemies
  def create_enemies
    reedo_sbs_ssb_create_enemies
    for sprite in @enemy_sprites
      if REEDO_SBS::FLIP_ENEMY.include?(sprite.battler.enemy_id)
        sprite.mirror = true
      end
    end
  end
 
  def update_actors
    if $scene.is_a?(Scene_Battle)
      if $scene.victory_dance_time
        reedo_update_victory_dance
      end
    end   
    for sprite in @actor_sprites
      sprite.reedo_bc_sprite.character.update
      sprite.update
    end
  end
 
  def reedo_get_battle_sprite(sprite_id)
    return nil if !sprite_id.is_a?(Fixnum)
    return nil if sprite_id < 0
    return nil if sprite_id >= @actor_sprites.length
    return @actor_sprites[sprite_id]
  end
 
  def reedo_update_victory_dance
    if @victory_delta == nil
      @victory_delta = -REEDO_SBS::VICTORY_DANCE_JUMP_INCREMENT
      for sp in @actor_sprites
        sp.reedo_bc_sprite.character.step_anime = false
      end
    end
    for sp in @actor_sprites
      next if sp.battler.reedo_check_step_anime == false
      stpt = @reedo_start_points[sp]
      if sp.reedo_bc_sprite.character.screen_y < stpt[1] - REEDO_SBS::VICTORY_DANCE_JUMP_HEIGHT
        if sp.reedo_victory_wait <= 0
          @victory_delta = REEDO_SBS::VICTORY_DANCE_JUMP_INCREMENT
          sp.reedo_victory_wait = REEDO_SBS::VICTORY_DANCE_JUMP_WAIT
        else
          @victory_delta = 0
          sp.reedo_victory_wait -= 1
        end
      end
      if sp.reedo_bc_sprite.character.screen_y > stpt[1]
        if sp.reedo_victory_wait <= 0
          @victory_delta = -REEDO_SBS::VICTORY_DANCE_JUMP_INCREMENT
          sp.reedo_victory_wait = REEDO_SBS::VICTORY_DANCE_JUMP_HOVER
          sp.reedo_bc_sprite.character.step_anime = false
        else
          @victory_delta = 0
          sp.reedo_victory_wait -= 1
          sp.reedo_bc_sprite.character.step_anime = true if !sp.reedo_bc_sprite.character.step_anime
        end
      end
      if REEDO_SBS::VICTORY_DANCE_JUMP_TWIST
        if sp.reedo_bc_sprite.character.screen_y <= stpt[1]
          if (sp.reedo_bc_sprite.character.screen_y - stpt[1]) % (REEDO_SBS::VICTORY_DANCE_JUMP_HEIGHT / 4) == 0
            case sp.reedo_bc_sprite.character.direction
            when 4; sp.reedo_bc_sprite.character.set_direction(2)
            when 2; sp.reedo_bc_sprite.character.set_direction(6)
            when 6; sp.reedo_bc_sprite.character.set_direction(8)
            when 8; sp.reedo_bc_sprite.character.set_direction(4)
            end
          end
        else
          sp.reedo_bc_sprite.character.set_direction(4) if sp.reedo_bc_sprite.character.direction != 4
        end
      end
      sp.reedo_bc_sprite.character.screen_y += @victory_delta
      sp.battler.screen_y += @victory_delta
    end
  end
end

class Scene_Battle
  attr_reader :victory_dance_time
 
  alias reedo_sbs_sb_start start
  def start
    reedo_sbs_sb_start
    @current_party = $game_party.members
  end
 
  alias reedo_sbs_sb_terminate terminate
  def terminate
    reedo_teardown_actors
    reedo_sbs_sb_terminate
  end
 
  alias reedo_sbs_sb_update update
  def update
    if @current_party != $game_party.members
      @spriteset.create_actors
      @current_party = $game_party.members
    end
    reedo_sbs_sb_update
  end
 
  alias reedo_sbs_sb_execute_action_attack execute_action_attack
  def execute_action_attack
    reedo_do_execute_action("attack")
  end

  alias reedo_sbs_sb_execute_action_skill execute_action_skill
  def execute_action_skill
    reedo_do_execute_action("skill")
  end
 
  alias reedo_sbs_sb_execute_action_item execute_action_item
  def execute_action_item
    reedo_do_execute_action("item")
  end
 
  alias reedo_sbs_sb_process_victory process_victory
  def process_victory
    @victory_dance_time = true
    reedo_sbs_sb_process_victory
  end
 
  def reedo_get_battle_sprite(sprite_id)
    return @spriteset.reedo_get_battle_sprite(sprite_id)
  end
 
  def reedo_teardown_actors
    for actor in $game_actors.members
      actor.reedo_battle_sprite_id = nil if actor != nil
    end
  end
 
  def reedo_do_execute_action(action_method)
    targets = @active_battler.action.make_targets
    if @active_battler.is_a?(Game_Actor)
      reedo_actor_step_in
      if REEDO_SBS::SBS_ACTION_ANIMES
        targets.each do |t|
          if t.is_a?(Game_Actor)
            bs = reedo_get_battle_sprite(t.reedo_battle_sprite_id)
            bs.reedo_bc_sprite.character.animation_id = eval("reedo_get_" + action_method + "_animation") if bs != nil
          end
        end
      end
      eval("reedo_sbs_sb_execute_action_" + action_method)
      reedo_actor_step_back
    else
      if REEDO_SBS::SBS_ACTION_ANIMES
        targets.each do |t|
          if t.is_a?(Game_Actor)
            bs = reedo_get_battle_sprite(t.reedo_battle_sprite_id)
            bs.reedo_bc_sprite.character.animation_id = eval("reedo_get_" + action_method + "_animation") if bs != nil
          end
        end
      end
      eval("reedo_sbs_sb_execute_action_" + action_method)
    end
  end
 
  def reedo_get_attack_animation
    return REEDO_SBS::SBS_DEFAULT_ATTACK_ANIME
  end
 
  def reedo_get_skill_animation
    skill = $data_skills[@active_battler.action.skill_id]
    aid = REEDO_SBS::SBS_DEFAULT_SKILL_ANIME
    aid = skill.animation_id if skill.animation_id > 0   
    return aid
  end

  def reedo_get_item_animation
    item = $data_items[@active_battler.action.item_id]
    aid = REEDO_SBS::SBS_DEFAULT_ITEM_ANIME
    aid = item.animation_id if item.animation_id > 0   
    return aid
  end
 
  def reedo_actor_step_in
    delta = 0
    dr = REEDO_SBS::ACTOR_STEP_IN_RATE
    while delta < REEDO_SBS::ACTOR_STEP_IN_DISTANCE
      bs = reedo_get_battle_sprite(@active_battler.reedo_battle_sprite_id)
      return if bs == nil
      bs.reedo_bc_sprite.shadow_sprite.x -= dr
      bs.reedo_bc_sprite.character.screen_x -= dr
      bs.battler.screen_x -= dr
      Graphics.update
      @spriteset.update
      delta += dr
    end
  end
 
  def reedo_actor_step_back
    delta = 0
    dr = REEDO_SBS::ACTOR_STEP_IN_RATE
    while delta < REEDO_SBS::ACTOR_STEP_IN_DISTANCE
      bs = reedo_get_battle_sprite(@active_battler.reedo_battle_sprite_id)
      return if bs == nil
      bs.reedo_bc_sprite.shadow_sprite.x += dr
      bs.reedo_bc_sprite.character.screen_x += dr
      bs.battler.screen_x += dr
      Graphics.update
      @spriteset.update
      delta += dr
    end
  end
end

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
OK, well look for this line in reedo's:

Code: [Select]
      gc.set_graphic(actor.character_name, actor.character_index)

Underneath it, try putting:

Code: [Select]
gc.composite_character = actor.composite_character

and see if that works.

**
Rep: +0/-0Level 81
RMRK Junior
I get this error :

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
Ok, well put this code somewhere in its own slot above the script:

Code: [Select]
class Game_Character
  attr_writer :composite_character
end

**
Rep: +0/-0Level 81
RMRK Junior
It works!
Thank you very much!!  :)

**
Rep: +0/-0Level 81
RMRK Junior
btw, is there also a way to make certain equipment change the look of certain actors only.

Like:

Iron Armour gives Actor #1: \cg[Actor1, 2]
                 but to Actor #2: \cg[Actor2, 2]

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
No, there isn't. Sorry.

*
Rep: +0/-0Level 81
Hey Modern Algebra.

You're scripts are excellent, and I especially love this one.  Is there a way to display an actor in your party as a composite character event, like if they leave your party temporarily and you're able to speak with them in a pub or something, a la Star Ocean?

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
Not built in, but it's a good idea, so I wrote an addon. Just follow the instructions in the header:

Code: [Select]
#==============================================================================
#    Set Event to Actor Graphic
#      Addon for Composite Character Sets / Visual Equipment
#    Version: 1.0
#    Author: modern algebra (rmrk.net)
#    Date: June 1, 2010
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#    Paste this into its own slot in the Script Editor, below Materials but
#   somewhere above Main
#
#    To set an event to actor graphic, use this code in a Script call (third
#   tab of event commands)
#      $game_map.events[event_id].set_to_actor (actor_id)
#          event_id : the ID of the event whose graphic you are changing
#          actor_id : the ID of the actor whose graphic you want the event to
#            have.
#
#    Remember, the event will retain whatever event settings it had originally,
#   including original pose, so if you want the event to be standing still
#   instead of with one leg out, you have to set it up with some graphic prior
#   to changing it by script and choose the pose you want the actor graphic to
#   be in.
#==============================================================================
# ** Game_Event
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - set_to_actor
#==============================================================================

class Game_Event
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Set to Actor Graphic
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def set_to_actor (id)
    @composite_character = $game_actors[id].composite_character.dup
  end
end

*
Rep: +0/-0Level 81
That is so excellently cool.  Thanks!

**
Rep: +0/-0Level 76
RMRK Junior
When i add hair useing a script call. (Attachment 1 aka error). This happens when i equip cloth. (Attachment 2 aka error2) The cloth goes over the hair. If i make its (z) -1 cloth doesnt show at all. XD


Hope you understand any of this.
« Last Edit: June 16, 2010, 08:46:59 PM by mompointk »

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
Um, try making the z of the hair something higher, like 1, or 5.

**
Rep: +0/-0Level 76
RMRK Junior
Um, try making the z of the hair something higher, like 1, or 5.
How would i do that useing the script? Seeing how n is the name and h is for color.

Would i just.....

n = "$WhiteBedHead"
add_graphic_to_actor (1, n, 0, z, 1)

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
umm:

Code: [Select]
add_graphic_to_actor (actor_id, char_name, char_index, char_hue, z)

I think is the order, so:

Code: [Select]
n = "$WhiteBedHead"
add_graphic_to_actor (1, n, 0, 0, 1)

might do the trick. I don't know though - I don't really remember this script.

**
Rep: +0/-0Level 76
RMRK Junior
Yay you did it it works.

*
Rep: +0/-0Level 76
RMRK Junior
Great script... a compatibility fix for use with Battle Engine Melody would be cool though.

http://wiki.pockethouse.com/index.php?title=Battle_Engine_Melody

*
Rep: +0/-0Level 76
RMRK Junior
Great job on the script! But is there a way to set what the actors wear when there's nothing equiped on them? For example when there's no helmet equiped on the actor he will be wearing the hairstyle on him. And i would also like to try and make it actor-specific, different default hair for each actor. Is this possible?

I don't have much scripting knowlege so if there's something I need to add to the script i will apreciate it if you helped :)
« Last Edit: July 02, 2010, 04:52:15 PM by Eedan »

*
Rep: +0/-0Level 75
RMRK Junior
Hey bro, is it possible to make this compatible with Kaduki Battlers using Sprite_Battler  for Sideview Ver3.3c.
I'm working on a kind free roam game like dragon quest 9 using Tankentai because I make a timed hit battle system addon with the Atb which is great. But in all great free roam games you need to have cloth and customizable options and your script works great until you use the battle system. Could you please make it compatible so I can use your cool script.

P.s I did try the 3.3a and it also didn't work.

Sprite_Battler for Sideview Ver3.3c
http://pastebin.com/Zm8Fsykx
« Last Edit: October 08, 2010, 09:01:20 PM by Thomas1 »

**
Rep:
Level 82
Living proof that paradoxes exist in reality.
As I understand it, setting the priority for a graphic on a piece of equipment only affects the graphic in relation to other graphics on that same piece of equipment, correct? That the order in which the equipment items are drawn is determined exclusively by which slot they are equipped in?
Would it be possible to modify the script so that you can use the priority setting to customize that order instead?

For example,
If Character A was wearing Small Gloves and a Huge Baggy Robe, then it would make sense for the gloves to be drawn first, with the robe on top. But if Character B was wearing Mega Gauntlets and a Long-sleeved Shirt, it would be better for the shirt to be drawn first, with the gauntlets on top.
I initially thought this was how the priority setting worked, but after testing it and having my characters equipment drawn in a totally wrong order, I realized that I must have misunderstood the instructions.

I have an idea as to how to make this work, only I don't understand the language well enough to actually modify the script myself. Trying to read the character_graphic method of RPG::Base_Item only succeeded in giving me a headache, and that is one of the methods I'd need to change.

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
Errm, well that is how the priority setting should work. Lower priority are drawn first. So 0 would be the bottom layer, 1 would be the next layer, 2 the next, etc... If that isn't what's happening then that's a problem. Recreate the error in a new project and send it to me and I will see if I can fix it.

**
Rep:
Level 82
Living proof that paradoxes exist in reality.
Nevermind, I figured it out. Stupid mistake on my part, I repeatedly left out one of the numbers in the notes box code, so what I thought was the priority setting was actually the hue setting... my bad. Works fine now, well, technically it always did, I just wasn't using it right, but you get the idea.

**
Rep: +0/-0Level 74
RMRK Junior
In my game, I use events to cycle between different hairstyles and different clothing styles....It's kind of hard to explain here, so could I send you a demo of the problem?

Basically, changing hair should be independent of changing clothes, but when I try to change one the other also changes as well.