Maker Palace

¡El Reino del RpgMaker y del Ocio!
 
ÍndiceBuscarGrupos de UsuariosScriptsRecursosTutorialesPalaceJuegosPalaceWikiFAQRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Temas similares
Buscar
 
 

Resultados por:
 
Rechercher Búsqueda avanzada
Últimos temas
» Reparación de Conjuros
por kyonides-arkanthos Jue Oct 12, 2017 12:22 am

» Screenshot del nuevo KUnits XP oon menú
por LinkLuis55 Sáb Sep 23, 2017 10:03 pm

» Dando una vuelta por acá
por LinkLuis55 Dom Ago 20, 2017 2:56 pm

» Heroes del Crimen 2 DEMO
por jasuso Mar Ago 01, 2017 12:04 am

» The Legend of Celestia II: A World of Twilight Shadows Demo
por Jlopez_96 Vie Jul 28, 2017 6:20 pm

» The Legend of Celestia: Four Cristals
por Jlopez_96 Mar Abr 25, 2017 4:59 pm

» [VXAce] Burando Doragon
por gantzer49 Dom Abr 23, 2017 7:43 pm

Recomendados
RPG en RPG Maker
La importancia de un Backup
Que requiere un sistema de Batalla para ser exitoso
9 Minutos de Juegos por fans
Guía de Subforos para Tontos de Maker Palace
Indice de Scripts Locales XP
Falcao Pearl ABS Liquid
¿Quién está en línea?
En total hay 10 usuarios en línea: 0 Registrados, 0 Ocultos y 10 Invitados :: 1 Motor de búsqueda

Ninguno

La mayor cantidad de usuarios en línea fue 179 el Mar Ago 30, 2011 10:06 pm.
MiniChat
Mejores posteadores
Raiden (3346)
 
DaviX (2740)
 
Frikilangelo (2461)
 
SagahonArturo (1806)
 
Falcao (1775)
 
kyonides-arkanthos (1768)
 
Mur-mai-der (1755)
 
Ares (1613)
 
LinkLuis55 (1558)
 
Webmaster24 (1354)
 
Afiliados
Crear foro Mundo Maker Foro de anime y RM2k3/XP/VX Computer mix
Flag Counter
free counters
Visitas


Comparte | 
 

 EKstra Heroes XP

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
kyonides-arkanthos
Lord Guru Maker
Lord Guru Maker
avatar

Cantidad de envíos : 1768
Miembro desde : 03/02/2010
Sexo : Masculino

Maker : RMXP


MensajeTema: EKstra Heroes XP   Vie Jul 29, 2011 5:01 am

EKstra Heroes XP
por Kyonides Arkanthos
Versión 0.6.4


Simplemente les permite configurar su juego para que les permita predefinir cuántos equipos pueden tener los jugadores como máximo en una partida.

De momento están incluidos todos los scripts principales del XP (en versiones modificadas) excepto Scene_Battle y Scene_Map. Aún no hay una interfaz completa para cambiar de grupos a voluntad para ir por el mapa o para ir a luchar, pero ya la hay y sí se puede agregar héroes sin que tengan que hacer algo maś que lo que siempre han hecho para incorporarlos a un equipo.

Llamado al script de visualización de los equipos de héroes:

$scene = Scene_Parties.new

Código:
#  EKstra Heroes XP
#  by Kyonides-Arkanthos
#  v 0.6.4 - 08.03.2011

#  Script Call:  $scene = Scene_Parties.new

module Parties
  MAX, TEAMMAX, DEFAULTNAME = 3, 4, 'Team Unknown'
  def self.exclude_empty
    party = $game_party.actors.dup
    party.delete_if {|k,v| v == []}
  end
end

module ArrayAddOn
  attr_accessor :name
end

module SpriteAddOn
  def dispose
    self.bitmap.dispose if !self.bitmap.nil?
    super
  end
end

