Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Enable Scrolling for menu if you have extra party members in Blizz-ABS

Sero

Member

I dont know if this goes here or not.

I changed some things in a script, for the first time, kinda. I made the party able to have 5 members. Not very impressive. But i need the menu to be able to scroll down to the next member. I went to one script and changed this:
Code:
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  This class handles the party. It includes information on amount of gold 
#  and items. Refer to "$game_party" for the instance of this class.
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :actors                   # actors
  attr_reader   :gold                     # amount of gold
  attr_reader   :steps                    # number of steps
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Create actor array
    @actors = []
    # Initialize amount of gold and steps
    @gold = 0
    @steps = 0
    # Create amount in possession hash for items, weapons, and armor
    @items = {}
    @weapons = {}
    @armors = {}
  end
  #--------------------------------------------------------------------------
  # * Initial Party Setup
  #--------------------------------------------------------------------------
  def setup_starting_members
    @actors = []
    for i in $data_system.party_members
      @actors.push($game_actors[i])
    end
  end
  #--------------------------------------------------------------------------
  # * Battle Test Party Setup
  #--------------------------------------------------------------------------
  def setup_battle_test_members
    @actors = []
    for battler in $data_system.test_battlers
      actor = $game_actors[battler.actor_id]
      actor.level = battler.level
    Here ->gain_weapon(battler.weapon_id, 1)
      gain_armor(battler.armor1_id, 1)
      gain_armor(battler.armor2_id, 1)
      gain_armor(battler.armor3_id, 1)
      gain_armor(battler.armor4_id, 1)
      gain_armor(battler.armor5_id, 1)
      actor.equip(0, battler.weapon_id)
      actor.equip(1, battler.armor1_id)
      actor.equip(2, battler.armor2_id)
      actor.equip(3, battler.armor3_id)
      actor.equip(4, battler.armor4_id)
      actor.equip(5, battler.armor4_id)<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<here
      actor.recover_all
      @actors.push(actor)
    end
    @items = {}
    for i in 1...$data_items.size
      if $data_items[i].name != ""
        occasion = $data_items[i].occasion
        if occasion == 0 or occasion == 1
          @items[i] = 99
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh Party Members
  #--------------------------------------------------------------------------
  def refresh
    # Actor objects split from $game_actors right after loading game data
    # Avoid this problem by resetting the actors each time data is loaded.
    new_actors = []
    for i in 0...@actors.size
      if $data_actors[@actors[i].id] != nil
        new_actors.push($game_actors[@actors[i].id])
      end
    end
    @actors = new_actors
  end
  #--------------------------------------------------------------------------
  # * Getting Maximum Level
  #--------------------------------------------------------------------------
  def max_level
    # If 0 members are in the party
    if @actors.size == 0
      return 0
    end
    # Initialize local variable: level
    level = 0
    # Get maximum level of party members
    for actor in @actors
      if level < actor.level
        level = actor.level
      end
    end
    return level
  end
  #--------------------------------------------------------------------------
  # * Add an Actor
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def add_actor(actor_id)
    # Get actor
    actor = $game_actors[actor_id]
    # If the party has less than 5 members and this actor is not in the party
    if @actors.size < 5 and not @actors.include?(actor)
      # Add actor
      @actors.push(actor)
      # Refresh player
      $game_player.refresh
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Actor
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def remove_actor(actor_id)
    # Delete actor
    @actors.delete($game_actors[actor_id])
    # Refresh player
    $game_player.refresh
  end
  #--------------------------------------------------------------------------
  # * Gain Gold (or lose)
  #     n : amount of gold
  #--------------------------------------------------------------------------
  def gain_gold(n)
    @gold = [[@gold + n, 0].max, 9999999].min
  end
  #--------------------------------------------------------------------------
  # * Lose Gold
  #     n : amount of gold
  #--------------------------------------------------------------------------
  def lose_gold(n)
    # Reverse the numerical value and call it gain_gold
    gain_gold(-n)
  end
  #--------------------------------------------------------------------------
  # * Increase Steps
  #--------------------------------------------------------------------------
  def increase_steps
    @steps = [@steps + 1, 9999999].min
  end
  #--------------------------------------------------------------------------
  # * Get Number of Items Possessed
  #     item_id : item ID
  #--------------------------------------------------------------------------
  def item_number(item_id)
    # If quantity data is in the hash, use it. If not, return 0
    return @items.include?(item_id) ? @items[item_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Get Number of Weapons Possessed
  #     weapon_id : weapon ID
  #--------------------------------------------------------------------------
  def weapon_number(weapon_id)
    # If quantity data is in the hash, use it. If not, return 0
    return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Get Amount of Armor Possessed
  #     armor_id : armor ID
  #--------------------------------------------------------------------------
  def armor_number(armor_id)
    # If quantity data is in the hash, use it. If not, return 0
    return @armors.include?(armor_id) ? @armors[armor_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Gain Items (or lose)
  #     item_id : item ID
  #     n       : quantity
  #--------------------------------------------------------------------------
  def gain_item(item_id, n)
    # Update quantity data in the hash.
    if item_id > 0
      @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Weapons (or lose)
  #     weapon_id : weapon ID
  #     n         : quantity
  #--------------------------------------------------------------------------
  def gain_weapon(weapon_id, n)
    # Update quantity data in the hash.
    if weapon_id > 0
      @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Armor (or lose)
  #     armor_id : armor ID
  #     n        : quantity
  #--------------------------------------------------------------------------
  def gain_armor(armor_id, n)
    # Update quantity data in the hash.
    if armor_id > 0
      @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # * Lose Items
  #     item_id : item ID
  #     n       : quantity
  #--------------------------------------------------------------------------
  def lose_item(item_id, n)
    # Reverse the numerical value and call it gain_item
    gain_item(item_id, -n)
  end
  #--------------------------------------------------------------------------
  # * Lose Weapons
  #     weapon_id : weapon ID
  #     n         : quantity
  #--------------------------------------------------------------------------
  def lose_weapon(weapon_id, n)
    # Reverse the numerical value and call it gain_weapon
    gain_weapon(weapon_id, -n)
  end
  #--------------------------------------------------------------------------
  # * Lose Armor
  #     armor_id : armor ID
  #     n        : quantity
  #--------------------------------------------------------------------------
  def lose_armor(armor_id, n)
    # Reverse the numerical value and call it gain_armor
    gain_armor(armor_id, -n)
  end
  #--------------------------------------------------------------------------
  # * Determine if Item is Usable
  #     item_id : item ID
  #--------------------------------------------------------------------------
  def item_can_use?(item_id)
    # If item quantity is 0
    if item_number(item_id) == 0
      # Unusable
      return false
    end
    # Get usable time
    occasion = $data_items[item_id].occasion
    # If in battle
    if $game_temp.in_battle
      # If useable time is 0 (normal) or 1 (only battle) it's usable
      return (occasion == 0 or occasion == 1)
    end
    # If useable time is 0 (normal) or 2 (only menu) it's usable
    return (occasion == 0 or occasion == 2)
  end
  #--------------------------------------------------------------------------
  # * Clear All Member Actions
  #--------------------------------------------------------------------------
  def clear_actions
    # Clear All Member Actions
    for actor in @actors
      actor.current_action.clear
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if Command is Inputable
  #--------------------------------------------------------------------------
  def inputable?
    # Return true if input is possible for one person as well
    for actor in @actors
      if actor.inputable?
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # * Determine Everyone is Dead
  #--------------------------------------------------------------------------
  def all_dead?
    # If number of party members is 0
    if $game_party.actors.size == 0
      return false
    end
    # If an actor is in the party with 0 or more HP
    for actor in @actors
      if actor.hp > 0
        return false
      end
    end
    # All members dead
    return true
  end
  #--------------------------------------------------------------------------
  # * Slip Damage Check (for map)
  #--------------------------------------------------------------------------
  def check_map_slip_damage
    for actor in @actors
      if actor.hp > 0 and actor.slip_damage?
        actor.hp -= [actor.maxhp / 100, 1].max
        if actor.hp == 0
          $game_system.se_play($data_system.actor_collapse_se)
        end
        $game_screen.start_flash(Color.new(255,0,0,128), 4)
        $game_temp.gameover = $game_party.all_dead?
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Random Selection of Target Actor
  #     hp0 : limited to actors with 0 HP
  #--------------------------------------------------------------------------
  def random_target_actor(hp0 = false)
    # Initialize roulette
    roulette = []
    # Loop
    for actor in @actors
      # If it fits the conditions
      if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
        # Get actor class [position]
        position = $data_classes[actor.class_id].position
        # Front guard: n = 4; Mid guard: n = 3; Rear guard: n = 2
        n = 4 - position
        # Add actor to roulette n times
        n.times do
          roulette.push(actor)
        end
      end
    end
    # If roulette size is 0
    if roulette.size == 0
      return nil
    end
    # Spin the roulette, choose an actor
    return roulette[rand(roulette.size)]
  end
  #--------------------------------------------------------------------------
  # * Random Selection of Target Actor (HP 0)
  #--------------------------------------------------------------------------
  def random_target_actor_hp0
    return random_target_actor(true)
  end
  #--------------------------------------------------------------------------
  # * Smooth Selection of Target Actor
  #     actor_index : actor index
  #--------------------------------------------------------------------------
  def smooth_target_actor(actor_index)
    # Get an actor
    actor = @actors[actor_index]
    # If an actor exists
    if actor != nil and actor.exist?
      return actor
    end
    # Loop
    for actor in @actors
      # If an actor exists
      if actor.exist?
        return actor
      end
    end
  end
end

So all i did was copy and paste the
Code:
 actor.equip(4, battler.armor4_id
and changed the first four to a five. and the same thing to
Code:
gain_armor(battler.armor4_id, 1)


and i changed
Code:
#==============================================================================
# BlizzABS
#------------------------------------------------------------------------------
#  This is the master control, configuration, utility and battle process
#  module for Blizz-ABS.
#==============================================================================

module BlizzABS
  
  #============================================================================
  # BlizzABS::Control
  #----------------------------------------------------------------------------
  #  This module provides in-game control configurations.
  #============================================================================
  
  module Control
    
    # using other controls instead of arrow keys
    CUSTOM_CONTROLS = true
    # RMXP default controls will be replaced completely with Blizz-ABS controls
    DISABLE_DEFAULT = true
    # you can skip this if you have set CUSTOM_CONTROLS to false
    # setup the controls as array, but with prefix and suffix "
    # i.e.: Let T and R be for cancel => CANCEL = "[Let['T'], Let['R']]"
    # for more info about read 1.1.1. of the manual
    UP       = "[Let['W']]" # move up
    LEFT     = "[Let['A']]" # move left
    DOWN     = "[Let['S']]" # move down
    RIGHT    = "[Let['D']]" # move right
    PREVPAGE = "[Let['Q']]" # previous page
    NEXTPAGE = "[Let['E']]" # next page
    CONFIRM  = "[Let['H']]" # confirm selections / pick up items
    CANCEL   = "[Let['J']]" # cancel selections
    ATTACK   = "[Let['K']]" # attacking
    DEFEND   = "[Let['L']]" # defending (hold)
    SKILL    = "[Let['U']]" # use skill
    ITEM     = "[Let['I']]" # use item
    SELECT   = "[Let['O']]" # change leader
    HUD      = "[Let['Z']]" # HUD on/off if enabled
    HOTKEY   = "[Let['X']]" # hotkey display on/off if enabled
    MINIMAP  = "[Let['C']]" # toggle minimap mode if enabled
    RUN      = "[Let['P']]" # running (hold)
    SNEAK    = "[Dot]"      # sneaking (hold)
    JUMP     = "[Comma]"    # jumping
    TURN     = "[Let['M']]" # turning around without moving (hold)
  end
  
  #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  # BlizzABS::Config
  #----------------------------------------------------------------------------
  #  This module provides Blizz-ABS configurations.
  #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  
  module Config
    
    # should party members follow the leader on the map
    CATERPILLAR = true
    # how many party member do you use
    MAX_PARTY = 5 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<This from 4 to 5
    # include all actor IDs who are animated when standing
    ANIMATED_IDS = []
    # 0 -> 32 pixel tiles, 1 -> 16,  2 -> 8, 3 -> 4, 4 -> 2, 5 -> 1
    # careful anything higher than 1 will limit the max speed of char movement
    # 0 - max: 6, 1 - max: 6, 2 - max: 5, 3 - max: 4, 4 - max: 3, 5 - max: 2
    # I recommend using 2 if you have allies else you can use 3
    # note that this can also cause problems with running and sneaking
    PIXEL_MOVEMENT_RATE = 0
    # will make the force movement command ALWAYS work for 32 pixel tiles
    REPAIR_MOVEMENT = true
    # enable or disable moving in all 8 directions
    EIGHT_WAY_MOVEMENT = true
    # the normal moving speed (4 is default)
    NORMAL_SPEED = 4
    # the speed of running (set to 0 to disable)
    RUN_SPEED = 5
    # the speed of sneaking (set to 0 to disable)
    SNEAK_SPEED = 3
    # how many squares should the player jump (set to 0 to disable)
    JUMPING = 2
    # the terrain tag of tiles where the player can't jump over
    JUMP_TAG = 8
    # measured in map squares
    PERCEPTION_RANGE = 5
    # the terrain tag of "walls" (enemies can't see through walls, only hear)
    WALL_TAG = 8
    # turns HUD on or off
    HUD_ENABLED = true
    # 0, 1, or 2 (slightly different drawing method of the bars)
    HUD_TYPE = 0
    # 0 = upper left corner, 1 = upper right corner
    HUD_POSITION = 0
    # enables minimap
    MINIMAP = true
    # enables intelligent minimap to save map loading time
    INTELLIGENT_PASSABILTY = true
    # how much time will pass until an enemy respawns (0 for no respawn)
    RESPAWN_TIME = 10
    # the terrain tag of tiles where enemies can't respawn
    NO_ENEMY_TAG = 8
    # how many seconds will dropped stuff stay (0xFFFF for "infinite")
    ITEM_TIME = 30
    # sound played when picking up items ("NAME", VOLUME, PITCH)
    ITEM_PICKUP_SOUND_FILE = RPG::AudioFile.new('056-Right02', 80, 100)
    # makes enemies drop gold, specify an icon for display here
    DROP_GOLD = ''
    # map IDs where ABSEAL is disabled
    DISABLE_ANTI_LAG_IDS = []
    # strength of delag (1 is most powerful and not recommended)
    FACTOR = 3
    # stops update of events with no spriteset
    ABSEAL_AUTOKILL = true
    # restores the character's HP/SP/Status on Level Up
    HEAL_ON_LVLUP = true
    # displays LvUp on Level Up
    DISPLAY_LVLUP = true
    # animation ID of the animation shown when a player levels up
    LVLUP_ANIMATION_ID = 0
    # animation ID of the animation shown when an enemy is on the run
    FLEE_LOOP_ANIMATION_ID = 0
    # shows attack/skill/item animation
    ANIMATIONS = true
    # enables or disables the sprites during action of for actors
    ACTOR_ACTION_SPRITES = false
    # enables or disables the sprites during action of enemies
    ENEMY_ACTION_SPRITES = false
    # enables or disables the extra sprites for each weapon (actors only)
    WEAPON_SPRITES = false
    # enables or disables the sprites during running (player and allies)
    RUNNING_SPRITES = false
    # enables or disables the sprites during sneaking (player and allies)
    SNEAKING_SPRITES = false
    # enables or disables the sprites during sneaking (player and allies)
    JUMPING_SPRITES = false
    # small animations (set to true to size animations down to 50%)
    SMALL_ANIMATIONS = true
    # use also different tint colors for the pre-menu
    MENU_COLOR_TINT = 0
    # attack sprite (for actors), first row y offset if necessary
    ACTOR_SPRITE_Y_OFFSET = 0
    # attack sprite (for enemies), first row y offset if necessary
    ENEMY_SPRITE_Y_OFFSET = 0
    # 0 = never, 1 = no enemies, 2 = enemies dead, 3 = enemies within ABSEAL dead
    DISABLE_ABS_MODE = 1
    # [type, range], 0 = no data, 1 = in name, 2 = in description
    WEAPON_DATA_MODE = [0, 0]
    # [type, explode range, range] 0 = no data, 1 = in name, 2 = in description
    SKILL_DATA_MODE = [0, 0, 0]
    # [type, explode range, range] 0 = no data, 1 = in name, 2 = in description
    ITEM_DATA_MODE = [0, 0, 0]
  end
 
But when i try, the members all appear on the field but the last one doesn't appear on the menu screen. So basically, Basil, Gloria, Felix, Aluxes and Estelle appear. But Estelle doesn't appear in the menu. So i would need to scroll down. Can someone help me?
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top