class Game_Party
  def initialize
    @actors = {} # Now Actors is a Hash
    Parties::MAX.times {|n| @actors[n] = []}
    @gold = 0
    @steps = 0
    @items = {}
    @weapons = {}
    @armors = {}
  end

  def actors=(party)
    return if !party.is_a?(Hash)
    @actors = party
  end

  def teams_names() @actors.map {|k,v| @actors[k].name} end

  def heroes_names() @actors.map {|k,v| @actors[k].map {|v| v.name}} end

  def setup_starting_members
    @actors = {}
    Parties::MAX.times {|n| @actors[n] = []
      @actors[n].extend ArrayAddOn; @actors[n].name = Parties::DEFAULTNAME}
    $data_system.party_members.each {|i| @actors[0] << $game_actors[i]}
  end

  def refresh
    new_actors = {}
    Parties::MAX.times do |n|
      new_actors[n] = []
      new_actors[n].extend ArrayAddOn
      new_actors[n].name = Parties::DEFAULTNAME
      for i in 0...@actors[n].size
        if $data_actors[@actors[n][i].id] != nil
          new_actors[n] << $game_actors[@actors[n][i].id]
        end
      end
    end
    @actors = new_actors
  end

  def add_actor(actor_id)
    Parties::MAX.times do |n|
      break if @actors[n].include?($game_actors[actor_id])
      next if @actors[n].size == Parties::TEAMMAX
      @actors[n] << $game_actors[actor_id]
      $game_player.refresh
      break
    end
  end

  def remove_actor(actor_id)
    @actors.each do |k,v|
      next if !v.include?(actor_id)
      v.delete actor_id
      $game_player.refresh
    end
  end

  def all_dead?
    return false if $game_party.actors.keys.size == 0
    @actors[0].each {|actor| return false if actor.hp > 0}
    return true
  end

  def teams_dead?
    return false if $game_party.actors.keys.size == 0
    Parties::MAX.times do |n|
      @actors[n].each {|actor| return false if actor.hp > 0}
    end
    return true
  end

  def check_map_slip_damage
    for actor in @actors[0]
      break unless actor.hp > 0 and actor.slip_damage?
      actor.hp -= [actor.maxhp / 100, 1].max
      $game_system.se_play($data_system.actor_collapse_se) if actor.hp == 0
      $game_screen.start_flash(Color.new(255,0,0,128), 4)
      $game_temp.gameover = $game_party.all_dead?
    end
  end

  def smooth_target_actor(party_index, actor_index)
    actor = @actors[party_index][actor_index]
    return actor if actor != nil and actor.exist?
    for actor in @actors[party_index]
      return actor if actor.exist?
    end
  end
end

class Game_Hero < Game_Character
  attr_accessor :fixed, :x, :y, :real_x, :real_y
  def initialize(index, party_index=nil)
    super()
    @index, @party_index, @fixed = index, party_index, false
    # Character's Direction Change Timer : Integer
    @direction_count = Graphics.frame_rate * 3
    set_character_graphic
  end

  def update
    if @walk_anime
      @anime_count += 1.5
    elsif @step_anime
      @anime_count += 1
    end
    # If animation count exceeds maximum value
    # * Maximum value is move speed * 1 taken from basic value 18
    if @anime_count > 18 - @move_speed * 2
      # If stop animation is OFF when stopping
      if !@step_anime and @stop_count > 0
        @pattern = @original_pattern
      else
        @pattern = (@pattern + 1) % 4
      end
      @anime_count = 0
    end
    (@direction_count -= 1; return) if @direction_count > 0
    if @direction_count == 0
      @direction = @direction < 8 ? @direction + 2 : 2
      @direction = 2 if @fixed
      @direction_count = Graphics.frame_rate * 3
    end
    return if @starting or lock?
  end

  def refresh
    if $game_party.actors.size == 0 or @index > $game_party.actors.size-1
      @character_name, @character_hue = '', 0
      return
    end
    set_character_graphic
    @opacity, @blend_type = 255, 0
  end

  def set_character_graphic
    p, i = @party_index, @index
    actor = p.nil? ? $game_party.actors[i] : $game_party.actors[p][i]
    @character_name, @character_hue = actor.character_name, actor.character_hue
  end

  def move_up(turn_enabled=true) @real_y -= 4 end

  def move_down(turn_enabled=true) @real_y += 4 end

  def screen_x() @real_x end

  def screen_y() @real_y end
end

class Game_Player
  def refresh
    if $game_party.actors.keys.size == 0
      @character_name = ""
      @character_hue = 0
      return
    end
    actor = $game_party.actors[0][0]
    @character_name = actor.character_name
    @character_hue = actor.character_hue
    @opacity = 255
    @blend_type = 0
  end
end

class Sprite_CharacterAnime < RPG::Sprite
  attr_accessor :character, :id
  def initialize(viewport, character=nil, x=16, y=48)
    super(viewport)
    @character, @tile_id = character, 0
    self.x, self.y, self.z = x, y, 5000
    update
  end

  def update
    super
    if @character_name != @character.character_name
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      self.bitmap = RPG::Cache.character(@character.character_name,
        @character.character_hue)
    end
    @cw = bitmap.width / 4
    @ch = bitmap.height / 4
    self.ox, self.oy = @cw / 2, @ch
    self.visible = true
    sx = @character.pattern * @cw
    sy = (@character.direction - 2) / 2 * @ch
    self.src_rect.set(sx, sy, @cw, @ch)
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.x, self.y = @character.screen_x, @character.screen_y
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
  end
end

class Sprite_TeamName < Sprite
  include SpriteAddOn
  def initialize(viewport, x, y, w, h, name, align=0)
    super(viewport)
    self.bitmap = Bitmap.new(w, h)
    self.x, self.y, self.z, @width, @height = x, y, 2000, w, h
    self.visible, @name, @align = true, name, align
    @color = [255, 255, 255, 255]
    update
  end

  def update
    super
    self.bitmap.clear
    self.bitmap.font.name = 'Liberation Serif' || 'Times New Roman'
    self.bitmap.font.color.set(@color[0], @color[1], @color[2], @color[3])
    self.bitmap.draw_text(self.bitmap.rect, @name, @align)
  end

  def set_color(red, green, blue, alpha=255)
    @color = [red, green, blue, alpha]
  end
end

class Sprite_Help < Sprite
  include SpriteAddOn
  def initialize(viewport, x, y, width, height=32)
    super(viewport)
    self.bitmap = Bitmap.new(width, height)
    self.x, self.y, self.z, @width, @height = x, y, 5000, width, height
  end

  def set_text(text, align=0)
    if text != @text or align != @align
      self.bitmap.clear
      self.bitmap.font.name = 'Liberation Sans' || 'Times New Roman'
      self.bitmap.font.bold = true
      self.bitmap.font.color = Color.new(255, 255, 255)
      self.bitmap.draw_text(4, 0, @width-40, @height, text, align)
      @text, @align, @actor = text, align, nil
    end
    self.visible = true
  end
end

class Window_MenuStatus
  def initialize(index=0)
    super(0, 0, 480, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.active, self.index, @actor_index = false, -1, index
    refresh
  end

  def refresh
    self.contents.clear
    @item_max = $game_party.actors[@actor_index].size
    for i in 0...@item_max
      x = 64
      y = i * 116
      actor = $game_party.actors[@actor_index][i]
      draw_actor_graphic(actor, x - 40, y + 80)
      draw_actor_name(actor, x, y)
      draw_actor_class(actor, x + 144, y)
      draw_actor_level(actor, x, y + 32)
      draw_actor_state(actor, x + 90, y + 32)
      draw_actor_exp(actor, x, y + 64)
      draw_actor_hp(actor, x + 236, y + 32)
      draw_actor_sp(actor, x + 236, y + 64)
    end
  end

  def party_index=(index)
    @actor_index, self.index = index, 0
  end
end

class Window_Target
  def initialize(index)
    super(0, 0, 336, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z += 10
    @index, @item_max = index, $game_party.actors[index].size
    refresh
  end

  def refresh
    self.contents.clear
    for i in 0...$game_party.actors.size
      x, y = 4, i * 116
      actor = $game_party.actors[@index][i]
      break if actor.nil?
      draw_actor_name(actor, x, y)
      draw_actor_class(actor, x + 144, y)
      draw_actor_level(actor, x + 8, y + 32)
      draw_actor_state(actor, x + 8, y + 64)
      draw_actor_hp(actor, x + 152, y + 32)
      draw_actor_sp(actor, x + 152, y + 64)
    end
  end
end

class Window_EquipItem
  def equip_type=(index)
    @equip_type = index
    refresh
  end
end

class Window_SaveFile
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    name = "File #{@file_index + 1}"
    self.contents.draw_text(4, 0, 600, 32, name)
    @name_width = contents.text_size(name).width
    return unless @file_exist
    Parties::MAX.times do |n|
      for i in 0...@characters[n].size
        bm = RPG::Cache.character(@characters[n][i][0], @characters[n][i][1])
        cw = bm.rect.width / 4
        ch = bm.rect.height / 4
        src_rect = Rect.new(0, 0, cw, ch)
        x = 24 + i * 32 + n * 128
        self.contents.blt(x, 76 - ch, bm, src_rect)
      end
    end
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 8, 600, 32, time_string, 2)
    self.contents.font.color = normal_color
    time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
    self.contents.draw_text(4, 40, 600, 32, time_string, 2)
  end
end

class Window_PartyCommand
  attr_accessor :commands
end

class Scene_Base
  def main
    start
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break if $scene != self
    end
    Graphics.freeze
    terminate
  end

  def update; end
end

class Scene_Menu < Scene_Base
  def initialize(menu_index=0, index=0)
    @menu_index, @index = menu_index, index, []
    @party = Parties.exclude_empty
  end

  def start
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = 'Status'
    s5 = 'Save'
    s6 = 'End Game'
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    if @party[@index].size == 0
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    elsif $game_system.save_disabled
      @command_window.disable_item(4)
    end
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    @status_window = Window_MenuStatus.new(@index)
    @status_window.x = 160
    @status_window.y = 0
  end

  def terminate
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end

  def update
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    if @command_window.active
      update_command
      return
    elsif @status_window.active
      update_status
      return
    end
  end

  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    elsif Input.trigger?(Input::C)
      if $game_party.actors[@index].size == 0 and @command_window.index < 4
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @command_window.index
      when 0 # item
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Item.new(@index)
      when 1..3 # skill, equipment, status
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4 # save
        if $game_system.save_disabled
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Save.new
      when 5 # end game
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_End.new
      end
      return
    end
  end

  def update_status
    if Input.trigger?(Input::LEFT)
      @index += @party.keys.size - 1
      @index %= @party.keys.size
      @status_window.party_index = @index
      @status_window.refresh
    elsif Input.trigger?(Input::RIGHT)
      @index += 1
      @index %= @party.keys.size
      @status_window.party_index = @index
      @status_window.refresh
    elsif Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 1  # skill
        if $game_party.actors[@index].size == 0 or
       $game_party.actors[@index][@status_window.index].restriction >= 2
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Skill.new(@index, @status_window.index)
      when 2  # equipment
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Equip.new(@index, @status_window.index)
      when 3  # status
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Status.new(@index, @status_window.index)
      end
      return
    end
  end
end

class Scene_Item < Scene_Base
  def initialize(party_index) @index = party_index end
  def start
    @help_window = Window_Help.new
    @item_window = Window_Item.new
    @item_window.help_window = @help_window
    @target_window = Window_Target.new(@index)
    @target_window.visible = false
    @target_window.active = false
  end

  def terminate
    @help_window.dispose
    @item_window.dispose
    @target_window.dispose
  end

  def update
    @help_window.update
    @item_window.update
    @target_window.update
    if @item_window.active
      update_item
      return
    elsif @target_window.active
      update_target
      return
    end
  end

  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(0, @index)
      return
    elsif Input.trigger?(Input::C)
      @item = @item_window.item
      unless @item.is_a?(RPG::Item)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      unless $game_party.item_can_use?(@item.id)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      if @item.scope >= 3
        @item_window.active = false
        @target_window.x = (@item_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        if @item.scope == 4 || @item.scope == 6
          @target_window.index = -1
        else
          @target_window.index = 0
        end
      else
        if @item.common_event_id > 0
          $game_temp.common_event_id = @item.common_event_id
          $game_system.se_play(@item.menu_se)
          if @item.consumable
            $game_party.lose_item(@item.id, 1)
            @item_window.draw_item(@item_window.index)
          end
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
  end

  def update_target
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @item_window.refresh unless $game_party.item_can_use?(@item.id)
      @item_window.active = true
      @target_window.visible = false
      @target_window.active = false
      return
    elsif Input.trigger?(Input::C)
      if $game_party.item_number(@item.id) == 0
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      if @target_window.index == -1
        used = false
        for i in $game_party.actors[@index]
          used |= i.item_effect(@item)
        end
      elsif @target_window.index >= 0
        target = $game_party.actors[@index][@target_window.index]
        used = target.item_effect(@item)
      end
      if used
        $game_system.se_play(@item.menu_se)
        if @item.consumable
          $game_party.lose_item(@item.id, 1)
          @item_window.draw_item(@item_window.index)
        end
        @target_window.refresh
        if $game_party.all_dead?
          $scene = Scene_Gameover.new
          return
        elsif @item.common_event_id > 0
          $game_temp.common_event_id = @item.common_event_id
          $scene = Scene_Map.new
          return
        end
      end
      $game_system.se_play($data_system.buzzer_se) unless used
      return
    end
  end
end

class Scene_Skill < Scene_Base
  def initialize(party_index=0, actor_index=0, equip_index=0)
    @index, @actor_index = party_index, actor_index
    @party = Parties.exclude_empty
  end
 
  def start
    @actor = $game_party.actors[@index][@actor_index]
    @help_window = Window_Help.new
    @status_window = Window_SkillStatus.new(@actor)
    @skill_window = Window_Skill.new(@actor)
    @skill_window.help_window = @help_window
    @target_window = Window_Target.new(@index)
    @target_window.visible = false
    @target_window.active = false
  end

  def terminate
    @help_window.dispose
    @status_window.dispose
    @skill_window.dispose
    @target_window.dispose
  end

  def update
    @help_window.update
    @status_window.update
    @skill_window.update
    @target_window.update
    if @skill_window.active
      update_skill
      return
    elsif @target_window.active
      update_target
      return
    end
  end

  def update_skill
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(1, @index)
      return
    elsif Input.trigger?(Input::C)
      @skill = @skill_window.skill
      if @skill == nil or not @actor.skill_can_use?(@skill.id)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      if @skill.scope >= 3
        @skill_window.active = false
        @target_window.x = (@skill_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        if @skill.scope == 4 || @skill.scope == 6
          @target_window.index = -1
        elsif @skill.scope == 7
          @target_window.index = @actor_index - 10
        else
          @target_window.index = 0
        end
      else
        if @skill.common_event_id > 0
          $game_temp.common_event_id = @skill.common_event_id
          $game_system.se_play(@skill.menu_se)
          @actor.sp -= @skill.sp_cost
          @status_window.refresh
          @skill_window.refresh
          @target_window.refresh
          $scene = Scene_Map.new
          return
        end
      end
      return
    elsif Input.trigger?(Input::R)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += 1
      @actor_index %= $game_party.actors[@index].size
      $scene = Scene_Skill.new(@index, @actor_index)
      return
    elsif Input.trigger?(Input::L)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += $game_party.actors[@index].size - 1
      @actor_index %= $game_party.actors[@index].size
      $scene = Scene_Skill.new(@index, @actor_index)
      return
    end
  end
end

class Scene_Equip < Scene_Base
  def initialize(index=0, actor_index=0, equip_index=0)
    @index, @actor_index, @equip_index = index, actor_index, equip_index
    @party = Parties.exclude_empty
  end

  def start
    @actor = @party[@index][@actor_index]
    @help_window = Window_Help.new
    @left_window = Window_EquipLeft.new(@actor)
    @right_window = Window_EquipRight.new(@actor)
    @item_window = Window_EquipItem.new(@actor, 0)
    @item_window.help_window = @help_window
    @item_window.visible = true
    @right_window.help_window = @help_window
    @right_window.index = @equip_index
    refresh
  end

  def terminate
    @help_window.dispose
    @left_window.dispose
    @right_window.dispose
    @item_window.dispose
  end

  def refresh
    @item_window.equip_type, item1 = @right_window.index, @right_window.item
    @left_window.set_new_parameters(nil, nil, nil) if @right_window.active
    return unless @item_window.active
    item2 = @item_window.item
    actor = @actor.dup
    actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
    new_atk = actor.atk
    new_pdef = actor.pdef
    new_mdef = actor.mdef
    actor = nil
    @left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
  end

  def update
    @left_window.update
    @right_window.update
    @item_window.update
    refresh
    if @right_window.active
      update_right
      return
    elsif @item_window.active
      update_item
      return
    end
  end

  def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(2)
      return
    elsif Input.trigger?(Input::C)
      if @actor.equip_fix?(@right_window.index)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @right_window.active = false
      @item_window.active = true
      @item_window.index = 0
      return
    elsif Input.trigger?(Input::R)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Equip.new(@index, @actor_index, @right_window.index)
      return
    elsif Input.trigger?(Input::L)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Equip.new(@index, @actor_index, @right_window.index)
      return
    end
  end

  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      return
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.equip_se)
      item = @item_window.item
      @actor.equip(@right_window.index, item == nil ? 0 : item.id)
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      @right_window.refresh
      @item_window.refresh
      return
    end
  end
end

class Scene_Status < Scene_Base
  def initialize(party_index=0, actor_index=0, equip_index=0)
    @index, @actor_index = party_index, actor_index
    @party = Parties.exclude_empty
  end

  def start
    @actor = @party[@index][@actor_index]
    @status_window = Window_Status.new(@actor)
  end

  def terminate() @status_window.dispose end

  def update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(3, @index)
      return
    elsif Input.trigger?(Input::R)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += 1
      @actor_index %= @party[@index].size
      $scene = Scene_Status.new(@index, @actor_index)
      return
    elsif Input.trigger?(Input::L)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += @party[@index].size - 1
      @actor_index %= @party[@index].size
      $scene = Scene_Status.new(@index, @actor_index)
      return
    end
  end
end

class Scene_Save
  def write_save_data(file)
    characters = {}
    Parties::MAX.times do |n|
      characters[n] = []
      for i in 0...$game_party.actors[n].size
        actor = $game_party.actors[n][i]
        characters[n] << [actor.character_name, actor.character_hue]
      end
    end
    Marshal.dump(characters, file)
    Marshal.dump(Graphics.frame_count, file)
    $game_system.save_count += 1
    $game_system.magic_number = $data_system.magic_number
    Marshal.dump($game_system, file)
    Marshal.dump($game_switches, file)
    Marshal.dump($game_variables, file)
    Marshal.dump($game_self_switches, file)
    Marshal.dump($game_screen, file)
    Marshal.dump($game_actors, file)
    Marshal.dump($game_party, file)
    Marshal.dump($game_troop, file)
    Marshal.dump($game_map, file)
    Marshal.dump($game_player, file)
  end
end

class Scene_FriendsList < Scene_Base
  def start
    @index = 0
    @party, @actors = $game_party.actors[@index],$game_party.actors[@index].dup
    @buttons, @cells, @faces, @heroes, @heroes_sprites = [], [], [], [], []
    @back, @pos = Sprite.new, 0
    @back.bitmap = RPG::Cache.picture('background')
    @viewport = Viewport.new(0, 0, 640, 480)
    @viewport.z = 500
    make_buttons_cells
    make_heroes
    update_sprites
  end
end

class Scene_Parties < Scene_Base
  def start
    @parties, @sel_index, @cell_index = $game_party.actors.dup, 0, 0
    @active_section, @pending, @coord_y = nil, nil, []
    @team_names, @heroes, @heroes_sprites = [], [], []
    @viewport = Viewport.new(0, 0, 640, 480)
    @help = Sprite_Help.new(@viewport, 0, 448, 640)
    @help.set_text('Seleccione el Equipo de Héroes', 1)
    @parties.size.times {|n| @coord_y << 88 + (92 * n)}
    start_hero_maker
  end

  def terminate
    @team_names+@cells.each {|t| t.dispose}
    @heroes_sprites.each {|ary| ary.each {|obj| obj.dispose}}
    @heroes.clear; @heroes_sprites.clear; @team_names.clear
    @coord_y.clear
    @parties = @heroes = @heroes_sprites = @team_names = @cells = nil
    @help.dispose
    @viewport.dispose
  end

  def update
    @team_names.each {|tn| tn.update}
    if @active_section.nil?
      update_start
      return
    elsif @active_section == :update_heroes
      update_heroes
      return
    elsif @active_section == :move_up
      update_move_up
      return
    elsif @active_section == :move_down
      update_move_down
      return
    end
  end

  def update_start
    (@active_buttons = true; return) if @active_buttons.nil?
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if @parties[@sel_index].empty?
        $game_system.se_play($data_system.buzzer_se)
      else
        $game_system.se_play($data_system.decision_se)
        @cell_index = @sel_index
        @active_section, @active_buttons = :update_heroes, nil
      end
    elsif Input.trigger?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      @sel_index = (@sel_index + @parties.size - 1) % @parties.size
      set_team_names_colors
    elsif Input.trigger?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      @sel_index = (@sel_index + 1) % @parties.size
      set_team_names_colors
    end
  end

  def update_heroes
    (@active_buttons = true; return) if @active_buttons.nil?
    @heroes[@sel_index].each {|hr| hr.update}
    @heroes_sprites[@sel_index].each {|hs| hs.update}
    if Input.trigger?(Input::B)
      unless @parties[0].empty?
        $game_system.se_play($data_system.cancel_se)
        @active_section = @active_buttons = nil
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    elsif Input.trigger?(Input::C)
      unless $game_party.actors != @parties#[0].empty?
        $game_system.se_play($data_system.decision_se)
        @party, @party_sprites = @heroes[@cell_index], @heroes_sprites[@cell_index]
        @active_section = @pending
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    elsif Input.trigger?(Input::UP)
      if @cell_index > 0
        $game_system.se_play($data_system.cursor_se)
   @cell_index -= 1
        @party, @party_sprites = @heroes[@sel_index], @heroes_sprites[@sel_index]
        @active_section = :move_up
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    elsif Input.trigger?(Input::DOWN)
      if @cell_index < @parties.size-1
        $game_system.se_play($data_system.cursor_se)
   @cell_index += 1
        @party, @party_sprites = @heroes[@sel_index], @heroes_sprites[@sel_index]
        @active_section = :move_down
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
  end

  def back2update_heroes
    @party = @party_sprites = @pending = nil
    @active_section = :update_heroes
  end

  def update_move_up
    @party.each {|actor| actor.move_up}
    @party_sprites.each {|actor| actor.update}
    if @party == @heroes[@sel_index] and !@party.empty? and
      @party[0].real_y == @coord_y[@cell_index]
      (back2update_heroes; return) if @sel_index == @cell_index
      @active_section, @pending = :update_heroes, :move_down
    elsif @party == @heroes[@cell_index] and (@party.empty? or (!@party.empty? and
      @party[0].real_y == @coord_y[@sel_index]))
      back2update_heroes
      after_replacement
    end
  end

  def update_move_down
    @party.each {|actor| actor.move_down}
    @party_sprites.each {|actor| actor.update}
    if @party == @heroes[@sel_index] and @party[0].real_y == @coord_y[@cell_index]
      (back2update_heroes; return) if @sel_index == @cell_index
      @active_section, @pending = :update_heroes, :move_up
    elsif @party == @heroes[@cell_index] and (@party.empty? or (!@party.empty? and
      @party[0].real_y == @coord_y[@sel_index]))
      back2update_heroes
      after_replacement
    end
  end

  def after_replacement
    return if @sel_index == @cell_index
    replace_parties
    @sel_index = @cell_index
    @team_names.each {|t| t.dispose}
    @team_names = []
    Parties::MAX.times {|n| make_team_names(@parties[n].name, n, 6 + (92 * n))}
    set_team_names_colors
  end

  def replace_parties
    p1, p2 = @parties[@sel_index], @parties[@cell_index]
    @parties[@sel_index], @parties[@cell_index] = p2, p1
    p1, p2 = @heroes[@sel_index], @heroes[@cell_index]
    @heroes[@sel_index], @heroes[@cell_index] = p2, p1
    p1, p2 = @heroes_sprites[@sel_index], @heroes_sprites[@cell_index]
    @heroes_sprites[@sel_index], @heroes_sprites[@cell_index] = p2, p1
    $game_party.actors = @parties.dup
    $game_player.refresh unless @heroes[0].empty?
  end

  def start_hero_maker
    @team_names+@cells.each {|t| t.dispose} if !@cells.nil?
    @team_names, @cells = [], []
    Parties::MAX.times do |n|
      @heroes[n], @heroes_sprites[n] = [], []
      make_heroes(@parties[n], n)
    end
  end

  def make_heroes(party, index)
    n, y, name = index, 6 + (92 * index), @parties[index].name
    @cells << Sprite.new(@viewport)
    @cells[-1].bitmap = RPG::Cache.picture 'cell1'
    @cells[-1].x, @cells[-1].y, @cells[-1].z = 10, 28 + y, 0
    make_team_names(name, index, y)
    return if party.empty?
    party.size.times do |i|
      x, y = 32 + (40 * i), 88 + (92 * n)
      @heroes[n] << Game_Hero.new(i, n)
      @heroes[n][-1].fixed = true
      @heroes[n][-1].real_x, @heroes[n][-1].real_y = x, y
      sprite = Sprite_CharacterAnime.new(@viewport, @heroes[n][i], x, y)
      sprite.id = party[i].id
      @heroes_sprites[n] << sprite
    end
  end

  def make_team_names(name, index, y)
    @team_names << Sprite_TeamName.new(@viewport, 18, y, 160, 36, name)
    @team_names[-1].set_color(255, 255, 0) if @sel_index == index
    @team_names[-1].update if @sel_index == index
  end

  def set_team_names_colors
    @team_names.size.times do |n|
      rgb = @sel_index == n ? [255, 255, 0] : [255, 255, 255]
      @team_names[n].set_color(rgb[0], rgb[1], rgb[2])
    end
  end
end


Última edición por kyonides-arkanthos el Miér Ago 03, 2011 6:42 am, editado 3 veces
Volver arriba Ir abajo
Ver perfil de usuario http://deloquesea.mforos.com/forums/
kyonides-arkanthos
Lord Guru Maker
Lord Guru Maker
avatar

Cantidad de envíos : 1768
Miembro desde : 03/02/2010
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: EKstra Heroes XP   Dom Jul 31, 2011 5:05 am

Bueno ya he publicado la versión 0.6.1!

Lo principal de esta versión es:

que incluye bugfixes menores
que ya permite ver los equipos en pantalla

No lo que no incluye es:

una interfaz gráfica del escenario de visualización y selección de equipos de héroes que sea atractiva para el usuario
la opción para seleccionar a los héroes a los equipos...
Volver arriba Ir abajo
Ver perfil de usuario http://deloquesea.mforos.com/forums/
kyonides-arkanthos
Lord Guru Maker
Lord Guru Maker
avatar

Cantidad de envíos : 1768
Miembro desde : 03/02/2010
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: EKstra Heroes XP   Mar Ago 02, 2011 6:46 am

Bueno ya he publicado la versión 0.6.3!

Lo principal de esta versión es:

que ya permite ver y reordenar los equipos en pantalla pero solo en un menú si llaman al script desde el mapa.

Aún sigue careciendo de una vistosa interfaz gráfica...
Volver arriba Ir abajo
Ver perfil de usuario http://deloquesea.mforos.com/forums/
kyonides-arkanthos
Lord Guru Maker
Lord Guru Maker
avatar

Cantidad de envíos : 1768
Miembro desde : 03/02/2010
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: EKstra Heroes XP   Miér Ago 03, 2011 6:44 am

Bueno ya he publicado la versión 0.6.4!

Lo principal de esta versión es:

que ya permite ver y reordenar los equipos (enteros no como individuos) en pantalla al gusto y no de forma paulatina como antes, también previene que se salgan de la escena sin que haya un héroes en el primer equipo, pero solo sucederá en un menú si llaman al script desde el mapa.

Aún sigue careciendo de una vistosa interfaz gráfica...
Volver arriba Ir abajo
Ver perfil de usuario http://deloquesea.mforos.com/forums/
Contenido patrocinado




MensajeTema: Re: EKstra Heroes XP   

Volver arriba Ir abajo
 
EKstra Heroes XP
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» HEROES... ESTO ME SUENA DE ALGUN LADO 3º PARTE
» Afiliación Heroes of Tamriel
» LOS 100 MEJORES HEROES DE MARVEL
» LOS 10 MEJORES HEROES NEGROS
» PROYECTOS DE PELIS DE SUPERHEROES

Permisos de este foro:No puedes responder a temas en este foro.
Maker Palace :: RGSS Scripts :: Scripts Maker XP-
Cambiar a: